![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() | ||
![]() ![]() ![]() |
![]() | |||||||
![]() |
![]() |
![]() | ||||||
![]() |
![]() |
![]() |
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.
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