Arquitectura cliente-servidor
Por el nombre da la impresión de que todo en este tema es sencillo y claro. Pero aclaremos algunos puntos para que cuando empieces a estudiar el Spring condicional, entiendas exactamente de qué estamos hablando. Digamos que escribiste un chat y tú y tu amigo comienzan a usarlo. Aquí es posible una opción sencilla: se envían mensajes directamente a través de Internet utilizando direcciones IP que conocen:
al principio puede parecer que todo funciona bien, hasta que aparece otro amigo suyo con la pregunta: “¿Por qué no ¿No me agregas a tu chat? Y cuando decide agregar un amigo en común al chat, se enfrenta a un problema arquitectónico: cada usuario del chat necesita actualizar la información sobre el número de usuarios y agregar la dirección IP del nuevo usuario. Y al enviar un mensaje, éste debe entregarse a todos los participantes. Estos son los problemas más obvios que surgirán. Muchos más problemas estarán ocultos en el propio código. Para evitarlos, es necesario utilizar un servidor que almacene toda la información sobre los usuarios y conozca sus direcciones. Sólo será necesario enviar el mensaje al servidor. Y él, a su vez, enviará el mensaje a todos los destinatarios. Cuando decida agregar un lado del servidor a su chat, comenzará a construir una arquitectura cliente-servidor.
Componentes de la arquitectura cliente-servidor.
Averigüemos qué es ella. La arquitectura cliente-servidor es un patrón de diseño, la base para la creación de aplicaciones web. Esta arquitectura consta de tres componentes:
-
Cliente: por el nombre queda claro que se trata de un usuario de un servicio (aplicación web) que se comunica con el servidor para obtener cierta información.
- El servidor es el lugar donde se encuentra su aplicación web o su parte del servidor. Posee la información necesaria sobre los usuarios o puede solicitarla. Además, cuando un cliente contacta, el servidor devuelve la información solicitada.
-
La red es simple: asegura el intercambio de información entre el cliente y el servidor.
-
cliente: contiene una interfaz gráfica para autorización, envío/recepción de mensajes;
-
Del lado del servidor: una aplicación web que está alojada en un servidor y recibe mensajes de los usuarios, los procesa y luego los envía a los destinatarios.
Cuando queremos ver información útil (o no tan útil) en Internet, abrimos un navegador, ingresamos una consulta en la barra de búsqueda y, como respuesta, recibimos información del motor de búsqueda. En esta cadena, el navegador es nuestro cliente. Envía una solicitud con información sobre lo que estamos buscando al servidor. El servidor procesa la solicitud, encuentra los resultados más relevantes, los empaqueta en un formato comprensible para el navegador (cliente) y los devuelve. En servicios tan complejos como los motores de búsqueda puede haber muchos servidores. Por ejemplo, un servidor de autorización, un servidor para buscar información, un servidor para generar una respuesta. Pero el cliente no sabe nada de esto: para él, el servidor es algo unificado. El cliente sólo conoce el punto de entrada, es decir, la dirección del servidor al que necesita enviar la solicitud. Recordemos la aplicación que vimos en la parte anterior : para monitorear la temperatura promedio del aire en todos los países en tiempo real. Su arquitectura se verá así:
Nuestra aplicación está ubicada en un servidor. Digamos que cada cinco segundos envía solicitudes a los servidores de los centros hidrometeorológicos locales, recibe de ellos información sobre la temperatura en un país en particular y almacena esta información. Cuando un cliente nos contacta con una solicitud para "ver la temperatura actual del aire en el mundo", le devolvemos la información almacenada más reciente, ordenada por país. Por lo tanto, nuestra aplicación es al mismo tiempo un servidor (cuando procesa las solicitudes de los usuarios) y un cliente (cuando recibe información de otros servidores).
| Importante: el concepto de servidor no se refiere a una computadora específica, sino a la relación entre los suscriptores de la red . |
Arquitectura de tres niveles
Este es un patrón arquitectónico que introduce un tercer actor: el almacén de datos . Cuando se utiliza este patrón, los tres niveles suelen denominarse capas:
-
La capa de cliente es la interfaz de usuario. Podría ser un navegador web al que se envían las páginas HTML o una aplicación GUI escrita con JavaFX. Lo principal es que con su ayuda el usuario puede enviar solicitudes al servidor y procesar sus respuestas.
-
La capa lógica es el servidor en el que se procesan las solicitudes/respuestas. A menudo también se le llama capa de servidor. Aquí también tienen lugar todas las operaciones lógicas: cálculos matemáticos, operaciones de datos, llamadas a otros servicios o almacenamiento de datos.
-
La capa de datos es el servidor de la base de datos: nuestro servidor accede a ella. Esta capa almacena toda la información necesaria que utiliza la aplicación durante su funcionamiento.
Beneficios de una arquitectura de tres niveles
Al utilizar dicha arquitectura, obtenemos muchas ventajas, que incluyen:-
La capacidad de crear protección contra inyecciones SQL es un ataque al servidor en el que se transmite el código SQL, y cuando se ejecuta este código, el atacante puede afectar nuestra base de datos.
-
Delimitación de datos sobre los que queremos regular el acceso de los usuarios.
-
Posibilidad de modificar datos antes de enviarlos al cliente.
-
Escalabilidad: la capacidad de expandir nuestra aplicación a varios servidores que utilizarán la misma base de datos.
-
Menos requisitos para la calidad de la conexión del usuario. Al generar una respuesta en el servidor, a menudo tomamos mucha información diferente de la base de datos, la formateamos y dejamos solo lo que el usuario necesita. De esta forma reducimos la cantidad de información que enviamos como respuesta al cliente.
GO TO FULL VERSION