Está en la página 1de 138

Introduccin al desarrollo de aplicaciones web

Arquitectura web en aplicaciones empresariales basadas en tecnologa Java/J2EE


Csar Fernndez Acebal
Universidad de Oviedo
www.cesaracebal.com acebal@uniovi.es

ndice

Introduccin a Internet y la Web


HTTP, HTML, URL, servidores web

Introduccin a las pginas dinmicas


CGI, ASP, JSP y Servlets, etc.

Mantenimiento de la sesin del usuario Servidores de aplicaciones

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

Introduccin a Internet y la Web

La Web es una vasta coleccin de documentos en Internet que estn enlazados a travs de los hiperenlaces Internet: millones de ordenadores conectados
Un conjunto de redes heterogneas conectadas entre s mediante el protocolo TCP/IP

Los hiperenlaces permiten a los usuarios acceder a documentos situados en otros servidores web, sin preocuparse de su ubicacin
3

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

Tecnologas clave de Internet


Veamos una somera introduccin a las tecnologas fundamentales sobre las que se sustenta Internet, que sern tiles para comprender posteriormente algunas de las dificultades intrnsecas del desarrollo de aplicaciones web.

Tecnologas claves de Internet

La infraestructura de Internet es proporcionada fundamentalmente por tres tecnologas:


La conmutacin de paquetes El protocolo TCP/IP La arquitectura cliente/servidor

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

Conmutacin de paquetes
Consiste en dividir un mensaje en trozos denominados paquetes, enviar stos por diferentes caminos y ensamblarlos una vez que lleguen a su destino para recomponer el mensaje original.

Surge como respuesta a las redes de conmutacin de circuitos, como la telefnica El primer libro sobre esta tecnologa data de 1964 (Leonard Kleinrock) y luego fue desarrollada por otros en laboratorios de investigacin de Estados Unidos e Inglaterra Con la conmutacin de paquetes, la Introduccin al desarrollo de aplicaciones web capacidad de una red (su ancho de Csar Fernndez Acebal

Conmutacin de circuitos
Era la que usaban las primeras redes de ordenadores, a imagen y semejanza de la telefnica En ellas, se establece una comunicacin punto a punto entre ambos extremos mientras tiene lugar la comunicacin

Existe un canal dedicado entre ambos, Ineficiente independientemente de los datos que se Poco fiable estn enviando (Si se Problemas:corta el canal, se interrumpe la conexin)
Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal 7

Ejemplo de conmutacin de circuitos

Una vez establecido el circuito, es siempre el mismo durante toda la conexin.

Telefnica

Telecable

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

Conmutacin de paquetes

Es la tecnologa que emplea la red Internet Los mensajes se dividen en paquetes


A cada paquete se le aaden la direccin de origen y destino, el nmero de secuencia, informacin de control de errores

En vez de enviarse directamente a la direccin de destino, los paquetes viajan de una mquina a otra hasta alcanzar su destino
Estas mquinas se denominan routers

Ordenadores que interconectan las diferentes subredes y que son capaces de encaminar los paquetes de una a otra Para asegurar que siguen la mejor ruta disponible, utilizan Introduccin al desarrollo de aplicaciones web 9 programas llamados algoritmos de encaminamiento Csar Fernndez Acebal

Ejemplo
La heroica ciudad dorma la siesta.
Origen Destino N de bytes

El mensaje original a transmitir se divide en cuatro paquetes, con cierta informacin de control adicional que permita su reconstruccin en el destino.
Posicin Datos

N de paquetes

192.168.1.1 10.0.0.1
Origen Destino

144
N de bytes

4
N de paquetes

1
Posicin

La heroica
Datos

192.168.1.1 10.0.0.1
Origen Destino

144
N de bytes

4
N de paquetes

2
Posicin

ciudad do
Datos

192.168.1.1 10.0.0.1
Origen Destino

144
N de bytes

4
N de paquetes

3
Posicin

rma la si
Datos

192.168.1.1 10.0.0.1

139

esta.
10

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

Ventajas de la conmutacin de paquetes

Al no tener un circuito dedicado, puede hacer uso en cada momento de cualquiera de las rutas disponibles
Hace uso de casi la totalidad del ancho de banda disponible
Casi la totalidad porque es necesario incluir informacin de control, que no formara parte del mensaje en s a transmitir

Si algunas lneas estuvieran cadas o demasiado ocupadas, los paquetes se envan Introduccin al otra de las disponibles por desarrollo de aplicaciones web 11
Csar Fernndez Acebal

TCP/IP

Si bien la conmutacin de paquetes supuso un gran avance en la capacidad de las redes de comunicaciones, era necesario implementar el modo de llevarla a cabo
Eso es de lo que se encargan los protocolos TCP/IP
Transmission Control Protocol (TCP) Internet Protocol (IP)

Un protocolo es un conjunto de reglas para formatear, ordenar y comprimir mensajes, Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal comprobar errores, etc.

12

Cuatro capas

La familia de protocolos TCP/IP se divide en cuatro capas:


La capa de red es la de ms bajo nivel
Representa el medio fsico encargado de enviar en ltima instancia los 0 y 1 que componen cada mensaje Diversas tecnologas: Ethernet, ATM

La capa de Internet es donde se sita el protocolo IP


Esquema de direcciones, encaminamiento de los mensajes

En la capa de transporte est TCP


Enva acuses de recibo, reagrupa el mensaje en destino, vuelve a mandar los paquetes perdidos o defectuosos

Por ltimo, en la capa de aplicacin estn los programas que hacen uso de los servicios proporcionados por las capas inferiores
HTTP (HyperText Transfer Protocol), FTP (File Transfer Introduccin Protocol), SMTP (Simple Mail Transfer Protocol) al desarrollo de aplicaciones web
Csar Fernndez Acebal 13

Arquitectura de TCP/IP

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

14

Encaminamiento de paquetes con TCP/IP

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

15

Direcciones IP

Cada ordenador conectado a Internet debe tener una direccin para poder recibir los paquetes TCP
sta puede ser:
Esttica
Fija, siempre la misma

Dinmica
Por ejemplo, cada vez que nos conectamos a Internet con un mdem telefnico, nuestro proveedor de Internet (ISP, Internet Service Provider) nos asigna una direccin temporal

Las direcciones IP son nmeros de 32 bits separados en cuatro partes (por ejemplo, 156.35.94.5)
16

Cada uno va de 0 a 255; esto nos da un total de 232 Introduccin al desarrollo (algo ms de cuatro mil millones) direcciones de aplicaciones web
Csar Fernndez Acebal

IPv6
El problema es que con cada vez ms y ms dispositivos conectados, este esquema de direcciones est cercano a quedarse pequeo Por ello, se est desarrollando una nueva versin, denominada IPv6 para sustituir a la actual (IPv4), que con 128 bits podr tener 3,4 1038 direcciones Adems, mejora otras deficiencias de IPv4 Introduccin al desarrollo de aplicaciones web

Csar Fernndez Acebal

17

Nombres de dominio y URL


Para no tener que recordar direcciones IP tal cual, stas pueden ser representadas mediante nombres de dominio (por ejemplo, www.euitio.uniovi.es) El sistema de nombres de domino (DNS) permite que stas se resuelvan a direcciones IP

Ejemplo: ping www.euitio.uniovi.es

Los URL (Uniform Resource Locator) son las direcciones que escribimos Introduccin al desarrollo de aplicaciones web 18 Csar Fernndez Acebal en el navegador

Computacin Cliente/Servidor

En este modelo de computacin distribuida, un cliente solicita una accin a un servidor, que le devuelve los resultados
Puede haber diversos tipos de clientes, desde los ms ligeros (como un navegador Web, que nicamente es capaz de mostrar documentos HTML) hasta clientes pesados que tambin realizan procesamiento

Surgen como respuesta a los mainframes de los 60 y 70 (con 128 KB de RAM y y discos duros de 10 MB)
Despega este modelo con el advenimiento de los ordenadores personales

Toda Internet es una inmensa red Introduccin al desarrollo de aplicaciones web cliente/servidor

Csar Fernndez Acebal

19

Esquema Cliente/Servidor

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

20

Introduccin a la Web
Ahora, veremos los principios bsicos de la World Wide Web (WWW o Web, a secas): lenguajes, protocolos, servidores y clientes, etctera.

Internet Web

Internet permite a cualquier ordenador del mundo compartir datos con otro ordenador remoto
Un programa cliente en un ordenador accede a un programa servidor en otro ordenador remoto

La Web es el sistema de hipertexto que funciona sobre Internet como uno de sus servicios

En este caso, el programa cliente es nuestro navegador, y el servidor el programa que hace navegador de servidor aplicaciones web Introduccin al desarrollo deweb que est ejecutndose en el 22 Csar Fernndez Acebal ordenador remoto y que se encarga de

Nacimiento de la World Wide Web

En 1989, Tim Berners-Lee, en el laboratorio europeo de partculas (CERN), en Suiza, crea un lenguaje de etiquetas para representar y enlazar documentos

Tim Berners-Lee

HTML HyperText Markup Berners-Lee cre las versiones iniciales Language de: Lenguaje de Marcado de Hipertexto HTML, HTTP, un servidor web y un navegador HTML HTTP Los cuatro componentes esenciales de la Web
23

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

Esquema general Cliente/Servidor

Peticin Red
Servidor

Respuesta
Cliente
Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal 24

Visin general de la Web


www.cesaracebal.com
index.html

Internet Internet
El usuario teclea http://www.cesaracebal.com/ en su navegador

enlace

www.uniovi.es
Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal 25

Visin general de la Web


1.

El usuario solicita un documento tecleando su direccin en el navegador: http://www.uniovi.es


Es lo que se denomina un URL (localizador uniforme de recursos)

1.

El cliente busca en el DNS cul es la IP de www.uniovi.es: 156.35.14.3


Cada ordenador en Internet est identificado por una direccin nica denominada IP El DNS traduce de nombres lgicos a direcciones fsicas

Navegador y servidor web comienzan un dilogo a travs del protocolo HTTP (protocolo de transferencia de hipertexto) Introduccin al desarrollo de aplicaciones web
1.
Introduccin al desarrollo de aplicaciones web 1. GET /HTTP/1.0 Csar Fernndez Acebal

26

Visin general de la Web


4. 5. 6.

El navegador mira el tipo de documento devuelto (MIME) Si es text/html es un documento HTML, lo visualiza el propio navegador Si es otro tipo de documento se ejecutar el programa que tenga asociado, o nos preguntar si queremos guardar el documento en nuestro ordenador
Nota: estos tipos MIME los podemos configurar en nuestro navegador

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

27

Funcionamiento de la Web
ste enva una peticin al servidor Web

Tecleamos una direccin en el navegador (por ejemplo, www.euitio.uniovi.es)

HTTP

Quien devuelve la pgina solicitada (en este caso, la index.html del directorio raz)

Y el navegador se encarga de interpretar el cdigo HTML y mostrar el resultado

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

28

Funcionamiento de la Web

Un servidor web es un ordenador en Internet que sirve pginas web a peticin


Para ello, debe tener un programa ejecutndose que haga de servidor web: Apache, IIS, etctera

El usuario accede a la web a travs de un navegador (browser)


Se encarga de solicitar las pginas web al servidor y de mostrarlas

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

29

HTML

Es el lenguaje de creacin de pginas Web


Al menos, de las pginas estticas

Era imprescindible que la misma informacin se pudiese ver en diferentes plataformas Por tanto, Berners-Lee dise un lenguaje de estructuracin de documentos, no de presentacin (sta se dejaba al programa cliente)

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal 30

HTML es un lenguaje
Como tal, tiene unas reglas que deben ser cumplidas, esto es, una sintaxis, una gramtica... igual que el espaol o cualquier otro lenguaje informtico Es adems un lenguaje informtico, para ser procesado por ordenadores; pero no es un lenguaje de programacin

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal 31

Por qu de marcado ?

Qu vemos de un vistazo en el siguiente texto?


Acme Computer Corp. Acme Computer Corporation is a technology-based company that seeks to offer its customers the latest in technological innovation. Our products are created using the latest breakthroughs in computers and are designed by a team of top-notch experts. We are based in Acmetown, USA, and have offices in most major cities around the world. Our goal is to have a global approach to the future of computing. Have a look at our product catalog for some examples of our innovative approach.

Que

tiene un ttulo y dos prrafos Pero un ordenador slo vera un montn de caracteres
Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

Necesitamos un modo de indicarle la estructura del documento

32

HTML, lenguaje de hipertexto


Por hipertexto designamos al texto al que se le aade una propiedad: determinadas porciones de texto pueden ser enlazadas a otros documentos De ah surge el concepto de navegacin: surcamos el Web yendo de unos enlaces a otros El hipertexto debe ser utilizado en los sitios web para facilitar al usuario la labor de Introduccin al desarrollo de aplicaciones web bsqueda de la 33

Csar Fernndez Acebal

Qu necesitamos para crear un documento HTML?

Un editor de texto
Ojo!, no un procesador de textos tipo el Word, por ejemplo Debe ser texto plano, sin formato (p. ej., con el Bloc de Notas)

Le daremos la extensin .html o .htm, y un nombre sin espacios ni caracteres especiales


Nota: ninguna de las dos caractersticas son obligatorias, pero nos ahorrarn problemas

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

34

Y para verlo?
Un programa cliente que entienda lenguaje HTML (que pueda visualizar de alguna manera documentos HTML) Tcnicamente, recibe el nombre de HTML User Agent Un ejemplo de agente de usuario son los navegadores (literalmente, hojeadores) web (web browsers) El navegador es quien se encarga de la presentacin del Introduccin al desarrollo de aplicaciones web documento (el 35 Csar Fernndez Acebal estndar no especifica cmo debe

Especificacin de HTML

La especificacin del lenguaje HTML y de la mayora de tecnologas relacionadas con el Web est definida por el World Wide Web Consortium (W3C)
www.w3c.org

Nota: Ahora, HTML ha dado lugar a una variacin del mismo denominada XHTML
36

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

El World Wide Web Consortium (W3C)

Consorcio formado por cerca de 500 organizaciones que dicta los estndares de la Web
HTML, CSS, XML, XHTML, DOM http://www.w3.org

Objetivo: promover la evolucin de la Web garantizando que las distintas tecnologas Dirigido por Tim Berners-Lee, funcionen de la Web, en el inventor bien conjuntamente 1989
Premio Prncipe de Asturias de Investigacin Cientfica y Tcnica 2002
Tim Berners-Lee 37

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

La Oficina Espaola del W3C

En octubre de 2003 se present la Oficina Espaola del W3C, sita en Asturias


www.w3c.es Concretamente, albergada en las instalaciones de la Fundacin CTIC, en el Jos Cientfico Tecnolgico de Gijn Parque Manuel Alonso Responsable de la Responsables de la Oficina: oficina
Jess Garca
Coordinador Experto en accesibilidad
Acto de presentacin de la Oficina Espaola, en el Hotel de la Reconquista (Oviedo)

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

38

Ejemplo de documento HTML


holaMundo.html
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Introduccin a HTML</title> </head> <body> <h1>Mi primera pgina Web</h1> <p> ste es el equivalente al tpico <em>Hola, mundo!</em> pero en HTML (cuya <a href="http://www.w3.org/MarkUp/" title="Especificacin de las distintas versiones de HTML y XHTML en el W3C">especificacin</a> puede encontrarse en el sitio Web del <acronym title="World Wide Web Consortium">W3C</acronym>). </p> </body> </html> Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal 39

HTTP

HTTP (HyperText Transform Protocol) es el protocolo usado para transferir pginas web
Es el modo en que un navegador se comunica con un servidor Web (Apache, Internet Information Server)

Es un protocolo sin estado


La sesin termina en cuanto se devuelve el objeto solicitado
Incluso, si una pgina contiene otros objetos (imgenes, frames, etc.) cada uno de ellos inicia una nueva peticin HTTP

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

40

Pero y TCP/IP?

No era TCP/IP el conjunto de protocolos sobre los que sustenta Internet? Qu es eso de HTTP?
La comunicacin entre el navegador y el servidor web se realiza mediante HTTP La transmisin efectiva de informacin la controla TCP/IP

HTTP

HTTP

TCP/IP
Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal 41

Ejemplo de mensaje HTTP


Peticin
GET / HTTP/1.0 > >

Respuest a <
HTTP/1.0 200 OK < Date: Wed, 18 Sep 1996 20:18:59 GMT < Server: Apache/1.0.0 < Content-type: text/html < Content-length: 1579 < Last-modified: Mon, 22 Jul 1996 22:23:34 GMT < < HTML document
Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal 42

URL
URI:

Uniform Resource Identifier


URL: Uniform Resource Locator

Un

URL es la direccin nica de todo documento en la Web


http://www.eutio.uniovi.es/

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

43

Sintaxis de un URL
protocolo://direccin[:puerto]/directorio/fichero protocolo://direccin[:puerto]/directorio/fichero

Ejemplos:
http://www.princast.es/ http://195.55.30.17/ http://www.cfacebal.com/ http://www.cfacebal.com/index.html http://web.uniovi.es/Vicerrectorados/Extension/ http://localhost:8080/ http://petra.euitio.uniovi.es/

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

44

Protocolo
Un protocolo define el modo en que se comunican dos ordenadores para llevar a cabo alguna tarea Protocolo de la Web:

HTTP (HyperText Transfer Protocol) Especifica cmo tiene lugar el dilogo entre el navegador y el servidor para conseguir el fichero especificado No se ocupa del transporte en s: TCP

Cada vez que tecleamos una direccin o pulsamos un enlace el Introduccin al desarrollo de aplicaciones web navegador se comunica va HTTP Csar Fernndez Acebal

45

Ejemplos de protocolos
file ftp http Permite acceder a un fichero en el sistema de ficheros local File Transfer Protocol Pginas web

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

46

Direccin del sitio

Suele ser un nombre simblico: nombre de dominio


www.uniovi.es especifica una mquina llamada www en el dominio uniovi.es El nombre de mquina puede ser cualquiera
www no es ms que un convenio para especificar aquellas mquinas que son servidores Web como ftp suele designar a los servidores de FTP incluso aunque muchas veces se trate de la misma mquina

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

47

Direccin del sitio

Tambin podra ser directamente la direccin IP


http://156.35.14.3/

Los nombres de dominio no distinguen entre maysculas y minsculas


http://www.uniovi.es/ http://WWW.UNIOVI.ES/ http://wWw.UniOvi.es/

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

48

Directorio

Hay que indicar la ruta hasta el fichero deseado Como mnimo, debe ir la barra (/)
http://www.uniovi.es/

Si no la ponemos, la pone el navegador por nosotros


...pero en los enlaces en HTML s debe aparecer

Tambin se puede indicar un subdirectorio:


http://www.uniovi.es/Vicerrectorados/Postgrado_Titulo sPropios/doctorado/

Siempre se usa la barra /, no \ (incluso aunque el servidor Web sea una mquina Windows: est definido por el estndar URI, no depende del SO)
Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

La ruta s puede diferenciar entre

49

Nombre del fichero


Depende del sistema operativo del servidor web Las pginas Web generalmente tienen como extensin .html o .htm Las extensiones son importantes para que el navegador sepa cmo tratar un fichero
un .html, lo interpreta y lo muestra un .jpg, trata de mostrar la imagen un .doc, abre el Word si lo tenemos instalado etctera

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

50

Nombre del fichero

Si no se especifica, el servidor busca un fichero con un nombre determinado en el directorio especificado


Normalmente, el index.html o el index.htm Se puede configurar el el programa que utilicemos como servidor web (Apache, IIS...)

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

51

Puerto

Por omisin, una peticin HTTP se dirige al puerto 80


Por eso casi nunca la especificamos

Pero se podra configurar el servidor web para que escuchase peticiones en otro puerto En ese caso, hay que indicarlo explcitamente:

http://www.midominio.com:8080/
Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal 52

Qu es un servidor Web?

Un programa que atiende las peticiones HTTP llegadas a un puerto determinado de la mquina
Tambin se denomina as, por extensin, a la mquina que cuenta con uno de tales programas

Ejemplos de servidores web:


Apache
Apache HTTP Server Project
http://httpd.apache.org/

Internet Information Server (IIS)


Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal 53

Descarga de Apache
La versin actual es la 2.0.54 Direccin de descarga:

http://httpd.apache.org/download.cgi Ah podemos obtener tanto los fuentes para Unix o Windows (que habr que compilar) como un programa de instalacin para Windows (Win32 Binary) Binary

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

54

Instalacin de Apache (Windows)

Opciones de instalacin:
Como servicio en el puerto 80 Para ser arrancado manualmente (puerto 8080)
No da conflictos con otro servidor Web que ya pudiramos tener instalado en el puerto 80 No requiere ningn privilegio de administracin de Windows
Por no ser instalado como servicio Por estar en un puerto superior al 1024

Dominio, direccin del servidor y correo del administrador Directorio de aplicaciones web Introduccin al desarrollo de instalacin
Csar Fernndez Acebal C:/Apache

55

Ejecucin

Una vez finalizada la instalacin, hay que ejecutar Apache manualmente


c:/Apache/Apache2/bin/Apache.exe

Ahora, ya podemos comenzar a solicitarle pginas


Nuestra mquina ya puede actuar como servidor web
Aunque en local; si quisiramos que funcionase a travs de la red, habra que crear un usuario para Apache y darle los permisos necesarios

Para probar si funciona, tecleamos en el navegador: http://localhost:8080/ o http://127.0.0.1:8080/ Deber aparecer la pgina siguiente:
Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal 56

Pgina de prueba de la instalacin

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

57

Qu hace un servidor Web cuando recibe una solicitud?

Si el ltimo elemento del URL es un fichero:


Si se incluye una ruta de directorios, lo buscar a partir del indicado en la directiva
DocumentRoot

Por omisin, es el directorio htdocs dentro del directorio de instalacin de Apache

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

58

Qu hace un servidor Web cuando recibe una solicitud?

En el caso de que el ltimo elemento del URL sea un directorio, sin especificar el fichero:
Si en dicho directorio existe un fichero index.html (o lo que se especifique en DirectoryIndex), se devolver ste Si no existe dicho fichero, y siempre y cuando est habilitada la opcin Options Indexes) se har un listado del directorio

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

59

ndice

Introduccin a Internet y el Web


HTTP, HTML, URL, servidores Web

Introduccin a las pginas dinmicas


CGI, ASP, JSP y Servlets, etc.

Mantenimiento de la sesin del usuario Servidores de aplicaciones

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

60

Pginas estticas

Al principio, el Web estaba poblado nicamente por pginas estticas


El servidor Web simplemente localizaba el documento solicitado en el URL y se lo entregaba al cliente

Este enfoque puede ser perfectamente vlido para muchos sitios


Siempre y cuando no requieran actualizaciones continuas, ya que hay que eso implica o bien modificar, a mano, las pginas existentes, o bien crear una nueva

Pero no permitira, por ejemplo, crear un sitio de comercio electrnico donde se pueda comprar, o el de un banco
en el servidor y crear
61

Introduccin necesariode aplicaciones web Es al desarrollo acceder a datos Csar Fernndez Acebal

una pgina a peticin

Funcionamiento de las pginas estticas

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

62

Funcionamiento de las pginas dinmicas

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

63

Modo de funcionamiento

El esquema de funcionamiento de las pginas dinmicas es siempre similar independientemente de en qu se hayan desarrollado stas
CGI, ASP, Servlets/JSP

El servidor Web detecta una peticin de una pgina dinmica y se la pasa al programa necesario
Podra ser una extensin del servidor O bien un programa completamente independiente

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

ste programa es quien sabe cmo

64

CGI
CGI fue la primera tecnologa que permiti crear pginas dinmicas, que realizaban algn tipo de procesamiento en el lado del servidor.

CGI: Common Gateway Interface


Es un estndar que permite el intercambio de informacin entre servidores Web y programas externos As, mientras que un documento HTML es esttico (un fichero de texto que no cambia), un programa CGI permite mostrar informacin dinmica, al ejecutarse

Por ejemplo, puede hacer una consulta a una base de datos ubicada en el servidor y Introduccin al desarrollo deresultados en HTML 66 mostrar los aplicaciones web Csar Fernndez Acebal
Csar Fernndez Acebal

/cgi-bin/buscar.cgi?texto=web standards

Introduccin
Los datos del formulario son enviados va HTTP HTTP

El servidor Web invoca al programa CGI pasndole los parmetro s recibidos

El usuario, por ejemplo, rellena un formulario y pulsa el botn de enviar

Y ste devuelve el resultado al servidor por medio de la salida estndar


67

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

Ejemplo: Hola, mundo


#!C:\Perl\bin\perl.exe print "Content-type: text/html\n\n"; print "<html>\n<head>\n<title>El Hola, mundo en CGI</title>\n</head>\n<body>\n"; print " <p>Hola, mundo</p>\n"; print "</body>\n</html>";

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

68

Cmo obtiene el programa los datos necesarios?

Depende del mtodo HTTP por el que se enven


GET
Los datos viajan codificados en el propio URL

POST
Los datos viajan encapsulados en el propio mensaje HTTP

Hay dos formas posibles en que el servidor Web puede pasarle los datos al programa CGI:
Mediante las variables de entorno Mediante la entrada estndar (stdin)
69

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

Variables de entorno

La tabla siguiente muestra alguna de las variables de entorno:


(Puede verse una lista completa en http:// hoohoo.ncsa.uiuc.edu/cgi/env.html) Variable
SERVER_NAME QUERY_STRING

Descripcin
El nombre del servidor o su direccin IP La informacin que sigue al ? en el URL que referencia a este programa informacin (por ejemplo, las hechas mediante POST), el tamao en bytes de dicha respuesta

CONTENT_LENGTH Para consultas que llevan asociada

PATH_INFO
Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

70

Acceder a las variables de entorno

La forma de acceder al contenido de dichas variables desde el programa CGI vara dependiendo del lenguaje en que haya sido escrito
Por ejemplo, a continuacin se muestra cmo acceder al valor de la variable SERVER_NAME en getenv("SERVER_NAME") C C y en Perl: $ENV{'SERVER_NAME'} Perl

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

71

Ejemplo

El siguiente programa CGI en Perl muestra el valor de todas las variables de entorno: #!/usr/bin/perl
print "Content-type: text/html\n\n"; foreach $key (keys %ENV) { print "$key --> $ENV{$key}<br>"; }

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

72

Configuracin de Apache para CGI


Antes, es necesario saber qu debemos hacer en el fichero de configuracin de Apache (httpd.conf) para permitir la ejecucin de programas CGI

Directiva ScriptAlias

Aunque hay otras formas de hacerlo en Apache, por motivos de seguridad suele hacerse mediante la directiva ScriptAlias
Definiendo un nico directorio para todos los programas (scripts) CGI
ScriptAlias /cgi-bin/ "C:/Apache/Apache2/cgibin/"

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

74

Intrprete de Perl

Adems, claro est, necesitamos tener un intrprete de Perl instalado en nuestra mquina
Podemos obtener uno para Windows en:
http://www.activestate.com/

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

75

Entrada estndar

El contenido de un formulario enviado mediante el mtodo POST est disponible como un flujo de caracteres en la entrada estndar
En ese caso, la variable de entorno CONTENT_LENGTH indica el nmero total de bytes disponibles

El programa puede as obtener esa informacin como si estuviese leyendo de un fichero o del teclado Los datos del formulario se Introduccin al desarrollo de aplicaciones web 76 codifican en un determinado Csar Fernndez Acebal

Formato de los datos


Consiste en pares nombre=valor separados por & Los caracteres especiales, como espacios en blanco, = y & se convierten a su valor hexadecimal name=Rich%20Bowen&city=Lexington&state=KY La cadena de datos completa sera similar a sta:

Hay bibliotecas de funciones que Introduccin al desarrollo de aplicaciones web dividen dicha cadena en partes, Csar Fernndez Acebal

77

Entrada estndar. Ejemplo en Perl


#!/usr/local/bin/perl #Script 'example1-b.cgi # print "Content-type: text/html","\n\n"; if ($ENV{'REQUEST_METHOD'} eq "POST && $bytes=$ENV{'CONTENT_LENGTH'}) { read(STDIN,$input,$bytes); print "I read the following data:<BR>"; print $input; } else { print "Please give me a POST request with some data<BR>\n"; } exit(0);

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

78

Entrada estndar. Ejemplo en C

El mismo programa que antes, int ahora en ** argv) main(int argc, char C: {
char *type,*length,*input; int bytes; printf("Content-type: text/html"); printf("\n\n"); if(type=getenv("REQUEST_METHOD") && length=getenv("CONTENT_LENGTH") ) { bytes=atoi(length); input=malloc(length+1); read(stdin,input,bytes); printf("I read the following data:<BR>"; printf("%s",input); } else { printf("Please give me a POST request with some data<BR>\n") } exit(0);

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

79

Cmo llegan los datos cuando se usa GET en vez de POST?


En ese caso, la cadena que vena antes por la entrada estndar ahora se aade al URL, tras un ? Luego, al llegar al servidor Web, ste mete esa informacin en la variable de entorno QUERY_STRING

A travs de la cual ya est disponible para el programa CGI, como veamos antes

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

80

Introduccin a ASP
Una vez visto CGI, y como paso previo antes de ver la tecnologa J2EE, que ser el objetivo propiamente dicho del curso, echmosle un vistazo a esta otra

Requisitos de software

Uno de los inconvenientes de ASP es que es dependiente de un servidor Web concreto


El Internet Information Server (IIS) de Microsoft

Dicho servidor ya viene de manera predeterminada en las ltimas versiones de Windows


Aunque quiz no lo hayamos instalado junto con el Sistema Operativo

En ese caso, podramos hacerlo a travs de la Introduccin opcin de Aadir o quitar componentes de al desarrollo de aplicaciones web Csar Fernndez Acebal del Panel de Control Windows

82

Sintaxis general
ASP, al igual que las JSP de Java, se basa en mezclar instrucciones de programacin en nuestras pginas HTML El motor de ASP procesar dichas instrucciones dinmicamente y obviar el HTML

Esto permite generar HTML dinmicamente, aadiendo lgica a nuestras pginas

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

Para ello, hay que encerrar el cdigo ASP entre los smbolos <% %>

83

Lenguaje de programacin
Y en qu lenguaje se escriben esas instrucciones? ASP permite el uso de dos lenguajes:

Visual Basic Script (VBScript) VBScript JScript (como denomina Microsoft a su implementacin de ECMAScript que a su vez es el estndar de JavaScript) JavaScript

Si no decimos nada, por omisin asume VBScript Ser el lenguaje que emplearemos Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal en los ejemplos

84

Ejemplo: mi primera pgina ASP


Ser cmo no! el archiconocido Hola, mundo La pgina siguiente escribe dinmicamente el mensaje <html>

<head> <title>Mi primera pgina ASP</title> </head> <body> <h1> <% Response.Write Hola, mundo!" %> (mi primera pgina ASP) </h1> </body> </html>

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

85

Cmo probamos la pgina?

Si la abrimos directamente en el navegador, no veremos el mensaje


O veramos el cdigo fuente U obtendramos un error (si los navegadores validasen el cdigo HTML que reciben)

Para que tenga sentido, es necesario que la interprete el motor de ASP


Es decir, que reciba la peticin el IIS

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

86

Administracin del IIS


Se instala en el directorio C:/Inetpub Dentro de l, el directorio raz del servidor est en wwwroot Y ah es donde deberemos poner nuestra pgina

(Tambin podramos configurar directorios virtuales) virtuales

Creamos una carpeta ejemplos y llamamos holaMundo.asp al fichero anterior La forma de aplicaciones web Introduccin al desarrollode ejecutarlo es:

Csar Fernndez Acebal

87

Otro ejemplo, ms dinmico

Naturalmente, para el viaje anterior no hacen falta tantas alforjas


No tiene ningn sentido emplear una pgina dinmica para eso

Hagamos ahora una pgina que muestre algo de informacin dinmica


Por ejemplo, que diga Buenos das o Buenas tardes en funcin de la hora

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

88

Saludo personalizado: fecha y hora


<% Crear algunas variables Dim fecha Dim hora Obtener la fecha y la hora fecha = Date() hora = Time() ' Imprimir un saludo en funcin de la hora If Hour(hora) >= 12 Then Response.Write "Buenas tardes!" Else If (Hour(hora) >= 20) Or (Hour(hora) < 6) Then Response.Write "Buenas noches!" Else Response.Write "Buenos das!" End If End If %> Hoy es <%=fecha%> y son las <%=hora%> Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal 89

Objetos predefinidos

ASP tiene los siguientes objetos predefinidos:

Application Permite compartir informacin entre todos los usuarios de una aplicacin (en esto se diferencia de Session) ASPError ObjectContext Request Para obtener informacin de la peticin HTTP (parmetros, cookies) Response Para enviar datos al cliente (escribir cdigo HTML, redirigir a otra pgina, etc.) Server Fundamentalmente, para crear objetos de componentes Introduccin del servidor aplicaciones web al desarrollo de 90
Csar Fernndez Acebal

Acceso a bases de datos

Prcticamente cualquier aplicacin Web va a necesitar acceder a una base de datos en el servidor

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

91

Aplicacin de ejemplo

Veremos una aplicacin de ejemplo que simular un sitio Web sobre cine, con informacin acerca de las pelculas:
Se podr buscar una pelcula por su ttulo y listar todas las pelculas de un determinado director Adems, de cada pelcula se podr ver informacin detallada:
Director, ao de estreno, intrpretes, sinopsis Y se podr ver el cartel de la pelcula (en pequeo y en grande)

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

92

Diseo de la base de datos

Cada pelcula tiene varios actores, y un actor puede participar en varias pelculas
Intrprete
n n

Pelcula

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

93

Relacin actor-pelcula

Una relacin n a n no puede modelarse directamente en una base de datos relacional, sino que necesitamos una tabla intermedia:
Intrprete
1 n

Pelcula
1

Reparto

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

94

Cartel

Para poder mostrar el cartel de cada pelcula de forma automtica, guardamos el nombre del fichero de imagen en la base de datos
Y las guardamos todas en el mismo directorio del sitio Web, con ese mismo nombre

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

95

Creacin de la base de datos


Nos servir Microsoft Access Luego se podr acceder a ella desde las pginas ASP independientemente del Sistema de Gestin de Bases de Datos utilizado (Access, Oracle, SQL Server) La forma ms flexible es hacerlo mediante ODBC

Permite acceder de forma genrica a cualquier base de datos definida en el sistema


Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

No obstante, no se utilizar en el ejemplo

96

Creacin del origen de datos ODBC

Creamos un nuevo origen de datos del tipo Microsoft Access Driver

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

97

Configuracin de ODBC

Aparecer esta pantalla, en la que asignamos un nombre al origen de datos y seleccionamos la ubicacin de la base de datos:

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

98

Seleccionar base de datos

Tras pulsar el botn Seleccionar, buscamos la ubicacin de la base de datos (el fichero .mdb donde hayamos creado la base de datos con Access)

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

99

Configuracin de ODBC

ste deber ser el aspecto de la ventana una vez configurado el nuevo origen de datos:

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

Slo falta pulsar Aceptar para que sea creado

100

Origen de datos creado

Ahora ya est creado el origen de datos para nuestra base de datos de pelculas
101

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

Creacin de un directorio virtual

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

102

Estudio de la aplicacin
A continuacin, examinemos el cdigo fuente ASP de las pginas de la aplicacin Iremos explicando diferentes aspectos de ASP sirvindonos de la aplicacin de ejemplo:

Acceso a datos Manejo de formularios Redireccin de pginas Generacin de HTML dinmico


Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

(en funcin de determinadas condiciones)


103

Etctera

ndice

Introduccin a Internet y el Web


HTTP, HTML, URL, servidores Web

Introduccin a las pginas dinmicas


CGI, ASP, JSP y Servlets, etc.

Mantenimiento de la sesin del usuario Servidores de aplicaciones

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

104

Mantenimiento de la sesin
Una de los grandes inconvenientes a solventar en las aplicaciones Web es cmo mantener la sesin del usuario. Veamos en qu consiste y qu alternativas

HTTP, protocolo sin estado


HTTP es un protocolo sin estado Esto significa que para el servidor Web cada peticin de una pgina es nica

No tendra forma de saber, por ejemplo, que ese usuario acaba de aadir un producto a su carrito, o si ya se valid o no, en qu punto del proceso de compra se encuentra, etctera

Son necesarias alternativas software, por tanto, que permitan simular el estado
106

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

Alternativas

Aunque hay varias formas de hacerlo (dependiendo de si trabajamos en ASP, en J2EE) la mayora pasan por el uso de cookies Algunas de las alternativas son:

Usar el objeto Session (o similar) provisto por los entornos de programacin como ASP o J2EE (Servlets, JSP...) Almacenar toda la informacin de la sesin, a mano, en una cookie (por ejemplo, mediante JavaScript) Una combinacin de cookie (para guardar un ID de usuario) y bases de datos URL rewriting Etctera Introduccin al desarrollo de aplicaciones web 107
Csar Fernndez Acebal

Cookies
Veamos una introduccin a las cookies y algunos ejemplos en los que aprenderemos a manipularlas.

Qu son las cookies?


Las cookies son pequeas porciones datos que son almacenados localmente por el navegador en forma de pequeos ficheros de texto Cada vez que el cliente enva informacin al servidor, incluye en la peticin HTTP las cookies que previamente haya guardado provenientes de ese servidor

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal 109

Detalles de implementacin

Segn la especificacin, un agente de usuario (es decir, un navegador), debe permitir al menos:
Un total de 300 cookies Hasta 4 KB (4.096 bytes) por cookie Al menos 20 cookies de un servidor dado

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

El navegador se encarga automticamente de eliminar aqullas que hace ms tiempo que no se utilizan cuando necesita guardar nuevas cookies

110

Sintaxis

Cada cookie presenta la siguiente sintaxis general:


nombre=valor; [expires=fecha; path=directorio; domain=nombreDeDominio; secure]

Lo nico obligatorio es que tenga un nombre y un valor asociado; el resto de atributos son opcionales
Aunque tambin se utiliza bastante el atributo
expires

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

111

Descripcin de los atributos

Un par nombre = valor


Por ejemplo: IDUsuario = 49; expires Hasta cundo ser vlida la cookie
Debe ir en este formato:
GMT Wdy, DD-Mon-YYYY HH:MM:SS

Si no se dice nada, la cookie ser eliminada al terminar la sesin


Es decir, al cerrar la ventana actual del navegador

path El conjunto de directorios del servidor para los que es vlida esta cookie (por omisin, ser el raz /, es decir, todos) Introduccin al desarrollo de aplicaciones web 112

Csar Fernndez Acebal

Descripcin de los atributos (2)

domain El servidor o nombre de dominio para el que es vlida la cookie Una cookie slo puede ser leda y modificada desde el servidor y directorio especificados en la cookie cuando sta fue creada secure Es booleano; si est definido (si aparece el atributo) deber haber una conexin segura (https) para que la cookie sea enviada

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

113

Uso de cookies en ASP


Veamos de qu forma podemos establecer y leer cookies en ASP.

Response.Cookies

Mediante la coleccin Cookies del objeto predefinido Response podemos establecer el valor de una cookie
Si la cookie especificada no existe, se crear Si existe, machacar el valor que tuviera anteriormente

Ejemplo:

<% Response.Cookies(IDUsuario) = 49 Response.Cookies(IDUsuario).Expires = December 31, 2004 %> Introduccin al desarrollo de aplicaciones web
Csar Fernndez Acebal

115

Leer el valor de una cookie

Se hace a travs de la misma coleccin, slo que ahora sin especificar ningn valor:
<%= Request.Cookies(IDUsuario) %>

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

116

Ejemplo: contador de visitas

Realicemos un sencillo ejemplo en el que se cuenten las visitas de un usuario a una pgina

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

117

URL Rewriting

Consiste en incluir la informacin del estado en el propio URL


//comprar.asp? paso=3&producto1=01992CX&producto2=ZZ11 2230&producto3=HJ19X25

No es de recibo en aplicaciones serias


Un cliente puede iniciar dos o ms sesiones simultneas, pginas tediosas de programar, slo se puede usar el mtodo GET, etc.
Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

118

Ventajas e inconvenientes
Almacenar el estado de la sesin en el cliente presenta algunas ventajas frente a hacerlo en el servidor, pero tambin tiene algunos inconvenientes.

Ventajas

Menor uso de los recursos del servidor


Los servidores sin estado no necesitan reservar y mantener recursos para guardar el estado de la sesin

Fcil escalabilidad y uso de clusters


Al no tener estado, cualquier servidor puede atender a cualquier cliente
No hace falta que un cliente siempre sea atendido por el mismo servidor, ni ningn tipo de distribucin del estado entre servidores

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

La sesin del cliente podra sobrevivir a una cada del servidor


Un reintento por parte del cliente con el
120

Inconvenientes

Privacidad
Otros servidores podran leer informacin almacenada en las cookies del cliente
No son vlidas para guardar nmeros de tarjeta, contraseas y cosas por el estilo

Los datos pueden ser alterados


Un usuario podra modificar el fichero de una cookie Lo mismo ocurre con otros mecanismos de cliente: URL, formularios, etc.

Aumenta el trfico por la red


121

El estado se transmite con cada peticin al servidor Introduccin al desarrollo de aplicaciones web
Csar Fernndez Acebal

Inconvenientes

Implementacin compleja
Mantener a mano el estado en el cliente puede ser realmente complicado si queremos hacerlo de manera robusta
(Lo hemos visto con el ejemplo del sitio Web de cine en ASP)

Tamao de datos limitado


Tanto el tamao mximo permitido por las cookies como la longitud mxima de un URL pueden darnos problemas para almacenar sesiones complejas

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

122

ndice

Introduccin a Internet y el Web


HTTP, HTML, URL, servidores Web

Introduccin a las pginas dinmicas


CGI, ASP, JSP y Servlets, etc.

Mantenimiento de la sesin del usuario Servidores de aplicaciones

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

123

Qu es un servidor de aplicaciones?
Es un programa que provee la infraestructura necesaria para las aplicaciones Web empresariales Qu quiere decir esto?

Que los programadores van a poder dedicarse casi en exclusiva a implementar la lgica del dominio, ya que servicios de uso comn, como transacciones, seguridad, persistencia, etc. ya son proporcionados por el servidor Web Se ha convertido en una pieza de software clave para cualquier empresa dedicada al Introduccin al desarrollo de aplicaciones web 124 comercio Csar Fernndez Acebal electrnico

Visin general
Aplicacin cliente Aplicacin cliente Aplicacin cliente

Servidor de aplicaciones
(Transacciones, mensajera, servicios Web)

CORBA

J2EE

.NET

SGBD
Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal 125

Motivacin

Comienzan a surgir cuando queda claro las aplicaciones cliente/servidor no iban a ser escalables a un gran nmero de usuarios
Debido a las caractersticas de los clientes pesados

Se haca necesario mover las reglas de negocio a algn lugar intermedio entre los clientes y la base de datos Empezaron a surgir productos para Introduccin al desarrollo de aplicaciones web 126 hacer esa Csar Fernndez Acebal tarea

Misin

Los llamasen como los llamasen, estaban diseados para gestionar de forma centralizada el modo en que los clientes deban conectarse a la base de datos o a los servicios con los que tenan que interoperar

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

127

Servicios proporcionados

Creacin y gestin de los componentes del servidor


Por aquel entonces, basados en CORBA o COM

Clustering Equilibrado de carga Transacciones Seguridad Acceso a datos

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal 128

Servicios proporcionados
A continuacin, se explicarn un poco ms en detalle cada uno de los servicios anteriores, ofrecidos, en mayor o menor medida, por los servidores de

Gestin de la sesin
El servidor ha de conservar informacin entre peticiones del usuario a lo largo de la duracin de una sesin

Como sabemos, HTTP es un protocolo sin sesin


No permite mantener una conexin abierta entre el cliente y el servidor ms all de lo que dura la transferencia del documento en cuestin

En cualquier aplicacin de comercio electrnico, es necesario poder identificar al usuario a travs de su Introduccin al desarrollo de aplicaciones web 130 navegacin por el sitio Web Csar Fernndez Acebal

Gestin de la sesin (2)

La implementacin a mano se complicara enormemente en el caso de contar con varios servidores (equilibrado de carga)
La peticin de un usuario registrado en la mquina A puede ser redirigida al servidor B

Lo lgico es que sea el servidor de aplicaciones quien se encargue de gestionar la sesin


Adems, debera ser ms eficiente que si lo programamos nosotros mismos

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

131

Equilibrado de carga
Los servidores de aplicaciones proporcionan mecanismos de equilibrado de carga (aspecto clave para la escalabilidad)

Por equilibrado de carga (load balancing) se entiende la capacidad de repartir el procesamiento entre distintos servidores
Las peticiones de los clientes se redirigen a la mquina que ms desocupada se encuentre en ese momento Mejora de rendimiento de la aplicacin

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

No es tan sencillo como aadir una nueva mquina y ya est Adems de la escalabilidad, se consigue una mayor tolerancia a fallos

132

Acceso a datos

Los servidores de aplicaciones proveen facilidades para administrar conexiones a bases de datos relacionales
Oracle, SQL Server, DB2

Los componentes (las clases que implementan la lgica del negocio) acceden a ellas de forma estndar
Independiente de la base de datos subyacente

Tambin suelen permitir acceder a otros tipos de fuentes de datos:

Tales como distintos ERP (SAP, Vaan...), repositorios XML, etc. Los servidores de aplicaciones son tambin Introduccin al desarrollo de aplicaciones web 133 importantes, por tanto, como mecanismo de Csar Fernndez Acebal

Pooling de conexiones

Abrir una conexin a una base de datos suele ser un proceso costoso
No es viable abrir una nueva conexin por cada consulta a la base de datos
Penalizara enormemente el rendimiento de la aplicacin

Los servidores de aplicaciones suelen contar con una serie de conexiones permanentemente abiertas que distribuye de forma transparente a los distintos procesos
Se debera poder configurar el nmero de conexiones abiertas, e incluso la poltica de
134

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

Gestin transaccional
Transaccin: secuencia de pasos que, o se ejecutan todos, o si no el sistema queda en el estado original

Son un elemento bsico de cualquier aplicacin comercial


Evitan que haya informacin inconsistente

Sera complejsimo implementarlas a mano Con un servidor de aplicaciones que tenga esta caracterstica, bastara con indicarle dnde empieza y termina la transaccin
Encargndose l de deshacer los pasos intermedios en caso de un error del sistema
135

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

Para terminar
Un comentario final, acerca de las tecnologas o plataformas tpicas sobre las que se implementan los servidores de aplicaciones, junto con un sencillo

Tecnologas actuales

Actualmente, las dos plataformas ms comunes son J2EE y, ms recientemente, ha surgido .NET
De hecho, hasta hace poco hablar de servidores de aplicaciones era prcticamente hablar de J2EE
(aunque no debemos hacer tal asociacin)

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

137

Ejemplo: arquitectura J2EE

Introduccin al desarrollo de aplicaciones web Csar Fernndez Acebal

138