martes, 19 de noviembre de 2013

ARQUITECTURA MULTICAPA

Una arquitectura multicapas es un conjunto  ordenado de subsistemas, cada uno de cuales  está constituido en términos de los que tiene por debajo y proporciona la base de la implementación de aquellos que están por encima de él.

Los objetos de cada capa suelen ser  independientes, aunque suelen haber  dependencias entre objetos de distintas capas. Existe una relación cliente /servidor entre las  capas inferiores, que son las que proporcionan  los servicios, y las capas superiores, los  usuarios de estos servicios.

Una arquitectura multicapa particiona todo el sistema en distintas unidades funcionales: cliente, presentación, lógica-de-negocio, integración, y sistema de información empresarial (EIS). Esto asegura una división clara de responsabilidades y hace que el sistema sea más mantenible y extensible. Los sistemas con tres o más capas se han probado como más escalables y flexibles que un sistema cliente-servidor, en el que no existe la capa central de lógica de negocios. La capa de presentación expone los servicios de la capa de lógica de negocio a los usuarios. Sabe cómo procesar una petición de cliente, cómo interactuar con la capa de lógica de negocio, y cómo seleccionar la siguiente vista a mostrar. La capa de la lógica  de negocio contiene los objetos y servicios de negocio de la aplicación. Recibe peticiones de la capa de presentación, procesa la lógica de negocio basada en las peticiones, y media en los accesos a los recursos de la capa EIS. Los componentes de la capa de lógica de negocio se benefician de la mayoría de los servicios a nivel de sistema como el control de seguridad, de transacciones y de recursos. La capa del cliente es donde se consumen y presentan los modelos de datos. Para una aplicación Web, la capa cliente normalmente es un navegador web. Los clientes pequeños basados en navegador no contienen lógica de presentación; se trata en la capa de presentación.



VENTAJAS Y DESVENTAJAS DE LA ARQUITECTURA MULTICAPAS

Ventajas
- Encapsulación de lógica de negocio.  Diferentes clientes de la aplicación pueden acceder al mismo servidor  intermedio. Esto permite evitar la  redundancia (y coste de mantenimiento)  de duplicar las reglas de negocio para cada aplicación cliente separada.
- Aplicaciones clientes pequeñas. Al delegar las tareas más pesadas en la capa media las aplicaciones clientes ocupan menos y consumen menos procesador y memoria, permitiendo instalarse en máquinas de bajo rendimiento. Esto trae la ventaja de que por muchos clientes que accedan a la aplicación, el motor de bases de datos sólo tiene una conexión, que va directamente al servidor de aplicaciones, evitando así problemas de concurrencia o latencia de datos entre distintas aplicaciones cliente. Estas aplicaciones clientes también pueden funcionar a través de Internet ya que su consumo de ancho de banda es mínimo, al contrario de conectar directamente con el motor de bases de datos.
- Procesar datos distribuidos. Distribuir el trabajo de una aplicación entre varias  máquinas puede mejorar la ejecución, ya  que el balanceo de carga permite reducir la carga de las máquinas que funcionan como servidor de aplicaciones.  
-Incrementar la seguridad. Podemos aislar la funcionalidad en las capas dando restricciones de seguridad. Esto proporciona unos niveles de seguridad configurables y flexibles. Las capas intermedias pueden limitar los puntos de entrada a material protegido, permitiendo controlar el control de acceso más fácilmente. Si usamos HTTP o COM+, podemos utilizar los modelos de seguridad que soportan.
-Escalabilidad: se puede aumentar la capacidad de clientes y servidores por separado. Cualquier elemento puede ser aumentado (o mejorado) en cualquier momento, o se pueden añadir nuevos nodos a la red (clientes y/o servidores).
- Centralización del control: los accesos, recursos y la integridad de los datos son controlados por el servidor de forma que  un programa cliente defectuoso o no autorizado no pueda dañar el sistema. Esta centralización también facilita la tarea de poner al día datos u otros recursos.
-  Fácil mantenimiento: al estar distribuidas las funciones y responsabilidades entre varios ordenadores independientes, es posible reemplazar, reparar, actualizar, o incluso trasladar un servidor, mientras que sus clientes no se verán afectados por ese cambio (o se afectarán mínimamente). Esta independencia de los cambios también se conoce como encapsulación.
- Existen tecnologías, suficientemente desarrolladas, diseñadas para el paradigma de C/S que aseguran la seguridad en las transacciones, la amigabilidad de la interfaz, y la facilidad de empleo.

Desventajas
- Pone más carga a la red, debido al tráfico que genera en la red. La congestión del tráfico ha sido siempre un problema en el paradigma de C/S. Cuando una gran cantidad de clientes envían peticiones simultaneas al mismo servidor, puede ser que cause muchos problemas para éste (a mayor número de clientes, más problemas para el servidor).
- El software y el hardware de un servidor son generalmente muy determinantes. Un hardware regular de un ordenador personal puede no poder servir a cierta cantidad de clientes. Normalmente se necesita software y hardware específico, sobre todo en el lado del servidor, para satisfacer el trabajo. Por supuesto, esto aumentará el coste.
- El cliente no dispone de los recursos que puedan existir en el servidor.


- Es mucho más difícil programar y probar el software que en la arquitectura de dos  niveles porque tienen que con más dispositivos para terminar la transacción del usuario.

No hay comentarios:

Publicar un comentario