materials

Arquitecturas y Tecnologías de programación en clientes web

Introducción

La World Wide Web (WWW) es un sistema de distribución de documentos de hipertexto o hipermedia interconectados y accesibles a través de Internet. Con un navegador web, un usuario visualiza sitios web compuestos de páginas web que pueden contener texto, imágenes, vídeos u otros contenidos multimedia, y navega a través de esas páginas usando hiperenlaces. Fue inventada por Tim Berners-Lee en 1989 mientras trabajaba en el CERN.

El World Wide Web Consortium (W3C) es la organización que se encarga de desarrollar estándares para la web. El W3C se dedica a desarrollar tecnologías web, como HTML, CSS y JavaScript, para garantizar la interoperabilidad y la evolución de la web.

Componentes de la WWW

La WWW se basa para su funcionamiento en:

Protocolo HTTP

El protocolo HTTP es un protocolo de comunicación que se utiliza para la transferencia de información en la web. Se basa en el modelo cliente-servidor, en el que un cliente (navegador web) envía una petición a un servidor web y este responde con la información solicitada. En cada pertición se envía al servidor:

La respuesta del servidor incluye:

El protocolo HTTP es un protocolo sin estado, lo que significa que cada petición es independiente de las anteriores. Para poder mantener el estado de una sesión se utilizan cookies o tokens de autenticación.

URL

Una URL (Uniform Resource Locator) es una cadena de caracteres que se utiliza para identificar un recurso en la web. Ejemplos de URL podrían ser http://cipfpbatoi.github.io/materials/daw/dwc/entorno.html#tests o https://www.google.com/search?q=dwec&client=firefox-b-lm. Una URL tiene la siguiente estructura:

Arquitectura cliente-servidor en la web

Es la arquitectura de red en la que un cliente (navegador web) solicita recursos a un servidor web y este responde con la información solicitada. El cliente y el servidor se comunican a través del protocolo HTTP. El cliente envía una petición al servidor y este responde con la información solicitada. La arquitectura cliente-servidor se basa en el modelo de comunicación petición-respuesta.

En el lado servidor (server side) se ejecutan las aplicaciones que generan las páginas web dinámicas. En el lado cliente (client side) se ejecutan aplicaciones que se ejecutan en el navegador web y que interactúan con el usuario.

Muchas aplicaciones web modernas son aplicaciones de una sola página (Single Page Applications o SPAs) que se ejecutan en el lado cliente y que se comunican con el servidor a través de una API (Application Programming Interface). En estas aplicacopnes el usuario está siempre en la misma página lo que minimiza la información intercambiada en el servidor y reduce el impass del cambio de página. Para obtener los datos del servidor se utiliza la tecnología AJAX (Asynchronous JavaScript and XML) que permite a javascript enviar y recibir datos del servidor asíncronamente sin tener que recargar la página.

Server-side

La lógica de la aplicación se ejecuta en el servidor. El servidor genera las páginas web dinámicas y las envía al cliente. El cliente recibe la página y no tiene que hacer nada más que mostrarla. Los elementos que encontramos en el lado cliente son el hardware (servidores y elementos de red), el software (servicios web como Apache, Nginx, etc) y lenguajes del lado servidor (PHP, Perl, C, Python, Javascript con NodeJS, etc).

Tareas comunes en el lado servidor:

Client-side

La lógica de la aplicación se ejecuta en el navegador web del cliente. El servidor envía al cliente los recursos necesarios para ejecutar la aplicación y el cliente se encarga de mostrar la interfaz de usuario y de interactuar con el usuario. Ejemplos de tecnologías client-side son HTML, CSS y JavaScript.

Los elementos que encontramos en el lado cliente son el navegador web (Firefox, Chrome, Safari, Edge, Opera, …), lenguajes de marcas (HTML, CSS) y lenguajes de preogramación, sobre todo JavaScript.

Tareas comunes en el lado cliente:

Javascript

JavaScript es un lenguaje de programación que se utiliza para crear aplicaciones web interactivas. Es un lenguaje de programación interpretado y débilmente tipado. JavaScript se utiliza para añadir interactividad a las páginas web.

Limitaciones de JavaScript

JavaScript tiene algunas limitaciones que es importante tener en cuenta al desarrollar aplicaciones web:

Frameworks y librerías de JavaScript

Según sea el proyecto a desarrollar utilizaremos sólo JavaScript o nos ayudaremos de alguna librería o framework. Algunas de las opciones que tenemos son:

Evolución de las aplicaciones web

Si tenemos tantas opciones, ¿cuál es la mejor? Dependerá de las necesidades de la aplicación. Si se trata de un sitio web o una aplicación pequeña o que se va a usar esporádicamente es mejor usar páginas web dinámicas y generadas en el lado servidor lo que mejorará el SEO y al ser pequeñas no sobrecargará de trabajo al servidor. Si se trata de una aplicación grande o que se va a usar mucho es mejor usar una SPA que mejorará la experiencia del usuario. Si se trata de una aplicación que se va a usar en dispositivos móviles es mejor usar una aplicación web progresiva o una aplicación web híbrida. En todos los casos la aplicación tendrá que ser responsive para que se adapte a cualquier dispositivo (escritorio, móvil, tablet, …).

En general, las aplicaciones web progresivas y las aplicaciones web híbridas son las más recomendadas, ya que ofrecen una experiencia de usuario similar a la de las aplicaciones nativas y son más fáciles de desarrollar y mantener que las aplicaciones nativas.

Bundlers

Respecto al despliegue de las aplicaciones, antes se subía al servidor de producción el fichero index.html y el resto de ficheros (html, js, css, …) que formaban la aplicación. Ahora lo normal es utilizar herramientas llamadas “bundlers” que:

Una vez hecho esto se sube el resultado al servidor de producción. Uno de los bundlers más utilizados es Webpack. En esta página puedes ampliar la información sobre qué es un bundler y su evolución.