Arquitecturas de referencia

Hoy en día más o menos explícitamente toda aplicación corporativa consta de capas: presentación, lógica de negocio y acceso a datos. Dependiendo de las particularidades de cada aplicación es posible que se haga o no una diferenciación más distinguida entre estas capas. Al mismo tiempo existen un conjunto de patrones a aplicar en el diseño de estas capas que también pueden redundar en distintas variantes de architectura.
A continuación se presentan algunas de las variantes más comunes con las que hemos trabajado durante los últimos dos años. Cabe destacar que si bien gran parte del contenido de este espacio está enfocado en plataforma .NET, los patrones presentados a continuación aplican perfectamente a cualquier otra tecnología orientada a objetos.

Arquitectura Domain-Driven

Esta es una de las que más hemos utilizado. Básicamente consiste en una capa de dominio que constituye el punto central de la aplicación y en base a la cual se estructuran el resto de las capas. El dominio se modela con clases ricas haciendo uso de las herramientas provistas por la orientación a objetos.
Por "debajo" de la capa de dominio se ubica una capa de persistencia, que se encarga encapsular la interacción con el repositorio persistente de información. Esta capa de persistencia tiene la misma semántica que el dominio, o sea, su interface está definida por el dominio.

Por "encima" de la capa de dominio hay una capa de aplicación (también llamada capa de servicios), que se expone las funcionalidades puntuales brindadas por la aplicación en cuestión y se encarga de la coordinación de los objetos de dominio y los repositorios.

Finalmente por encima de la capa de aplicación y de cara al usuario existe una capa de presentación, generalmente estructurada en base al patrón Model-View-Controller. Esta capa presenta la información al usuario, capta su interacción y maneja el flujo de los casos de uso, invocando a la capa de aplicación para realizar las transacciones disparadas por cada caso de uso.

Arquitectura Data-Driven

Trabajo en curso.

Alguien podria pensar que esta arquitecutura es muy parecida o casi igual a la anterior, pero en realidad no es asi y para entenderlo es necesario considerar como se modela la aplicación en cada caso.
Cuando uno parte de un modelo de dominio tiene a su dispocisión las potentes herramientas de modelado OO que permiten hacer modelo ricos, bastante cercanos a la realidad a partir del uso de herencia, polimorfismo, agregación y composición. Adicionalmente los objetos de dominio no solo modelan datos, sino que tienen tambien lógica de negocio a partir de comportamiento propio.
Por otro lado al basar el desarrollo en modelado de datos, una está partiendo de la base de datos, donde las posibilidades de modelado son bastante más limitadas. Esto hace que las entidades de negocio sean generalmente una mera representación de registros en memoria y que muchas veces carezcan de inteligencia alguna, más allá de ciertas validaciones.

¿Y que hay de orientación a servicios?

Trabajo en curso.

Last edited Aug 18, 2008 at 4:07 PM by nicolaz, version 5

Comments

No comments yet.