Como hemos mencionado en el Capítulo 2, la arquitectura Cliente/Servidor o arquitectura de 2 niveles, identifica dos componentes que trabajan coordinadamente para dar la visión de un sistema único. Se diferencia de otras variantes de sistemas distribuidos en los siguientes conceptos:
Servicio - La relación cliente/servidor es la relación primaria entre dos procesos que se ejecutan en computadoras separadas. El servidor provee servicios y está a la escucha de reque- rimientos, mientras que el cliente solicita y consume servicios.
Recursos Compartidos - Los recursos compartidos en un sistema distribuido son administrados por los servidores que regulan el acceso a los mismos por parte de los clientes.
Protocolos Asimétricos - Hay una relación muchos a uno entre clientes y servidores. Por su parte la relación es asimétrica dado que los clientes siempre inician el diálogo y los servidores esperan los requerimientos.
Transparencia de la Ubicación - El servidor es un proceso que puede residir en la misma computadora del cliente o en otra computadora de la red, siendo transparente para el cliente dicha ubicación.
Comunicación basada en pregunta-respuesta - Clientes y servidores son procesos poco acoplados que interactúan a través de mensajes de tipo pregunta-respuesta, pudiendo ser estos sincrónicos o asincrónicos.
Escalabilidad - Los sistemas Cliente/Servidor pueden crecer moderadamente de manera horizontal (agregando clientes) o de manera vertical (potenciando al servidor).
Estas características aportan una distribución inteligente de funcionalidades a través de la red y otorgan un marco para el desarrollo de aplicaciones poco acopladas.
Por otra parte, para poder crear la visión de sistema único que requieren los sistemas distribuidos, es preciso contar con una infraestructura tecnológica que soporte cada una de las funciones.
La infraestructura red y comunicaciones ha crecido vertiginosamente en los últimos 20 años permitiendo un grado de interconexión global con alto ancho de banda y medios de transporte seguros y confiables.
El desafío de la industria informática es como agregar por encima de esta infraestructura física la arquitectura Cliente/Servidor que permitan unir las piezas del rompecabezas. Este desafío obliga a proveer:
- Protocolos de transporte que soporten el intercambio entre redes de computadores en forma confiable.
- Sistemas operativos de red que garanticen seguridad y privacidad y faciliten a los programas la tarea de encontrar los servicios que necesitan consumir
- Bases de datos para almacenar, recuperar y organizar grandes volúmenes de información, incluso multimedial.
- Sistemas GroupWare que permitan el intercambio persona a persona y conferencias grupales.
- Agentes inteligentes que ayuden a los humanos a organizar sus actividades en el ciberespacio - Plataformas de gerenciamiento de sistemas distribuidos que permitan mantener todo unido día a día.
El capítulo se organiza de la siguiente manera: en la Sección 1 se describen los roles y funciones de un componente servidor y sus variantes. En la Sección 2 se caracteriza el componente cliente y se describen algunas tecnologías asociadas. En la Sección 3 se describe la tecnología Cliente/Servidor con Java, detallando en la Sección 4 la tecnología JEE en entornos distribuidos. En la Sección 5 se presenta el patrón de diseño MVC a la luz de la tecnología Web. En la Sección 6 se arriba a algunas conclusiones.