Modelo+Cliente-Servidor

=INTRODUCCIÓN= El esquema Cliente-Servidor consiste en un modelo en el que dos o más procesos deben colaborar para el progreso mutuo. De estos procesos, para simplificar la explicación, se asume la existencia de unicamente de dos, uno suele realizar las tareas má́s pesadas, al cual se denomina servidor, y otro posee la interacció́n con el usuario, que será el cliente. Este modelo puede variar de modo que el cliente puede poseer cierta capacidad de có́mputo, el servidor una interfaz gráfica, etc. Se pueden diferenciar tres componentes esenciales:
 * 1) El Cliente.
 * 2) El Servidor.
 * 3) La infraestructura de comunicaciones.

=COMPONENTES=

EL CLIENTE
El proceso cliente es el que generalmente realiza la interacción con el usuario, la mayoríá de veces en forma gráfica. Posee procesos auxiliares que se encargan del establecimiento de conexión y de las comunicaciones con el servidor, así como tareas de sincronizació́n.

EL SERVIDOR
El proceso servidor, como su nombre indica, proporciona un servicio al cliente, del cual devuelve los resultados. Puede poseer, aunque no siempre, procesos auxiliares que se encargan de las tareas de comunicación con el cliente. Dado que es el que proporciona los resultados al cliente, la carga computacional asociada a éstos es mayor que la de los clientes.

LAS COMUNICACIONES
Para que los clientes y los servidores puedan comunicarse se requiere una infraestructura de comunicaciones, la cual proporciona los mecanismos básicos de direccionamiento y transporte. Las comunicaciones se pueden realizar por medios tanto orientados a la conexión (TCP) como no orientados a la conexión (UDP). La red debe tener caracteristicas adecuadas de rendimiento, confiabilidad, transparencia y administració́n.

=VENTAJAS= Ventajas que ofrece el esquema Cliente-Servidor:
 * 1) La gestión de recursos se centraliza en los procesos servidores, por lo que las aplicaciones son mucho más sencillas, modulares y fá́cilmente mantenidas. En caso contrario, sería necesaria una gestión de recursos a nivel global del sistema, que complicaría la lógica de la aplicación y que requeriría un mayor número de rondas de mensajes para evitar condiciones de carrera, como por ejemplo, que varios procesos intentaran acceder a un mismo recurso en forma de escritura al mismo tiempo.
 * 2) Se pueden utilizar componentes, tanto de hardware como de software, de varios fabricantes, lo cual contribuye considerablemente a la reducción de costos y favorece la flexibilidad en la implantació́n y actualización de soluciones.
 * 3) Facilita la integración entre sistemas diferentes y compartir información.
 * 4) Si se utilizan interfaces gráficas para interactuar con el usuario, no siempre es necesario transmitir información gráfica por la red dado que ésta puede residir en el cliente, lo cual permite aprovechar mejor el ancho de banda de la red.
 * 5) Es más rápido el mantenimiento y el desarrollo de aplicaciones pues se pueden emplear las herramientas existentes (APIs de Java, RPCs, etc. ).
 * 6) La estructura modular facilita la integración de nuevas tecnologías y favorece la escalabilidad de las soluciones.

=INCONVENIENTES= Inconvenientes que ofrece el esquema Cliente-Servidor:
 * 1) Deben existir mecanismos independientes de la plataforma y generales para la interacción entre cliente y servidor (RPC, ROI, etc.).
 * 2) La seguridad en el modelo que nos ocupa es más que recomendable, en especial para evitar usos maliciosos del sistema, bien voluntarios, bien involuntarios. La encriptación de los mensajes es un paso en esta dirección.
 * 3) Pueden presentarse problemas inherentes a la red de comunicaciones tales como congestión en la red, fallos de nodos, bucles en el encaminamiento, etc.