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.
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:
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.
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.