Tema 1 Distintos modelos de arquitecturas web
Índice
- Internet: Conceptos básicos
- Aplicaciones web
- Modelos de arquitectura
- Modelo cliente/servidor
- Protocolo HTTP
1. Internet: Conceptos básicos
Internet es un sistema global de redes de computadoras interconectadas entre si que utilizan la familia de protocolos TCP/IP para compartir recursos e intercambiar información entre miles de millones de dispositivos en todo el mundo. Se trata de una red de redes descentralizada que, gracias a dicha familia de protocolos, funciona como una única red a pesar de de la variedad de redes físicas que la componen.
Tiene su orígen en la red ARPANET (Advanced Research Projects Agency Network), creada por encargo del departamento de defensa de los EEUU en 1969, con la finalidad de comunicar organismos oficiales, de manera que, si hubiese una catástrofe que destruyese alguno de ellos, el resto de la red continuase funcionando.
Algunos de los servicios de Internet aún ampliamente utilizados hoy en día son:
- Correo electrónico. Servicio de correspondencia que permite enviar o recibir mensajes textuales y otros documentos desde un emisor a uno o varios destinatarios.
- FTP (File Transfer Protocol). Servicio que permite la transferencia de ficheros entre máquinas.
- WWW (World Wide Web). Este servicio es un sistema de documentos de hipertexto (texto enriquecido con enlaces interconectados entre sí). Es la herramienta más utilizada de Internet y permite a los usuarios acceder, mediante un navegador, a páginas web que pueden contener texto, imágenes, vídeos y otro contenido multimedia y navegar entre ellos mediante hiperenlaces.
La Web
La World Wide Web fue creada en 1989 por Tim Berners-Lee mientras trabajaba en el CERN (Organización Europea para la Investigación Nuclear). Consiste en un sistema de organizar la información mediante páginas conectadas a través de hiperenlaces, que utiliza para su transferencia Internet como medio físico y el protocolo HTTP (Hypertext Transfer Protocol), para que los navegadores web puedan hacer las peticiones de dichas páginas a los servidores web y recibir las respuestas sobre las mismas. Se define también el lenguaje HTML (Hypertext Markup Language) para la edición de páginas web.
2. Aplicaciones web
En la ingeniería de software se denomina aplicación web a aquella herramienta que los usuarios pueden emplear accediendo a un servidor web a través de Internet o de una herramienta intranet mediante un navegador.
Las aplicaciones web son populares debido a lo práctico que resulta el navegador web como cliente ligero, a la independencia del sistema operativo, así como a la facilidad para actualizar y mantener aplicaciones web sin distribuir e instalar software a miles de usuarios potenciales.
Existen aplicaciones como wikis, weblogs, tiendas en línea, etc, que son ejemplos bastante conocidos de aplicaciones web.
Ventajas
- Ahorro de tiempo: se pueden realizar tareas simples sin necesidad de descargar ni instalar ningún programa en nuestro ordenador.
- No hay problemas de compatibilidad: ya que simplemente se necesita tener un navegador web actualizado para poder utilizarlas.
- No ocupa espacio en nuestro disco duro: ya que no se necesita guardar ni el propio programa ni los datos que se necesitan para operar con el.
- Actualizaciones inmediatas: como el software lo gestiona el propio desarrollador de software, cuando nos conectamos a la aplicación siempre estamos usando la última versión que se lanzó.
- Consumo de recursos bajo: dado que todo (o gran parte) de la aplicación no se encuentra en nuestro ordenador, muchas de las tareas que realiza el software no consumen recursos nuestros porque se realizan desde otra computadora, a la cual estamos conectados vía Internet.
- Multiplataforma: se pueden usar desde cualquier sistema operativo porque solamente es necesario tener un navegador para usarlas.
- Portables: es independiente del ordenador donde se utilice (Pc sobremesa, portátil) porque se accede a través de una página web, por lo que sólo es necesario disponer de acceso a Internet.
- Disponibilidad alta: porque el servicio, aunque en ocasiones puede verse interrumpido, se ofrece desde múltiples localizaciones para asegurar la continuidad del mismo.
- Los virus que puedan afectar a nuestro ordenador no dañan los datos, porque estos están almacenados en el servidor de la aplicación.
- Colaboración: gracias a que el acceso al servicio se realiza desde una única ubicación, es fácil el acceso y la compartición de datos por parte de varios usuarios. Tiene mucho sentido, por ejemplo, en aplicaciones en línea de calendarios o oficina.
Inconvenientes
- Habitualmente ofrecen menos funcionalidad que las aplicaciones de escritorio, debido a que las funcionalidades que se pueden realizar desde un navegador pueden ser más limitadas que las que se pueden realizar desde el sistema operativo.
- La disponibilidad depende de un tercero, el proveedor de la conexión a Internet o el que prevee el enlace entre el servidor de la aplicación y el cliente. Así que la disponibilidad del servicio está supeditada al proveedor.
3. Modelos de arquitectura
El W3C (World Wide Web Consortium) define cuatro modelos de arquitectura para las aplicaciones web: modelo cliente/servidor, modelo orientado a mensajes, modelo orientado a sevicios y modelo orientado a recursos. En este apartado se aplicarán todos ellos pero, puesto que el modelo cliente/servidor es la arquitectura más extendida hoy en día en las aplicaciones web, será en la que nos centremos a partir de ahora.
En esta arquitectura, por un lado está el cliente, que será el navegador web, y por otro lado está el servidor, que es el servidor web. La lógica de la aplicación es compartida por ambos.
Modelo orientado a mensajes
El Modelo Orientado a Mensajes (MOM) se centra en difinir los mensajes, su estructura, la forma de transportarlos, etc., sin importar el significado semántico de cada mensaje o su relación con otros mensajes.
Modelo orientado a servicios
El Modelo Orientado a Servicios (SOM) se ocupa de los aspectos de la arquitectura relacionados con el servicio y la acción.
Su objetivo principal es el de explicar las relaciones entre un agente y los servicios qeu ofrece y solicita. El SOM se basa en el MOM, pero centrado en la acción, en lugar del mensaje.
Modelo orientado a recursos
El Modelo Orientado a Recursos (ROM) se centra en los aspectos de la arquitectura relacionados con los recursos y las características principales (propietario, políticas asociadas, etc.), independientemente del papel que el recurso juegue en el contexto de los servicios web.
Modelo de políticas
Este modelo se basa en definir los comportamientos de los agentes que emplean los servicios, definiendo cómo accederán a los recursos.
4. Modelo cliente/servidor
Estructura
Una aplicación web que emplea el modelo cliente/servidor está estructurada habitualmente como una aplicación en tres capas:
- Capa de presentación. Es la que ve el usuario, presenta el sistema al usuario, le comunica la información y captura la información del usuario. En una aplicación web reside en el cliente y las tecnologías empleadas habitualmente son HTML, CSS y JavaScript, entre otras.
- Capa de negocio. Es donde residen los programas que se ejecutan, se reciben las peticiones del usuario y se envían las respuestas tras el proceso. En una aplicación web reside en el servidor y algunas de las tecnologías empleadas son PHP, Java Servlets o ASP, ASP.NET, CGI, ColdFusion, embPerl, Python o Ruby on Rails.
- Capa de datos. Es donde residen los datos y es la encargada de acceder a los mismos. En una aplicación web reside en el servidor, que puede ser físicamente el mismo que el que se ocupa de la capa de negocio o otro. Algunas de las tecnologías posibles para implementar esa capa son PostgreSQL, MySQL, Oracle DBMS, MongoDB ou Cassandra.
En la imagen anterior puede verse claramente cual es el funcionamiento de una arquitectura web de 3 capas:
- El usuario interactúa con el navegador web que es el que realiza la solicitud de páginas, que pueden ser páginas almacenadas (estáticas) o creadas dinámicamente, con información a los servidores web.
- El servidor web localiza la página y se la envía al servidor de aplicaciones para ejecutar las instrucciones necesarias.
- El servidor de aplicaciones busca las instrucciones en la página y las ejecuta.
- El servidor de aplicaciones necesitará datos para poder ejecutar las sentencias, con lo cual envía la consulta al controlador de la base de datos.
- El controlador ejecuta la consulta en la base de datos.
- Una vez resuelta la consulta, se envía al controlador el conjunto de registros resultantes de la consulta.
- El controlador pasa el conjunto de registros al servidor de aplicaciones.
- El servidor de aplicaciones inserta los datos en una página. Una vez esté completa, se la pasa al servidor web.
- El servidor web envía la página finalizada al navegador solicitante.
Software que interviene
El tipo de software que rodea el uso y funcionamiento de una aplicación web en el modelo cliente/servidor es el siguiente:
- Navegador web: es el software, aplicación o programa que permite el acceso a la web. La funcionalidad básica de un navegador es permitir la visualización de documentos, comunmente denominados páginas web. Se corresponde con la capa de presentación de una aplicación web. Con el navegador interactúan los usuarios para poder hacer uno de una aplicación web.
- Servidor web: es un programa que procesa una aplicación del lado del servidor. El servidor y el cliente se comunican generalmente utilizando el protocolo HTTP para las comunicaciones.
- Lenguajes de script: son un tipo de lenguajes de programación que no precisan ser compilados, sinó que generalmente son interpretados, de forma que sus sentencias se ejecutan directamente, sin una compilación previa. El conjunto de instrucciones se denomina script, que es lo que suele acompañar a un documento HTML o estar contenido en su interior. Las instrucciones del script se ejecutan antes de enviar el documento al navegador, cuando se carga el documento o cuando se produce alguna circunstancia, es decir, cuando ocurre un evento.
- Gestor de base de datos: es un conjunto de programas que permiten el almacenamiento, modificación y extracción de la información en una base de datos, además de proporcionar herramientas para añadir, borrar, modificar y analizar los datos.
Protocolo HTTP
Un servidor web opera mediante el protocolo HTTP, de la capa de aplicación del Modelo OSI. HTTP es un protocolo simple, textual y sin estado para el intercambio de datos tipificados (objetos) entre un cliente y un servidor web basado en comandos y respuestas.
Cada servidor tiene un proceso que permanece a la escucha en un puerto TCP (por defecto, el 80), esperando conexiones entrantes de los clientes. Cuando se establece la conexión, los navegadores solicitan información al servidor enviándoles una URL. El servidor responde con un mensaje que contiene el estado de la operación y su posible resultado. Todas las operaciones pueden captar un objeto o recurso sobre el que actúan. Después de la transmisión se libera la conexión TCP.
Mensajes de petición
Los mensajes de petición están formados por tres partes:
- Línea inicial de petición: método, URL, versión.
- Línea de cabecera.
- Cuerpo del mensaje (opcional). Parámetros o ficheros a enviar al servidor.
Los posibles métodos de petición son GET, POST, OPTIONS, HEAD, PUT, DELETE, TRACE, CONNECT y PATH.
Petición GET
Se emplea para obtener cualquier tipo de información del servidor. Las peticiones GET no tienen cuerpo de mensaje. Permite enviar parámetros al servidor en la URI (URL) (conocidos como Query String). Por ejemplo:
http://sitiodeprueba.com/nuevousuarioGET.php?nombre=Emilio&apellido=Dapena
En esta URL podemos distinguir varias partes:
http://sitiodeprueba.com/nuevousuarioGET.php es la dirección web donde se encuentra el script que procesará los datos.
- El símbolo
? indica donde empiezan los parámetros que se reciben desde el formulario que envió los datos a la página.
- Las parejas
dato1=valor1, dato2=valor2, etc. reflejan el nombre y el valor de los campos enviados por el formulario.
El tamaño de la información enviada estará limitada. No se puede emplear para enviar archivos o realizar otras operaciones que requieran enviar una gran cantidad de datos al servidor.
Petición POST
Se emplea para solicitar al servidor que acepte información que se envía adjunta en una petición. Las peticiones POST se envían en el cuerpo del mensaje. Los parámetros, por lo tanto, no son visibles en la URL.
Mensajes de respuesta
Los mensajes de petición están formados por tres partes:
- Línea inicial de respuesta (línea de estado): Versión HTTP, código de estado y texto explicativo.
- Línea(s) de cabecera
- Cuerpo del mensaje (opcional). Determinado por el tipo de recurso solicitado.
Códigos de estado
Los códigos de estado son códigos que envían los servidores en las respuestas HTTP. Informan al cliente de cómo fue procesada la petición. Consisten en un código de 3 dígitos y se clasifican en función del primero, van acompañados de un texto explicativo.
A continuación exponemos los principales grupos de códigos de estado con algunos de los ejemplos más comunes:
- 100 - 199 (Informativo, Informational).
- 200 - 299 (Éxito, Successful)
- 200 - OK (Respuesta estándar para peticiones correctas).
- 300 - 399 (Redirección, Redirection).
- 304 - Not Modified (indica que la petición a la URL no fue modificada desde que fue requerida por última vez).
- 400 - 499 (Errores del cliente, Client Error).
- 404 - Not found (No encontrado).
- 403 - Forbidden (La solicitud fue legal, pero el servidor rechaza responderla porque el cliente no tiene privilegios para hacerla).
- 406 - Not Acceptable (El servidor no es capáz de devolver los datos en ninguno de los formatos aceptados por el cliente).
- 500 - 599 (Errores en el servidor, Server Error).
- 503 - Service Unavailable (El servidor no puede responder a la petición del navegador porque está congestionado o realizando tareas de mantenimiento).
Para el listado de todos los códigos de estado de las respuestas HTTP se puede consultar el RFC-1945 tools.ietf.org en su apartado 9.
Tipos MIME
Inicialmente las páginas web contenían texto y enlaces (hipertexto), por los que HTTP era un protocolo que unicamente enviaba texto. Ahora, HTTP permite enviar todo tipo de documentos, para lo que emplea los tipos MIME (tipos de medios de Internet). Los tipos MIME son entonces unas especificaiones definidas por la IANA para dar formato a mensajes no ASCII.
Ejemplos de tipos MIME habituales son text/html o video/mpeg.
Se pueden consultar todos los tipos MIME en la especificación oficial de la IANA
Fuentes:
- Apuntes Despliegue de Aplicaciones Web IES Chan do Monte