| Artículos | 01 SEP 1999

Cómo desarrollar aplicaciones en entornos distribuidos

Tags: Histórico
Introducción a Corba
Francisco Charte.
Crear aplicaciones que se ejecutan comunicándose con un servidor HTTP, según las peticiones de servicios efectuadas por los clientes, es algo que poco a poco está convirtiéndose en una necesidad. En principio aparecieron mecanismos, hoy considerados primitivos, como CGI (Common Gateway Interface) y un derivado de él llamado Win-CGI. Posteriormente los servidores comenzaron a poner al servicio de esas aplicaciones conjuntos de funciones como ISAPI (Internet Server Application Programming Interface) y NSAPI (Netscape Server Application Programming Interface), haciendo que el desarrollo de aplicaciones de servidor fuese más eficaz y simple. Posteriormente han aparecido otras nuevas tecnologías, como los componentes que se comunican con el servidor mediante ActiveX o la especificación EJB (Enterprise JavaBeans).
En el artículo Aplicaciones web con Visual Basic 6, publicado en un número previo de PC World, se mostró cómo era posible crear aplicaciones de servidor web mediante Visual Basic. Éstas consistían en una librería ActiveX que tenía acceso al modelo de objetos de IIS (Internet Information Server). El mayor inconveniente es que dichas aplicaciones tan sólo pueden utilizarse con este servidor, pero no con cualquier otro que podamos utilizar.
Borland Delphi, concretamente a partir de la versión 3 y la edición cliente/servidor, dispone de todos los elementos necesarios para poder crear este tipo de aplicaciones. Para ello es capaz de usar desde el típico mecanismo CGI hasta las interfaces de aplicaciones ISAPI/NSAPI, todo ello de forma transparente para el desarrollador. Existen, además, varios componentes que generan automáticamente código HTML a partir de información almacenada en bases de datos, facilitando una tarea que en Visual Basic realizábamos manualmente, escribiendo el código necesario para generar las etiquetas HTML y componer el documento.
Este artículo mostrará las bases del proceso que hay que seguir con Borland Delphi para crear aplicaciones de servidor web, utilizando los módulos web y algunos de los componentes especializados en la generación de código HTML. Con todo ello se propondrán unos ejemplos similares a los creados en el citado artículo publicado previamente, de tal forma que sea posible realizar una comparación directa del trabajo y el resultado.
Para poder probar el funcionamiento de los ejemplos deberá disponer de un servidor HTTP instalado en su sistema. No es absolutamente necesario que sea Internet Information Server, como sí ocurre con Visual Basic, pudiendo ser cualquiera que implemente ISAPI, NSAPI o sea capaz de usar CGI.

Algunos fundamentos
Inicialmente los servidores HTTP o web eran aplicaciones que se limitaban a enviar al cliente los documentos que éste solicitaba, que estaban almacenados en archivos en disco y cuyo contenido, como consecuencia, era estático. Esto significa que cada vez que el cliente solicitaba un determinado documento el resultado siempre era el mismo, limitándose la interactividad a la posibilidad que tenía el usuario de pulsar sobre los enlaces.
Un primer paso en la búsqueda de añadir mayor funcionalidad a los servidores HTTP consistió en permitir que ejecutaran pequeñas aplicaciones, conocidas habitualmente como CGIs, mediante un protocolo común de comunicación. El servidor podía, además, recibir parámetros del cliente y entregarlos al CGI, de tal forma que éste generase un contenido dependiente de la información recibida.
Los CGIs pueden escribirse prácticamente en cualquier lenguaje y con cualquier herramienta, desde un script hasta un compilador, utilizándose como medio de transporte de los parámetros, elementos diversos como los archivos en disco, la entrada y salida estándar o las variables de entorno. Win-CGI es una versión del mecanismo CGI que buscaba un mayor rendimiento sobre Windows, aunque su funcionamiento es casi idéntico.
El siguiente paso consistió en permitir que librerías de enlace dinámico con una cierta estructura se ejecutasen en el mismo espacio de proceso que el servidor, de tal forma que la comunicación, mediante un cierto conjunto de funciones, fuese mucho más rápida y eficiente. Dos implementaciones diferentes de este mecanismo son ISAPI y NSAPI, usadas originalmente por Internet Information Server y Netscape FastTrack Server y disponibles posteriormente en otros servidores.
Aunque el rendimiento de las aplicaciones ISAPI/NSAPI es siempre superior al de las aplicaciones CGI, no es menos cierto que su funcionamiento resulta más peligroso para el propio servidor. Un fallo en un CGI puede provocar que el cliente obtenga una respuesta no esperada. Si se produce un fallo en una aplicación ISAPI/NSAPI, sin embargo, es posible que el servidor se venga abajo puesto que la interrupción se produce en el mismo espacio de proceso.

Inicio de una aplicación de servidor
Como la mayoría de los proyectos que es posible desarrollar con Delphi, para crear una aplicación de servidor hay que partir abriendo el Depósito de objetos. Éste dispone de un elemento, destacado en la Figura 1, que pone en marcha el asistente mostrado en la Figura 2. Básicamente se trata de seleccionar el tipo de aplicación que quiere crearse, de tal forma que el asistente genere el código correspondiente.
Observe que la primera opción permite crear una aplicación, en forma de librería de enlace dinámico, que se ajusta tanto a ISAPI como a NSAPI, de tal forma que puede funcionar con la mayoría de los servidores existentes sin necesidad de realizar cambio o adaptación alguna. Las otras dos opciones facilitan la creación de ejecutables que se comportan como CGIs corrientes o como Win-CGIs.
Tras cerrar el asistente, habiendo seleccionado cualquiera de las opciones disponibles según el tipo de servidor de que dispongamos, lo único que veremos en el proyecto será una ventana similar a un módulo de datos de Delphi. Éste es un componente TWebModule capaz de contener uno o más componentes TWebActionItem. Cada uno de éstos representa un servicio implementado por la aplicación capaz de devolver un determinado documento. Si observa el módulo de código asociado al TWebModule podrá ver que no hay ningún elemento que le diferencie de cualquier otro módulo. En lugar de tener un TForm1 que deriva de TForm contamos con un TWebModule1 que deriva de TWebModule. En lugar de componentes típicos, como las etiquetas de texto y botones, en el interior del TWebModule insertaremos objetos TWebActionItem, cada uno de los cuales tendrá las correspondientes entradas en la definición de la clase. Como veremos después, también es posible alojar en este módulo componentes cuya finalidad es generar código HTML.

Edición de acciones
Inicialmente el módulo TWebModule que hay en el proyecto está vacío, por lo que no hay acción alguna que el servidor HTTP pueda ejecutar. Basta con hacer doble clic sobre el propio TWebModule, o bien en la propiedad Actions en el Inspector de objetos, para abrir el editor de acciones. Básicamente se trata de una lista normal y corriente con cuatro columnas: el nombre de la acción, el camino al que está asociada, su estado y la indicación de si es la acción por defecto o no.
Para añadir acciones a esta lista nos podemos servir del menú emergente, aunque es suficiente con pulsar la tecla Insert o pulsar el primer botón de la ventana para crear un nuevo TWebActionItem. En principio las acciones sie

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información