El proveedor es un servidor que brinda una
serie de servicios o recursos los cuales son
consumido por el Cliente.
existen variantes donde hay clientes que se
conectan a múltiples servidores para
funcionar, tal es el caso de los navegadores,
los cuales, para consultar cada página
establece una conexión a un servidor
diferentes, pero al final es Cliente-Servidor
Como se estrucutua
es normal tener 3 artefactos, el Cliente, el Servidor y una tercera librería que contiene Objetos
comunes entre el servidor y el cliente, esta librería tiene por lo general los Objetos de Entidad, DTO,
interfaces y clases base que se usan para compartir la información, es decir, objetos que se utilizan
en las dos aplicaciones y se separan para no repetir código
Ventajas
Centralización: El servidor
fungirá como única fuente de
la verdad, lo que impide que
los clientes conserven
información desactualizada.
Seguridad: El servidor por lo general está protegido
por firewall o subredes que impiden que los
atacantes pueden acceder a la base de datos o los
recursos sin pasar por el servidor.
Fácil de instalar (cliente): El cliente es por lo general una
aplicación simple que no tiene dependencias, por lo que es muy
fácil de instalar.
Separación de
responsabilidades: La
arquitectura cliente-servidor
permite implementar la
lógica de negocio de forma
separada del cliente.
Portabilidad: Una de las
ventajas de tener dos
aplicaciones es que
podemos desarrollar
cada parte para correr
en diferentes
plataformas, por
ejemplo, el servidor
solo en Linux, mientras
que el cliente podría
ser multiplataforma.
Desventajas
Actualizaciones (clientes): Una de las complicaciones es
gestionar las actualizaciones en los clientes, pues puede
haber muchos terminales con el cliente instalado y tenemos
que asegurar que todas sean actualizadas cuando salga una
nueva versión.
Concurrencia: Una cantidad no esperada de usuarios
concurrentes puede ser un problema para el servidor, quien
tendrá que atender todas las peticiones de forma simultánea,
aunque se puede mitigar con una estrategia de escalamiento
Si el servidor se cae, todos los clientes quedarán
totalmente inoperables.
Los protocolos más utilizados para establecer
comunicación entre el cliente y el servidor
suelen ser de bajo nivel, como Sockets, HTTP,
RPC, etc.
Cliente-Servidor es uno de los estilos arquitectónicos distribuidos más
conocidos, el cual está compuesto por dos componentes, el proveedor y el
consumidor. El proveedor es un servidor que brinda una serie de servicios o
recursos los cuales son consumido por el Cliente.