introducción al desarrollo de aplicaciones web césar fernández acebal universidad de oviedo ...

123
Introducción al desarrollo Introducción al desarrollo de aplicaciones Web de aplicaciones Web César Fernández Acebal César Fernández Acebal Universidad de Oviedo Universidad de Oviedo www.cfacebal.com www.cfacebal.com [email protected] [email protected] Arquitectura Web en aplicaciones empresariales Arquitectura Web en aplicaciones empresariales basadas en tecnología Java/J2EE basadas en tecnología Java/J2EE

Upload: eleuterio-villagrana

Post on 12-Jan-2015

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrolloIntroducción al desarrollode aplicaciones Webde aplicaciones Web

Introducción al desarrolloIntroducción al desarrollode aplicaciones Webde aplicaciones Web

César Fernández AcebalCésar Fernández Acebal

Universidad de OviedoUniversidad de Oviedowww.cfacebal.comwww.cfacebal.com

[email protected]@ieee.org

Arquitectura Web en aplicaciones empresarialesArquitectura Web en aplicaciones empresarialesbasadas en tecnología Java/J2EEbasadas en tecnología Java/J2EE

Page 2: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

22

ÍndiceÍndiceÍndiceÍndice Introducción a Internet y el WebIntroducción a Internet y el Web

HTTP, HTML, URL, servidores Web… Introducción a las páginas dinámicasIntroducción a las páginas dinámicas

CGI, ASP, JSP y Servlets, etc. Mantenimiento de la sesión del usuarioMantenimiento de la sesión del usuario Servidores de aplicacionesServidores de aplicaciones

Page 3: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

33

Introducción a Internet y el Introducción a Internet y el WebWebIntroducción a Internet y el Introducción a Internet y el WebWeb El Web es una vasta colección de documentos en Internet El Web es una vasta colección de documentos en Internet

que están enlazados a través de los que están enlazados a través de los hiperenlaceshiperenlaces

Internet: millones de ordenadores conectadosInternet: millones de ordenadores conectadosUn conjunto de redes heterogéneas conectadas entre sí mediante el protocolo TCP/IP

Los hiperenlaces permiten a los usuarios acceder a Los hiperenlaces permiten a los usuarios acceder a documentos situados en otros servidores Web, sin documentos situados en otros servidores Web, sin preocuparse de su ubicaciónpreocuparse de su ubicación

Page 4: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Tecnologías clave de Tecnologías clave de InternetInternet

Tecnologías clave de Tecnologías clave de InternetInternet

Veamos una somera introducción a las tecnologías Veamos una somera introducción a las tecnologías fundamentales sobre las que se sustenta Internet, fundamentales sobre las que se sustenta Internet, que serán útiles para comprender posteriormente que serán útiles para comprender posteriormente algunas de las dificultades intrínsecas del algunas de las dificultades intrínsecas del desarrollo de aplicaciones Web.desarrollo de aplicaciones Web.

Page 5: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

55

Tecnologías claves de Tecnologías claves de InternetInternetTecnologías claves de Tecnologías claves de InternetInternet La infraestructura de Internet es proporcionada La infraestructura de Internet es proporcionada

fundamentalmente por tres tecnologías:fundamentalmente por tres tecnologías:La conmutación de paquetesconmutación de paquetesEl protocolo TCP/IPTCP/IPLa arquitectura cliente/servidorcliente/servidor

Page 6: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

66

Conmutación de paquetesConmutación de paquetesConmutación de paquetesConmutación de paquetesConsiste 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.

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 conmutación de Surge como respuesta a las redes de conmutación de circuitos, como la telefónicacircuitos, como la telefónica

El primer libro sobre esta tecnología data de El primer libro sobre esta tecnología data de 19641964 ( (Leonard Leonard KleinrockKleinrock) y luego fue desarrollada por otros en laboratorios ) y luego fue desarrollada por otros en laboratorios de investigación de Estados Unidos e Inglaterrade investigación de Estados Unidos e Inglaterra

Con la conmutación de paquetes, la capacidad de una red (su Con la conmutación de paquetes, la capacidad de una red (su “ancho de banda”“ancho de banda”) se incrementa en un factor de 100 o más) se incrementa en un factor de 100 o más

Page 7: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

77

Conmutación de circuitosConmutación de circuitosConmutación de circuitosConmutación de circuitos Era la que usaban las primeras redes de Era la que usaban las primeras redes de

ordenadores, a imagen y semejanza de la telefónicaordenadores, a imagen y semejanza de la telefónica En ellas, se establece una comunicación “punto a En ellas, se establece una comunicación “punto a

punto” entre ambos extremos mientras tiene lugar la punto” entre ambos extremos mientras tiene lugar la comunicacióncomunicación

Existe un canal “dedicado” entre ambos, independientemente de los datos que se estén enviandoProblemas:

– Ineficiente– Poco fiable

(Si se corta el canal, se interrumpe la conexión)

Page 8: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

88

Ejemplo de conmutación de Ejemplo de conmutación de circuitoscircuitosEjemplo de conmutación de Ejemplo de conmutación de circuitoscircuitos

TelefónicaTelecable

Una vez establecido el circuito, es siempre el mismo durante toda la conexión.

Page 9: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

99

Conmutación de paquetesConmutación de paquetesConmutación de paquetesConmutación de paquetes Es la tecnología que emplea la red InternetEs la tecnología que emplea la red Internet Los mensajes se dividen en paquetesLos mensajes se dividen en paquetes

A cada paquete se le añaden la dirección de origen y destino, el número de secuencia, información de control de errores…

En vez de enviarse directamente a la dirección de destino, los En vez de enviarse directamente a la dirección de destino, los paquetes viajan de una máquina a otra hasta alcanzar su paquetes viajan de una máquina a otra hasta alcanzar su destinodestino

Estas máquinas se denominan routersrouters– 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 programas llamados

algoritmos de encaminamientoalgoritmos de encaminamiento (“routing algorithms”)

Page 10: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

1010

EjemploEjemploEjemploEjemplo

La heroica ciudad dormía la siesta.

Origen

192.168.1.1Destino

10.0.0.1Nº de bytes

144Nº de paquetes

4Posición

1Datos

La heroica

Origen

192.168.1.1Destino

10.0.0.1Nº de bytes

144Nº de paquetes

4Posición

2Datos

ciudad do

Origen

192.168.1.1Destino

10.0.0.1Nº de bytes

144Nº de paquetes

4Posición

3Datos

rmía la si

Origen

192.168.1.1Destino

10.0.0.1Nº de bytes

139Nº de paquetes

4Posición

4Datos

esta.

El mensaje original a transmitir se divide en cuatro paquetes, con cierta información de control adicional que permita su reconstrucción en el destino.

Page 11: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

1111

Ventajas de la conmutación Ventajas de la conmutación de paquetesde paquetesVentajas de la conmutación Ventajas de la conmutación de paquetesde paquetes Al no tener un circuito dedicado, puede hacer uso en Al no tener un circuito dedicado, puede hacer uso en

cada momento de cualquiera de las rutas cada momento de cualquiera de las rutas disponiblesdisponibles

Hace uso de casi la totalidad del ancho de banda disponible– “Casi la totalidad” porque es necesario incluir información de control,

que no formaría parte del mensaje en sí a transmitir

Si algunas líneas estuvieran caídas o demasiado ocupadas, los paquetes se envían por otra de las disponibles

Page 12: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

1212

TCP/IPTCP/IPTCP/IPTCP/IP Si bien la conmutación de paquetes supuso un gran Si bien la conmutación de paquetes supuso un gran

avance en la capacidad de las redes de avance en la capacidad de las redes de comunicaciones, era necesario implementar el modo comunicaciones, era necesario implementar el modo de llevarla a cabode llevarla a cabo

Eso es de lo que se encargan los protocolos TCP/IP– Transmission Control Protocol (TCP)Transmission Control Protocol (TCP)– Internet Protocol (IP)Internet Protocol (IP)

Un protocolo es un conjunto de reglas para formatear, ordenar y comprimir mensajes, comprobar errores, etc.

– Pueden ser implementados por hardware o por software

Page 13: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

1313

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

La capa de red es la de más bajo nivel– Representa el medio físico encargado de enviar en última instancia los 0 y 1

que componen cada mensaje– Diversas tecnologías: Ethernet, ATM…

La capa de Internet es donde se sitúa el protocolo IP– Esquema de direcciones, encaminamiento de los mensajes…

En la capa de transporte está TCP– Envía acuses de recibo, reagrupa el mensaje en destino, vuelve a mandar los

paquetes perdidos o defectuosos…Por último, en la capa de aplicación están los programas que hacen uso de los servicios proporcionados por las capas inferiores

– HTTP (HyperText Transfer Protocol), FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol)…

Page 14: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

1414

Arquitectura de TCP/IPArquitectura de TCP/IPArquitectura de TCP/IPArquitectura de TCP/IP

Page 15: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

1515

Encaminamiento de Encaminamiento de paquetes con TCP/IPpaquetes con TCP/IPEncaminamiento de Encaminamiento de paquetes con TCP/IPpaquetes con TCP/IP

Page 16: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

1616

Direcciones IPDirecciones IPDirecciones IPDirecciones IP Cada ordenador conectado a Internet debe tener una Cada ordenador conectado a Internet debe tener una

dirección para poder recibir los paquetes TCPdirección para poder recibir los paquetes TCPÉsta puede ser:

– Estática Fija, siempre la misma

– Dinámica Por ejemplo, cada vez que nos conectamos a Internet con un módem telefónico,

nuestro proveedor de Internet (ISP, Internet Service Provider) nos asigna una dirección temporal

Las direcciones IP son números de 32 bits separados en Las direcciones IP son números de 32 bits separados en cuatro partes (por ejemplo, cuatro partes (por ejemplo, 156.35.94.5156.35.94.5))

Cada uno va de 0 a 255; esto nos da un total de 232 direcciones (algo más de cuatro mil millones)

Page 17: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

1717

IPv6IPv6IPv6IPv6 El problema es que con cada vez más y más El problema es que con cada vez más y más

dispositivos conectados, este esquema de dispositivos conectados, este esquema de direcciones está cercano a quedarse pequeñodirecciones está cercano a quedarse pequeño

Por ello, se está desarrollando una nueva versión, Por ello, se está desarrollando una nueva versión, denominada IPv6 para sustituir a la actual (IPv4), que denominada IPv6 para sustituir a la actual (IPv4), que con 128 bits podrá tener 3,4 con 128 bits podrá tener 3,4 × 10× 103838 direccionesdirecciones

Además, mejora otras deficiencias de IPv4Además, mejora otras deficiencias de IPv4

Page 18: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

1818

Nombres de dominio y URLNombres de dominio y URLNombres de dominio y URLNombres de dominio y URL Para no tener que recordar direcciones IP tal cual, Para no tener que recordar direcciones IP tal cual,

éstas pueden ser representadas mediante nombres éstas pueden ser representadas mediante nombres de dominio (por ejemplo, de dominio (por ejemplo, www.euitio.uniovi.eswww.euitio.uniovi.es))

El El sistema de nombres de domino (DNS)sistema de nombres de domino (DNS) permite que permite que éstas se resuelvan a direcciones IPéstas se resuelvan a direcciones IP

Ejemplo: ping www.euitio.uniovi.esping www.euitio.uniovi.es

Los Los URL (Uniform Resource Locator)URL (Uniform Resource Locator) son las son las direcciones que escribimos en el navegadordirecciones que escribimos en el navegador

Como http://www.euitio.uniovi.es/http://www.euitio.uniovi.es/

Page 19: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

1919

Computación Computación Cliente/ServidorCliente/ServidorComputación Computación Cliente/ServidorCliente/Servidor En este modelo de computación distribuida, un cliente En este modelo de computación distribuida, un cliente

solicita una acción a un servidor, que le devuelve los solicita una acción a un servidor, que le devuelve los resultadosresultados

Puede haber diversos tipos de clientes, desde los más ligerosligeros (como un navegador Web, que únicamente es capaz de mostrar documentos HTML) hasta clientes pesadosclientes pesados que también realizan procesamiento

Surgen como respuesta a los Surgen como respuesta a los mainframesmainframes de los 60 y 70 (con de los 60 y 70 (con 128 KB de RAM y y discos duros de 10 MB)128 KB de RAM y y discos duros de 10 MB)

Despega este modelo con el advenimiento de los ordenadores ordenadores personalespersonales

Toda Internet es una inmensa red cliente/servidorToda Internet es una inmensa red cliente/servidor

Page 20: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

2020

Esquema Cliente/ServidorEsquema Cliente/ServidorEsquema Cliente/ServidorEsquema Cliente/Servidor

Page 21: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al WebIntroducción al WebIntroducción al WebIntroducción al Web

Ahora, veremos los principios básicos del Ahora, veremos los principios básicos del World Wide Web (WWW o Web, a secas): World Wide Web (WWW o Web, a secas): lenguajes, protocolos, servidores y clientes, lenguajes, protocolos, servidores y clientes, etcétera.etcétera.

Page 22: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

2222

Internet ≠ WebInternet ≠ WebInternet ≠ WebInternet ≠ Web Internet permite a cualquier ordenador del mundo Internet permite a cualquier ordenador del mundo

compartir datos con otro ordenador remotocompartir datos con otro ordenador remotoUn programa cliente en un ordenador accede a un programa servidor en otro ordenador remoto

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

En este caso, el programa cliente es nuestro navegadornavegador, y el servidor el programa que hace de servidor Webservidor Web que está ejecutándose en el ordenador remoto y que se encarga de entregar el documento solicitado a nuestro navegador

Page 23: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

2323

Nacimiento del World Wide Nacimiento del World Wide WebWebNacimiento del World Wide Nacimiento del World Wide WebWeb En 1989, En 1989, Tim Berners-LeeTim Berners-Lee, en el laboratorio , en el laboratorio

europeo de partículas (CERN), en Suiza, crea europeo de partículas (CERN), en Suiza, crea un lenguaje de etiquetas para representar y un lenguaje de etiquetas para representar y enlazar documentosenlazar documentos

HTMLHTML —HyperText Markup Language —HyperText Markup Language– Lenguaje de Marcado de HipertextoLenguaje de Marcado de Hipertexto

Berners-LeeBerners-Lee creó las versiones iniciales de: creó las versiones iniciales de:HTMLHTML, HTTPHTTP, un servidor Webservidor Web y un navegadornavegadorLos cuatro componentes esenciales del Web

Tim Berners-Lee

Page 24: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

2424

Esquema general Esquema general Cliente/ServidorCliente/ServidorEsquema general Esquema general Cliente/ServidorCliente/Servidor

Servidor

Red

Petición

Respuesta

Cliente

Page 25: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

2525

Visión general del WebVisión general del WebVisión general del WebVisión general del Web

InternetInternet

index.htmlindex.html

www.cfacebal.comwww.cfacebal.com

www.aafunky.comwww.aafunky.com

enlaceenlace

El usuario teclea El usuario teclea http://www.cfacebal.com/ en su en su navegadornavegador

Page 26: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

2626

Visión general del WebVisión general del WebVisión general del WebVisión general del Web

1.1. El usuario solicita un documento tecleando su dirección en el El usuario solicita un documento tecleando su dirección en el navegador: navegador: http://www.uniovi.eshttp://www.uniovi.es

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

2.2. El cliente busca en el DNS cuál es la IP de www.uniovi.es: El cliente busca en el DNS cuál es la IP de www.uniovi.es: 156.35.14.3156.35.14.3

Cada ordenador en Internet está identificado por una dirección única denominada IPEl DNS traduce de nombres lógicos a direcciones físicas

3.3. Navegador y servidor web comienzan un diálogo a través del Navegador y servidor web comienzan un diálogo a través del protocolo HTTP (protocolo de transferencia de hipertexto)protocolo HTTP (protocolo de transferencia de hipertexto)

1. GET /HTTP/1.02. El servidor, si todo es correcto, devuelve el documento solicitado más

información adicional

Page 27: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

2727

Visión general del WebVisión general del WebVisión general del WebVisión general del Web

4.4. El navegador mira el tipo de documento devuelto (MIME)El navegador mira el tipo de documento devuelto (MIME)

5.5. Si es “text/html” es un documento HTML, lo visualiza el propio Si es “text/html” es un documento HTML, lo visualiza el propio navegadornavegador

6.6. Si es otro tipo de documento se ejecutará el programa que Si es otro tipo de documento se ejecutará el programa que tenga asociado, o nos preguntará si queremos guardar el tenga asociado, o nos preguntará si queremos guardar el documento en nuestro ordenadordocumento en nuestro ordenador

Nota: estos tipos MIME los podemos configurar en nuestro navegador

Page 28: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

2828

Funcionamiento del WebFuncionamiento del WebFuncionamiento del WebFuncionamiento del Web

Tecleamos una dirección en el navegador (por ejemplo, www.euitio.uniovi.es)

Éste envía una petición al servidor Web

Quien devuelve la página solicitada (en este caso, la index.html del directorio raíz)

Y el navegador se encarga de interpretar el código HTML y mostrar el resultado

HTTP

Page 29: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

2929

Funcionamiento del WebFuncionamiento del WebFuncionamiento del WebFuncionamiento del Web Un servidor Web es un ordenador en Internet que Un servidor Web es un ordenador en Internet que

sirve páginas Web a peticiónsirve páginas Web a peticiónPara ello, debe tener un programa ejecutándose que haga de servidor Web: Apache, IIS, etcétera

El usuario accede al Web a través de un El usuario accede al Web a través de un navegadornavegador ((browserbrowser))

Se encarga de solicitar las páginas Web al servidor y de mostrarlas

Page 30: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

3030

HTMLHTMLHTMLHTML Es el lenguaje de creación de páginas WebEs el lenguaje de creación de páginas Web

Al menos, de las páginas “estáticas” Era imprescindible que la misma información se Era imprescindible que la misma información se

pudiese ver en diferentes plataformaspudiese ver en diferentes plataformas Por tanto, Berners-Lee diseñó un lenguaje de Por tanto, Berners-Lee diseñó un lenguaje de

estructuraciónestructuración de documentos de documentos, , no de presentaciónno de presentación (ésta se dejaba al programa cliente)(ésta se dejaba al programa cliente)

Page 31: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

3131

HTML es un lenguajeHTML es un lenguajeHTML es un lenguajeHTML es un lenguaje Como tal, tiene unas reglas que deben ser Como tal, tiene unas reglas que deben ser

cumplidas, esto es, una cumplidas, esto es, una sintaxissintaxis, una , una gramáticagramática... ... igual que el español o cualquier otro lenguaje igual que el español o cualquier otro lenguaje informáticoinformático

Es además un lenguaje informático, para ser Es además un lenguaje informático, para ser procesado por ordenadores; procesado por ordenadores; pero no es un lenguaje pero no es un lenguaje de programaciónde programación

Page 32: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

3232

¿Por qué de marcado¿Por qué de marcado ??¿Por qué de marcado¿Por qué de marcado ?? ¿Qué vemos de un vistazo en el siguiente texto?¿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 título y dos párrafosQue tiene un título y dos párrafosPero un ordenador sólo vería un montón de caracteresPero un ordenador sólo vería un montón de caracteres

Necesitamos un modo de indicarle la estructura del documento

Page 33: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

3333

HTML, lenguaje de HTML, lenguaje de hipertextohipertextoHTML, lenguaje de HTML, lenguaje de hipertextohipertexto

Por hipertexto designamos al texto al que se le añade Por hipertexto designamos al texto al que se le añade una propiedad: determinadas porciones de texto una propiedad: determinadas porciones de texto pueden ser pueden ser enlazadasenlazadas a otros documentos a otros documentos

De ahí surge el concepto de navegación: surcamos el De ahí surge el concepto de navegación: surcamos el Web yendo de unos enlaces a otrosWeb yendo de unos enlaces a otros

El hipertexto debe ser utilizado en los sitios web para El hipertexto debe ser utilizado en los sitios web para facilitar al usuario la labor de búsqueda de la facilitar al usuario la labor de búsqueda de la informacióninformación

Page 34: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

3434

¿Qué necesitamos para crear ¿Qué necesitamos para crear un documento HTML?un documento HTML?¿Qué necesitamos para crear ¿Qué necesitamos para crear un documento HTML?un documento HTML? Un editor de textoUn editor de texto

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

Le daremos la extensión Le daremos la extensión .html.html o o .htm.htm, y un nombre , y un nombre sin espacios ni caracteres especialessin espacios ni caracteres especiales

Nota: ninguna de las dos características son obligatorias, pero nos ahorrarán problemas

Page 35: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

3535

¿Y para verlo?¿Y para verlo?¿Y para verlo?¿Y para verlo? Un programa cliente que entienda lenguaje HTML Un programa cliente que entienda lenguaje HTML

(que pueda visualizar de alguna manera documentos (que pueda visualizar de alguna manera documentos HTML)HTML)

Técnicamente, recibe el nombre de Técnicamente, recibe el nombre de HTML User AgentHTML User Agent Un ejemplo de agente de usuario son los Un ejemplo de agente de usuario son los

navegadores (literalmente, navegadores (literalmente, hojeadoreshojeadores) Web () Web (Web Web BrowsersBrowsers))

El navegador es quien se encarga de la presentación El navegador es quien se encarga de la presentación del documento (el estándar no especifica cómo debe del documento (el estándar no especifica cómo debe visualizarse cada elemento)visualizarse cada elemento)

Page 36: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

3636

Especificación de HTMLEspecificación de HTMLEspecificación de HTMLEspecificación de HTML La especificación del lenguaje HTML y de la mayoría La especificación del lenguaje HTML y de la mayoría

de tecnologías relacionadas con el Web está definida de tecnologías relacionadas con el Web está definida por el por el World Wide Web ConsortiumWorld Wide Web Consortium (W3C) (W3C)

www.w3c.org Nota:Nota: Ahora, HTML ha dado lugar a una variación del Ahora, HTML ha dado lugar a una variación del

mismo denominada XHTMLmismo denominada XHTML

Page 37: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

3737

Ejemplo de documento Ejemplo de documento HTMLHTMLEjemplo de documento Ejemplo de documento HTMLHTML

<?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>Introducción a HTML</title> </head> <body> <h1>Mi primera página Web</h1> <p> Éste es el equivalente al típico <em>¡Hola, mundo!</em> pero en HTML (cuya <a href="http://www.w3.org/MarkUp/" title="Especificación de las distintas versiones de HTML y XHTML en el W3C">especificación</a> puede encontrarse en el sitio Web del <acronym title="World Wide Web Consortium">W3C</acronym>). </p> </body></html>

holaMundo.htmlholaMundo.html

Page 38: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

3838

HTTPHTTPHTTPHTTP HTTP (HTTP (HyperText Transform ProtocolHyperText Transform Protocol) es el protocolo ) es el protocolo

usado para transferir usado para transferir páginas Webpáginas WebEs el modo en que un navegador se comunica con un servidor Web (Apache, Internet Information Server…)

Es un protocolo Es un protocolo sin estadosin estadoLa sesión termina en cuanto se devuelve el objeto solicitado

– Incluso, si una página contiene otros objetos (imágenes, frames, etc.) cada uno de ellos inicia una nueva petición HTTP

Page 39: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

3939

Pero… ¿y TCP/IP?Pero… ¿y TCP/IP?Pero… ¿y TCP/IP?Pero… ¿y TCP/IP? ¿No era TCP/IP el conjunto de protocolos sobre los que ¿No era TCP/IP el conjunto de protocolos sobre los que

sustenta Internet? ¿Qué es eso de HTTP?sustenta Internet? ¿Qué es eso de HTTP?La comunicación entre el navegador y el servidor web se realiza mediante HTTPLa transmisión efectiva de información la controla TCP/IP

TCP/IP

HTTP HTTP

Page 40: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

4040

Ejemplo de mensaje HTTPEjemplo de mensaje HTTPEjemplo de mensaje HTTPEjemplo de mensaje HTTP

GET / HTTP/1.0 >>

<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

RespuestRespuestaa

PeticióPeticiónn

Page 41: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

4141

URLURLURLURL URI: Uniform Resource IdentifierURI: Uniform Resource Identifier

URL: Uniform Resource Locator Un URL es la dirección única de todo Un URL es la dirección única de todo

documento en el Webdocumento en el Webhttp://www.eutio.uniovi.es/http://www.eutio.uniovi.es/

Page 42: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

4242

Sintaxis de un URLSintaxis de un URLSintaxis de un URLSintaxis de un URL

Ejemplos:Ejemplos:http://www.princast.es/http://www.princast.es/

http://195.55.30.17/http://195.55.30.17/

http://www.cfacebal.com/http://www.cfacebal.com/

http://www.cfacebal.com/index.htmlhttp://www.cfacebal.com/index.html

http://web.uniovi.es/Vicerrectorados/Extension/http://web.uniovi.es/Vicerrectorados/Extension/

http://localhost:8080/http://localhost:8080/

http://petra.euitio.uniovi.es/http://petra.euitio.uniovi.es/

protocolo://dirección[:puerto]/directorio/ficheroprotocolo://dirección[:puerto]/directorio/fichero

Page 43: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

4343

ProtocoloProtocoloProtocoloProtocolo Un Un protocoloprotocolo define el modo en que se comunican define el modo en que se comunican

dos ordenadores para llevar a cabo alguna tareados ordenadores para llevar a cabo alguna tarea Protocolo del Web:Protocolo del Web:

HTTP (HyperText Transfer Protocol)HTTP (HyperText Transfer Protocol)Especifica cómo tiene lugar el diálogo entre el navegador y el servidor para conseguir el fichero especificadoNo se ocupa del transporte en sí: TCPTCP

Cada vez que tecleamos una dirección o pulsamos Cada vez que tecleamos una dirección o pulsamos un enlace el navegador se comunica vía HTTP con el un enlace el navegador se comunica vía HTTP con el servidor Web indicadoservidor Web indicado

Page 44: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

4444

Ejemplos de protocolosEjemplos de protocolosEjemplos de protocolosEjemplos de protocolos

filefile Permite acceder a un fichero en el sistema de Permite acceder a un fichero en el sistema de ficheros localficheros local

ftpftp File Transfer ProtocolFile Transfer Protocol

httphttp Páginas WebPáginas Web

Page 45: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

4545

Dirección del sitioDirección del sitioDirección del sitioDirección del sitio Suele ser un nombre simbólico: Suele ser un nombre simbólico: nombre de dominionombre de dominio

www.uniovi.es especifica una máquina llamada “www” en el dominio “uniovi.es”El nombre de máquina puede ser cualquiera

– “www” no es más que un convenio para especificar aquellas máquinas que son servidores Web

– como “ftp” suele designar a los servidores de FTP– incluso aunque muchas veces se trate de la misma máquina

Page 46: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

4646

Dirección del sitioDirección del sitioDirección del sitioDirección del sitio También podría ser directamente la dirección IPTambién podría ser directamente la dirección IP

http://156.35.14.3/ Los nombres de dominio no distinguen entre Los nombres de dominio no distinguen entre

mayúsculas y minúsculasmayúsculas y minúsculashttp://www.uniovi.es/http://WWW.UNIOVI.ES/http://wWw.UniOvi.es/

Page 47: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

4747

DirectorioDirectorioDirectorioDirectorio Hay que indicar la ruta hasta el fichero deseadoHay que indicar la ruta hasta el fichero deseado Como mínimo, debe ir la barra (“/”)Como mínimo, debe ir la barra (“/”)

http://www.uniovi.eshttp://www.uniovi.es//

Si no la ponemos, la pone el navegador por nosotrosSi no la ponemos, la pone el navegador por nosotros...pero en los enlaces en HTML sí debe aparecer

También se puede indicar un subdirectorio:También se puede indicar un subdirectorio:http://www.uniovi.es/Vicerrectorados/Postgrado_TitulosPropios/doctorado/http://www.uniovi.es/Vicerrectorados/Postgrado_TitulosPropios/doctorado/

Siempre se usa la barra “/”, no “\” (incluso aunque el servidor Web sea una máquina Windows: está definido por el estándar URI, no depende del SO)

La ruta sí puede diferenciar entre mayúsculas y minúsculas La ruta sí puede diferenciar entre mayúsculas y minúsculas (si el servidor Web es, por ejemplo, una máquina Unix)(si el servidor Web es, por ejemplo, una máquina Unix)

Page 48: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

4848

Nombre del ficheroNombre del ficheroNombre del ficheroNombre del fichero Depende del SO del servidor WebDepende del SO del servidor Web Las páginas Web generalmente tienen como extensión Las páginas Web generalmente tienen como extensión .html.html

o o .htm.htm Las extensiones son importantes para que el navegador sepa Las extensiones son importantes para que el navegador sepa

cómo tratar un ficherocómo tratar un ficheroun .html, lo interpreta y lo muestraun .jpg, trata de mostrar la imagenun .doc, abre el Word si lo tenemos instaladoetcétera

Page 49: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

4949

Nombre del ficheroNombre del ficheroNombre del ficheroNombre del fichero Si no se especifica, el servidor busca un fichero con Si no se especifica, el servidor busca un fichero con

un nombre determinado en el directorio especificadoun nombre determinado en el directorio especificadoNormalmente, el index.htmlindex.html o el index.htmindex.htmSe puede configurar el el programa que utilicemos como servidor Web (Apache, IIS...)

Page 50: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

5050

PuertoPuertoPuertoPuerto Por omisión, una petición HTTP se dirige al puerto 80Por omisión, una petición HTTP se dirige al puerto 80

Por eso casi nunca la especificamos Pero se podría configurar el servidor Web para que Pero se podría configurar el servidor Web para que

“escuchase” peticiones en otro puerto“escuchase” peticiones en otro puerto En ese caso, hay que indicarlo explícitamente:En ese caso, hay que indicarlo explícitamente:

http://www.midominio.comhttp://www.midominio.com:8080:8080//

Page 51: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

5151

¿Qué es un servidor Web?¿Qué es un servidor Web?¿Qué es un servidor Web?¿Qué es un servidor Web? Un programa que atiende las peticiones HTTP Un programa que atiende las peticiones HTTP

llegadas a un puerto determinado de la máquinallegadas a un puerto determinado de la máquinaTambién se denomina así, por extensión, a la máquina que cuenta con uno de tales programas

Ejemplos de servidores Web:Ejemplos de servidores Web:Apache

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

Internet Information Server (IIS)

Page 52: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

5252

Descarga de ApacheDescarga de ApacheDescarga de ApacheDescarga de Apache La versión actual es la 2.0.48La versión actual es la 2.0.48 Dirección de descarga:Dirección de descarga:

http://httpd.apache.org/download.cgiAhí podemos obtener tanto los fuentesfuentes para Unix o Windows (que habrá que compilar) como un programa de instalaciónprograma de instalación para Windows (Win32 BinaryWin32 Binary)

Page 53: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

5353

Instalación de Apache Instalación de Apache (Windows)(Windows)Instalación de Apache Instalación de Apache (Windows)(Windows) Opciones de instalación:Opciones de instalación:

Como servicio en el puerto 80Para ser arrancado manualmente (puerto 8080)

– No da conflictos con otro servidor Web que ya pudiéramos tener instalado en el puerto 80

– No requiere ningún privilegio de administración de Windows Por no ser instalado como servicio Por estar en un puerto superior al 1024

Dominio, dirección del servidor y correo del administradorDirectorio de instalación

– C:/ApacheC:/Apache

Page 54: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

5454

EjecuciónEjecuciónEjecuciónEjecución Una vez finalizada la instalación, hay que ejecutar Apache Una vez finalizada la instalación, hay que ejecutar Apache

manualmentemanualmente

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

Ahora, ya podemos comenzar a solicitarle páginasAhora, ya podemos comenzar a solicitarle páginasNuestra máquina ya puede actuar como servidor Web

– Aunque en local; si quisiéramos que funcionase a través de la red, habría que crear un usuario para Apache y darle los permisos necesarios

Para probar si funciona, tecleamos en el navegador:http://localhost:8080/http://localhost:8080/ o http://127.0.0.1:8080/http://127.0.0.1:8080/

Deberá aparecer la página siguiente:

Page 55: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

5555

Página de prueba de la Página de prueba de la instalacióninstalaciónPágina de prueba de la Página de prueba de la instalacióninstalación

Page 56: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

5656

¿Qué hace un servidor Web ¿Qué hace un servidor Web cuando recibe una solicitud?cuando recibe una solicitud?¿Qué hace un servidor Web ¿Qué hace un servidor Web cuando recibe una solicitud?cuando recibe una solicitud? Si el último elemento del URL es un fichero: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 DocumentRootDocumentRoot

– Por omisión, es el directorio htdocshtdocs dentro del directorio de instalación de Apache

Page 57: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

5757

¿Qué hace un servidor Web ¿Qué hace un servidor Web cuando recibe una solicitud?cuando recibe una solicitud?¿Qué hace un servidor Web ¿Qué hace un servidor Web cuando recibe una solicitud?cuando recibe una solicitud? En el caso de que el último elemento del URL sea un En el caso de que el último elemento del URL sea un

directorio, sin especificar el fichero:directorio, sin especificar el fichero:Si en dicho directorio existe un fichero index.htmlindex.html (o lo que se especifique en DirectoryIndexDirectoryIndex), se devolverá ésteSi no existe dicho fichero, y siempre y cuando esté habilitada la opción Options Options IndexesIndexes) se hará un listado del directorio

Page 58: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

5858

ÍndiceÍndiceÍndiceÍndice Introducción a Internet y el WebIntroducción a Internet y el Web

HTTP, HTML, URL, servidores Web… Introducción a las páginas dinámicasIntroducción a las páginas dinámicas

CGI, ASP, JSP y Servlets, etc. Mantenimiento de la sesión del usuarioMantenimiento de la sesión del usuario Servidores de aplicacionesServidores de aplicaciones

Page 59: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

5959

Páginas estáticasPáginas estáticasPáginas estáticasPáginas estáticas Al principio, el Web estaba poblado únicamente por páginas Al principio, el Web estaba poblado únicamente por páginas

estáticasestáticasEl servidor Web simplemente localizaba el documento solicitado en el URL y se lo entregaba al cliente

Este enfoque puede ser perfectamente válido para muchos Este enfoque puede ser perfectamente válido para muchos sitiossitios

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

Pero no permitiría, por ejemplo, crear un sitio de comercio Pero no permitiría, por ejemplo, crear un sitio de comercio electrónico donde se pueda comprar, o el de un bancoelectrónico donde se pueda comprar, o el de un banco

Es necesario acceder a datos en el servidor y crear una página a petición

Page 60: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

6060

Funcionamiento de las Funcionamiento de las páginas estáticaspáginas estáticasFuncionamiento de las Funcionamiento de las páginas estáticaspáginas estáticas

Page 61: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

6161

Funcionamiento de las Funcionamiento de las páginas dinámicaspáginas dinámicasFuncionamiento de las Funcionamiento de las páginas dinámicaspáginas dinámicas

Page 62: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

6262

Modo de funcionamientoModo de funcionamientoModo de funcionamientoModo de funcionamiento El esquema de funcionamiento de las páginas El esquema de funcionamiento de las páginas

dinámicas es siempre similar independientemente de dinámicas es siempre similar independientemente de en qué se hayan desarrollado éstasen qué se hayan desarrollado éstas

CGI, ASP, Servlets/JSP… El servidor Web detecta una petición de una página El servidor Web detecta una petición de una página

dinámica y se la pasa al programa necesariodinámica y se la pasa al programa necesarioPodría ser una extensión del servidorO bien un programa completamente independiente

Éste programa es quien sabe cómo interpretar el Éste programa es quien sabe cómo interpretar el código de la página para devolver el HTML apropiadocódigo de la página para devolver el HTML apropiado

Page 63: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

CGICGICGICGI

CGI fue la primera tecnología que permitió CGI fue la primera tecnología que permitió crear páginas dinámicas, que realizaban crear páginas dinámicas, que realizaban algún tipo de procesamiento en el lado del algún tipo de procesamiento en el lado del servidor.servidor.

Page 64: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

6464

CGI: Common Gateway CGI: Common Gateway InterfaceInterfaceCGI: Common Gateway CGI: Common Gateway InterfaceInterface Es un estándar que permite el intercambio de Es un estándar que permite el intercambio de

información entre servidores Web y programas información entre servidores Web y programas externosexternos

Así, mientras que un documento HTML es estático Así, mientras que un documento HTML es estático (un fichero de texto que no cambia), un programa (un fichero de texto que no cambia), un programa CGI permite mostrar información dinámica, al CGI permite mostrar información dinámica, al ejecutarseejecutarse

Por ejemplo, puede hacer una consulta a una base de datos ubicada en el servidor y mostrar los resultados en HTML

Page 65: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

6565

IntroducciónIntroducciónIntroducciónIntroducción

El usuario, por ejemplo, rellena un formulario y pulsa el botón de enviar

HTTP

Los datos del formulario son enviados vía HTTP

El servidor Web invoca al programa CGI pasándole los parámetros recibidos

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

Y éste devuelve el resultado al servidor por medio de la salida estándar

Page 66: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

6666

¿Cómo obtiene el programa ¿Cómo obtiene el programa los datos necesarios?los datos necesarios?¿Cómo obtiene el programa ¿Cómo obtiene el programa los datos necesarios?los datos necesarios? Hay dos formas posibles en que el servidor Web Hay dos formas posibles en que el servidor Web

puede pasarle los datos al programa CGI:puede pasarle los datos al programa CGI:Mediante las variables de entornovariables de entornoMediante la entrada estándarentrada estándar (stdin)

Page 67: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

6767

Variables de entornoVariables de entornoVariables de entornoVariables de entorno La tabla siguiente muestra alguna de las variables de La tabla siguiente muestra alguna de las variables de

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

Variable Descripción

SERVER_NAMESERVER_NAME El nombre del servidor o su dirección IP

QUERY_STRINGQUERY_STRINGLa información que sigue al “?” en el URL que referencia a este programa

CONTENT_LENGTHCONTENT_LENGTHPara consultas que llevan asociada información (por ejemplo, las hechas mediante POST), el tamaño en bytes de dicha respuesta

PATH_INFOPATH_INFO

…… …

Page 68: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

6868

Acceder a las variables de Acceder a las variables de entornoentornoAcceder a las variables de Acceder a las variables de entornoentorno La forma de acceder al contenido de dichas variables La forma de acceder al contenido de dichas variables

desde el programa CGI varía dependiendo del desde el programa CGI varía dependiendo del lenguaje en que haya sido escritolenguaje en que haya sido escrito

Por ejemplo, a continuación se muestra cómo acceder al valor de la variable SERVER_NAMESERVER_NAME en C y en Perl:

C getenv("SERVER_NAME")

Perl $ENV{'SERVER_NAME'}

Page 69: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

6969

EjemploEjemploEjemploEjemplo El siguiente programa CGI en Perl muestra el valor El siguiente programa CGI en Perl muestra el valor

de todas las variables de entorno:de todas las variables de entorno:

#!/usr/bin/perlprint "Content-type: text/html\n\n";foreach $key (keys %ENV) {print "$key --> $ENV{$key}<br>";}

Page 70: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Configuración de Apache Configuración de Apache para CGIpara CGI

Configuración de Apache Configuración de Apache para CGIpara CGI

Antes, es necesario saber qué debemos hacer en el Antes, es necesario saber qué debemos hacer en el fichero de configuración de Apache (fichero de configuración de Apache (httpd.confhttpd.conf) para ) para permitir la ejecución de programas CGIpermitir la ejecución de programas CGI

Page 71: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

7171

Directiva ScriptAliasDirectiva ScriptAliasDirectiva ScriptAliasDirectiva ScriptAlias Aunque hay otras formas de hacerlo en Apache, por Aunque hay otras formas de hacerlo en Apache, por

motivos de seguridad suele hacerse mediante la motivos de seguridad suele hacerse mediante la directiva directiva ScriptAliasScriptAlias

Definiendo un único directorio para todos los programas (scripts) CGI

ScriptAlias /cgi-bin/ "C:/Apache/Apache2/cgi-bin/"ScriptAlias /cgi-bin/ "C:/Apache/Apache2/cgi-bin/"

Page 72: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

7272

Intérprete de PerlIntérprete de PerlIntérprete de PerlIntérprete de Perl Además, claro está, necesitamos tener un intérprete Además, claro está, necesitamos tener un intérprete

de Perl instalado en nuestra máquinade Perl instalado en nuestra máquinaPodemos obtener uno para Windows en:

– http://www.activestate.com/

Page 73: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

7373

Entrada estándarEntrada estándarEntrada estándarEntrada estándar El contenido de un formulario enviado mediante el El contenido de un formulario enviado mediante el

método POST está disponible como un flujo de método POST está disponible como un flujo de caracteres en la entrada estándarcaracteres en la entrada estándar

En ese caso, la variable de entorno CONTENT_LENGTHCONTENT_LENGTH indica el número total de bytes disponibles

El programa puede así obtener esa información El programa puede así obtener esa información como si estuviese leyendo de un fichero o del como si estuviese leyendo de un fichero o del tecladoteclado

Los datos del formulario se codifican en un Los datos del formulario se codifican en un determinado formato, muy simpledeterminado formato, muy simple

Page 74: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

7474

Formato de los datosFormato de los datosFormato de los datosFormato de los datos Consiste en pares Consiste en pares nombre=valornombre=valor separados por “ separados por “&&”” Los caracteres especiales, como espacios en blanco, Los caracteres especiales, como espacios en blanco,

“=” y “&” se convierten a su valor hexadecimal“=” y “&” se convierten a su valor hexadecimal La cadena de datos completa sería similar a ésta:La cadena de datos completa sería similar a ésta:

Hay bibliotecas de funciones que dividen dicha Hay bibliotecas de funciones que dividen dicha cadena en partes, ahorrándonos así la labor de cadena en partes, ahorrándonos así la labor de procesamientoprocesamiento

name=Rich%20Bowen&city=Lexington&state=KY

Page 75: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

7575

Entrada estándar. Ejemplo Entrada estándar. Ejemplo en Perlen PerlEntrada estándar. Ejemplo Entrada estándar. Ejemplo en Perlen 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);

Page 76: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

7676

Entrada estándar. Ejemplo Entrada estándar. Ejemplo en Cen CEntrada estándar. Ejemplo Entrada estándar. Ejemplo en Cen C El mismo programa que antes, ahora en C:El mismo programa que antes, ahora en C:int main(int argc, char ** argv){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);

Page 77: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

7777

¿Cómo llegan los datos ¿Cómo llegan los datos cuando se usa GET en vez de cuando se usa GET en vez de POST?POST?

¿Cómo llegan los datos ¿Cómo llegan los datos cuando se usa GET en vez de cuando se usa GET en vez de POST?POST? En ese caso, la cadena que venía antes por la En ese caso, la cadena que venía antes por la

entrada estándar ahora se añade al URL, tras un “?”entrada estándar ahora se añade al URL, tras un “?” Luego, al llegar al servidor Web, éste mete esa Luego, al llegar al servidor Web, éste mete esa

información en la variable de entorno información en la variable de entorno QUERY_STRINGQUERY_STRING

A través de la cual ya está disponible para el programa CGI, como veíamos antes

Page 78: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción a ASPIntroducción a ASPIntroducción a ASPIntroducción a ASP

Una vez visto CGI, y como paso previo Una vez visto CGI, y como paso previo antes de ver la tecnología J2EE, que antes de ver la tecnología J2EE, que será el objetivo propiamente dicho del será el objetivo propiamente dicho del curso, echémosle un vistazo a esta otra curso, echémosle un vistazo a esta otra tecnología de páginas dinámicas.tecnología de páginas dinámicas.

Page 79: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

7979

Requisitos de softwareRequisitos de softwareRequisitos de softwareRequisitos de software Uno de los inconvenientes de ASP es que es Uno de los inconvenientes de ASP es que es

dependiente de un servidor Web concretodependiente de un servidor Web concretoEl Internet Information Server (IIS)Internet Information Server (IIS) de Microsoft

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

Aunque quizá no lo hayamos instalado junto con el Sistema Operativo

– En ese caso, podríamos hacerlo a través de la opción de Añadir o quitar componentes de Windows del Panel de Control

¿Cómo probar si está instalado?– Teclear en el navegador http://localhost/http://localhost/

Page 80: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

8080

Sintaxis generalSintaxis generalSintaxis generalSintaxis general ASP, al igual que las JSP de Java, se basa en ASP, al igual que las JSP de Java, se basa en

mezclar instrucciones de programación en nuestras mezclar instrucciones de programación en nuestras páginas HTMLpáginas HTML

El motor de ASP procesará dichas instrucciones El motor de ASP procesará dichas instrucciones dinámicamente y obviará el HTMLdinámicamente y obviará el HTML

Esto permite generar HTML dinámicamente, añadiendo lógica a nuestras páginas

Para ello, hay que encerrar el código ASP entre los Para ello, hay que encerrar el código ASP entre los símbolos símbolos <% %>

Page 81: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

8181

Lenguaje de programaciónLenguaje de programaciónLenguaje de programaciónLenguaje de programación ¿Y en qué lenguaje se escriben esas instrucciones?¿Y en qué lenguaje se escriben esas instrucciones? ASP permite el uso de dos lenguajes:ASP permite el uso de dos lenguajes:

Visual Basic Script (VBScriptVBScript)JScript (como denomina Microsoft a su implementación de ECMAScript –que a su vez es el estándar de JavaScriptJavaScript–)

Si no decimos nada, por omisión asume VBScriptSi no decimos nada, por omisión asume VBScript Será el lenguaje que emplearemos en los ejemplosSerá el lenguaje que emplearemos en los ejemplos

Es el más frecuente cuando hablamos de páginas ASP

Page 82: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

8282

Ejemplo: mi primera Ejemplo: mi primera página ASPpágina ASPEjemplo: mi primera Ejemplo: mi primera página ASPpágina ASP Será –¡cómo no!– el archiconocido Será –¡cómo no!– el archiconocido “Hola, mundo”“Hola, mundo” La página siguiente escribe dinámicamente el La página siguiente escribe dinámicamente el

mensajemensaje<html> <head> <title>Mi primera página ASP</title> </head> <body> <h1> <% Response.Write “¡Hola, mundo!" %> (mi primera página ASP) </h1></body> </html>

Page 83: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

8383

¿Cómo probamos la ¿Cómo probamos la página?página?¿Cómo probamos la ¿Cómo probamos la página?página? Si la abrimos directamente en el navegador, no Si la abrimos directamente en el navegador, no

veremos el mensajeveremos el mensajeO veríamos el código fuenteU obtendríamos un error (si los navegadores validasen el código HTML que reciben)

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

Es decir, que reciba la petición el IIS

Page 84: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

8484

Administración del IISAdministración del IISAdministración del IISAdministración del IIS Se instala en el directorio Se instala en el directorio C:/InetpubC:/Inetpub Dentro de él, el directorio raíz del servidor está en Dentro de él, el directorio raíz del servidor está en

wwwrootwwwroot Y ahí es donde deberemos poner nuestra páginaY ahí es donde deberemos poner nuestra página

(También podríamos configurar directorios virtualesdirectorios virtuales) Creamos una carpeta Creamos una carpeta ejemplosejemplos y llamamos y llamamos

holaMundo.aspholaMundo.asp al fichero anterior al fichero anterior La forma de ejecutarlo es:La forma de ejecutarlo es:

http://localhost/holaMundo.asphttp://localhost/holaMundo.asp

Page 85: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

8585

Otro ejemplo, más Otro ejemplo, más “dinámico”“dinámico”Otro ejemplo, más Otro ejemplo, más “dinámico”“dinámico” Naturalmente, para el viaje anterior no hacen falta Naturalmente, para el viaje anterior no hacen falta

tantas alforjastantas alforjasNo tiene ningún sentido emplear una página dinámica para eso

Hagamos ahora una página que muestre algo de Hagamos ahora una página que muestre algo de información dinámicainformación dinámica

Por ejemplo, que diga “Buenos días” o “Buenas tardes” en función de la hora

Page 86: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

8686

Saludo personalizado: fecha y Saludo personalizado: fecha y horahoraSaludo personalizado: fecha y Saludo personalizado: fecha y horahora

<% ‘ Crear algunas variables Dim fecha Dim hora

‘ Obtener la fecha y la hora fecha = Date() hora = Time()

' Imprimir un saludo en función de la hora If Left(hora, 2) >= 12 Then Response.Write "Buenas tardes" Else Response.Write "Buenos días" End If %> Hoy es <%=fecha%> y son las <%=hora%>

Page 87: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

8787

Objetos predefinidosObjetos predefinidosObjetos predefinidosObjetos predefinidos ASP tiene los siguientes objetos predefinidos:ASP tiene los siguientes objetos predefinidos:

ApplicationApplication– Permite compartir información entre todos los usuarios de una aplicación (en

esto se diferencia de Session)ASPErrorASPError

ObjectContextObjectContext

RequestRequest– Para obtener información de la petición HTTP (parámetros, cookies…)

ResponseResponse– Para enviar datos al cliente (escribir código HTML, redirigir a otra página, etc.)

ServerServer– Fundamentalmente, para crear objetos de componentes del servidor

SessionSession– Permite almacenar el estado de la sesión

Page 88: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

8888

Acceso a bases de datosAcceso a bases de datosAcceso a bases de datosAcceso a bases de datos Prácticamente cualquier aplicación Web va a Prácticamente cualquier aplicación Web va a

necesitar acceder a una base de datos en el servidornecesitar acceder a una base de datos en el servidor

Page 89: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

8989

ÍndiceÍndiceÍndiceÍndice Introducción a Internet y el WebIntroducción a Internet y el Web

HTTP, HTML, URL, servidores Web… Introducción a las páginas dinámicasIntroducción a las páginas dinámicas

CGI, ASP, JSP y Servlets, etc. Mantenimiento de la sesión del usuarioMantenimiento de la sesión del usuario Servidores de aplicacionesServidores de aplicaciones

Page 90: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Mantenimiento de la Mantenimiento de la sesiónsesión

Mantenimiento de la Mantenimiento de la sesiónsesión

Una de los grandes inconvenientes a Una de los grandes inconvenientes a solventar en las aplicaciones Web es cómo solventar en las aplicaciones Web es cómo mantener la sesión del usuario. Veamos en mantener la sesión del usuario. Veamos en qué consiste y qué alternativas existen para qué consiste y qué alternativas existen para hacerlo.hacerlo.

Page 91: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

9191

HTTP, protocolo sin estadoHTTP, protocolo sin estadoHTTP, protocolo sin estadoHTTP, protocolo sin estado HTTP es un protocolo HTTP es un protocolo sin estadosin estado Esto significa que para el servidor Web cada petición Esto significa que para el servidor Web cada petición

de una página es únicade una página es únicaNo tendría forma de saber, por ejemplo, que ese usuario acaba de añadir un producto a su carrito, o si ya se validó o no, en qué punto del proceso de compra se encuentra, etcétera

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

Page 92: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

9292

AlternativasAlternativasAlternativasAlternativas Aunque hay varias formas de hacerlo (dependiendo de si Aunque hay varias formas de hacerlo (dependiendo de si

trabajamos en ASP, en J2EE…) la mayoría pasan por el uso trabajamos en ASP, en J2EE…) la mayoría pasan por el uso de de “cookies”“cookies”

Algunas de las alternativas son:Algunas de las alternativas son:Usar el objeto SessionSession (o similar) provisto por los entornos de programación como ASP o J2EE (Servlets, JSP...)Almacenar toda la información de la sesión, a mano, en una cookie (por ejemplo, mediante JavaScript)Una combinación de cookie (para guardar un ID de usuario) y bases de datos““URL rewriting”URL rewriting” Etcétera

Page 93: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

CookiesCookiesCookiesCookies

Veamos una introducción a las cookies y Veamos una introducción a las cookies y algunos ejemplos en los que algunos ejemplos en los que aprenderemos a manipularlas.aprenderemos a manipularlas.

Page 94: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

9494

¿Qué son las cookies?¿Qué son las cookies?¿Qué son las cookies?¿Qué son las cookies? Las Las cookiescookies son pequeñas porciones datos que son son pequeñas porciones datos que son

almacenados localmente por el navegador en forma almacenados localmente por el navegador en forma de pequeños ficheros de textode pequeños ficheros de texto

Cada vez que el cliente envía información al servidor, Cada vez que el cliente envía información al servidor, incluye en la petición HTTP las cookies que incluye en la petición HTTP las cookies que previamente haya guardado provenientes de ese previamente haya guardado provenientes de ese servidorservidor

Page 95: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

9595

Detalles de Detalles de implementaciónimplementaciónDetalles de Detalles de implementaciónimplementación Según la especificación, un agente de usuario (es Según la especificación, un agente de usuario (es

decir, un navegador), debe permitir al menos:decir, un navegador), debe permitir al menos:Un total de 300 cookies300 cookiesHasta 4 KB4 KB (4.096 bytes) por cookiepor cookieAl menos 20 cookies de un servidor20 cookies de un servidor dado

El navegador se encarga automáticamente de El navegador se encarga automáticamente de eliminar aquéllas que hace más tiempo que no se eliminar aquéllas que hace más tiempo que no se utilizan cuando necesita guardar nuevas cookiesutilizan cuando necesita guardar nuevas cookies

Page 96: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

9696

SintaxisSintaxisSintaxisSintaxis Cada cookie presenta la siguiente sintaxis general:Cada cookie presenta la siguiente sintaxis general:

Lo único obligatorio es que tenga un Lo único obligatorio es que tenga un nombrenombre y un y un valorvalor asociado; el resto de atributos son opcionales asociado; el resto de atributos son opcionales

Aunque también se utiliza bastante el atributo expiresexpires

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

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

Page 97: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

9797

Descripción de los Descripción de los atributosatributosDescripción de los Descripción de los atributosatributos Un par Un par nombre = valornombre = valor

Por ejemplo: IDUsuario = 49;IDUsuario = 49;

expiresexpiresHasta cuándo será válida la cookie

– Debe ir en este formato: Wdy, DD-Mon-YYYY HH:MM:SS GMTWdy, DD-Mon-YYYY HH:MM:SS GMT

– Si no se dice nada, la cookie será eliminada al terminar la sesión Es decir, al cerrar la ventana actual del navegador

pathpathEl conjunto de directorios del servidor para los que es válida esta cookie (por omisión, será el raíz “/”, es decir, todos)

Page 98: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

9898

Descripción de los Descripción de los atributos (2)atributos (2)Descripción de los Descripción de los atributos (2)atributos (2) domaindomain

El servidor o nombre de dominio para el que es válida la cookieUna cookie sólo puede ser leída y modificada desde el servidor y directorio especificados en la cookie cuando ésta fue creada

securesecureEs booleano; si está definido (si aparece el atributo) deberá haber una conexión segura (httpshttps) para que la cookie sea enviada

Page 99: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Uso de cookies en ASPUso de cookies en ASPUso de cookies en ASPUso de cookies en ASP

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

Page 100: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

100100

Response.CookiesResponse.CookiesResponse.CookiesResponse.Cookies Mediante la colección Mediante la colección CookiesCookies del objeto predefinido del objeto predefinido

ResponseResponse podemos establecer el valor de una cookie podemos establecer el valor de una cookieSi la cookie especificada no existe, se crearáSi existe, machacará el valor que tuviera anteriormente

Ejemplo:Ejemplo:<%<%

Response.Cookies(“IDUsuario”) = 49Response.Cookies(“IDUsuario”) = 49

Response.Cookies(“IDUsuario”).Expires =Response.Cookies(“IDUsuario”).Expires =

““December 31, December 31, 2004”2004”

%>%>

Page 101: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

101101

Leer el valor de una cookieLeer el valor de una cookieLeer el valor de una cookieLeer el valor de una cookie Se hace a través de la misma colección, sólo que Se hace a través de la misma colección, sólo que

ahora sin especificar ningún valor:ahora sin especificar ningún valor:

<%= Response.Cookies(“IDUsuario”) %><%= Response.Cookies(“IDUsuario”) %>

Page 102: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

102102

Ejemplo: contador de Ejemplo: contador de visitasvisitasEjemplo: contador de Ejemplo: contador de visitasvisitas Realicemos un sencillo ejemplo en el que se cuenten Realicemos un sencillo ejemplo en el que se cuenten

las visitas de un usuario a una páginalas visitas de un usuario a una página

Page 103: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

103103

URL RewritingURL RewritingURL RewritingURL Rewriting Consiste en incluir la información del estado en el Consiste en incluir la información del estado en el

propio URLpropio URL/…/comprar.asp?/…/comprar.asp?paso=3&producto1=01992CX&producto2=ZZ112230paso=3&producto1=01992CX&producto2=ZZ112230&producto3=HJ19X25…&producto3=HJ19X25…

No es de recibo en aplicaciones “serias”No es de recibo en aplicaciones “serias”Un cliente puede iniciar dos o más sesiones simultáneas, páginas tediosas de programar, sólo se puede usar el método GET, etc.

Page 104: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Ventajas e inconvenientesVentajas e inconvenientesVentajas e inconvenientesVentajas e inconvenientes

Almacenar el estado de la sesión en el Almacenar el estado de la sesión en el cliente presenta algunas ventajas frente a cliente presenta algunas ventajas frente a hacerlo en el servidor, pero también tiene hacerlo en el servidor, pero también tiene algunos inconvenientes.algunos inconvenientes.

Page 105: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

105105

VentajasVentajasVentajasVentajas Menor uso de los recursos del servidorMenor uso de los recursos del servidor

Los servidores “sin estado” no necesitan reservar y mantener recursos para guardar el estado de la sesión

Fácil escalabilidad y uso de clustersFácil escalabilidad y uso de clustersAl no tener estado, cualquier servidor puede atender a cualquier cliente

– No hace falta que un cliente siempre sea atendido por el mismo servidor, ni ningún tipo de distribución del estado entre servidores

La sesión del cliente podría sobrevivir a una caída La sesión del cliente podría sobrevivir a una caída del servidordel servidor

Un reintento por parte del cliente con el mismo URL suele funcionar

Page 106: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

106106

InconvenientesInconvenientesInconvenientesInconvenientes PrivacidadPrivacidad

Otros servidores podrían leer información almacenada en las cookies del cliente

– No son válidas para guardar números de tarjeta, contraseñas y cosas por el estilo

Los datos pueden ser alteradosLos datos pueden ser alteradosUn usuario podría modificar el fichero de una cookieLo mismo ocurre con otros mecanismos de cliente: URL, formularios, etc.

Aumenta el tráfico por la redAumenta el tráfico por la redEl estado se transmite con cada petición al servidor

Page 107: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

107107

InconvenientesInconvenientesInconvenientesInconvenientes Implementación complejaImplementación 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)

Tamaño de datos limitadoTamaño de datos limitadoTanto el tamaño máximo permitido por las cookies como la longitud máxima de un URL pueden darnos problemas para almacenar sesiones complejas

Page 108: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

108108

ÍndiceÍndiceÍndiceÍndice Introducción a Internet y el WebIntroducción a Internet y el Web

HTTP, HTML, URL, servidores Web… Introducción a las páginas dinámicasIntroducción a las páginas dinámicas

CGI, ASP, JSP y Servlets, etc. Mantenimiento de la sesión del usuarioMantenimiento de la sesión del usuario Servidores de aplicacionesServidores de aplicaciones

Page 109: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

109109

¿Qué es un servidor de ¿Qué es un servidor de aplicaciones?aplicaciones?¿Qué es un servidor de ¿Qué es un servidor de aplicaciones?aplicaciones? Es un programa que provee la infraestructura Es un programa que provee la infraestructura

necesaria para las aplicaciones Web empresarialesnecesaria para las aplicaciones Web empresariales ¿Qué quiere decir esto?¿Qué quiere decir esto?

Que los programadores van a poder dedicarse casi en exclusiva a implementar la lógica del dominio, ya que servicios de uso común, como transacciones, seguridad, persistencia, etc. ya son proporcionados por el servidor WebSe ha convertido en una pieza de software clave para cualquier empresa dedicada al comercio electrónicoEs una capa intermedia (middlewaremiddleware) que se sitúa entre el servidor Web y las aplicaciones y bases de datos subyacentes

Page 110: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

110110

Visión generalVisión generalVisión generalVisión general

Servidor de aplicaciones(Transacciones, mensajería, servicios Web…)

CORBA J2EE .NET

Aplicación cliente

Aplicación cliente

Aplicación cliente

SGBD

Page 111: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

111111

MotivaciónMotivaciónMotivaciónMotivación Comienzan a surgir cuando queda claro las Comienzan a surgir cuando queda claro las

aplicaciones aplicaciones cliente/servidorcliente/servidor no iban a ser escalables no iban a ser escalables a un gran número de usuariosa un gran número de usuarios

Debido a las características de los clientes “pesados” Se hacía necesario mover las Se hacía necesario mover las reglas de negocioreglas de negocio a a

algún lugar intermedio entre los clientes y la base de algún lugar intermedio entre los clientes y la base de datosdatos

Empezaron a surgir productos para hacer esa tareaEmpezaron a surgir productos para hacer esa tareaCada compañía los llamaba de una forma distinta

– Servidores de transacciones, servidores de aplicaciones…

Page 112: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

112112

MisiónMisiónMisiónMisión Los llamasen como los llamasen, estaban diseñados Los llamasen como los llamasen, estaban diseñados

para para gestionar de forma centralizadagestionar de forma centralizada el modo en que el modo en que los los clientesclientes debían conectarse a la debían conectarse a la base de datosbase de datos o a o a los los serviciosservicios con los que tenían que interoperar con los que tenían que interoperar

Page 113: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

113113

Servicios proporcionadosServicios proporcionadosServicios proporcionadosServicios proporcionados Creación y gestión de los componentes del servidorCreación y gestión de los componentes del servidor

Por aquel entonces, basados en CORBA o COM ClusteringClustering Equilibrado de cargaEquilibrado de carga TransaccionesTransacciones SeguridadSeguridad Acceso a datosAcceso a datos ……

Page 114: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Servicios proporcionadosServicios proporcionadosServicios proporcionadosServicios proporcionados

A continuación, se explicarán un poco más A continuación, se explicarán un poco más en detalle cada uno de los servicios en detalle cada uno de los servicios anteriores, ofrecidos, en mayor o menor anteriores, ofrecidos, en mayor o menor medida, por los servidores de aplicaciones.medida, por los servidores de aplicaciones.

Page 115: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

115115

Gestión de la sesiónGestión de la sesiónGestión de la sesiónGestión de la sesión

Como sabemos, HTTP es un protocolo sin sesiónComo sabemos, HTTP es un protocolo sin sesiónNo permite mantener una conexión abierta entre el cliente y el servidor más allá de lo que dura la transferencia del documento en cuestión

En cualquier aplicación de comercio electrónico, es En cualquier aplicación de comercio electrónico, es necesario poder identificar al usuario a través de su necesario poder identificar al usuario a través de su navegación por el sitio Webnavegación por el sitio Web

Autenticación, adición de productos al carrito de la compra, etc.

El servidor ha de conservar información entre peticiones del usuario a lo largo de la duración de una sesión

El servidor ha de conservar información entre peticiones del usuario a lo largo de la duración de una sesión

Page 116: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

116116

Gestión de la sesión (2)Gestión de la sesión (2)Gestión de la sesión (2)Gestión de la sesión (2) La implementación “a mano” se complicaría La implementación “a mano” se complicaría

enormemente en el caso de contar con varios enormemente en el caso de contar con varios servidores (equilibrado de carga)servidores (equilibrado de carga)

La petición de un usuario registrado en la máquina A puede ser redirigida al servidor B

Lo lógico es que sea el servidor de aplicaciones Lo lógico es que sea el servidor de aplicaciones quien se encargue de gestionar la sesiónquien se encargue de gestionar la sesión

Además, debería ser más eficiente que si lo programamos nosotros mismos

Page 117: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

117117

Equilibrado de cargaEquilibrado de cargaEquilibrado de cargaEquilibrado de carga

Por equilibrado de carga (Por equilibrado de carga (load balancingload balancing) se entiende la ) se entiende la capacidad de repartir el procesamiento entre distintos capacidad de repartir el procesamiento entre distintos servidoresservidores

Las peticiones de los clientes se redirigen a la máquina que más desocupada se encuentre en ese momentoMejora de rendimiento de la aplicación

No es tan sencillo como añadir una nueva máquina y ya estáNo es tan sencillo como añadir una nueva máquina y ya está Además de la Además de la escalabilidadescalabilidad, se consigue una mayor , se consigue una mayor

tolerancia a fallostolerancia a fallos

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

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

Page 118: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

118118

Acceso a datosAcceso a datosAcceso a datosAcceso a datos Los servidores de aplicaciones proveen facilidades para Los servidores de aplicaciones proveen facilidades para

administrar conexiones a bases de datos relacionalesadministrar conexiones a bases de datos relacionalesOracle, SQL Server, DB2…

Los componentes (las clases que implementan la lógica del Los componentes (las clases que implementan la lógica del negocio) acceden a ellas de forma estándarnegocio) acceden a ellas de forma estándar

Independiente de la base de datos subyacente También suelen permitir acceder a otros tipos de fuentes de También suelen permitir acceder a otros tipos de fuentes de

datos:datos:Tales como distintos ERP (SAP, Vaan...), repositorios XML, etc.Los servidores de aplicaciones son también importantes, por tanto, como mecanismo de integración de sistemas heredados

Page 119: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

119119

““Pooling” de conexionesPooling” de conexiones““Pooling” de conexionesPooling” de conexiones Abrir una conexión a una base de datos suele ser un Abrir una conexión a una base de datos suele ser un

proceso costosoproceso costosoNo es viable abrir una nueva conexión por cada consulta a la base de datos

– Penalizaría enormemente el rendimiento de la aplicación Los servidores de aplicaciones suelen contar con Los servidores de aplicaciones suelen contar con

una serie de conexiones permanentemente abiertas una serie de conexiones permanentemente abiertas que distribuye de forma transparente a los distintos que distribuye de forma transparente a los distintos procesosprocesos

Se debería poder configurar el número de conexiones abiertas, e incluso la política de asignación

Page 120: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

120120

Gestión transaccionalGestión transaccionalGestión transaccionalGestión transaccional

Son un elemento básico de cualquier aplicación comercialSon un elemento básico de cualquier aplicación comercialEvitan que haya información inconsistente

Sería complejísimo implementarlas “a mano”Sería complejísimo implementarlas “a mano” Con un servidor de aplicaciones que tenga esta Con un servidor de aplicaciones que tenga esta

característica, bastaría con indicarle dónde empieza y termina característica, bastaría con indicarle dónde empieza y termina la transacciónla transacción

Encargándose él de deshacer los pasos intermedios en caso de un error del sistema

Transacción: secuencia de pasos que, o se ejecutan todos, o si no el sistema queda en el estado original

Transacción: secuencia de pasos que, o se ejecutan todos, o si no el sistema queda en el estado original

Page 121: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Para terminar…Para terminar…Para terminar…Para terminar…

Un comentario final, acerca de las Un comentario final, acerca de las tecnologías o plataformas típicas sobre las tecnologías o plataformas típicas sobre las que se implementan los servidores de que se implementan los servidores de aplicaciones, junto con un sencillo aplicaciones, junto con un sencillo esquema de una de ellas: J2EEesquema de una de ellas: J2EE

Page 122: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

122122

Tecnologías actualesTecnologías actualesTecnologías actualesTecnologías actuales Actualmente, las dos plataformas más comunes son Actualmente, las dos plataformas más comunes son

J2EEJ2EE y, más recientemente, ha surgido y, más recientemente, ha surgido .NET.NETDe hecho, hasta hace poco hablar de servidores de aplicaciones era prácticamente hablar de J2EE

– (aunque no debemos hacer tal asociación)

Page 123: Introducción al desarrollo de aplicaciones Web César Fernández Acebal Universidad de Oviedo  acebal@ieee.org Arquitectura Web en aplicaciones

Introducción al desarrollo de aplicaciones WebIntroducción al desarrollo de aplicaciones WebCésar Fernández AcebalCésar Fernández Acebal

123123

Ejemplo: arquitectura J2EEEjemplo: arquitectura J2EEEjemplo: arquitectura J2EEEjemplo: arquitectura J2EE