ISAPI

      Para comprender el funcionamiento de la Internet, se hace necesario figurarse un conjunto de redes de intercambio de datos e información digitalizada, en donde existe un sin numero de comunicaciones generadas por igual cantidad de clientes de manera simultanea o paralela, y que estas comunicaciones componen interacciones entre el usuario final y el servidor de red donde este solicita la información.

      La existencia de diversas plataformas y sistemas operativos, tanto de servidores como de usuarios, complica aún más la compatibilidad necesaria para que la comunicación entre el cliente y el servidor (en ambos sentidos) sea efectiva.

      Es por ello que se requieren de diferentes programas para realizar tareas específicas, como por ejemplo un navegador web para accesar a sitios en la red, programas de comunicación de correo electrónico, programas interactivos para ingresar o conocer bases de datos, conocidos también como aplicaciones, las cuales funcionan sobre la plataforma de los sistemas operativos.

      Las aplicaciones se pueden escribir en casi cualquier lenguaje de programación de 32 bits, o como archivos de proceso por lotes de Windows NT (que tienen la extensión .bat o .cmd). Para escribir las aplicaciones o los archivos de comandos se puede usar además una  de las dos interfaces compatibles, la Interfaz de programación de aplicaciones de Microsoft Internet Server (ISAPI) o la Interfaz de puerto de enlace o gateway común (CGI).

      Las interfases de puerto de enlace o Common Gateway interface (CGI), se utilizan para la creación dinámica de documentos; el proceso consiste en la recepción de peticiones en forma de “parámetros” desde un servidor, generándose la composición de un documento HTML de respuesta que es transmitido desde el ordenador cliente. Las interfaces se realizan mediante lenguajes muy variados, como C, Perl, Delphi, etc. y en principio fueron independientes de la plataforma o el Sistema Operativo que los albergaba.

      Otro medio de programación de interfases, es el conocido como Interfaz de Programación de Aplicaciones (API), constituyéndose en un conjunto de rutinas, protocolos y herramientas para construir aplicaciones de interfaz, o también grupos de operaciones, métodos etc. relacionados lógicamente, que proporcionan acceso a un objeto componente.

      Una buena API hace más fácil el trabajo de desarrollo de un programa, ya que debe proveer todos los bloques para construirlo. El programador lo único que hace es poner todos los bloques juntos, metodología que se apoya en la tecnología de programación orientada a objetos.

      El API está diseñado especialmente para los programadores, ya que garantiza que todos los programas que utilizan API, tendrán interfaces similares. Asimismo, esto le reduce la complejidad al usuario para aprender la lógica de nuevos programas, lo cual facilita las labores de programación, a través del uso subsecuente de los mismos bloques de programación.

      Cuando se realiza una requisición, el servidor llamará al API correspondiente, brindando la ventaja de disponer de una mayor cantidad de servicios.

      Hoy existen sistemas más sofisticados para su realización, en entorno Windows se utilizó una especificación Win-CGI y sobre todo otras dos que facilitan muchos trámites al conseguir una comunicación directa entre servidor y cliente que son NSAPI usado a través de Netscape e ISAPI de Microsoft.  

Internet Information Server de Microsoft

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

             Interfaz de Programación de Aplicaciones del Servidor Internet (ISAPI)

       Es la interfaz propuesta por Microsoft como una alternativa más rápida que el CGI, 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.

       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.

       Además, 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 de

      Un sencillo ejemplo (figura 1)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.

       Una de las aplicaciones mas desarrolladas se relaciona con el manejo de bases de datos en los HOST, en donde ISAPI para Windows NT se puede utilizar para escribir aplicaciones que los usuarios de Web pueden activar completando un formulario HTML o haciendo clic en un vínculo de una página HTML de su sitio Web. La aplicación remota puede aceptar información introducida por el usuario y tratarla de cualquier modo que se pueda programar, y después devolver los resultados en una página HTML o enviar la información a una base de datos.

 

    Otra característica de ISAPI (figura 2) es que admite el preprocesamiento de peticiones y el postprocesamiento de respuestas, permitiendo la administración de solicitudes de servicios y respuestas con el Protocolo de transferencia de hipertexto (HTTP) que sean específicas del sistema. Puede usar filtros ISAPI en aplicaciones como autentificaciones personalizadas, accesos o registros.

    Numerosas empresas se niegan a programar directamente con ISAPI debido a que no disponen de la experiencia necesaria o no desean invertir el tiempo o el dinero necesarios para ponerla en práctica. IIS ofrece una alternativa a ISAPI con un marco de trabajo denominado páginas Active Server (ASP).

    El marco de trabajo de ASP es, en sí mismo, una extensión de ISAPI que permite a los programadores escribir una lógica del lado del servidor utilizando lenguajes de secuencias de comandos y Visual Basic.

    Las aplicaciones Web que se crean mediante ISAPI o ASP proporcionan soluciones HTML, ahora bien, se encuentra a nivel de los usuarios la decisión de con qué exploradores será compatible la aplicación. Podemos aprovechar al máximo las posibilidades de exploradores, como Internet Explorer en un entorno de intranet utilizando dichas aplicaciones web.

    En un gran número de empresas se han generado sitios bastante sofisticados mediante el uso de ASP únicamente. Resulta muy sencillo escribir una lógica empresarial en el servidor y un código de acceso a datos utilizando lenguajes de secuencia de comandos como Visual Basic, Scripting Edition (VBScript) y JavaScript además de una herramienta de desarrollo como Microsoft Visual InterDev.

     No obstante, las empresas también han reparado en la dificultad que conlleva la reutilización, el mantenimiento y la extensión de la lógica difundida en distintas páginas, dificultad que se hace más evidente a medida que aumenta el tamaño del sitio. Un enfoque más adecuado consiste en encapsular la lógica empresarial y el código de acceso a datos dentro de componentes compilados.

 

Ejemplo de programación ISAPI

 

#include <windows.h>
#include <httpext.h>
#include <memory.h>
#include <stdio.h>

//
// BOOL WINAPI GetExtensionVersion (HSE_VERSION_INFO *pVersionInfo)
//
// Return the version this server is built for. See httpext.h for
// a prototype. This function is required by the spec.
//

BOOL WINAPI GetExtensionVersion(
HSE_VERSION_INFO *pVersionInfo)
{
// set version to httpext.h version constants
pVersionInfo->dwExtensionVersion = MAKELONG (HSE_VERSION_MINOR,
HSE_VERSION_MAJOR);

lstrcpyn(pVersionInfo->lpszExtensionDesc,
TEXT("IIS to WCGI Converter"),
HSE_MAX_EXT_DLL_NAME_LEN);

return TRUE;
} // GetExtensionVersion()

//
// BOOL WINAPI TerminateExtension( DWORD flags) 
//
BOOL WINAPI TerminateExtension( DWORD flags)
{
return TRUE;
}

// 
// BOOL WINAPI HttpExtensionProc (EXTENSION_CONTROL_BLOCK *pECB) 
//
DWORD WINAPI HttpExtensionProc(
EXTENSION_CONTROL_BLOCK *pECB)
{
char buffer[ 256];
int bufLen;
char varBuffer[ 64];

pECB->GetServerVariable( pECB->ConnID, "User-Agent", varBuffer, &bufLen);

wsprintf( buffer,
"Content-Type: text/html\r\n"
"\r\n"
"<head><title>Example 1</title></head>\n"
"<body><h1>Hello World</h1>\n"
"The parameters you sent **%s**\n"
"<BR>The browser you are using is **%s**\n"
"</body></html>\n", pECB->lpszQueryString, varBuffer);

bufLen = strlen( buffer);

// Now create a web page
pECB->ServerSupportFunction(pECB->ConnID,
HSE_REQ_SEND_RESPONSE_HEADER,
(LPDWORD) "200 means groovy",
&bufLen,
(LPDWORD)(buffer));

return HSE_STATUS_SUCCESS; 
}

Gross
ISAPI
11/05/96
12:14 PM

1

 

Papers

 

LA114 LA115 LA116 LA121
LA117 LA118 LA119 LA120

 

 

Imagenes varias

 

LA112c.gif        LA112d.gif    LA112e.gif    LA112f.gif     LA112g.gif     LA112h.gif     LA112g

 

regresar