Está en la página 1de 35

Guía de Arquitectura de Referencia

‘N-Capas DDD’ y .NET 4.0


SIGUIENTES
PASOS
POR QUÉ
Próximos
Y NECESIDADES
pasos
Por qué y ¿QUÉ ES DDD? Mejorar

necesidades
¿Qué es PATRONES
Evolucionar
DDD? ARQUITECTURA hacia
Expresar Aislar el DDD
objetivos ¿COMO? dominio con
Nuestros pilares
Encapsular
con y Patrones de
Arquitectura
¿Cómo? DDD

Cesar de la Torre
Architect Advisor
Microsoft - DPE
" Blog: http://blogs.msdn.com/cesardelatorre
* Email: cesardl@microsoft.com
Background y Necesidades

 Clientes, partners, ISVs, etc. están


pidiendo guías y patrones de
Arquitectura que estén luego
directamente mapeados a tecnologías
Microsoft.

| Architecture
2010: Muchas novedades ola „.NET 4.0‟

ADO.NET
Entity Framework V4.0

| Architecture
Novedades ola „.NET 4.0‟

ADO.NET
Entity Framework V4.0

| Architecture
Novedades ola „.NET 4.0‟
Arquitectura

ADO.NET
Entity Framework V4.0

| Architecture
Novedades ola „.NET 4.0‟
Architecture

ADO.NET
Entity Framework V4.0

ADO.NET
Entity Framework V4.0

| Architecture
¿Cómo?

 Elaborar Guía/Libro de Arquitectura


Referencia en Español

 Mapeo de Patrones a Tecnologías .NET

 Darlo a conocer y training sobre ello

| Architecture
Objetivos de - Guía de Arquitectura -

 Proponer tendencias y patrones


actuales para apps complejas

 Estandarización y homogenización
Arquitectura.NET. (Nivel Org./Empresa)

 Facilitar adopción Plataforma .NET en


escenarios complejos empresariales

| Architecture
“Libro
Blanco”

 Documentación en dos niveles:


1.- Nivel lógico (Arquitectura y patrones) 
2.- Implementación (Mapeo a „.NET 4.0 wave‟) 

 Aplicación Ejemplo
 Pública en (OSS License)
 Colaboración Comunidad

| Architecture
Tipos de Aplicaciones objetivo
 Aplicaciones Empresariales Complejas
 Áreas: Financiero, Seguros, Telcos, ISVs, Retail, etc.

 Gran volumen Lógica Negocio

 Requerimientos QoS empresariales


 Seguridad Corporativa (heterogénea)
 Rendimiento y Escalabilidad
 Gran Volumen Pruebas Unitarias
 App con vida y evolución larga

 No apps-RAD en este contexto

| Architecture
Site Arquitectura MSDN-España
 Documentación Arquitectura (Download libre)
http://msdn.microsoft.com/es-es/architecture/default.aspx

| Architecture
Guía-Libro
„Guía de Arquitectura „N-Layer DDD‟
con .NET 4.0‟

| Architecture
App. Ejemplo en CODEPLEX
http://microsoftnlayerapp.codeplex.com/

| Architecture
Demo de Aplicación Ejemplo
basada en „Arquitectura N-Layer
Orientada al Dominio‟

| Architecture
DDD: Ciclo de vida en el desarrollo
-DDD es, sobre todo, una forma de trabajar y afrontar el
proyecto
- Este proceso de trabajo NO está incluido en esta Guía de
Arquitectura.
Arquitectura
y Diseño

(*) Para conocer el proceso


de trabajo en DDD, leer
libro DDD de Eric Evans, Mejora del Acelera
patrones relacionados Diseño y desarrollo
Comunicación
documentados por Martin Arquitectura correcto
con „Expertos
Fowler y otros libros DDD del Dominio‟

Feedback de
Desarrollo
desarrolladores

| Architecture
DDD: Domain Driven Design

Proceso y Ciclo de Vida del


Proyecto
- Ciclo de Vida del proyecto
- Relación del equipo desarrollo, expertos negocio
del cliente, etc.
- ‘Lenguaje ubicuo’

80% Arquitectura

20%
(*) En esta Arquitectura solo nos centramos en
este 20%
| Architecture
¿Cuándo DDD (Domain Driven Design)?

 ¿Aplicaciones Complejas?  DDD


 Gran volumen Lógica Negocio/Dominio
 Entendimiento del Dominio
 „Lenguaje Ubicuo‟
 Foco en Dominios complejos
 NO aplicaciones „Data Driven‟

| Architecture
Pilares de la Arquitectura Propuesta

 Arquitectura N-Capas „Orientada al Dominio‟

 Principios base del Desarrollo: „SOLID‟

| Architecture
Principios „SOLID‟ en Desarrollo
 Single Responsability Principle
 «Una clase solo debe tener una razón para cambiar»

 Open Close Principle


 «Una clase debe estar abierta a la extensión pero cerrada a cambios»

 Liskov Substitution Principle


 «Los sub-tipos o clases hijas deben ser sustituibles por sus propios tipos base relacionados (clases
base o interfaces)»

 Interface Segregation Principle


 «Los Consumidores no deben estar obligados a implementar interfaces que no usan»

 Dependency Inversion Principle (*)


 «Las Capas de alto nivel no deben depender de Capas de bajo nivel. Ambos deben depender de
abstracciones»

| Architecture
Tendencias de Arquitectura en DDD
- «Ciertos Aspectos Arquitectura DDD interesantes…»

 Aislar la Capa del Dominio (Core)


 Encaja con „Principio de Inversión de
Dependencias‟ y con DI
 Capas de Infraestructura
desacopladas del Dominio!
 Patrones Arquitectura DDD

| Architecture
Patrones originales en DDD

| Architecture
Patrones en DDD
QUERY UNIT
SPECIFICATIONS OF WORK

POCO / IPOCO

IoC IoC
MVVM, MVC, MVP CQRS Containers
Patterns CONTAINERS

| Architecture
DDD Architecture (Eric Evans’ Diagram)
Views
User
Controllers
Interface

Tasks

Applciation Application
Services

Domain
Services
Domain
Domain Entities

CrossCutting CrossCutting
Infrastructure Infrastructure
Infrastructure (Security,
Logging, Data Access
(Security,
Logging,
CrossCutting
etc.) & Persistence etc.) Infrastructure
(Repositories (3D Graph Libs,
etc.)
etc.)

| Architecture
Arquitectura N-Capas Orientada al Dominio – (Versión Simplificada)

Capas de Presentación
Capas Infraestructura Transversal
(Seguridad, Operaciones, etc.)

Capa Srv. Distribuidos

Capa de Aplicación

Capa del Modelo de


Dominio/Negocio

Capa de Infraestructura de
Persistencia de Datos, etc.)

Servicios
Externos
Fuentes
| Architecture Datos
Arquitectura N-Capas Orientada al Dominio – (Versión Completa)

Capas Infraestructura
Transversal ‘Cliente Rico’ / RIA Cliente Servidor Web

Vistas UI Vistas UI

Agentes de
Controladores Controladores
Servicios
Operaciones (Logging, Monitorización, etc.)

Presentación

Capa de Servicios Distribuidos (Web-Services)

Capa de Aplicación
Seguridad

Servicios de Adaptadores
Workflows
Cache

Aplicación (DTO Adapters...)

Capa del Dominio


Servicios del Especificaciones de
Entidades Dominio Consultas
del
Dominio Bases (Layer Supertype) Contratos Repositorios

Capa de Infraestructura de Persistencia de Datos


Repositorios Bases (Layer Supertype)
(Implementación)
Servidor de
Persistencia Aplicaciones
(ORMs: EF, NHibernate)
Modelo de Datos Agentes de Servicios

Servicios
Externos
Fuentes
| Architecture Datos
Diagrama Layer VS.2010

Relación y mapeo con


proyectos y código .NET

¡Validación de la
Arquitectura contra
código .NET del solution!

| Architecture
No solo Arquitectura...

También hace falta


Diseño e implementación en .NET 4.0...
(Entity Framework 4.0, Unity, WCF, WF, WPF,
Silverlight, etc.)

| Architecture
Servicio Entidad Especificación Repositorio
CustomerService “Customer” Consulta CustomerRepository

Interfaz Repositorio
Del Servicio Entidad Interfaz del
del Repositorio
Dominio Especificación (Contrato)
de Consulta
(Contrato)

¡¡Métodos con
lógica de
negocio de la
entidad!!

Servicio del
Dominio

Capa de
Capa de Aplicación Capa de Dominio Infraestructura de
| Architecture Persistencia de Datos
[LABS]
- Estructura Solution App-Ejemplo
- Unit-Testing y Desacoplamiento

| Architecture
¿N-Layer vs. N-Tier?

Capas Lógicas Niveles Físicos

Son Complementarias!!..

| Architecture
Patrones de Despliegue
- Arquitectura Física
- Arquitecturas N-Tier
- Seguridad en Tiers

| Architecture
Aspectos Transversales y QoS
-Seguridad
- Orientación a Claims
(WIF: Windows Identity Foundation, aka ‘Geneva’)
- Autenticación, Autorización, Cifrado y Firma Elect.
- Cache
- Windows Server AppFabric (WCF/WF Deployment and
Cache (“Velocity”)
- Gestión de Excepciones
- Validaciones
-Operaciones y Monitorización
-Performace Counters
-Logging y Trazas
-WMI
- Globalización y Localización

| Architecture
Evolución a siguientes versiones
Esta Arquitectura y Aplicación ejemplo es algo vivo y
en constante evolución a nuevos „sabores‟

Ideas a añadir en nuevas versiones:

 Convergencia a Cloud-Computing
 Aplicaciones escalables en Windows Azure
 CQRS Pattern (Command and Query Responsibility Segregation)
 Nuevas aplicaciones cliente
 HTML5
 OBA: VSTO (Excel/Outlook)
 Windows Phone 7 (Silverlight)
 Seguridad  Claims Orientation (WIF + ADFS 2.0)

| Architecture
Próximos pasos en training

1 Analizar cada capa a nivel de patrones

2 Realizar LABs de implementación .NET

3 Debate y nuevas ideas

| Architecture
¡Gracias!

César de la Torre
Architect Evangelist
Microsoft – DPE

" Blog: http://blogs.msdn.com/cesardelatorre


* Email: cesardl@microsoft.com

| Architecture

También podría gustarte