domingo, 17 de noviembre de 2013

Programación en 3 Capas

La arquitectura de 3 o N capas no es más que la evolución lógica de la programación Cliente/Servidor, la cual a su vez fue una evolución de un modelo monocapa, en la cual inicialmente se embebía dentro del programa ejecutable los datos junto con el proceso.
La arquitectura Cliente/Servidor es el primer intento exitoso de organización del desarrollo del código, separando de manera clara los datos de la aplicación.
La idea general de las capas es proporcionar un alcance bien definido en las tareas que ejecuta cada una de ellas,  logrando con esto independencia entre los diferentes niveles de ejecución.
En otras palabras,  a la capa cliente no le debe interesar aspectos técnicos de la base de datos, como el tipo de archivos en que se guardan los datos,  la concurrencia, como se leen los datos físicamente, etc.  que son parte de la capa de base de datos.
 
Si en un momento determinado se cambia el motor de la base de datos, no debería afectar la ejecución de la aplicación, ya que la capa de cliente, no conoce y no accede a los datos físicamente, solo puede ver (alcance) algunas funciones de conexión que no deben cambiar si se cambia el motor de base de datos.
Las aplicaciones Multicapa y en nuestro caso de 3-Capas se refieren a aquellas donde el software está diseñado de tal forma que existen al menos tres separaciones claras, la capa de presentación, la capa de lógica del negocio y la capa de bases de datos.

 

CAPA
DESCRIPCIÓN
Presentación
La capa de presentación hace referencia a la interface con el usuario que puede ser visual en ambientes gráficos como los formularios (Forms), en aplicaciones tipo consola en comandos de texto e incluso en dispositivos de interfaz humana como un control remoto,  comandos de voz, etc.
Lógica de Negocio
La capa de lógica de negocio se refiere a los procedimientos que se realizan en la aplicación, como los cálculos de intereses,  creación de una factura, decidir a qué información tendrá acceso un usuario, entre otros.
Bases de Datos
En esta capa se almacenan los datos,  se encarga de recibir las peticiones desde la capa de lógica y retornan los datos correspondientes.

 

Cada capa es susceptible de ser dividida a su vez en más capas, así por ejemplo la capa de base de datos puede dividirse en la capa de persistencia y la capa de datos, dando lugar a más capas, obteniendo aplicaciones MultiCapas - N-Tiers


Cuando hablamos de aplicaciones multicapa en necesario tener cuidado en no confundir MultiCapa con MultiNivel, dos conceptos diferentes que en nuestro medio se utilizan indiscriminadamente, La arquitectura de programación en 3 capas se refiere a la separación clara de las funcionalidades dentro de la aplicación, es decir la separación lógica de la aplicación, de tal forma que una capa solo sólo tenga acceso a la siguiente.
Un ejemplo de esto se evidencia en que la capa de presentación la cual solo puede acceder a funciones (CRUD) y no directamente a la base de datos.  así mismo los procedimientos del CRUD tiene acceso a la base de datos pero no a la capa de presentación, de esta manera si se cambia el motor de la base de datos, solo bastará cambiar las funciones de conexión que utiliza el CRUD pero no las funciones directamente.
La gran ventaja de esta separación radica en la facilidad del mantenimiento del software, dividir las tareas de mantenimiento, la asignación de cada capa a un líder especifico para su control y dado que cada capa tiene una API especifica, es posible desarrollar una capa con solo conocer el API a la cual tiene acceso, permitiendo desarrollos y mejoras simultáneamente.
Aunque las aplicaciones se diseñen en arquitectura de 3 capas, la implementación puede estar en uno, dos o tres niveles, Si en un solo computador se ejecuta la Presentación, la lógica y la base de datos, se llamaría una aplicación de un Nivel.
Si por el contrario en un computador se ejecuta la capa de presentación y de lógica y en el segundo computador se ejecutan los datos, se denominaría de dos niveles, y finalmente si en cada computador se ejecuta solo una capa, se denominaría de 3 Niveles.

¿Cuándo utilizar varios niveles?

Las aplicaciones multinivel no reemplazan las otras arquitecturas, simplemente cada una tiene un nicho especifico  y es importante definir cuando es necesario utilizar una u otra arquitectura.

CRITERIO DEL NÚMERO DE USUARIOS
Nivel
No. Usuarios
Descripción
Dificultad de
implementación
1 Nivel
1 usuario
Las aplicaciones que utilizará un solo usuario requieren un solo nivel, los dos caso más comunes hoy en día corresponden a las aplicaciones que corren desde un CD o DVD directamente, como una enciclopedia.
 
Las aplicaciones que corren en dispositivos móviles que utilizan almacenamiento local, como agendas, notas, etc.  ya que solamente un usuario tendrá acceso a los datos y no requieren red para su funcionamiento.
Las aplicaciones desarrolladas en un nivel son usualmente sencillas de implementar, ya que no deben considerar aspectos como concurrencia, ni infraestructura adicional para su funcionamiento, además existen conexiones directas a las bases de datos o almacenamientos de datos que no exigen complejas configuraciones.
2 Niveles
1-100 Usuarios
Las aplicaciones de dos niveles así estén construidas en 3 capas se corresponden a aplicaciones Cliente/Servidor, las cuales son excelentes para un numero moderado de usuarios y dada su arquitectura para redes locales LAN.
Las aplicaciones de 2 niveles requieren redes bien estructuradas, para lo cual podrían necesitar personal especializado para la administración de la red.
N-Niveles
50- > 2000 Usuarios
Cuando el número de usuarios va en aumento, las ventajas como la escalabilidad que ofrecen los 3 niveles es el ideal
Las aplicaciones multinivel son complejas en su implementación, requieren personal altamente especializado y grandes recursos de hardware para soportar de manera adecuada la gran cantidad de usuarios.


CRITERIO DE ACUERDO A LA CONECTIVIDAD
Nivel
RED
Descripción
1 Nivel
SIN RED
Es ideal para aplicaciones que no requieren conexión a redes para su funcionamiento.
2 Niveles
RED LOCAL LAN
Las aplicaciones de 2 niveles son ideales para trabajar en redes locales, las cuales cuentan con conectividad mínima de 100mbps.
N-Niveles
RED WAN
INTERNET
Para uso en redes como Internet que tienen limitaciones en la velocidad de transferencias y en la estabilidad de conexión.

 
CRITERIO DE ACUERDO A LAS PLATAFORMAS
Nivel
HARDWARE
Descripción
1 Nivel
1 solo equipo
Cuando la aplicación correrá en un solo equipo, como los dispositivos móviles como celulares inteligentes o tabletas o en un solo computador de escritorio.
2 Niveles
Varios equipos homogéneos
Para trabajar en redes LAN donde las plataformas de hardware son homogéneas, Ej. todos los equipos son Windows.
 
Ya que la lógica de negocio estaría dispersa en cada plataforma, es difícil hacer mantenimiento a esta capa de forma eficiente.
N-Niveles
Plataformas Heterogéneas
Cuando se van a conectar gran variedad de dispositivos, como celulares, tabletas, equipos de escritorio, etc. 
 
Dado que la lógica del negocio está centralizada es más fácil su administración y se ve reflejada en todo los dispositivos, así por ejemplo si se cambia la forma de cálculo de la comisión de ventas en la capa de lógica de negocio, este cambio se verá reflejado en todos los dispositivos automáticamente.


¿Ventajas de la separación en N-niveles?

Existen grandes ventajas en la separación por capas y por niveles,  de ahora en adelante hablaremos de aplicaciones en 3 capas como una aplicación de 3 capas y 3 niveles.
Enumeraremos algunas ventajas de este modelo, sin embargo en un próximo articulo detallaremos mejor el concepto y el uso de los middleware.

1.       Escalabilidad: Con la arquitectura de 3 capas y 3 Niveles es posible crecer en el número de usuarios sin traumatismos, ya que en cualquier momento es posible instalar un segundo servidor de lógica o un tercero y así crecer el número de usuarios sin afectar el rendimiento.
2.       Confiabilidad: El hecho de permitir el uso de varios servidores de lógica de negocio, permite que el sistema pueda tolerar la caída de uno o varios de ellos y la aplicación utilizará el siguiente servidor que esté activo.
3.       Balance de Carga:  Con este esquema es posible definir cual servidor ejecutará la tarea, repartiendo la carga de trabajo entre los diferentes servidores disponibles.
4.       Centralización de la lógica: Dado que la lógica de negocio está centralizada en el servidor, es posible hacer mantenimiento centralizado afectando a todos los clientes de forma inmediata.
5.       Seguridad: Al estar centralizado y en forma remota es posible implementar mejor la seguridad tanto en la ejecución de los accesos de usuarios.

 

Mg. Gustavo Enríquez
http://www.hyper-soft.co

No hay comentarios:

Publicar un comentario