• No se han encontrado resultados

Sistemas Distribuidos Basados en la WEB

N/A
N/A
Protected

Academic year: 2022

Share "Sistemas Distribuidos Basados en la WEB"

Copied!
18
0
0

Texto completo

(1)

Sistemas Distribuidos Basados en la WEB

Andrew Tanembaum M. L. Liu

Contenido

z Introducción

z Lenguajes: HTML, XML

z El Protocolo: HTTP

z Contenido Web Generado en Forma Dinámica: CGI

z Sesiones Web y datos de estado de la sesión.

z Applets

z Servlets

Contenido

z Servicios web

z SOAP

(2)

Aplicaciones en Internet

z La aplicación distribuida más conocida es la World Wide Web o la Web

z Se trata de un sistema distribuido de servidores HTTP y clientes WEB.

z La web nació gracias a Tim Berners-Lee a finales de 1990 en el CERN, el laboratorio Europeo de Física de partículas de Suiza.

Aplicaciones en Internet

z La idea era permitir que un numeroso y geográficamente disperso grupo de

investigadores tuviera acceso a documentos compartidos.

z Vinculando los documentos entre sí, fue fácil integrarlos desde diferentes proyectos en un nuevo documento sin necesidad de realizar cambios centralizados.

Arquitectura

z El WWW es una aplicación cliente/servidor basada en el protocolo HTTP (hypertext Transfer Protocol, Protocolo de Transferencia de Hipertexto)

z Un servidor WEB es un servidor orientado a conexión que implementa HTTP y que por defecto ejecuta en el puerto 80.

(3)

Arquitectura

z La parte central de un sitio WEB está conformada por un proceso que tiene acceso a un sistema de archivos local que guarda documentos.

z El modo más simple de referirse a un documento es por medio de una referencia llamada localizador uniforme de recursos (URL). El URL especifica la localización del documento, a menudo incluyendo el nombre de su servidor.

Arquitectura

z Un usuario ejecuta un cliente WWW

(normalmente conocido como navegador) en una máquina local.

z Un navegador es responsable de desplegar adecuadamente el documento.

z También acepta entradas del usuario, en su mayor parte para permitirle seleccionar referencias a otro documento, el cual el navegador busca y despliega.

Client machine

Browser

OS

Server machine

Web server

1. Get document request (HTTP) 3. Response

2. Server fetches document from local file

(4)

Documentos Web

- Todo en la web llega en forma de documento.

- Un documento no sólo contiene texto simple, sino que puede poseer

características dinámicas tales como: audio, video, animaciones, etc.

- Un documento tiene dos partes: la parte principal o plantilla y la información en sí. La parte principal se construye en un lenguaje de marcas.

HTML

z Hypertext Markup Language o Lenguaje de Marcado de hypertexto, es el lenguaje de etiquetado (tags) utilizado para crear documentos que pueden ser recuperados usando WWW.

z HTML permite insertar vínculos a otros documentos. Cuando se activan o se seleccionan estos vínculos, el documento requerido será solicitado al servidor.

Ejemplo Código de HTML

<html>

<body>

<p>This is a paragraph.</p>

<p>This is a paragraph.</p>

<p>This is a paragraph.</p>

</body>

</html>

This is a paragraph.

This is a paragraph.

This is a paragraph

(5)

Ejemplo Código de HTML

<html>

<body>

<p>

<a href="lastpage.htm">

This text</a> is a link to a page on this Web site.

</p>

<p>

<a href="http://www.microsoft.com/">

This text</a> is a link to a page on the World Wide Web.

</p>

</body>

</html>

z This textis a link to a page on this Web site.

z This textis a link to a page on the World Wide Web.

XML (lenguaje de marcado extensible)

z Mientras que HTML permite etiquetar un documento para la presentación posterior de la información, el XML permite estructurar su información.

z Utiliza etiquetas para describir la información contenida en el documento.

z HTML y XML incluyen toda clase de

señalizaciones que se refieren a documentos embebidos (empotrados).

Ejemplo XML

<note>

<to>Mary</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

(6)

Ejemplo XML

<breakfast_menu>

<food>

<name>Belgian Waffles</name>

<price>$5.95</price>

<description>

two of our famous Belgian Waffles with plenty of real maple syrup

</description>

<calories>650</calories>

</food>

<food>

<name>Strawberry Belgian Waffles</name>

<price>$7.95</price>

<description>

light Belgian waffles covered with strawberries and whipped cream

</description>

<calories>900</calories>

</food>

</breakfast_menu>

MIME

z Los documentos insertados pueden ser de varios tipos.

z Cada documento insertado lleva un tipo MIME (multipurpose Internet Mail Interchange) asociado.

Mpeg, quicktime Vídeo

Basic, midi, mp3 audio

Jpeg, gif image

Octect-stream (puede usarse para enviar archivosJava.class) Adobe-postcript, xml application

E-mail, news message

Plain rich text, html, xml, etc.

text

Subtipo Tipo

HTTP

z Es un protocolo, orientado a conexión, sin estado y de petición–respuesta.

z Los clientes WEB o navegadores implementan el protocolo, para poder conectarse a los servidores web y obtener documentos HTML.

z Un servidor HTTP o servidor WEB ejecuta por defecto en el puerto 80.

z En http/1.0 cada conexión sólo permite una ronda de petición-respuesta: un cliente obtiene una conexión y manda una petición; el servidor procesa la petición, emite una respuesta y cierra la conexión.

(7)

HTTP

z Si un cliente necesita contactar al mismo servidor más de una vez en una misma sesión debe reconectarse al servidor por cada nueva petición.

z Este esquema trabaja bien si sólo se van a recibir documentos simples, no obstante, no es muy eficiente para recibir documentos que contienen un gran número de enlaces a otros documentos.

HTTP

z Como resultado http/1.0 se extendió para permitir la cabecera de petición Connection:

Keep-Alive, que es enviada por los clientes que desean una conexión persistente con el servidor; el servidor mantiene la conexión abierta después de enviar la respuesta.

z En http/1.1 las conexiones son persistentes por defecto.

z El protocolo, independientemente de si se mantiene o no la sesión abierta sigue siendo sin estado. Cada petición se maneja como una nueva.

HTTP

z Http es un protocolo de petición-respuesta basado en texto, ya que tanto la petición como la respuesta son cadenas de

caracteres. Cada petición y respuesta están compuestas, en orden, por las siguientes partes:

z La línea de petición/respuesta

z Una sección de cabecera

z Una línea en blanco

z El cuerpo.

(8)

Ejemplos

GET /index.html HTTP/1.1

<línea en blanco>

sección de cabecera

Método http

URI Solicitado Protocolo

Métodos:

GET: para solicitar el contenido de un documento WEB referenciado por el URI especificado.

HEAD: Para solicitar sólo la cabecera del documento, no el documento completo.

POST: Usado para enviar datos a un proceso servidor.

HTTP

z La sección de cabecera puede estar compuesta por una o más líneas con el siguiente formato:

<clave>: <valor>\r\n Algunas de las claves son:

- Accept: especifica los tipos de contenido aceptados por el cliente.

- User-Agent: especifica el tipo de navegador.

- Connection: Se puede especificar “Keep-Alive”

- Host: Nombre del servidor.

Ejemplos

HEAD / HTTP/1.1 Accept:*/*

Connection: Keep-Alive Host: algunaMaquina.com User-Agent: Generic

<linea en blanco>

POST /cgi/miServidor.cgi HTTP/1.0 Accept: */*

Connection: Keep-Alive Host: algunaMaquina.com User-Agent: Generic

Content-type: application/x-www.form-urlencoded Content-length: 11

<linea en blanco>

Nombre=jorge&[email protected]

La especificación del tipo de contenido sigue un esquema establecido en el protocolo conocido como MIME

(9)

Códigos devueltos por HTTP

z En respuesta a un petición del cliente, el servidor HTTP debe enviar una respuesta. La respuesta también se compone de varias partes:

z 1. La respuesta o línea de estado

z 2. Una sección de cabecera

z 3. Una línea en blanco

z El cuerpo.

Códigos devueltos por HTTP

Los códigos de estado son los siguientes:

z 100-199 Informativo

z 200-299 Petición del cliente satisfactoria

z 300-399 Petición del cliente redirigida

z 400-499 Petición del Cliente incompleta.

z 500-599 Errores en el servidor.

Ejemplos:

HTTP/1.0 200 OK

HTTP/1.1 404 NOT FOUND

Contenido WEB generado en forma dinámica

z Al principio la web se utilizaba para transmitir contenido estático: un archivo plano, un archivo con una imagen.

z Según fue evolucionando, las aplicaciones comenzaron a utilizar http con diferentes propósitos:

z El navegador puede recibir datos basados en información dinámica introducidos durante una sesión. Ejemplo: Una aplicación web típica, como el carrito de compras requiere el envío de datos introducidos por el cliente a tiempo de ejecución.

(10)

Contenido WEB generado en forma dinámica

z CGI (Interfaz de Compuerta común) define la forma estándar mediante la cual un servidor WEB es capaz de ejecutar un programa (script cgi) tomando los datos de un usuario como entrada.

z En general los datos del usuario provienen de un formulario html; este formulario especifica el programa a ser ejecutado del lado del servidor, junto con valores de los parámetros.

Contenido WEB generado en forma dinámica

z Cuando el servidor ve la solicitud, inicia el programa nombrado en la solicitud y transfiere los valores del parámetro. El programa realiza su trabajo y, por lo general, regresa los resultados en la forma de un documento que podrá desplegar el navegador donde se encuentra el usuario.

Web server CGI process Database server

CGI program 1. Get request

2. Start process to fetch document

4. HTML document created HTTP

request handler 5. Return result

3. Database interaction

(11)

CGI

z Un script CGI puede estar escrito en cualquier lenguaje de programación, incluyendo los lenguajes interpretados (perl, TKL, Python, JavaScript, Visual Basic Script), al igual que lenguajes compilados (C, C++, Ada)

z Un script cgi se invoca normalmente desde una página web especial, conocida como el formulario.

El formulario web

z Es un tipo especial de página web que:

z Proporciona una interfaz gráfica que le permite al usuario introducir datos.

z Cuando el usuario presiona el botón de envío, invoca la ejecución de un programa externo en la máquina del servidor web.

Sesiones web y datos de estado de la sesión

z Durante una sesión de una aplicación web, se emiten diversas peticiones HTTP, cada una de las cuales puede invocar a un programa externo como puede ser un script cgi.

z Varios de los scripts invocados, pueden necesitar los mismos datos (ejm, el

identificador del usuario). Es decir hay datos que necesitan ser compartidos por los scripts a lo largo de la sesión.

(12)

Sesiones web y datos de estado de la sesión

z Sin embargo, debido a que los scripts web son programas separados ejecutados en contextos independientes, no comparten datos (por otro lado se activan y mueren con la petición)

z Ni HTTP, ni CGI, tienen soporte para datos de estado de sesión, ya que ambos protocolos son sin estado y no tienen el concepto de sesión.

Sesiones web y datos de estado de la sesión

z Debido a la popularidad de las aplicaciones de internet han surgido diversos mecanismos que permiten compartir datos de sesión entre scripts CGI (y otros programas externos). Estos mecanismos se clasifican en:

z Mecanismos del lado del servidor: se pueden usar archivos o bases de datos como repositorios de datos de una sesión. La desventaja de este mecanismo es el overhead que genera y la necesidad de administrar estos archivos donde se guardan los datos que deben persistir entre sesiones.

z Mecanismos del lado del cliente: campos ocultos del formulario, cookies.

Sesiones web y datos de estado de la sesión

z Campos ocultos en el formulario:

z En este caso se introducen los datos de estado de sesión en los formularios web generados dinámicamente. Es un campo oculto. Es simple, ya que sólo requiere de la introducción de nuevos campos en el formulario y no se necesitan recursos adicionales ni el cliente ni en el servidor.

z La simplicidad conlleva el riesgo de privacidad y seguridad, ya que los datos de estado se transmiten como campos ocultos sin proteger. Este esquema no debe utilizarse para transmitir datos sensibles como número de tarjetas de crédito.

(13)

Sesiones web y datos de estado de la sesión

z Uso de cookies:

z Este esquema hace uso de una extensión del protocolo HTTP básico que permite que una respuesta del servidor pueda contener información de estado que el cliente deberá almacenar en un objeto.

z Un script puede crear un cookie como parte de la respuesta HTTP. SE incluye la línea de cabecera Set-Cookie.

Sesiones web y datos de estado de la sesión

z Cuando el navegador recibe esta respuesta, crea un objeto, una cookie, que contiene el par nombre-valor especificado para cada elemento de datos de estado, por ejemplo:

id=12345.

z La cookie se almacena en la máquina cliente de forma temporal o de forma persistente.

z Cuando sea necesario, el cookie (el par nombre-valor) se envía en las peticiones al servidor web.

Sesiones web y datos de estado de la sesión

z Uso de cookies:

z Cada cookie contiene un par nombre=valor con codificación URL, para cada elemento de datos de estado, por ejemplo: id=12345.

z Un script CGI puede crear un cookie como parte de la respuesta que genera.

z Cuando el navegador recibe esta respuesta crea un cookie que contiene el par, nombre=valor específico.

z La cookie se almacena en la máquina cliente de forma temporal o persistente.

(14)

Applets

z Son clases java solicitadas por el navegador a un servidor web, utilizando el protocolo http y ejecutadas a continuación por la máquina virtual java en el entorno del navegador.

z Un applet se especifica en una página HTML usando la etiqueta APPLET

Applets

z Cuando el navegador analiza la etiqueta, se lanza una petición al servidor HTTP.

z GET /applets/HolaMundo.class HTTP/1.1

z El servidor localiza el archivo y envía su contenido al cliente en el cuerpo de la respuesta http.

z Una vez recibido el archivo de la clase del applet, el navegador lo ejecuta en su maquina virtual de Java y muestra su resultado.

Servidor Cliente

Petición HTTP

Respuesta HTTP

(15)

Applets

z Debido a que los applets se descargan de una máquina remota y se ejecutan en la máquina local, su ejecución está sometida a restricciones por razones de seguridad.

z Una de estas restricciones es que el applet no tiene permitido leer o escribir archivos almacenados en el computador en que se está ejecutando.

z Otra restricción es que no tiene permitido la realización de conexiones de red excepto a la máquina de donde proviene

Servlets

z Son otro tipo de programa Java.

z Son extensiones del servidor, ejecutados en la máquina del servidor, como una acción desencadenada por la petición del cliente.

z A diferencia de los CGI, pueden usarse para extender cualquier servidor que tenga un protocolo del tipo petición-respuesta. No obstante, se utilizan normalmente con servidores HTTP, en cuyo caso se denominan servlets http.

Servlets: Soporte Arquitectónico

z A diferencia de los scripts cgi, que ejecutan en el servidor sin ningún sistema de soporte arquitectónico adicional, la ejecución de los servlets requiere la existencia de un módulo conocido como motor de servlets o contenedor de servlets.

z Dependiendo de la implementación del servidor, un servlet puede persistirmientras siga teniendo peticiones, o de forma indefinida hasta que se apague el servidor.

(16)

Servlets: Soporte Arquitectónico

z Persistencia:

z Un script cgi se carga y ejecuta cada vez que un cliente lo solicita, mientras que una sola instancia de un servlet seguirá ejecutando cuando tenga peticiones.

z Debido a esta característica un servlet puede mantener datos de estado de las sesiones de los clientes durante su tiempo de vida.

z Existen varias implementaciones que proporcionan la arquitectura de servlets: el JSWDK y el Apache Tomcat.

Servicios WEB

z Se proponen para la construcción de aplicaciones a partir de componentes distribuidos (servicios) independientes del lenguaje y de la plataforma.

z Un servicio lo proporciona un servidor y es accedido por un cliente.

z Un servicio web es un servicio tradicional puesto a disposición de todo el mundo en internet. Este servicio web se apega a un conjunto de estándares que le permiten ser descubierto y accedido a través de la red por aplicaciones que también se apegan a dichos estándares.

z Ejemplos de servicios: reporte meteorológico, validación de tarjetas de crédito, generador de números primos, Mapping de una dirección IP a un país, Información sobre el campeonato de fútbol europeo 2008, envío de texto para eliminar lenguaje obsceno, envíos de sms, conversión de temperatura (celcius- farenheit) etc. (www.xmethods.net)

Pila de Protocolos

z Protocolo de descubrimiento de servicios: permite al servicio ser registrado y localizado. (UDDI: Universal Description, Discovery and Integration)

z Capa de descripción de servicios: permiten que un servicio sea descrito en el directorio (WSDL, Web service description language, muy parecido a los lenguajes de definición de interfaz).

z Capa de mensajería: proporciona mecanismos para la intercomunicación entre procesos, incluyendo la funcionalidad del empaquetamiento de datos (Soap, XML)

z Capa de transporte: envía los mensajes (TCP, HTTP, SMTP, etc)

z Capa de red: se encarga de la transmisión física y del encaminamiento de paquetes (IP)

(17)

Protocolos

z Protocolo de descubrimiento de servicios:

permite al servicio ser registrado y localizado.

(UDDI: Universal Description, Discovery and Integration)

z Capa de descripción de servicios: permiten que un servicio sea descrito en el directorio (WSDL, Web service description language). Muy parecido a los lenguajes de definición de interfaz, una

descripción WSDL contiene definiciones precisas de las interfaces provistas por un servicio, es decir procedimientos, tipos de datos, etc. Puede ser transformado automáticamente en resguardos del lado del cliente y del lado del servidor.

Soap

z Soap: es un protocolo que al igual que Corba o JAVA RMI incorpora el paradigma de los objetos distribuidos. La diferencia es que también incorpora los protocolos de internet.

z Es un protocolo que extiende HTTP para permitir acceso a objetos distribuidos que representan servicios web.

z Cada mensaje soap se codifica en XML por razones de inter-operabilidad. El mensaje se transporta en una petición o respuesta http

Service description (WSDL) Client machine

Client application

Stub

Server application

Stub

Communication subsystem

Communication subsystem SOAP

Service description (WSDL)Service description (WSDL) Directory service (UDDI)

Publish service Look up

a service

Generate stub from WSDL description Server machine

Generate stub from WSDL description

(18)

Soap

objeto de servicio

servidor web Cliente Web

Nombre del método, lista de parámetros

valor devuelto

Petición Respuesta

Referencias

Documento similar

L´ımites de los par´ametros para el caso 3 con norma infinito cuando el controlador ideal no pertenece a β ( ρ, z ).. Respuesta escal´on en lazo abierto de

eXtensible Markup Language (XML) catalogo item duracion genero anio nombre titulo fecha responsable... Facultad de Estadística e Informática Línea de Prólogo Nodos Elemento