FANDOM


Programación en 3 capas o Three-Tier:es un es
Tres capas

Programación por Capas

tilo 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

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

Capas o niveles.

1 Capa de presentación (IU) :La capa de Presentación provee su aplicación con una interfase 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. 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. Esto es importante, especialmente hoy en día, debido a que es muy común para una aplicación tener múltiples IU, o para sus clientes o usuarios, que le solicitan que elimine una IU y la remplace con otra. Por ejemplo, usted puede desarrollar una aplicación Win32 (un programa en Visual Basic) y entonces solicitársele remplazarla con una página HTLM., quizás usando tecnología ASP(Active Server Pages creación de páginas dinámicas del lado del servidor).




Una de las mayores dificultades y factores importantes cuando desarrollamos aplicaciones cliente/servidor es mantener una separación completa entre la presentación, la lógica de negocios y los servicios de datos. Es muy tentador para los desarrolladores mezclar una o más capas; poniendo alguna validación u otro proceso de negocios dentro de la capa de presentación en vez de en la capa de negocios.



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
  • Etc.


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. Colectivamente este código es considerado para formar la capa de negocios. Otra vez, uno de los principios del diseño lógico cliente/servidor, la lógica de negocios debe mantenerse separada de la capa de presentación y de los servicios de datos. Esto no significa necesariamente que la lógica de negocios está en cualquier parte, por el contrario, esta separación es en un sentido lógico.

Hay muchas formas de separar la lógica de negocios. En términos orientados a objetos, usted debería 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, usted ganará en flexibilidad en término de donde usted puede almacenar físicamente la lógica de negocios. Por ejemplo, usted puede seleccionar almacenar la lógica de negocios sobre cada estación de cliente, u optar por ejecutar la lógica de negocios sobre un servidor de aplicaciones, permitiendo a todos los clientes acceder a un recurso centralizado.




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.




Todos estos son objetos en el mundo físico, y la idea en su totalidad detrás de usar objetos de negocios de software, es crear una representación de los mismos objetos dentro de su aplicación. Sus aplicaciones pueden hacer que estos objetos interactúen unos con otros como ellos lo hacen en el mundo real. Por ejemplo, un empleado puede crear una orden de compra a un cliente que contiene una lista de productos. Siguiendo esta lógica usted 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 interfase 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 interfase 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 interfase 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. Para que si cambia el proveedor de datos solo necesitemos cambiar en una sola capa el proveedor de datos. Hoy en día gracias a la tecnología disponible y a la expansión del conocimiento a través del Internet, tenemos a nuestra deposición la librería de Microsoft Enterprise Library en su versión Dos, donde podemos acceder sin necesidad de cambiar el código a proveedores OLEDB, SQL, Oracle, XML, archivos Excel, etc. Por lo que si programamos en .Net por capas la capa de acceso a datos debemos de utilizar estas librerías para dejarle el trabajo a la misma y nosotros solo preocuparnos con la conexión al proveedor de los datos y nada mas.



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
  • Etc


Funciones de la capa de Datos:


  • Almacenar Datos
  • Recibir datos
  • Mantenimientos de los datos
  • Integridad de los datos

Todas estas capas pueden residir en un único ordenador (no sería lo normal), si bien lo más usual es que haya una multitud de ordenadores donde reside la capa de presentación (son los clientes de la arquitectura cliente/servidor). Las capas de negocio y de datos pueden residir en el mismo ordenador, y si el crecimiento de las necesidades lo aconseja se pueden separar en dos o mas ordenador es. Así, si el tamaño o complejidad de la base de datos aumenta, se puede separar en varios ordenadores los cuales recibirán las peticiones del ordenador en que resida la capa de negocio.



Si por el contrario fuese la complejidad en la capa de negocio lo que obligase a la separación, esta capa de negocio podría residir en uno o mas ordenadores que realizarían solicitudes a una única base de datos. En sistemas muy complejos se llega a tener una serie de ordenadores sobre los cuales corre la capa de datos, y otra serie de ordenadores sobre los cuales corre la base de 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


  • 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


  • 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.




¿Cómo hacer mi proyecto con programación en 3 capas?



Si desea realizar un proyecto en tres capas, lo que debe hacer básicamente es lo siguiente: Cree tres proyectos, dos de ellos pueden ser de componentes o de Class library, eso lo decide el programador. Una vez tenga estos tres proyectos, en uno de ellos estarán solamente los formularios que le mostraremos al usuario. En el otro proyecto tendremos funciones de verificación, por ejemplo, verificar que la cuenta exista, que tenga dinero suficiente, etcétera. En el tercero ponemos las funciones de acceso a datos: la conexión, se define si se desean objetos conectados o desconectados y se crean las funciones de asignación de registros, modificación y eliminación. Por propósitos de brevedad no mostraré un código completo, porque sería muy extenso, pero estos parámetros lo podrán guiar perfectamente en la creación de su aplicación. El código que irá en los formularios solamente será para invocar las funciones de la capa de reglas del negocio.

¡Interferencia de bloqueo de anuncios detectada!


Wikia es un sitio libre de uso que hace dinero de la publicidad. Contamos con una experiencia modificada para los visitantes que utilizan el bloqueo de anuncios

Wikia no es accesible si se han hecho aún más modificaciones. Si se quita el bloqueador de anuncios personalizado, la página cargará como se esperaba.