Tecnologías de comunicación entre IIS y sus extensiones


Cuando se instala una extensión en un servidor web, se tiene que elegir una tecnología para que dicho servidor pueda comunicarse con la extensión y de esta forma coordinarse para llevar a cabo la labor que dicha extensión tiene asignada. IIS puede usar estas tres tecnologías para ello:

CGI (Common Gateway Interface) es un protocolo estándar para la comunicación entre una aplicación externa y un servidor de información (normalmente un servidor web). CGI se usa comúnmente para escribir extensiones de servidores web (esta tecnología es soportada tanto por Apache como por IIS, además de otros servidores). Una aplicación CGI es un ejecutable (proceso) externo cuyo código procesa las variables de entorno y su entrada estándar, generando unos determinados resultados que envía a su salida estándar y que finalmente son los que llegan al cliente. CGI es por tanto una posible forma de generar contenido dinámico para una aplicación web, puesto que el cliente recibe un resultado que puede depender de la información que le haya pasado a la aplicación CGI inicialmente. La programación de aplicaciones CGI no está ligada a ningún lenguaje concreto, aunque muchos lenguajes (como C) incluyen bibliotecas de funciones para procesar las variables de entorno y otras ayudas para la creación de CGI.

Tecnologias de comunicacion entre servidores y extensiones (1)

FastCGI es otra tecnología con el mismo propósito que CGI, pero que a diferencia de ésta usa un único proceso de ejecución continua para manejar más de una petición de los usuarios. A pesar de esta diferencia fundamental de funcionamiento, FastCGI trata de mantener un modo de funcionamiento muy similar al de CGI ya visto, es decir, la funcionalidad de ambas tecnologías es prácticamente idéntica. El objetivo fundamental de FastCGI es mantener la simplicidad del modelo de programación de las aplicaciones CGI eliminando la penalización de rendimiento que ocurre en las mismas causada porque cada petición se atiende en un proceso independiente. Dado que crear un proceso es una operación costosa, FastCGI obtiene un rendimiento notablemente superior a CGI, suponiendo pues una mejora de éste último.

Tecnologias de comunicacion entre servidores y extensiones (2)

Podemos ampliar la información acerca de FastCGI en los siguientes enlaces:

La tercera tecnología usada para la comunicación entre servidor y aplicaciones externas es ISAPI (Internet Server Application Programming Interface). Esta es una propuesta de Microsoft y consiste en un API de N capas para IIS. Al igual que las tecnologías anteriores, ISAPI también permite a los desarrolladores web ampliar la funcionalidad de sus servidores mediante la programación de sus propios servicios, ampliando de este modo las funcionalidades que el servidor puede proporcionar. Los programas escritos usando ISAPI pueden permitir a un usuario remoto ejecutar un programa externo, buscar información dentro de una base de datos o intercambiar información con otro proceso localizado en el servidor, por citar algunas delas funcionalidades de este API.

La tecnología ISAPI ofrece un mejor rendimiento que la CGI antes vista. Con ISAPI los desarrolladores pueden crear dll (bibliotecas de funciones) con funciones que son invocadas para determinados tipos archivos. Dichas dll se cargan en memoria durante la ejecución del servidor y penalizan menos el rendimiento porque cada petición no inicia un proceso distinto. Con ISAPI se suelen programar dos clases de aplicaciones:

  • Extensiones: Son aplicaciones completas que se ejecutan en IIS. Las extensiones tienen acceso a toda la funcionalidad que IIS provee y se implementan como dlls, que se cargan en un proceso controlado también por IIS. Los clientes pueden acceder a extensiones ISAPI de la misma forma que acceden a una página HTML. IIS permite designar que extensiones de archivo concretas, una carpeta o sitio web particular sean manejados por una extensión ISAPI concreta. Por ejemplo, ASP y ASP.NET son extensiones ISAPI de IIS que manejan archivos .asp y .aspx respectivamente.
  • Filtros: Los filtros ISAPI se usan para modificar o mejorar la funcionalidad que ofrece IIS. Siempre se ejecutan dentro de IIS y filtran cualquier petición que se haga al servidor, procesando solamente aquellas que detectan como procesables (dependiendo de lo que se haya programado dentro del filtro). Los filtros pueden ser programados para examinar o modificar tanto el tráfico de salida como el de entrada y, de existir varios filtros, el orden en que estos se ejecutan se determina por un sistema de prioridades. Los filtros se implementan en dlls y deben registrarse en IIS, bien a nivel de servidor completo (todos los sites) o bien para un site concreto. Los filtros se inicializan y ejecutan cuando se arrancan los worker processes que gestionan las webs que maneja el servidor. Ejemplos de las tareas realizadas por un filtro pueden ser: cambiar los datos de la petición del cliente, controlar el nombre y clave de un usuario en determinados esquemas de autenticación, modificar una respuesta que se le envía al cliente, etc.

Tecnologias de comunicacion entre servidores y extensiones (3)

Si bien, como hemos dicho anteriormente, ISAPI es más rápido que CGI, el rendimiento de ISAPI comparado con el de FastCGI es más o menos equiparable (http://www.iis-aid.com/articles/performance_testing/performance_tuning_php_5_2_on_iis?page=0%2C1).
Last modified: Sunday, 1 August 2010, 2:34 PM