Title: Introducci
1Introducción a COBHTTPD
2Definición de COBHTTPD
- COBHTTPD es un servidor WEB, el cual se encarga
de servir archivos que son solicitados por los
navegadores usando el protocolo http. - Tiene incorporadas también funciones especiales
para ejecutar internamente programas COBOL. - Al ser un servidor WEB no necesitaremos de usar
programas adicionales como APACHE o IIS, pues
COBHTTPD mismo cubre estas tareas.
3Flujo de una solicitud WEB
Navegador (cliente)
COBHTTPD (servidor)
Las operaciones que realiza el servidor son muy
extensas, pero aquí se pone un pequeño resumen
solo para explicar lo que sucede a grandes rasgos
en cada petición
Dirección http//myserver/ventas.html
- Abre comunicación
- Recibe petición
- Localiza archivo publico
- Carga en Memoria
1)
- Headers de retorno
- Envía Headers
- Envía Contenido
- Cierra comunicación
- Recibe archivo
- Parsea y analiza código
- Renderiza y muestra
- Si necesita mas archivos, hace solicitudes
independientes ltimggt
2)
Lo interesante del navegador, es que al recibir
un archivo html, parsea/analiza, y si necesita
otro archivo que esta en el servidor, realiza
otra petición para el nuevo archivo
4Flujo de una solicitud WEB
Supongamos que tenemos una pagina llamada
resumen.html, con el contenidolthtmlgtltheadgtlttit
legtResumen de Ventaslt/titlegtlt/headgtltbodygt
ltimg src/images/logo.gifgt lta
href/graficas/grafica.jpggtVer
Graficaslt/agtlt/bodygtlt/htmlgt
Si analizamos el contenido del html, encontramos
que necesita del archivo /images/logo.gifEl
archivo /graficas/grafica.jpg no es necesario
para esta pagina, pues este esta como un
hipervinculo, es decir, este archivo se pedira
solo hasta que se le de click
La primer operación del navegador seria pedir la
pagina resumen.htmlEl navegador al parsear y
analizar, encontrara que tambien necesita el
archivo /images/logo.gif, por eso hace una nueva
peticion para traer este archivo
Operaciones del Cliente1) Direccion
http//mydominio/resumen.html2) Pedir al
servidor http//mydominio/images/logo.gif
5Flujo de una solicitud COBOL
Navegador (cliente)
COBHTTPD (servidor)
Dirección http//myserver/cobcgi?proidPROJprog
programa
- Abre comunicación
- Valida proyecto/programa
- Conver datos HTML-CBL
- Ejecuta programa
1)
Ante una llamada de un programa, el servidor
valida que el programa este registrado para
ejecucion, convierte datos, ejecuta y regresa el
resultado
- Recibe resultado
- Parsea y analiza código
- Renderiza y muestra
- Si necesita mas archivos, hace solicitudes
independientes ltimggt
- Headers de retorno
- Envía Headers
- Envía Contenido
- Cierra comunicación
2)
Para el navegador no encontrara diferencia, ya
que el resultado lo tratara de la misma manera
que si fuera un archivo estatico
6Solicitud de un Reporte
Navegador (cliente)
COBHTTPD (servidor)
Dirección http//myserver/cobpdf?proidPROJprog
programa
- Valida proyecto/programa
- Conver datos HTML-CBL
- Ejecuta programa
- Convert COBVIEW a PDF
La diferencia principal radica en la llamada
/cobcgi o /cobpdf, adicionalmente, cobhttpd
convierte el reporte COBVIEW a PDF para regresarlo
1)
- Recibe resultado
- Parsea y analiza código
- Renderiza y muestra
- Si necesita mas archivos, hace solicitudes
independientes ltimggt
2)
Nuevamente el navegador no encuentra diferencia,
ya que el Content-type indica que se trata de un
archivo PDF, y usara el plugin adecuado para
visualizar el resultado
- Content-type para PDF
- Envía Headers
- Envía Contenido
7Fundamentos de HTTP (petición)
Estructura de una direccion web
(URL)http//hostportpath?queryString Ejemp
lohttp//www.cobtools.com/cobcgi?proidcobcmspr
ogcmsconten HTTP es un protocolo que no guarda
el estado, es decir, cuando el cliente hace una
peticion, la conexión con el servidor es cerrada
despues de que el cliente recibe la respuesta.
Estructura de una peticion
Ejemplo
Method URL Versionheaderscuerpo del mensaje
GET http//www.cobtools.com HTTP/1.1Host
localhost
COBHTTPD soporta el metodo GET y POST, aunque
para el programa COBOL es transparente el metodo
que se utilice, basicamente se diferencian en la
manera en como se encapsulan los datos al ser
enviados hacia el servidor.Como se puede
apreciar, al hacer una peticion, no solamente se
envia la la direccion que se necesita, tambien el
navegador envia datos adicionales, estos datos se
conocen como Headers. En el cuerpo del mensaje
van los valores adicionales cuando el metodo es
POST. Una linea en blanco divide los headers del
cuerpo del mensaje.
8Fundamentos de HTTP (petición)
Ejemplo
GET http//www.cobtools.com HTTP/1.1 Accept
image/gif, image/x-xbitmap, image/jpeg,
image/pjpeg, application/x-shockwave-flash,
/ Accept-Language es-mx Accept-Encoding gzip,
deflate User-Agent Mozilla/4.0 (compatible MSIE
6.0 Windows NT 5.1 SV1 .NET CLR
2.0.50727) Host localhost Connection Keep-Alive
Todos estos headers son pasados por un navegador
hacia el servidor web, para indicarle que cosas
acepta, y cuales no, asi como la version del
navegador, etc. El servidor web puede aprovechar
esta informacion que envia el cliente para saber
como responder ante la peticion. Imaginemos a los
headers del navegador como un arreglo de varias
lineas, todas llenas de informacion del programa
cliente, y las cuales son todas enviadas por
internet con el fin de hacer una peticion.
GET http//www.cobtools.com/cobcgi?proidcobcmspr
ogcmscontenfuncStart HTTP/1.1
9Fundamentos de HTTP (respuesta)
Estructura de una respuesta web En la respuesta
web que regresa el servidor, tambien hay dos
secciones, Headers y Contenido
Estructura de una respuesta
Ejemplo
Version 200 OKContent-type text/htmlExpires
fecha-de-expiracionSet-Cookie
Cookies-de-sesionContent-Length
tam-ContenidoContenido del resultado
HTTP/1.0 200 OK Content-type text/html Set-Cookie
cobhttpd-var Content-Length 123 lthtmlgtltheadgtltt
itlegtPruebaslt/titlegtlt/headgtltbodygtlt/bodygtlt/htmlgt
En la respuesta del servidor, tambien hay headers
que regresar al navegador, sirven de informacion
para que el navegador haga o no ciertas tareas,
no se visualizan pues la parte visual esta en el
Contenido del resultado. Tambien una linea en
blanco separa los headers del Contenido
visual. Entre los headers importantes
vanSet-Cookie para almacenar un valor en el
cliente, cobhttpd lo usa para el manejo de
sesionesContent-type le indica al navegador
que tipo de contenido regresa, mas adelante
veremos otrosContent-Length el tamaño del
contenido, cobhttpd lo calcula automaticamente
10Fundamentos de HTTP (respuesta)
Headers mas importantes Content-typeLe dice al
navegador que tipo de contenido estamos
regresando, no trata igual un text/html que un
image/gif. Tipos mas usuales text/html paginas
web usado por cobhttpd ante una peticion
/cobcgi?application/pdf reportes PDF usado
por cobhttpd en peticiones /cobpdf? Si
regresamos desde nuestro programa COBOL un tipo
distinto a estos, debera de ser la primer linea
grabada en el archivo de salida (HTTP-OUTPUT),
ejContent-type text/plainCONTENIDO A
REGRESARAL CLIENTE Los demas headers seran
agregados automaticamente por el COBHTTPD
11Flujo interno de solicitud COBOL
Ejemplo de la peticionhttp//www.cobtools.com/co
bcgi?proidcobcmsprogcmscontefuncShowMain 1.-
Checa si existe el proyecto (cobcms)2.- Checa si
el proyecto contiene el programa cmsconte3.-
Carga datos del proyecto (Directorio, Runtime,
Tipo de runtime y tipo de proceso)4.- Recarga
datos de sesion, si el mismo usuario ya habia
visitado paginas anteriores5.- Checa que el
directorio de programas COBOL exista, si no
ERROR6.- Arma registro de campos necesarios para
COBOL, en variable HTTP-DATA-INP 6.1.- Analiza
xml, buscando campos necesarios 6.2.- Extrae
valor de cada campo de la consulta HTTP 6.3.-
Crea archivo unico para esperar contenido HTML
del programa COBOL (HTTP-OUTPUT)7.- Ejecuta
Runtime COBOL, usando programa cmsconte8.- Si la
llamada es del tipo /cobpdf, convierte contenido
a PDF, usando COBVIEW9.- Si la llamada es del
tipo /cobcgi Analiza archivo de contenido
(HTTP-OUTPUT) 9.1.- Si primer linea es
Content-type, utiliza este tipo en lugar de
text/html 9.2.- Parsea contenido y cambia
macros internos (Template, Sesiones,
Variables)10.- Agrega headers necesarios 11.-
Regresa contenido al cliente
12F I N