ISAPI : Internet Server Application Program Interface

Interfaz para programas de aplicación en los servidores de Internet

 Introducción:

            Los servicios de Internet Information Server (IIS) constituyen el servidor Web de Microsoft. En un principio, este producto se creó para Windows NT Server. La versión más reciente es IIS 5.0, que se distribuye con Windows 2000.

            Al igual que los demás productos del servidor Web, IIS administra las peticiones entrantes de HTTP enviadas por las aplicaciones cliente. Las versiones anteriores de IIS se utilizaron fundamentalmente para páginas Web estáticas. Actualmente, numerosas aplicaciones basadas en Web se sirven de IIS para ejecutar procesamientos personalizados en todas las peticiones entrantes.

             El IIS exhibe una Interfaz de Programación de Aplicaciones (API) registrada denominada Internet Server API (ISAPI) para los desarrolladores que desean crear aplicaciones Web con una lógica personalizada del lado del servidor. Aquellos programadores que programan con ISAPI crean directamente módulos de software denominados extensiones ISAPI y filtros ISAPI. Aunque la escritura de software basado en ISAPI proporciona los niveles más elevados de rendimiento y flexibilidad, este enfoque también presenta costos significativos, ya que es preciso el desarrollo en C o C++ en lugar de en Visual Basic, con lo cual, los programadores se verán obligados a tratar con detalles de infraestructura de bajo nivel, como la escritura de un administrador de agrupamiento de subprocesos.

 

Definición de  ISAPI:

Es la interfaz propuesta por Microsoft como una alternativa más rápida que el Common Gateway Interface (CGI), y ya está incluida en el Servidor Microsoft Internet Information (IIS).

Así como los escritos CGI, los programas escritos usando ISAPI habilitan un usuario remoto para ejecutar un programa, busca información dentro de una base de datos, o intercambia información con otro software localizado en el servidor.

           

Funcionamiento:

 

Conceptualmente, el acceso a las bases de datos es realizado por el Internet Information Server como se muestra en la Figura 1. Los cliente browser envían las requisiciones al servidor Web a través de HTTP. El servidor Web responde con un documento en formato HTML. El acceso a una base de datos es realizado por el componente IDC del Internet Information Server. El IDC es un programa DLL/ISAPI (httpodbc.dll) que utiliza ODBC para el acceso a las bases de datos.

Figura 1. Acceso a Bases de Datos con el Internet Information Server.

En la figura 2 se muestra los componentes para conectarse a bases de datos desde el Internet Information Server. El IDC usa dos tipos de archivos para controlar cómo la base de datos es accedida y cómo se construye la página Web de resultados. Estos archivos son: IDC (.idc) y extensión HTML (.htx).

Figura 2. Componentes de IDC para conectarse a una Base de Datos con el Internet Information Server.

 Los archivos IDC contienen la información necesaria para conectarse a la fuente de datos ODBC apropiada y para ejecutar la sentencia SQL. También contiene el nombre y ubicación del archivo HTX. Este archivo es la plantilla para el documento HTML actual que será devuelto al browser, después de que la información de la base de datos haya sido fusionada dentro de dicho documento por el programa IDC.

 

 

Aplicaciones de ISAPI:   

 

Los programas escritos usando la interfaz ISAPI son compilados como bibliotecas de enlace dinámico (Dynamic Link Library- DLL). Estos archivos almacenan rutinas ejecutables, que normalmente cumplen una función o conjunto de funciones específicas, ya que son cargados por el servidor Web cuando éste se inicia y son usadas en la medida que los programas los necesitan. Dichos programas se vuelven residentes en memoria, por lo que se ejecutan mucho más rápido que las aplicaciones CGI, debido a ello requieren menos tiempo de uso de CPU al no generar procesos separados.

Uno de los programas ISAPI más usados es el HTTPODBC.DLL que se usa para enviar y/o devolver información hacia y desde las bases de datos, a través de ODBC.

            ISAPI permite realizar un procesamiento previo de la solicitud y uno posterior de la respuesta, con lo cual manipula la solicitud/respuesta HTTP. Los filtros ISAPI pueden utilizarse para aplicaciones tales como autenticación, acceso o apertura

El servidor debe ejecutar aplicaciones externas que se encarguen de procesar la petición del usuario.

 

Cada tipo de servidor proporciona diferentes métodos para ejecutar aplicaciones CGI. Los dos métodos soportados por IIS son:

 

·        Interfase CGI. Una aplicación CGI es un ejecutable externo, que procesa las variables de entorno y la entrada estándar y genera los resultados enviándolos a la salida estándar. La programación de los CGI no es muy complicada, ya que con un compilador de C o similares y unas sencillas bibliotecas de funciones para procesar las variables de entorno se pueden crear CGI. Este método es el tradicional en el mundo UNIX.

 

 

·        Interfase ISAPI. Esta interfase es una derivación del CGI pero que en vez de ejecutables externos utiliza bibliotecas dinámicas dll para procesar la petición del usuario. Estas bibliotecas se registran en el servidor IIS y son cargadas permanentemente por el servidor al arrancar.

 

            Un sencillo ejemplo pudiera ser el siguiente: un usuario envía una consulta a una aplicación de API de Internet Server (ISAPI) que suma dos números. El usuario escribe los dos números que se van a sumar y después hace clic en un botón, lo que hace que los dos números se envíen al servidor Web. El servidor Web llama a la aplicación ISAPI para sumar los números y devuelve el resultado al usuario en forma de una página HTML.

 

 

Alcance de ISAPI:


 A diferencia de CGI, las aplicaciones ISAPI son DLLs (Dynamic Link Libraries) que se cargan en el mismo espacio de direcciones que el propio servidor HTTP, lo cual supone que todos los recursos disponibles para éste lo están también para aquéllas. Hay por tanto una sobrecarga mínima asociada con la ejecución de estas aplicaciones, ya que cada petición de ejecución no requiere montar un nuevo proceso.

La interacción entre el servidor y una determinada DLL de la aplicación ISAPI se realiza mediante un ‘extension control block’ (ECB), en lugar de hacerlo, como en el caso de CGI mediante variables de entorno y las stdin/stdout.

Ventajas de ISAPI:

 

El procesamiento de las peticiones es mucho más rápido. Actualmente existen multitud de herramientas que nos permiten generar códigos ISAPI o CGI, e incluso ambos simultáneamente.

 

ISAPI es una alternativa a los ejecutables CGI, de mayor eficacia que éstos . Un servidor HTTP responde a una petición de ejecución de CGI desde un ‘browser’ creando un nuevo proceso y pasando a continuación los datos recibidos desde el browser mediante variables de entorno y la stdin. Los resultados recogidos por la aplicación CGI estarán disponibles en la stdout del nuevo proceso. El servidor HTTP crea tantos procesos como peticiones de ejecución del CGI recibe, por lo que este sistema tiende a consumir mucho tiempo y a requerir grandes cantidades de memoria RAM, poniendo en peligro e rendimiento global del servidor HTTP.

·        Ventajas de Extensiones de Servidor ISAPI:

Se pueden escribir ISAPI server extensión DLLs (ISAs)  que pueden ser cargadas y llamadas por el servidor http. Los usuarios pueden llenar formularios, enviar la data a un servidor Web y solicitar su ISA, los cuales pueden procesar la información para proveer contenidos o almacenarlos en una base de datos. Las extensiones del servidor Web pueden usar información en una base de datos para construir dinámicamente páginas Web y estas ser enviadas a los computadores clientes para ser mostradas en pantalla. La aplicación puede añadir otra funcionalidad y proveer data a los clientes usando HTTP y HTML.

·        Ventajas de Filtros ISAPI:

Se pueden escribir filtros ISAPI. El filtro es tambien un DLL que corre o un servidor HTTP con ISAPI habilitado. El filtro registra notificación de eventos tales como  salir de sesión o mapeo de URL. Cuando los eventos seleccionados ocurren, el filtro es llamado y se puede monitorear y cambiar la data (servidor-cliente o viceversa). Filtros ISAPI pueden ser usado para proveer planes de encriptación o compresión o metódos adicionales de autenticación.

Ambos, extensiones  y filtros del servidor corren en espacios de procesos del servidor Web, proveyendo una eficaz ampliación en las capacidades del mismo.

Desventajas de ISAPI:

 

La creación de estas aplicaciones es costosa por su complejidad técnica, a la vez que las compilaciones pertinentes se han de hacer en servidor de web. Además las pruebas no se pueden realizar más que en una máquina que esté dando servicios de red.

 

Una limitación del servidor IIS es que los ejecutables CGI deben ser aplicaciones WIN32 de modo consola, aunque se pueden ejecutar todo tipo de aplicaciones con el procesador o intérprete adecuados. Así es posible instalar los intérpretes de Perl, Rexx, Tcl, etc.

 

Conclusión:

 

ISAPI brinda flexibilidad para usar muchos tecnologías Web, mientras provee procesamiento confiable y  rápido, a la vez que añade seguridad.

En los siguientes gráficos se demuestra que la velocidad y el desempeño de  ISAPI no puede ser igualado por ninguna otra plataforma de basada en Web.