Loading presentation...
Prezi is an interactive zooming presentation

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Arquitectura DDD .NET

Arquitectura .NET N-Capas Basada en los conceptos de diseño de DDD.
by

Juan José Estruch

on 12 May 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Arquitectura DDD .NET

Arquitectura .NET
N-Capas
Basado en los conceptos de diseño de (DDD) "Domain Driven Design"
Infraestructura
Contiene
Repositorios
Registros de DI (Dependency Injection)
Mappings
Manejo de Sesiones (instancias hacia la BD)
Esta capa proporciona la capacidad de persistir datos así como lógicamente acceder a ellos. Pueden ser datos propios del sistema o incluso acceder a datos expuestos por sistemas externos (Servicios Web externos, etc.). Así pues, esta capa de persistencia de datos expone el acceso a datos a las capas superiores, normalmente las capas del dominio.
Esta exposición deberá realizarse de forma desacoplada.
Dependency Injection
Para aplicar este patrón se utiliza la herramienta "StructuraMap"
La finalidad es que las capas subyacentes “dependan” de las capas superiores y no al revés como pasa en el común de los casos. Para esto las capas superiores proveen una interface que las capas inferiores deben implementar. Actualmente se está utilizando en la capa de servicios y de dominio.
Repositorio
Estos componentes son muy similares en algunos aspectos a los componentes de „Acceso a Datos (DAL) de Arquitecturas tradicionales N-Layered. Básicamente, los Repositorios son clases/componentes que encapsulan la lógica requerida para acceder a las fuentes de datos de la aplicación. Centralizan por lo tanto funcionalidad común de acceso a datos de forma que la aplicación pueda disponer de un mejor mantenimiento y desacoplamiento entre la tecnología y la lógica de las capas „Aplicación y „Dominio.

Se deben definir Repositorios solo para las entidades lógicas principales (en DDD serán los Agregate roots o bien Entidades sencillas), no para cualquier tabla de la base de datos.
Éste es un ejemplo de Repositorio para la Entidad Socio
Como se puede observar éste repositorio implementa la interfaz que expone el Frw.
En la interfaz del Fwk. para el Repositorio se exponen las acciones básicas que se pueden realizar sobre una entidad.
Mappings
En nuestro caso la herramienta de ORM que utilizamos es NHibernate, la versión para .NET de Hibernate que nació para Java.
Actualmente tenemos conformado un procedimiento para llevar a cabo la tarea de confección de los mappings correspondientes a nuestra base de datos principal (base de datos ya existente), con el fin de mantener consistente y sincronizados los mappings ya que trabajamos con desde distintas soluciones con los mismos (Dominio Común => Base de Datos única).
Principios de Arquitectura
OOP (Object Oriented Programming)
Estándares de codificación
Capas y Niveles
Nuestra Arquitectura
Programación Orientada Objetos
Los objetos son entidades que tienen un determinado estado, comportamiento (método) e identidad

Está basado en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento

La POO difiere de la programación estructurada tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida.

Los programadores que emplean POO, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.
Estándares de Codificación
Algunos principales
Ver documento de estándares publicado en la intranet.
Capas y Niveles (Layers y Tiers)
Capas (Layers): refiere a divisiones lógicas
Niveles (Tiers): refiere a divisiones físicas
Beneficios
Beneficios (N-Capas)
El mantenimiento de mejoras en una solución será mucho más fácil porque las funciones están localizadas.

Otras soluciones deberían poder reutilizar funcionalidad expuesta por las diferentes capas, especialmente si se han diseñado para ello.

Los desarrollos distribuidos son mucho más sencillos de implementar si el trabajo se ha distribuido previamente en diferentes capas lógicas.

La distribución de capas (layers) en diferentes niveles físicos (tiers) puede, en algunos casos, mejorar la escalabilidad. Aunque este punto hay que evaluarlo con cuidado, pues puede impactar negativamente en el rendimiento.
Manejo de Seciones
Se aplicó el patrón Session Per Call o Sesión por invocación a servicio

Cada Invocación a un servicio se lleva a cabo de forma transaccional

Todo esta funcionalidad se encuentra ligada a la implementación de la capa de servicios WCF (Windows Communication Foundation)
Dominio
Estos componentes implementan la funcionalidad principal del sistema y encapsulan toda la lógica de negocio.
Secciones:

Entidades

Servicio de Dominio

Interfaz a la Capa de Repositorio

Interfaz a la Capa de Servicio
Entidad del Dominio
Las Entidades representan objetos del dominio y están definidas fundamentalmente por su identidad y continuidad en el tiempo y no solo por los atributos que la componen.

Poseen la lógica relativa a los datos en memoria de dicha entidad (validaciones de datos en el momento en que se añaden o actualizan, lógica de campos calculados, lógica relativa a la parte interna de dicha entidad).
Servicio de Dominio
Simples clases donde se implementan las posibles acciones relacionadas con una o varias entidades del dominio.

Es donde se deben implementarse todas las reglas y cálculos de negocio que no sean internos a las propias entidades, como por ejemplo, transacciones, invocación/consumo de repositorios, gestión de excepciones de negocio, algunas validaciones de datos y aspectos de seguridad como requerimientos de autenticación y autorización para ejecutar componentes concretos del dominio.

Deben ser el único punto de acceso a las clases de infraestructura de persistencia de datos (Repositorios).
Servicios WCF
DTOs (Data Transfer Objects)
Contratos (parte de WCF)
Servicios WCF
Self Host Services

Windows Communication Foundation
Características y comparativa con tecnologías anteriores
WCF Conceptos Generales
Es un framework para crear aplicaciones orientadas a servicios (SOA), implementando estándares de interoperabilidad, bajo distintos modelos de mensajes proveyendo también mecanismos de seguridad, metadatos y distintos protocolos de transporte.

Actualmente se está utilizando para la implementación de la capa de servicios con mensajes del tipo Solicitud/Respuesta.
Las siglas „ABC son claves para WCF porque coinciden con aspectos básicos de cómo están compuestos los End-Points de un Servicio WCF.

Los End-Points son básicamente los extremos en las comunicaciones basadas en WCF y por lo tanto también los puntos de entrada a los servicios. Un End-Point es internamente bastante complejo pues ofrece diferentes posibilidades de comunicación, direccionamiento, etc.

Precisamente y volviendo a las siglas ABC como algo para recordar, un EndPoint está compuesto por ABC, es decir:
“A” para Address (Dirección): ¿Dónde está el servicio situado?
“B” para Binding (Enlace): ¿Cómo hablo con el servicio?
“C” para Contract (Contrato): ¿Qué me ofrece el servicio?
WCF - ABC
Presentación
Gracias a la implementación de una arquitectura orientada a servicios y el desacoplamiento que esto ofrece, podemos hacer uso de dichos servicios desde una gran variedad de capas de presentación que implementen distintas tecnologías (MVC, MVVM, Mobile, WinForm, WPC, etc).
Presentación Casos Prácticos
Actualmente tenemos desarrollados productos con diferentes capas de presentación sobre la misma arquitectura:
WinForm
InteropForm 2.1
MVC 3.0
Mobile (jQueryMobile)
Full transcript