|
|
||||||||||||
|
GpGadGets (GGG) El objetivo de GpGadGet es crear un sistema muy sencillo (que funciona como componente) para crear aplicaciones que corran tanto en el escritorio como en modo Web. Llamaré programas de escritorio o Desktop a los programas tradicionales que ejecuta Windows y se visualizan como una ventana en el escritorio de trabajo. Y llamaré formulario (o form) Web a la “típica” entrada de datos visualizada en el navegador WEB. Un programa realizado con GGG, puede ser ejecutado en los dos modos y puede incluso interactuar un modo con el otro. Por ejemplo, el usuario Desktop puede ver literalmente las acciones del usuario web, responder a preguntas y mucho más. La solución es una herramienta que hace la “traducción” automática en tiempo de ejecución del form Desktop a un form Web, y hace que las respuestas del usuario, sean tratadas por el form Desktop. GGG es indicado para pequeñas aplicaciones Web, con sencillos formularios y controles. El componente “central” tiene las funciones básicas y genéricas para realizar la traducción, y hay otros componentes “hijos” que identifican y traducen cada clase de los componentes Desktop y manejan específicamente las funciones de peticiones y respuestas. El “usuario” del componente puede extender el conjunto de componentes “hijos” añadiendo su propia “traducción” para componentes no soportados. GGG es una herramienta genérica y es independiente del tipo de conexión “winsock”, así que está disponible en varios entornos (Indy, Synapse,…) y es posible usarlo en otras librerías “mayores” como IntraWeb, pudiendo agregar servicios “interactivos” a “antiguas” aplicaciones intraweb. Los casos de uso de GGG son muchos y tiene varios “modos” de uso. 1- Ejecutar una única ventana Desktop para ser “compartida” por todos los usuarios Web, incluido el usuario local Desktop. Puede ser usado, por ejemplo, para hacer un pequeño sistema Chat, o un sistema contador de votos que quiera “verse” directamente el resultado localmente. 2- Ejecutar diferentes formularios Web para diferentes usuarios, en ventanas locales ocultas. Es en realidad el modo WEB “puro” y puedes hacer aplicaciones WEB, pero usando la misma técnica que para hacerla Desktop. Este uso puede ser muy bueno para programadores noveles o con poca experiencia en programación WEB, o también para programadores más experimentados que solo busquen un sistema sencillo e interactivo desktop/Web para aplicaciones o páginas más complejas). 3- Ejecutar diferentes formularios Web de varios usuarios, que se muestran
como formularios Desktop. Así en el WebMaster puede “ver”
los cambios efectuados por cada usuario en cada uno de los form usados,
e incluso interactuar con el: Chatear, ofrecer ayuda, cerrar la conexión….)
En realidad, pueden ser muchos los casos de uso en este modo. Puede pensarse
en una “nueva generación” de programas hibridos Web/Desktop,
que pueden integrar otros elementos de la librería Gp, como control
remoto, escritorio de ayuda, web cam, etc… Limitaciones Por supuesto, GGG no es mágico, por lo que no se puede aplicar a todo tipo de aplicaciones Desktop, ya que hay muchos elementos que no tienen “traducción” y otros aun no están “adaptados” por el momento. Para los componentes no “soportados” es posible tratarlos como una imagen, para ver el elemento como si fuera un elemento grafico más, y responder a un clic (por ejemplo) De momento no tiene soporte para aplicaciones MDI ni para cajas de dialogo del sistema. Por otro lado, no todo tipo de servicios Web pueden tener una solución Desktop, por lo que no se puede hacer cualquier programa WEB, aunque puede usar plantillas externas para generar la página Html y así utilizar otros elementos, o puede usarse como un elemento más dentro de una WEB más compleja. También es posible “interceptar” las acciones o comandos para especificar respuestas en Web que no son relevantes en modo Desktop y viceversa. Por el momento, no es posible usar el modo “interactivo” Desktop/WEB en una librería ASAPI DLL (aunque sí se puede usar formularios “ocultos”), porque un servicio ISAPI no tiene acceso al escritorio (Al menos no hay ninguna forma documentada por Microsoft). La solución más parecida es un programa ISAPI que actúe como “puente” para llamar a otro servicio “interactivo” ejecutando GGG que si que tenga acceso al escritorio y procese las peticiones devolviendo las respuestas al “puente”. De hecho tengo algún prototipo desarrollado, pero hasta el momento no me urge desarrollarlo más, a la espera de ver como evolucionan otros elementos.
|
|
||
| Ejemplos Ejemplo 1: Convert it He tomado una “unit” de los programas “demo” que acompaña a las versiones delphi tradicionales. Simplemente he incluido TGpGadGet (el componente motor de la traducción) y TGpSocket que hace el servicio de comunicaciones como servidor http. Asigno el puerto http en 82 y en el evento oncreate, activo el servidor y abre el navegador WEB donde puedes ver la ejecución del programa. El resultado, es que puedes ejecutar la aplicación en su forma tradicional, pero además esta compartida en Internet. Así cualquiera puede usar la misma aplicación, aunque claro esta, esto plantea un problema de uso, ya que cada usuario esta “interactuando” con la misma ventana. Seria como si dos usuarios con dos ratones diferentes están usando el mismo ordenador. Este es un ejemplo muy básico, y el uso ‘real’ puede
estar limitado. Sin embargo, refleja claramente la vocación del
componente. En un uso más real se hubiera configurado a correr
diferentes instancias de la ventana (en modo visible o invisible). Sample 2: Voteme El ejemplo 2 es un pequeño sistema de voto. Es un sencillo formulario
con 3 botones y un Input, que refrescan un grafico de tarta, mostrando
los resultados del voto. El resultado no es muy fiable en cuanto a que
un usuario puede votar varias veces. Cuando un usuario contacta con el servidor GpServer, se genera una sesión de usuario para recordar alguna información acerca del usuario. Cada sesión de usuario tiene una clave que identifica esta sesión, y es recordada y enviada al servidor como un parámetro más del comando http, o a través de los cookies. Gp cuenta con la clase componente TResponRequest que es el contexto de la llamada y respuesta de nuestro servidor WEB. Cuando un evento WEB es generado, este se “trasforma” en un evento de nuestra ventada de escritorio. Los típicos eventos de los controles delphi son de tipo TNotifyEvent, que reciben como parámetro (sender:TObject) Normalmente sender, hace referencia al objeto que produjo el evento. Por ejemplo en el caso del clic en un botón, el objeto que lo produce en el escritorio, es el propio botón, sin embargo, cuando el evento se genere desde la página Web, el objeto sender será el objeto TResponRequest asociado a la petición y respuesta a esta llamada. El programador puede saber muchas cosas consultando este objeto, por
ejemplo la sesión de usuario que produce esta llamada.
|
||||
|
|
||||
|
Teléfono: 978-610539 - Fax: 978-610861 -Trav.Agustina Aragón 1,1e 44002 Teruel ( España ).webmaster Copyright © 1997-2007 , [Multi-Informatica Teruel, S.L]. |