TECNOLOGÍA - MICROTUTORIALES: CLIENTE / SERVIDOR |
ABSTRACT | |
En este microtutorial se expone el concepto de cliente / servidor, tanto desde el punto de vista de un esquema de computación básico como su reflejo en arquitecturas lógicas capas y de despliegue enmáquinas. Además, se hace un repaso histórico por los esquemas de computación, así como un alto en las arquitecturas orientadas a sistemas web |
TUTORIAL |
Cliente / servidor
Concepto básico de cliente / servidor Podemos enfocar el concepto de cliente/servidor desde dos puntos de vista, que, en el fondo, acaban siendo convergentes. En primer lugar, y en su aspecto más básico, podríamos decir que cliente / servidor es un esquema de computación asimétrico en que un elemento software, el cliente, invoca servicios de otro elemento software, el servidor. ![]() Se trata de un esquema asimétrico porque el cliente es siempre invocante, es quien inicia la actividad, y el servidor es reactivo, proporcionando servicios conforme se le van pidiendo. Los servicios son, típicamente, invocación de funciones o métodos de objetos que residen en el servidor. Este esquema de computación se utiliza, por ejemplo, en los protocolos RPC o HTTP. Esta idea, al final, se traduce en la arquitectura de grandes sistemas en que la lógica se reparte entre máquinas diferentes que ejecutan software diferente. Así, un caso típico podría ser aquel en que el cliente es un programa de escritorio realizado en Visual Basic y ejecutándose en un PC con Windows y los servicios que invoca son consultas a una base de datos Oracle, estando la base de datos y el software de consulta en un servidor Sun o HP ejecutando Linux u otra variante de UNIX. Cuando se mira bajo este enfoque de arquitectura, la problemática de cliente / servidor se convierte, más bien, en una decisión acerca de cómo distribuir en capas y máquinas toda la lógica de una aplicación. Este enfoque se verá más claro en el próximo punto en que se repasa la evolución histórica de los modelos y arquitecturas de computación. Modelos y arquitecturas de computación Vamos a realizar un repaso de diferentes modelos, ordenados con una cierta perspectiva histórica o cronológica. Modelo centralizado Cuando surgieron los ordenadores, éstos no eran los populares equipos actuales, sino que eran grandes máquinas alojadas en un CPD (Centro de Proceso de Datos) típicamente de una Universidad, una Administración Pública o una gran empresa. Se trataba de los mainframe y el modelo de arquitectura era el modelo centralizado tal y como se muestra en la figura: ![]() La arquitectura de máquinas era una gran máquina, el mainframe, de alta capacidad, al que se unían los familiarmente denominados ‘terminales tontos’. Estos terminales tontos se componían de un monitor y un teclado unidos mediante línea serie al mainframe. La capacidad de procesamiento de estos terminales era casi nula: hacían poco más que recoger los eventos del teclado que enviaban al mainframe y recibir del mainframe instrucciones acerca de qué caracteres a volcar en la pantalla. Hablamos, por ejemplo, de los terminales 3270 de IBM o los VT100 de Digital. Toda la inteligencia, todo el programa, toda la lógica, residían, pues, en el mainframe Programas autónomos Todo este esquema vino a cambiar con la aparición de los ordenadores personales. Los ordenadores personales eran ordenadores completos, con plena autonomía de procesamiento, aunque fuesen de capacidad mucho más modesta que los mainframe. Al ser ordenadores de pleno derecho, un primer esquema, aun existente, pasó a ser el de lo que hemos denominado programas autónomos. Se trata de programas que residen completamente en el ordenador y se ejecutan totalmente en él sin interacción ninguna con otra máquina o software. Esto es lo que se esquematiza en la siguiente figura. ![]() Un ejemplo típico, y plenamente actual, sería el de un PC ejecutando un paquete ofimático (un procesador de textos, una hoja de cálculo,…) Cliente / servidor Con la aparición del PC, aparece el concepto de cliente / servidor como arquitectura para la subdivisión en capas del software de un sistema. ¿ Qué sucedió ?. Los PCs empezaron a sustituir a los terminales tontos como mecanismo de interacción con el mainframe. Pero dado que los PCs eran ordenadores plenamente funcionales, de mucha mayor capacidad que los terminales tontos y con recursos locales como discos duros y otros periféricos, dejaron de actuar como terminales tontos y comenzaron a aportar su inteligencia y capacidad de proceso. De esta forma se inició el uso de las arquitecturas cliente / servidor que se esquematiza en la figura: ![]() Ahora, la lógica se repartía entre el ordenador personal, que hacía de cliente, y el mainframe que hacía de servidor. De hecho, ya deja de hablarse en muchos casos de mainframe para hablar, simplemente, de servidor. Típicamente, el servidor se queda con todo lo relativo al almacenamiento de datos, a procesos ‘batch’ y algún algoritmo. Mientras que el PC, el cliente, se reserva todo lo relativo a la interacción con el usuario y gran parte de la lógica del programa propiamente dicho. Como se ve, el concepto de programa se difumina, puesto que hablamos de dos lógicas interconectadas distribuidas entre el cliente y el servidor. Además, gran parte de la inteligencia se desplaza hacia el cliente. En cambio, el servidor conserva su papel de ordenador de gran capacidad, puesto que el mismo servidor da servicio a muchos clientes. Cliente / servidor multicapa Con el paso del tiempo, se ha consideró que era conveniente subdividir aún más las capas. Si en el punto anterior hablábamos de una arquitectura en dos capas, en las arquitecturas modernas se habla de arquitecturas cliente / servidor en tres capas o, incluso, multicapa. En su acepción más común, hablamos de una arquitectura en tres capas conforme a lo que se esquematiza en la figura: ![]() El software de una aplicación se subdivide en tres capas:
Cliente / servidor multicapa para aplicaciones web Las aplicaciones web modernas, suelen diseñarse y desplegarse según una arquitectura multicapa como la que se indica en la figura: ![]()
Como un último apunte, señalar que las arquitecturas más modernas y muy orientadas a interacción vía web, como son la arquitectura J2EE o .Net promueven una arquitectura multicapa como la vista en el último punto del apartado anterior. Conclusiones Cliente / servidor es tanto un esquema básico de computación asimétrica en que un elemento, el cliente, solicita servicios a otro elemento, el servidor, como toda una estrategia de distribución del software de un sistema entre diferentes capas lógicas que, generalmente, encuentran su reflejo en el despliegue en diferentes máquinas. Las arquitecturas web modernas adoptan un modelo cliente / servidor multicapa. |
LICENCIA |
![]() Esta obra está bajo una licencia de Creative Commons. |