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