Programación con ISAPI

22/12/2004 - 21:25 por FGF | Informe spam
Hola a todos:

1. ¿Se puede llenar un formulario HTML guardado en disco con datos
procedentes de una extensión ISAPI?
2. ¿Se puede desde código C++ avanzar o retroceder páginas cargadas en el
Explorer?
3. ¿Alguien sabe de un buen manual para programar con ISAPI?

Un saludo a toda la comunidad de programadores VC++.
 

Leer las respuestas

#1 Isidro Muñoz
24/12/2004 - 10:24 | Informe spam
Hola Felix,

1. ¿Se puede llenar un formulario HTML guardado en disco con datos
procedentes de una extensión ISAPI?


No la entiendo esta pregunta.

2. ¿Se puede desde código C++ avanzar o retroceder páginas cargadas en el
Explorer?


Si lo que quieres es que mediante el ISAPI puedas avanzar y retroceder
páginas en el Explorer del cliente te digo que no.
Un Isapi solo se ejecuta en el servidor web ( igual que si fuera ASP ), lo
único que ocurre que es un módulo win32 que el servidor web ejecuta y este
módulo le devuelve al servidor web la información que tiene que devolver al
navegador del cliente.
para avanzar y retroceder las páginas en el código que devuelves al servidor
web tendrás que poner algún javascript o vscript que te haga eso.

Digamos si un cliente pone http://www.paginaweb.com/prueba.html el servidor
web buscará el ficheor prueba.html y se lo devolverá al navegador del
cliente que ha hecho petición. Si pone
http://www.paginaweb.com/pruebaisapi.dll el servidor web cargará la dll
llamará a una función exportada que siempre es la misma y en un puntero a
cadena pruebaisapi.dll grabará los datos que el servidor web tiene que
devolver si por ejemplo graba:
<html><head></head><body>Hola mundo</body></html>
Esto es lo que le llegará al navegador del cliente.
Si grabas:
Hola mundo
esta cadena le llegará al navegador del cliente pero claro esto el navegador
del cliente esto no lo va a entender.

3. ¿Alguien sabe de un buen manual para programar con ISAPI?



El fundamento de ISAPI es un filtro en el servidor web.
Es una dll que exporta una función que tiene un formato y un nombre fijo
siempre.

Imaginemos que creas un isapi que se llama isapi.dll, lo tendrás que colocar
normalmente en un directorio con permiso de ejecución y no de escritura.

Cuando un usuario acceda a él mediante:

http://www.paginaweb.com//isapi.dll...or1=valor2

El IIS cargará la dll ( si no la tiene ya cargada ) y llamará a su función
exportada, le pasará un montón de información y un puntero a una cadena. En
dicha cadena tendrás que poner todo el código que el IIS devolverá al
navegador que ha hecho la petición anterior.

Lo normal es que devuelvas código del tipo http. Pero por ejemplo, puedes
devolver un fichero .gif. Imaginate que tienes que web que tiene una imagen
en el centro que visualiza una estadisticas de las ventas de la empresa. Si
no quieres estar creando continuamente y grabando el .gif en el IIS, puedes
hacer que el isapi.dll consulte la base de datos averigue los datos de la
gráfica, y genere la información en fichero .gif ( pero en memoria no en
disco ) y ahora tú devolverás lo mismo que devolvería el IIS si cogiera ese
fichero del disco del servidor Web.

Basicamente es eso, que ocurre que el código html que devuelves normalemtne
son pagina html que están almacenadas en el servidor web y mediante unas
etiquetas especificas las cargas en memoria le cambias las etiquetas y le
devuelves al cliente la pagina transformada.

Tambien lo que se hace es coger un fichero .xml y hacerle una transformacion
para que cree otro .xml con formato HTML y eso se devuelve al cliente.

Comentar que un isapi es una dll que carga el IIS solo una vez y por cada
petición que se haga a la dll el servidor web crea un thread nuevo.Si hay 40
navegadores haciendo peticiones al isapi, la dll se estará ejecutando en 40
thread a la vez, que quiere decir esto que hay que tener mucho cuidado con
usar variables globales en la dll, sincronización de datos, etc.etc.

De todos modos para saber más ya sabes MSDN busca ISAPI.

Saludos.
Isidro.

Preguntas similares