lunes, 28 de mayo de 2007

Diseño en 3 capas? fisicas ó lógicas? es igual a patrón MVC?

Diseñar en 3 capas...trata sobre no poner todo tu código en las interfaces de usuario de tu sistema (IU). Para subsanar esto, la idea es tener 3 niveles de funcionalidad bien definidos :



  • Capa de presentación, con nuestras IU (formularios windows, páginas HTML,..) y sus controles visuales (textBox, comboBox, dataGrids) junto con sus eventos (los click y etc.)

  • Capa de negocio (lógica del dominio), aqui ira todo el código que define las reglas de negocio (cálculos, validaciones). Surge de los procesos que hemos encontrado en el análisis.

  • Capa de acceso a datos, el código que permite acceder a las fuentes de datos. Esencialmente trata sobre 4 operaciones básicas, llamadas CRUD (por Create-Retrieve-Update y Delete), que se realizan sobre cualquier fuente de datos (normalmente alguna base de datos relacional).

Debajo de esta última se encontrará la FUENTE de DATOS que permite la persistencia de los mismos en algún medio físico.

Este diseño corresponde a las 3 capas lógicas (3 layers). No confundir con las capas físicas ó parte (3 tiers) que corresponden al lugar donde se instalan los componentes de software.

En 3 tiers la ejecución está distribuida:



  • Front-End, donde se ejecutan las IU del cliente. Los Browsers.

  • MiddleWare, recibe solicitudes de las IU a través de la red. Estos son mensajes (XML, SOAP,...) que se envían mediante protocolos de transporte (HTTP,TCP,UDP,..). El Servidor Web.

  • BackEnd, nuestra base de datos ó algún proceso externo a nuestro software.

Por último "Modelo-Vista-Controlador" es un patrón de diseño de arquitectura que está asociado a la idea de 3 capas (3 layers), aunque su objetivo es aún más fino. El mismo se centra en la secuencia de ejecución, desde que se produce un evento en la capa de presentación hasta que el mismo es atendido en forma completa.





Las partes que lo componen son:



  • Vista: componente que recibe el estímulo y genera un evento, que puede involucrar a otros objetos de la IU. Corresponde a la capa de presentación, y al Front-End(en Web:Html, JavaScript,...), aunque suele haber parte en el MiddleWare (controles ASP,PHP,...)

  • Modelo: componente asociado a las entidades de negocio (cliente, factura, pago,...). En 3 capas incluye parte de la capa de negocio (entidades, pero no lógica de procesos) y toda la capa de acceso a datos. En 3 tiers se instala en el BackEnd (la BD) y parte en el MiddleWare (entidades de negocio y acceso a datos).

  • Controlador: componente asociado a la lógica de procesos del negocio. En 3 capas la parte que faltaba y en 3 tiers en el MiddleWare.




3 comentarios:

Anónimo dijo...

Si me aclaro algunas dudas Gracias.

Darling dijo...

En resumen no es lo mismo 3 capas que MVC, ya que MVC se enfoca mas en la parte IU (HTML: WebForms en este caso).
Se podria Desarrollar un sistema MVC pero no necesariamente seria 3 capas.
Es asi no ?

Rocío dijo...

Un poco tarde pero contesto por si alguien aparece por aquí.
Efectivamente se puede desarrollar un sistema MVC sin 3 capas. MVC en realidad son 2 capas: la vista+controlador es la capa de presentación, y el modelo es todo lo que no es capa de presentación. Por lo tanto, si implementásemos el acceso a datos en la capa de negocio (o directamente pasásemos de capa de negocio), o bien si no tenemos acceso a datos, la arquitectura sería de dos capas:
- Capa presentación: Vista + Controlador
- Capa negocio/persistencia: resto de clases

Generalmente en aplicaciones web con el patrón MVC también se utiliza la arquitectura en tres capas:
- Capa presentación: Vistas (html) + Controladores
- Capa negocio: Interfaces y clases de lógica de control.
- Capa persistencia: Interfaces y clases DAO.