Programación en capas primero a entender que es?
¿Cuantas capas existen para programar?
En la actualidad Se han propuesto diversas técnicas de programación, cuyo objetivo es mejorar tanto el proceso de creación de software como su mantenimiento. Entre ellas se pueden mencionar las programaciones lineal, estructurada, modular y orientada a objetos. Pero la programación en capas es el mejor método para la facilidad de el programador por este motivo existen n-capas pero El diseño más en boga actualmente es el diseño en tres niveles (o en tres capas).
Programación en 3 capas o Three-Tier: es un estilo de programación en la que el objetivo primordial es la separación de la lógica de negocios de la lógica de diseño, un ejemplo básico de esto es separar la capa de datos de la capa de presentación al usuario. La programación en capas es la técnica más efectiva en aplicaciones empresariales, debido a la fácil administración que implica el dividir los componentes de la aplicación en capas y la rapidez que esto implica en programas orientados a Cliente-Servidor. Esta arquitectura consiste en dividir los componentes primarios de la aplicación, programarlos por separado y después unirlos en tiempo de ejecución
Definición: Una capa representa un elemento del sistema que procesa o trata la información.
Características: Una capa puede residir (se ejecuta) en una maquina diferente o en diferentes espacios o entornos de procesos dentro de la misma maquina.
Diseñando Aplicaciones Distribuidas.
El diseño de aplicaciones modernas involucra la división de una aplicación en múltiples capas; la interface de usuario (IU), la capa media de objetos de negocios, y la capa de acceso a datos. Si se programa en 4 Capas, se le agrega una capa la cual es la de “Modelo” en la cual va una clase por cada tabla que haya en la base de datos, ya que va a tener los atributos de cada tabla las clases (Producto, Persona, etc).
Puede ser útil identificar los tipos de procesamiento que podemos esperar que una aplicación realice. Muchas aplicaciones pueden, al menos, hacer lo siguiente:
- Cálculos u otros procesos de negocios.
- Ejecución de reglas de negocios.
- Validación de datos relacionados al negocio.
- Manipulación de datos.
- Ejecución de las reglas de datos relacional.
- Interactuar con aplicaciones externas o servicios.
- Interactuar con otros usuarios.
Nosotros podemos tomar estos tipos de servicios y generalizarlos dentro de los tres grupos o capas que a continuación se resumen:
· Interface de usuario (Capa de Presentación)
- Interactuar con otros usuarios.
- Interactuar con aplicaciones externas o servicios.
· Procesos de negocios (Capa de Negocios)
- Cálculos u otros procesos de negocios.
- Ejecución de reglas de negocios.
- Validación de datos relacionados al negocio.
· Procesos de datos (Capa de Servicios de Datos).
- Manipulación de datos.
- Ejecución de las reglas de datos relacional.
La división de estos procesos de aplicaciones y su distribución entre diferentes procesos cliente/servidor es conocido como Procesamiento Distribuido. Generalizando estos procesos dentro de estas tres categorías o capas es una distribución lógica y no refleja necesariamente alguna opción de diseño físico sobre computadoras, terminales u otros equipos. Usted puede desarrollar una aplicación cliente/servidor distribuida basada sobre estas tres capas de Presentación, Lógica de Negocios y Servicios de Datos y tener la aplicación entera corriendo sobre una simple computadora. Alternativamente, usted puede esparcir estas tres capas a través de un gran número de diferentes computadoras sobre una red. De cualquier forma usted ha desarrollado una aplicación cliente/servidor de tres capas.
Capas o niveles
1 Capa de presentación (IU):
La capa de Presentación provee su aplicación con una interface de usuario (IU). Aquí es donde su aplicación presenta información a los usuarios y acepta entradas o respuestas del usuario para usar su programa (Generalmente son formularios WindowsForm, o de tipo consola, etc). Idealmente, la IU no desarrolla ningún procesamiento de negocios o reglas de validación de negocios. Por el contrario, la IU debería relegar sobre la capa de negocios para manipular estos asuntos. Aunque se puede poner validaciones sobre la IU, como validar datos de entrada que no sean correctos, como por ejemplo, si pedís que ingrese un dato numérico e ingresa un dato string (cadena), esa validación la haces en la IU, las validaciones de Negocio, como que el numero sea entre $50 a $100 va en la capa de Negocio.
Comprende las responsabilidades de lógica de presentación:
- Navegabilidad del sistema
- Validación de datos de entrada
- Formateo de los datos de salida
- Internacionalización
- Reenderezado de presentación
Funciones de la capa de Presentación:
- Recoger la información del Usuario.
- Enviar esta información a la Capa de Negocios.
- Recoger resultados de la Capa de Negocios
- Presentar los resultados al usuario.
2 Capa de negocio:
Toda aplicación tiene código para implementar reglas de negocios, procesos relacionados a los datos o cálculos y otras actividades relativas a los negocios. La lógica de negocios debe mantenerse separada de la capa de presentación y de los servicios de datos.
Deben encapsular la lógica de negocios en un conjunto de objetos o componentes que no contienen presentación o código de servicios de datos. Teniendo separada lógicamente su lógica de negocios de ambas, la capa de presentación y servicios de datos, ganará en flexibilidad en término de donde usted puede almacenar físicamente la lógica de negocios.
Los objetos de negocios son diseñados para reflejar o representar sus negocios. Ellos se convierten en un modelo de sus entidades de negocios e interrelaciones. Esto incluye tanto objetos físicos como conceptos abstractos. Estos son algunos ejemplos de objetos del mundo real: un empleado, un cliente, un producto, una orden de compra.
Puede crear objetos de negocios de una orden conteniendo el código necesario para administrarse a si mismo, así usted nunca necesitará replicar código para crear ordenes, usted solo usará el objeto. Similarmente, un objeto cliente contiene y administra sus propios datos. Un buen diseño de un objeto cliente contiene todos los datos y rutinas necesitadas para representarlo a través del negocio completo, y puede ser usado a través de toda la aplicación de ese negocio.
No toda la lógica de negocio es la misma. Alguna lógica de negocio es un proceso intensivo de datos, requiriendo un eficiente y rápido acceso a la base de datos. Otras no requieren un frecuente acceso a los datos, pero es de uso frecuente por una interface de usuario robusta para la validación en la entrada de campos u otras interacciones de usuarios. Si nosotros necesitamos una validación al nivel de pantallas y quizás cálculos en tiempos real u otra lógica de negocios, pudiéramos considerar este tipo de lógica de negocios para ser parte de la IU, ya que en su mayor parte es usada por la interface de usuario.
Una alternativa de solución es dividir la capa de lógica de negocios en dos:
- Objetos de negocios de la IU.
- Objetos de negocios de datos.
Un ejemplo del objeto Empleado de la capa objetos de negocios de la IU proveerá propiedades y métodos para usar por el diseñador de la interface de usuario. Ejemplo de propiedades y métodos pudieran ser: IDEmpleado, Nombre, Dirección, etc., y como métodos crear una de compra, etc. El objeto Empleado de la capa de objetos de negocios de datos será responsable de los mecanismos de persistencias, interactuar con la base de datos. Los objetos de esta capa son considerados sin estado, solo poseen métodos.
Comprende las responsabilidades de lógica de negocio (o dominio) del sistema.
- Resultado del análisis funcional:
- Conjunto de reglas de negocio que abstraen el mundo real.
- La capa de negocio ha de ser independiente de la capa de presentación y viceversa (en la medida de lo posible).
Funciones de la capa de Negocio:
- Recibir la información de la capa de presentación
- Interactuar con los servicios de datos para realizar la lógica de negocio y de la aplicación.
- Enviar resultados a la capa de presentación
3 Capa de datos:
Es donde residen los datos. Está formada por uno o más gestor de bases de datos que realiza todo el almacenamiento de datos, reciben solicitudes de almacenamiento o recuperación de información desde la capa de negocio. Capa que sirve entre como puente entre la capa lógica de negocio y el proveedor de datos. Este capa pretende encapsular las especificidades del proveedor de datos tales como (SQL, Oracle, Sybase, archivos XML, texto, hojas electrónicas), a la siguiente capa. Hoy en día contamos con Enterprise Library, con la cual se nos facilita mas la Capa de Datos, para traer datos, modificar o borrar, etc (Mas adelante les hablare sobre esto).
Esta capa queda encargada de tomar la información de la base de datos dada una petición de la capa de Reglas del Negocio, que a su vez es generada por la capa de presentación.
Comprende las responsabilidades de lógica de persistencia de las entidades que maneja el sistema en desarrollo.
- Inserción
- Eliminación
- Actualizaciones
- Búsquedas
Funciones de la capa de Datos:
- Almacenar Datos
- Recibir datos
- Mantenimientos de los datos
- Integridad de los datos
En una arquitectura de tres niveles, los términos "capas" y "niveles" no significan lo mismo ni son similares.
El término "capa" hace referencia a la forma como una solución es segmentada desde el punto de vista lógico:
- Presentación
- Lógica de Negocio
- Datos
En cambio, el término "nivel", corresponde a la forma en que las capas lógicas se encuentran distribuidas de forma física. Por ejemplo:
Una solución de tres capas (presentación, lógica, datos) que residen en un solo ordenador (Presentación+lógica+datos). Se dice, que la arquitectura de la solución es de tres capas y un nivel.
Una solución de tres capas (presentación, lógica, datos) que residen en dos ordenadores (presentación+lógica, lógica+datos). Se dice que la arquitectura de la solución es de tres capas y dos niveles. Una solución de tres capas (presentación, lógica, datos) que residen en tres ordenadores (presentación, lógica, datos). La arquitectura que la define es: solución de tres capas y tres niveles.
Ventajas de trabajar con Capas:
- Reutilización de capas;
- Facilita la estandarización
- Dependencias se limitan a intra-capa
- Contención de cambios a una o pocas capas
- darle seguridad y versatilidad al sistema
- porque con objetos es mas fácil hacer crecer la aplicación
- es mas ordenado
- Clara distribución de las responsabilidades.
- Es más fácil trabajar en equipo con otros desarrolladores y hasta armar equipos de desarrolladores para cada capa.
- Podemos cambiar de repositorio de datos sin impacto en el resto de la aplicación.
Desventajas de trabajar con Capas:
- A veces no se logra la contención del cambio y se requiere una cascada de cambios en varias capas;
- Pérdida de eficiencia;
- Trabajo innecesario por parte de capas más internas o redundante entre varias capas;
- Dificultad de diseñar correctamente la granularidad de las capas.
¿Cuál es la diferencia con la programación tradicional?
¿Por qué esto es mejor que programar todo de una sola vez y qué diferencia hay entre una arquitectura y otra?
Las gráficas nos ayudarán a visualizar mejor estas diferencias.
MODELO TRADICIONAL
Todas las capas están ubicadas en un único elemento y al actualizar un elemento se tendrán que afectar todos
En este el cambio en la capa de presentación no afectará reglas del negocio y se pueden actualizar las funciones de reglas del negocio sin tener que cambiar el acceso a datos.
MODELO THREE-TIER
Como podemos apreciar en las gráficas, resulta mucho más práctico programar las capas por separado, sobretodo en situaciones que tenemos un equipo de trabajo de diferentes programadores o el proyecto es para una empresa con varias sucursales con políticas independientes.
¿Cuándo es recomendable utilizar esta arquitectura?
- Cuando el proyecto es muy grande.
- Cuando son varios los programadores y existen dificultades para coordinarlos, por ejemplo cuando el software se está desarrollando con programadores freelance que están muy lejos unos de los otros.
- Cuando el programa es para una empresa con varias sucursales y cada sucursal puede tener algunos métodos y políticas diferentes.
En el próximo post les hablare de como hacer su proyecto en Cuatro Capas.
Espero que les haya gustado.
1 comentarios:
Muy buena explicación, gracias por tomarte el tiempo y subir estos aportes
Publicar un comentario