Modelo+cliente+servidor

=**MODELO CLIENTE/SERVIDOR**=

El modelo de desarrollo Cliente/Servidor se basa en la aplicación de dos conceptos simples, relacionados con la vida cotidiana. En cualquier tipo de práctica comercial, existen dos figuras relevantes, cada una de las cuales desempeña su propio papel. Una de estas figuras, El Cliente, se dedica a una determinada actividad comercial, ofrece su propio abanico de productos y desempeña, por tanto, una determinada serie de funciones. Pero esta figura no puede dar servicio a todas sus funciones sin la existencia de otra, El Servidor, quien proporciona al Cliente las materias primas necesarias para el cumplimiento de sus funciones. Además, se ha de garantizar que este flujo de peticiones y de respuestas-de-peticiones se realiza en tiempo real, es decir, que las dos figuras mencionadas han de actuar simultáneamente, de forma que la actividad de uno no se vea perjudicada por la del otro. El Cliente puede realizar peticiones al Servidor -para que le proporcione el material necesario- sin interrumpir su actividad. Si trasladamos el ejemplo anterior, al mundo informático, tenemos que ciertas aplicaciones (Clientes), necesitan de otras aplicaciones (Servidores), para poder llevar a cabo la mayor parte de sus funciones. Las aplicaciones Clientes realizan peticiones a una o varias aplicaciones Servidoras, que deben encontrarse en ejecución para atender dichas demandas. El modelo Cliente/Servidor permite diversificar el trabajo que realiza cada aplicación, de forma que los Clientes no se sobrecarguen, cosa que ocurriría si ellos mismos desempeñaran las funciones que ahora le son proporcionadas de forma directa y transparente. Por otro lado, con este modelo, todas las tareas que son comunes a distintas aplicaciones Clientes pueden ser implementadas por una única aplicación Servidora, que proporcionará los servicios requeridos por todos los clientes. Llegados a este punto, es necesario aclarar que, si bien el concepto de Cliente y Servidor más ampliamente difundido en el entorno informático alude principalmente al papel desempeñado por las máquinas, en este modelo, tanto el Cliente como el Servidor son entidades abstractas que pueden residir en la misma máquina o en máquinas diferentes. Consúltese el capítulo de Terminología y conceptos en este mismo tema para tener una definición más explícita. Recuerde que cuando hablamos del Modelo Cliente/Servidor, nos referimos siempre a un modelo de desarrollo de software.


 * Modelo Cliente/Servidor 2 capas**

Uno de los objetivos de las aplicaciones de 2 capas es separar la lógica de acceso a los datos de lo que es la interfaz de usuario y trasladarla al servidor. Habitualmente, se implementan servicios como procedimientos almacenados en el sistema gestor de datos; con esto se pretende reducir la carga de los clientes y centralizar las operaciones comunes de acceso a los datos. El Sistema Gestor de Datos también suele incorporar la funcionalidad necesaria para trabajar en entornos multiusuarios.

En este modelo intervienen únicamente dos entidades: El Cliente y El Servidor.

El papel de Cliente lo desempeña la aplicación final del usuario, que implementará todas las funciones correspondientes a la lógica de presentación, más algunas de las funciones relacionadas con la lógica del negocio, como pueden ser determinadas validaciones de datos y condiciones de recuperación.

El papel de Servidor lo desempeña el propio SGBD, sobre el cual revertirán todas las funciones correspondientes a la lógica de datos, más las restantes funciones correspondientes a la lógica del negocio, mediante la codificación de Procedimientos Almacenados.

Este es el modelo C/S más sencillo y más utilizado habitualmente. En la mayor parte de los casos, el desarrollador de una aplicación de este tipo, desarrolla únicamente la aplicación Cliente y utiliza al propio motor de BB.DD. como aplicación servidora, tal manera que no se codifica la aplicación Servidora propiamente dicha.

El mantenimiento de las aplicaciones Cliente que utilizan en este modelo exige un esfuerzo considerable, dado que las reglas del negocio que son implementadas por sí mismas, provocarán la modificación del código de la aplicación en el caso en que éstas varíen.

Como hemos dicho anteriormente, el resto de las reglas del negocio se implementan en el servidor de datos, que dispone de un recurso propio, denominado Procedimiento Almacenado.

Un Procedimiento Almacenado es una porción de código que reside en la Base de Datos, se compila una sola vez y es compartido por todos aquellos usuarios que gocen de los permisos establecidos con relación a su acceso.

El hecho de codificar ciertas reglas del negocio mediante Procedimientos Almacenados, minimiza el impacto que supone la alteración de dichos procedimientos, ya que no siempre es necesaria la recompilación del código de la aplicación.

Otra consecuencia derivada de dicho modelo es la dependencia de la aplicación final, respecto de la organización de los datos. La aplicación necesita conocer el modelo de datos para poder acceder a él.

Este modelo tiene la desventaja de no ser escalable, pues cada cliente está consumiendo, como mínimo, una conexión con el servidor de datos y, dado que éstas son limitadas, se está restringiendo el número de clientes que pueden coexistir.


 * Modelo Cliente/Servidor multicapa**

Este modelo aporta una flexibilidad adicional en la construcción de aplicaciones cuando éstas aumentan su complejidad. Influye tanto en el modelo de aplicación (lógicas de presentación, del negocio y de datos) como en la distribución de los servicios. El modelo conceptual de una aplicación establece sus definiciones, reglas y relaciones así, como su estructura. Hay partes de la lógica que residen en el ordenador cliente, normalmente las que se refieren a la interfaz de usuario, mientras que las del negocio y de datos suelen residir en los ordenadores servidores, que proporcionan los mecanismos necesarios para el trabajo en entornos multiusuarios.

En este tipo modelo se aplica íntegramente el modelo de servicios ya que, cada una de las capas se corresponde con cada una de las lógicas descritas.

Para llevar a cabo la implementación de un modelo como éste, se hace uso de los mismos recursos descritos en el modelo de dos capas pero se introduce un nuevo tipo de tecnología -denominada COM- que permite la construcción de componentes especializados.

Estos componentes pueden ser utilizados por todas las herramientas de desarrollo que lo soporten, entre las que se encuentra la gama de productos tanto de Microsoft como de Inprise.

Los componentes COM que tienen un diseño orientado a objetos constituyen una forma sencilla de utilización por parte de las aplicaciones finales; proporcionan, además, la tan anhelada transparencia, pues, al encapsular su implementación funcionan como una caja negra.

Una de las características principales de este modelo reside en la desconexión total entre la lógica de presentación y la lógica de los datos. Las conexiones que se producen, se dan entre las lógicas de presentación y del negocio, y las lógicas del negocio y la de datos.

Este modelo hace que la aplicación final sea completamente independiente del origen de los datos que procesa, tarea que pasa a ser competencia directa del componente especializado.

A pesar de lo comentado anteriormente, no es necesario que las distintas lógicas residan en máquinas diferentes; en la mayoría de los casos, es perfectamente compatible su implementación en la misma máquina, si bien este diseño no es el más habitual.


 * Infraestructura de la aplicación**

El servidor proporciona una infraestructura o funcionalidad centralizada para el trabajo en entornos multiusuarios.Dicha infraestructura constituye el software que soporta accesos concurrentes a servicios compartidos, normalmente a la lógica del negocio y a la de datos. Por ejemplo, el acceso a los procedimientos almacenados y a los datos de un servidor de datos son controlados por un Sistema de Gestión de Bases de Datos Relacionales (SGBDR). Este curso utiliza Microsoft SQL Server 7 como SGBDR. Dicho software trabaja en conjunción con el S.O. para proporcionar la funcionalidad necesaria en el acceso concurrente a los datos.

Microsoft Transaction Server (MTS) es otro software que también trabaja en conjunción con el S.O. para aportar los mecanismos necesarios para el trabajo concurrente a los servicios de la capa del negocio (que se implementan como componentes). Estudios recientes indican que entre el 30 y el 40% del presupuesto de los departamentos de informática se destinan al desarrollo de infraestructuras como éstas. MTS reduce este coste ya que no hay que desarrollarla. Más adelante haremos incapié en cómo utilizar MTS y cómo administrarlo.