jueves, 31 de enero de 2008

  • Una red cliente-servidor

Está formada por una computadora maestra (denominada servidor o server) y varias computadoras esclavas (o clientes). El servidor es una computadora, generalmente muy poderosa (dependiendo de la cantidad de equipos conectados y del trabajo solicitado), dedicada a atender las peticiones de los clientes, que no son más que otras máquinas que le solicitan determinados servicios. Suele ser una máquina solitaria y aislada (que puede encontrarse en una sala de servidores), es decir que no hay una persona sentada frente a ella, usándola localmente, sino que, por el contrario, todos los usuarios que la emplean están en locaciones remotas y se comunican con ella a través de la red. Los clientes comparten recursos a traves del servidor, como por ejemplo archivos de datos, impresoras, escaners, etc. Generalmente hay solo servidor, pero puede haber mas. Recordar que la computadora principal tiene atributos superiores a los clientes, es decir, puede realizar tareas como administrador de la tarea: dar de baja, bloquear, habilitar a las terminales.



La tecnología cliente/servidor es el procesamiento cooperativo de la información por medio de un conjunto de procesadores, en el cual múltiples clientes, distribuidos geográficamente, solicitan requerimientos a uno o más servidores centrales. Desde el punto de vista funcional, se puede definir la computación cliente/servidor como una arquitectura distribuida que permite a los usuarios finales obtener acceso a la información en forma transparente aun en entornos multiplataforma.

En el modelo cliente servidor, el cliente envía un mensaje solicitando un determinado servicio a un servidor, y este envía uno o varios mensajes con la respuesta. En un sistema distribuido cada máquina puede cumplir el rol de servidor para algunas tareas y el rol de cliente para otras. Además como veremos en el modelo de implementación, el concepto es utilizado en forma constante para varias funciones e implementado de distintas formas.

La idea es tratar a una computadora como un instrumento, que por sí sola pueda realizar muchas tareas, pero con la consideración de que realice aquellas que son mas adecuadas a sus características. Si esto se aplica tanto a clientes como servidores se entiende que la forma más estándar de aplicación y uso de sistemas clientes/servidores es mediante la explotación de las PC a través de interfaces gráficas de usuario; mientras que la administración de datos y su seguridad e integridad se deja a cargo de computadoras centrales tipo mainframe.

Como se desprende de las definiciones anteriores, tanto clientes como servidores son entidades independientes que operan conjuntamente a través de una red para realizar una tarea. Pero para hacer la distinción respecto de otras formas de arquitecturas o software distribuidos, se presenta una lista de características que debieran cumplir los sistemas cliente/servidor:

Se establece una relación entre procesos distintos, los cuales pueden ser ejecutados en la misma máquina o en máquinas diferentes distribuidas a lo largo de la red.
Existe una clara distinción de funciones basada en el concepto de "servicio", que se establece entre clientes y servidores.
La relación establecida puede ser de muchos a uno, en la que un servidor puede dar servicio a muchos clientes, regulando su acceso a recursos compartidos.
Los clientes corresponden a procesos activos en cuanto a que son éstos lo que hacen peticiones de servicios a los servidores. Estos últimos tienen un carácter pasivo ya que esperan las peticiones de los clientes.
No existe otra relación entre clientes y servidores que no sea la que se establece a través del intercambio de mensajes entre ambos. El mensaje es el mecanismo para la petición y entrega de solicitudes de servicio.
Las plataformas de software y hardware entre clientes y servidores son independientes. Precisamente una de las principales ventajas de esta arquitectura es la posibilidad de conectar clientes y servidores independientemente de sus plataformas.
El concepto de escalabilidad tanto horizontal como vertical es aplicable a cualquier sistema cliente/servidor. La escalabilidad horizontal permite agregar más estaciones de trabajo activas sin afectar significativamente el rendimiento. La escalabilidad vertical permite mejorar las características del servidor o agregar múltiples servidores.

Como se ha venido diciendo, cliente/servidor es un modelo basado en la idea del servicio, en el que el cliente es un proceso consumidor de servicios y el servidor es un proceso proveedor de servicios. Además esta relación está establecida en función del intercambio de mensajes que es el único elemento de acoplamiento entre ambos. De estas líneas se desprenden los tres elementos fundamentales sobre los cuales se desarrollan e implantan los sistemas cliente/servidor: el proceso cliente que es quien inicia el diálogo, el proceso servidor que pasivamente espera a que lleguen peticiones de servicio y el middleware que corresponde a la interfaz que provee la conectividad entre el cliente y el servidor para poder intercambiar mensajes.

Para entender en forma más ordenada y clara los conceptos y elementos involucrados en esta tecnología se puede aplicar una descomposición o arquitectura de niveles. Esta descomposición principalmente consiste en separar los elementos estructurales de esta tecnología en función de aspectos más funcionales de la misma:

Nivel de Presentación: Agrupa a todos los elementos asociados al componente Cliente.
Nivel de Aplicación: Agrupa a todos los elementos asociados al componente Servidor.
Nivel de comunicación: Agrupa a todos los elementos que hacen posible la comunicación entre los componentes Cliente y servidor.
Nivel de base de datos: Agrupa a todas las actividades asociadas al acceso de los datos.
Este modelo de descomposición en niveles, como se verá más adelante, permite introducir más claramente la discusión del desarrollo de aplicaciones en arquitecturas de hardware y software en planos.

Cliente

El cliente es el proceso que permite al usuario formular los requerimientos y pasarlos al servidor, se lo conoce con el término front-end. Este normalmente maneja todas las funciones relacionadas con la manipulación y despliegue de datos, por lo que están desarrollados sobre plataformas que permiten construir interfaces gráficas de usuario (GUI), además de acceder a los servicios distribuidos en cualquier parte de la red.

Las funciones que lleva a cabo el proceso cliente se resumen en los siguientes puntos:

Administrar la interfaz de usuario.

Interactuar con el usuario.
Procesar la lógica de la aplicación y hacer validaciones locales.
Generar requerimientos de bases de datos.
Recibir resultados del servidor.

Formatear resultados.

Servidor

Es el proceso encargado de atender a múltiples clientes que hacen peticiones de algún recurso administrado por él. Al proceso servidor se lo conoce con el término back-end. El servidor normalmente maneja todas las funciones relacionadas con la mayoría de las reglas del negocio y los recursos de datos.

Las funciones que lleva a cabo el proceso servidor se resumen en los siguientes puntos:

Aceptar los requerimientos de bases de datos que hacen los clientes.
Procesar requerimientos de bases de datos.
Formatear datos para trasmitirlos a los clientes.
Procesar la lógica de la aplicación y realizar validaciones a nivel de bases de dat


  • Middleware

En su definición más simple, middleware es la interfaz que provee la conectividad entre aplicaciones clientes y aplicaciones servidoras, y entre aplicaciones y bases de datos. Es una capa de software que protege a los desarrolladores de tener que manejar detalles de bajo nivel de diferentes protocolos de comunicación, sistemas operativos y arquitecturas de bases de datos. Este tipo de interfaces incluyen API’s, PRC’s, Pipes, mensajería de red y accesos a bases de datos.


Para mayor información a cerca de Modelo cliente-servidor locales visite este link: Modelo local cliente-servidor


  • Topología cliente servidor de una red Inalambrica


  • Escritorio Remoto
La tecnología de escritorio remoto permite la centralización de aquellas aplicaciones que generalmente se ejecutan en entorno de usuario (por ejemplo, procesador de textos o navegador). De esta manera, dicho entorno de usuario se transforma en meros terminales de entrada/salida. Los eventos de pulsación de teclas y movimientos de ratón se transmiten a un servidor central donde la aplicación los procesa como si se tratase de eventos locales. La imagen en pantalla de dicha aplicación es retornada al terminal cliente cada cierto tiempo. De ahí la idea de “escritorio remoto”.

El acceso remoto a una computadora formaba parte inherente de las primeras grandes computadoras, ya que poseían un número de terminales de texto unidos a éstas a través de interfaces simples, básicamente cables.

Gracias al desarrollo de las redes de telecomunicaciones, poco a poco fueron desapareciendo estos terminales de texto, siendo sustituidos por otras computadoras (generalmente más pequeñas) capaces de emular la misma funcionalidad a través de un programa, denominado emulador de terminal. Por tanto, las primeras tecnologías de acceso remoto a computadoras son los emuladores de terminal tales como telnet y ssh, popularizadas inicialmente en entornos Unix.

Cerca de la década de los noventa, las interfaces de usuario sufren una revolución abandonando la interacción textual en favor de una interacción gráfica. Debido a esta revolución surgen dos tecnologías nuevas:

* Los terminales gráficos, también denominados clientes ligeros o thin-client. Evolución de los viejos terminales de texto unidos por cables.
* Los escritorios gráficos. Dos escritorios gráficos muy populares son los creados para Apple Macintosh y MS-DOS (Microsoft Windows). Nótese que estos escritorios gráficos solamente podían ser utilizados directamente en la computadora, por tanto, aún no son escritorios remotos.

El primer entorno operativo de escritorio remoto es X-Window, originalmente desarrollado por el Massachusetts Institute of Technology (MIT) con el nombre de proyecto Athena en 1984. El objetivo inicial era poner fin al amplio abanico de terminales gráficos incompatibles de diversos fabricantes. Este objetivo resultó ampliamente logrado con su aceptación por parte de dichos fabricantes. En 1988, se creó la fundación X-Consortium (hoy conocida como X.Org) como organismo encargado del desarrollo y estandarización de X-Window. El éxito de este sistema aún perdura siendo el núcleo de todos los escritorios (tanto locales como remotos) de los sistemas Unix y Linux. También ha tenido alcance en otros sistemas operativos existiendo clientes para Windows y MacOS.

Obsérvese que X-Window hace converger los terminales gráficos con los programas emuladores de terminal, ya que puede implementarse tanto en hardware (terminales de cliente ligero) como en software (programas de escritorio remoto).
  • Ejemplo de un enlace de escritorio remoto a traves del programa VNC
EJEMPLO DE ESCRITORIO REMOTO CON MICROSOFT WINDOWS XP



EJEMPLO DE ESCRITORIO REMOTO CON UBUNTU 7.10




EJEMPLO DE CONEXION REMOTA CON UN GESTOR DE BASE DE DATOS DESDE UNA MAQUINA CLIENTE A UN SERVER USANDO UNA APLICACION






PONENCIA DE TRANSFERENCIA DE ARCHIVOS Y CONFIGUACIONES A TRAVES DEL CONTROLADOR ODBC PARA ENLAZAR UNA BASE DE DATOS USANDO EL PRINCIPIO CLIENTE SERVIDOR