Page 1

DISEÑO ORIENTADO A OBJETOS Profesor: Wbeimar Quintero Giraldo email: wquintero@uco.edu.co CLASE Nº 2 UNIDAD 1: INTERNET: APLICACIONES WEB

1.2

EVOLUCION Y ARQUITECTURA

Es importante conocer la evolución que ha tenido la web (World Wide Web - www), desde sus inicios en los años noventa hasta nuestros días, esto nos dará un panorama más amplio de las posibilidades y potencialidades de las aplicaciones web, además nos adentrarán en los fundamentos de la arquitectura de dichas aplicaciones. Sitios web tradicionales: en sus inicios la web no tenía programas o aplicaciones web, lo que ofrecía era un repositorio de documentos accesibles a través del protocolo HTTP (HyperText Transfer Protocol), donde la arquitectura sobre la que se fundamenta incluso aún es la de Cliente-Servidor y como se puede ver en la siguiente figura: h

Internet

C1

http://www.doo.com/clase1.html

Servidor WEB

Elementos que participan: en esta arquitectura web intervienen los siguientes elementos: Cliente: cuando hablamos de cliente nos referimos no a personas sino a software, a programas con la capacidad de solicitar vía http recursos del servidor y así mismo recibir la respuesta enviada por el mismo servidor. En los sitios web el cliente más común, incluso en las aplicaciones web, es el browser o navegador (Chrome, Explorer, Mozilla, etc.), un navegador web es simplemente un programa con capacidad de elaborar peticiones http a un servidor web, recibir las respuestas http y leer o interpretar HTML (HyperText Markup Language).

Dominio doo.com

C2 C3

Cliente/Servidor: este tipo de arquitectura se basa en un computador central que acepta peticiones http de muchos clientes y responde a cada una de ellas con el recurso o archivo solicitado (clase1.html en la figura). El servidor entonces juega un papel protagónico y central, ofreciendo servicios a numerosos clientes.

Disco Duro clase1.html

Figura 1.1 Sitio web tradicional

Conviene analizar un poco más esta arquitectura, los elementos que participan en ella, el protocolo empleado, toda vez que, aunque ligeramente modificada, aún continúa siendo el fundamento de las aplicaciones web actuales.

Servidor web: es un programa con capacidad de recibir peticiones http de un cliente y responderlas a ese mismo cliente. Cuando el recurso solicitado es un archivo el servidor web accede al sistema de archivos local, cuando el recurso es un programa, el servidor web invoca el “ejecutor” de dicho programa para su ejecución, en todos los casos una respuesta http es enviada al cliente. Ejemplos de servidores web son Apache, Tomcat, Glass-Fish, Intenet Information Server, entre otros.


Unidad 1: Internet: Aplicaciones web

Recurso: el recurso es el elemento solicitado por los clientes y respondido por el servidor. Un recurso está identificado mediante una URL (Uniform Resource Locator), por ejemplo en la figura 1.1 http://www.doo.com/clase1.html es la URL del recurso clase1.html ubicado en dicho servidor. Los recursos web pueden ser archivos de texto (html, htm, xml, txt, etc.), imágenes, audios, videos, entre otros, o pueden ser programas lo que hace que se extiendan las capacidades originales de un servidor web. HTTP: podemos deducir de la figura 1.1 y de lo dicho hasta aquí, que entre un cliente y un servidor web se lleva a cabo una comunicación, la cual está fundamentada en el protocolo HTTP, a través de mensajes HTTP de solicitud y de respuesta. Esta comunicación también es conocida como transacción HTTP y sigue los siguientes pasos: 1. El cliente abre una conexión http con el servidor. 2. El cliente envía una petición http al servidor. 3. El servidor envía una respuesta http al cliente. 4. El cliente y el servidor cierran la conexión. El protocolo HTTP tiene el esquema de Solicitud/Respuesta (Request/Response en inglés), lo que significa que por cada petición (Request) del cliente el servidor envía una respuesta (Response). El protocolo HTTP es un protocolo sin estado lo que significa que cada transacción es independiente de la otra, es decir, HTTP no tiene memoria, no guarda el rastro de las comunicaciones (transacciones) previas entre el mismo cliente y servidor. Esta falta de memoria representa un problema para el desarrollo de aplicaciones web, donde es necesario mantener el estado de la comunicación entre cliente y servidor. El protocolo HTTP está formado por los siguientes elementos: •

Versión: en el formato <mayor>.<menor> Por ejemplo la versión usada generalmente

es la 1.1 especificada en la RFC 2616 (Request For Comments de la W3C e IETF). •

URI: identifica el recurso solicitado mediante la URL, la cual tiene el siguiente formato http://host[:puerto][ruta absoluta del recurso] El puerto por defecto es el 80.

Mensajes: es la unidad básica de comunicación entre el cliente y el servidor web, por lo tanto existen mensajes de solicitud y mensajes de respuesta.

Método: indica la acción que el cliente quiere que se realice sobre el recurso solicitado al servidor.

Métodos HTTP: vamos a profundizar un poco en los métodos del protocolo HTTP, para ello vamos a hacer uso de dos herramientas: un servidor web y un emulador de terminal para conectarnos vía telnet al servidor web y realizar sobre él algunas peticiones HTTP con los diferentes métodos provistos. En el primer caso hago uso de JBoss que realmente es un servidor de aplicaciones, con capacidad también de servidor web, en el segundo hago uso de ZOC (aunque en realidad cualquier herramienta de servidor web y emulador de terminal pueden usarse). IP del servidor y puerto de escucha del protocolo HTTP

Figura 1.2 Ventana de conexión telnet de ZOC

Una vez esté en ejecución nuestro servidor de aplicaciones JBoss, abrimos ZOC y dentro de él establecemos una conexión de telnet a dicho servidor 2


Unidad 1: Internet: Aplicaciones web como indica la figura 1.2. Al dar clic en el botón Connect establecemos la conexión telnet apareciendo la siguiente ventana:

Figura 1.3 Conexión telnet establecida con el servidor de aplicaciones

Además vamos a crear en la raíz del servidor web el siguiente archivo html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Protocolo HTTP</title> </head> <body> Los métodos del protocolo HTTP son: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE </body> </html> Figura 1.4 Archivo ejemplo.html

OPTIONS: este método le permite a un cliente consultar las opciones o requerimientos asociados a un recurso sin recuperar el recurso como tal. Al ejecutar el método OPTIONS obtenemos el siguiente resultado: OPTIONS /ejemplo.html HTTP/1.0 Opciones sobre el recurso ejemplo.html

HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS Content-Length: 0 Date: Tue, 31 Jan 2012 16:21:07 GMT Connection: close

GET: este método permite a un cliente recuperar el

recurso como tal. Al ejecutar el método GET obtenemos el siguiente resultado: GET /ejemplo.html HTTP/1.0 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Accept-Ranges: bytes ETag: W/"232-1328026586384" Last-Modified: Tue, 31 Jan 2012 16:16:26 GMT Content-Type: text/html Recurso ejemplo.html Content-Length: 232 Date: Tue, 31 Jan 2012 16:25:17 GMT Connection: close <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Protocolo HTTP</title> </head> <body> Los métodos del protocolo HTTP son: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE </body> </html>

HEAD: este método recupera la metainformación o encabezado del recurso sin recuperar el contenido de dicho recurso. Al ejecutar el método HEAD obtenemos el siguiente resultado: HEAD /ejemplo.html HTTP/1.0 HTTP/1.1 200 OK Encabezado de ejemplo.html Server: Apache-Coyote/1.1 Accept-Ranges: bytes ETag: W/"232-1328026586384" Last-Modified: Tue, 31 Jan 2012 16:16:26 GMT Content-Type: text/html Content-Length: 232 Date: Tue, 31 Jan 2012 16:30:09 GMT Connection: close

POST: la función de este método está determinada por el servidor. Al ejecutar el método POST sobre el servidor JBoss 3


Unidad 1: Internet: Aplicaciones web obtenemos el siguiente resultado que es el mismo del método GET: POST /ejemplo.html HTTP/1.0 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Accept-Ranges: bytes ETag: W/"232-1328026586384" Last-Modified: Tue, 31 Jan 2012 16:16:26 GMT Content-Type: text/html Content-Length: 232 Date: Tue, 31 Jan 2012 16:32:50 GMT Connection: close <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Protocolo HTTP</title> </head> <body> Los métodos del protocolo HTTP son: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE </body> </html>

PUT: este método permite subir un recurso al servidor web. Este método al igual que los métodos DELETE y TRACE generalmente están prohibidos por razones de seguridad en los servidores web. Al ejecutar el método PUT obtenemos el siguiente resultado: PUT /ejemplo.html HTTP/1.0 HTTP/1.1 403 Prohibido Server: Apache-Coyote/1.1 Content-Type: text/html;charset=utf-8 Content-Length: 975 Date: Tue, 31 Jan 2012 16:35:58 GMT Connection: close

DELETE: este método permite eliminar el recurso del servidor web. Al ejecutar el método DELETE obtenemos el siguiente resultado, en este caso es el mismo del método PUT: DELETE /ejemplo.html HTTP/1.0

HTTP/1.1 403 Prohibido Server: Apache-Coyote/1.1 Content-Type: text/html;charset=utf-8 Content-Length: 975 Date: Tue, 31 Jan 2012 16:38:17 GMT Connection: close

TRACE: este método permite seguir la traza o pasos necesario para obtener un recurso determinado. Generalmente se usa con propósitos de pruebas y diagnóstico. Al ejecutar el método TRACE obtenemos el siguiente resultado: TRACE /ejemplo.html HTTP/1.0 HTTP/1.1 405 Método No Permitido Server: Apache-Coyote/1.1 Allow: POST, GET, DELETE, OPTIONS, PUT, HEAD Content-Length: 0 Date: Tue, 31 Jan 2012 16:42:12 GMT Connection: close

Código de estado del protocolo http: cuando un cliente hace una solicitud a un servidor a través del protocolo HTTP, este último le envía al primero un código de estado, el cual está inmerso en la cabecera del mensaje de respuesta, para informarle sobre el estado de la solicitud, estado que es importante para que el cliente tome las acciones respectivas. Esto puede notarse en las respuestas que el servidor envío a cada una de las solicitudes realizadas previamente a través de telnet, por ejemplo: HTTP/1.1 200 OK: el servidor informa al cliente que está usando el protocolo HTTP versión 1.1 y que el estado de la solicitud es OK, la cual está codifica con el número 200. Los códigos de estado se clasifican en: De información (1xx): indica una respuesta provisional. Algunos códigos son: 100 Continue 101 Switching Protocols 4


Unidad 1: Internet: Aplicaciones web De éxito (2xx): indica que la solicitud fue recibida, entendida y aceptada. Algunos códigos son: 200 Ok 201 Created 202 Accepted 203 Non-Authoritative Information 204 No Content 205 Reset Content 206 Partial Content De redirección (3xx): indica que es necesario una nueva acción por parte del cliente para que la solicitud tenga éxito. Algunos códigos son: 300 Multiple Choices 301 Moved Permanently 302 Moved Temporarily 303 See Other 304 Not Modified 305 Use Proxy De error del cliente (4xx): indica que el cliente ha cometido un error en la solicitud. Algunos códigos son: 400 Bad Request 401 Unauthorized 402 Payment Required 403 Forbidden 404 Not Found 405 Method Not Allowed 406 Not Acceptable 407 Proxy Authentication Required 408 Request Timeout 409 Conflict 410 Gone 411 Length Required 412 Precondition Failed 413 Request Entity Too Large 414 Request-URI Too Long 415 Unsupported Media Type

502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout 505 HTTP Version Not Supported

Tarea •

Instalar un servidor web cualquiera y realizar peticiones http sobre algún recurso en particular a través de un navegador web determinado.

En un navegador web abrir los recursos solicitados en el punto anterior mediante la opción Archivo Abrir… Analizar las diferencias.

Abrir una sesión telnet con el servidor web y realizar las mismas peticiones del punto inicial, observar los mensajes de solicitud y de respuesta respectivamente.

A través de telnet o el navegador web trate de que el servidor le responda distintos código de estado, puede requerir realizar configuración en la administración del servidor web.

Consultar que son la W3C, RFC, IETF.

De error del servidor (5xx): indica que el servidor ha cometido un error o tiene una falla. Algunos códigos son: 500 Internal Server Error 501 Not Implemented 5

estado  

documento del estado

Read more
Read more
Similar to
Popular now
Just for you