ebook img

Guía de Arquitectura de N-Capas orientada al Dominio con .NET 4.0 PDF

433 Pages·2010·14.19 MB·Spanish
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Guía de Arquitectura de N-Capas orientada al Dominio con .NET 4.0

Guía de Arquitectura N-Capas orientada al Dominio con .NET 4.0 (Beta) César de la Torre Llorente Unai Zorrilla Castro Miguel Angel Ramos Barros Javier Calvarro Nelson GUÍA DE ARQUITECTURA N-CAPAS ORIENTADA AL DOMINIO CON .NET 4.0 (BETA) No está permitida la reproducción total o parcial de este libro, ni su tratamiento informático, ni la transmisión de ninguna forma o por cualquier medio, ya sea electrónico, mecánico, por fotocopia, por registro u otros métodos, sin el permiso previo y por escrito de los titulares del Copyright. Diríjase a Cesar de la Torre Llorente ([email protected]), si exclusivamente para el uso interno de su empresa/organización, desea reutilizar el contenido de esta obra y personalizarlo hacia una Arquitectura corporativa concreta. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar o escanear algún fragmento de esta obra. DERECHOS RESERVADOS © 2010, por Microsoft Ibérica S.R.L. EDITADO por Krasis Consulting, S. L. www.Krasis.com ISBN: 978-84-936696-3-8 Depósito Legal: M-13152-2010 Impreso en España-Printed in Spain Índice ARQUITECTURA MARCO .NET MICROSOFT IBÉRICA Arquitectura Marco .NET Microsoft Ibérica ............................................................................... 3 1.- Introducción .................................................................................................................................. 1 1.1.- Audiencia del documento .............................................................................................. 1 1.2.- Objetivos de la Arquitectura marco .NET ............................................................... 1 1.3.- Niveles de la documentación de la Arquitectura marco .NET ............................ 2 FUNDAMENTOS DE ARQUITECTURA DE APLICACIONES ............................................. 3 ESTILOS ARQUITECTURALES ...................................................................................... 9 ARQUITECTURA MARCO N-CAPAS ....................................................................... 33 1.- Arquitectura de Aplicaciones en N-Capas .......................................................................... 33 1.1.- Capas vs. Niveles (Layers vs. Tiers) .......................................................................... 33 1.2.- Capas ................................................................................................................................. 34 1.3.- Principios Base de Diseño a seguir ......................................................................... 39 1.3.1.- Principios de Diseño ‘SOLID’ .............................................................................. 39 1.3.2.- Otros Principios clave de Diseño ....................................................................... 40 1.4.- Orientación a tendencias de Arquitectura DDD (Domain Driven Design) ... 41 1.5.- Orientación a tendencias de Arquitectura EDA (Event Driven Architecture) .. 43 2.- Arquitectura Marco N-Capas con Orientación al Dominio ........................................... 45 2.1.- Capas de Presentación, Aplicación, Dominio e Infraestructura ........................ 45 2.2.- Arquitectura marco N-Capas con Orientación al Dominio ............................... 46 2.3.- Desacoplamiento entre componentes ..................................................................... 63 2.4.- Inyección de dependencias e Inversión de control ............................................... 65 2.5.- Módulos ............................................................................................................................ 71 2.6.- Implementación de Estructura de Capas en Visual Studio 2010 ....................... 74 2.7.- Diseño de la solución de Visual Studio .................................................................... 75 2.8.- Arquitectura de la Aplicación con Diagrama Layer de VS.2010 ........................ 83 2.9.- Implementación de Inyección de Dependencias e IoC con UNITY ................. 85 2.9.1.- Introducción a Unity ............................................................................................. 86 2.9.2.- Escenarios usuales con Unity ............................................................................. 87 2.9.3.- Patrones Principales .............................................................................................. 88 2.9.4.- Métodos principales .............................................................................................. 88 2.9.5.- Registro Configurado de tipos en Contenedor ............................................ 89 2.9.6.- Inyección de dependencias en el constructor ............................................... 89 2.9.7.- Inyección de Propiedades (Property Setter) .................................................. 92 2.9.8.- Resumen de características a destacar de Unity ........................................... 93 2.9.9.- Cuando utilizar Unity ........................................................................................... 93 3.- Acceso Dual a Fuentes de Datos: Optimización de Informes, Listados, etc. ............. 94 iv Guía de Arquitectura N-Capas orientada al Dominio con .NET 4.0 (Beta) 4.- Niveles Fisicos en despliegue (Tiers) .................................................................................... 96 CAPA DE INFRAESTRUCTURA DE PERSISTENCIA DE DATOS ................................... 101 1.- Capa de Infraestructura de Persistencia de Datos .......................................................... 101 2.- Arquitectura y Diseño lógico de la Capa de Persistencia de Datos 1 ....................... 102 2.1.- Sub-Capas y elementos de la Capa de Persistencia de Datos .......................... 103 2.2.- Sub-Capa de Repositorios (Repository pattern) ................................................. 103 2.3.- Modelo de Datos ......................................................................................................... 107 2.4.- Tecnología de Persistencia (O/RM, etc.) ............................................................... 108 2.5.- Agentes de Servicios Distribuidos externos ......................................................... 108 3.- Otros patrones de acceso a datos ...................................................................................... 108 3.1.- Active Record ............................................................................................................... 109 3.2.- Table Data Gateway .................................................................................................... 109 3.3.- Data Mapper ................................................................................................................. 110 3.4.- Lista de patrones para las capas de Persistencia de Datos ............................... 110 4.- Pruebas en la capa de Infraestructura de Persistencia de Datos ................................. 111 5.- Consideraciones generales de diseño del acceso a datos ............................................. 113 5.1.- Referencias Generales ................................................................................................ 117 6.- Implementación en .NET de Capa de Persistencia de Datos .................................... 118 7.- Opciones de tecnología para la Capa de Persistencia de Datos ................................. 119 7.1.- Selección de Tecnología de Acceso a Datos ........................................................ 119 7.2.- Otras consideraciones tecnológicas ....................................................................... 120 7.3.- Como obtener y persistir objetos desde el almacén de datos ........................ 122 8.- Posibilidades de Entity Framework en la Capa de Persistencia ................................... 123 8.1.- ¿Qué nos aporta Entity Framework 4.0? ............................................................... 123 9.- Creación del Modelo de Datos Entidad-Relación de Entity-Framework .................. 124 10.- Plantillas T4 de generación de entidades POCO/Self-Tracking ................................ 128 10.1.- Tipos de datos ‘Entidades Self-Tracking’ .............................................................. 131 10.2.- Importancia de situar las Entidades en la Capa del Dominio .......................... 132 11.- Plantillas T4 de Persistencia de Datos y conexión a las fuentes de datos ............. 136 12.- Implementación de Repositorios con Entity Framework y Linq to Entities ......... 136 12.1.- Implementación de Patrón Repositorio ................................................................ 138 12.2.- Clase Base para los Repositories (Patrón ‘Layer Supertype’) ......................... 140 12.3.- Uso de Generics en implementación de clase base Repository ..................... 140 12.4.- Interfaces de Repositorios e importancia en el desacoplamiento entre componentes de capas .......................................................................................................... 145 12.5.- Implementación de Pruebas Unitarias e Integración de Repositorios .......... 147 13.- Conexiones a las fuentes de datos .................................................................................. 151 13.1.- El ‘Pool’ de Conexiones a fuentes de datos ........................................................ 153 14.- Estrategias para gestión de errores originadas en fuentes de datos ....................... 154 15.- Agentes de Servicios Externos (Opcional) .................................................................... 155 16.- Referencias de acceso a datos .......................................................................................... 156 CAPA DE MODELO DE DOMINIO ............................................................................. 157 1.- El Dominio ................................................................................................................................. 157 2.- Arquitectura y Diseño lógico de la Capa de Dominio ................................................... 158 2.1.- La importancia del desacoplamiento de la Capa de Dominio .......................... 159 iv Índice v 2.2.- Aplicación ejemplo: Características de negocio del Modelo de Dominio ejemplo a Diseñar .................................................................................................................. 160 2.3.- Elementos de la Capa de Dominio .......................................................................... 162 2.3.1.- Entidades del Dominio ....................................................................................... 162 2.3.2.- Patrón Objeto-Valor (‘Value-Object pattern’) ............................................ 168 2.3.3.- Agregados (Patrón ‘Aggregate’) ....................................................................... 172 2.3.4.- Contratos/Interfaces de Repositorios dentro de la Capa de Dominio. 174 2.3.5.- Sub-Capa de SERVICIOS del Modelo de Dominio ..................................... 175 2.3.6.- Patrón ‘Unidad de Trabajo’ (UNIT OF WORK) ........................................ 182 2.3.7.- Patrón ESPECIFICACION (SPECIFICATION) ............................................ 185 2.3.8.- Sub-Capa de Servicios Workflows del Modelo de Dominio (Opcional) ..... 190 2.4.- Proceso de diseño de capa del Dominio ............................................................... 192 2.5.- Consideraciones de Diseño de sub-capas del Dominio .................................... 193 2.6.- EDA y Eventos del Dominio para articular reglas de negocio ......................... 195 2.6.1.- Eventos del Dominio Explícitos ....................................................................... 196 2.6.2.- Testing y Pruebas Unitarias cuando utilizamos Eventos del Dominio ... 196 2.7.- Errores y anti-patrones en la Capa de Dominio .................................................. 196 2.8.- Aspectos de Diseño a implementar en la Capa del Dominio .......................... 198 2.8.1.- Autenticación ....................................................................................................... 198 2.8.2.- Autorización ......................................................................................................... 199 2.8.3.- Cache ..................................................................................................................... 200 2.8.4.- Gestión de Excepciones .................................................................................... 201 2.8.5.- Logging, Auditoría e Instrumentalización ...................................................... 202 2.8.6.- Validaciones .......................................................................................................... 202 2.8.7.- Aspectos de despliegue de la Capa de Dominio ......................................... 203 2.8.8.- Concurrencia y Transacciones ........................................................................ 203 2.9.- Mapa de patrones posibles a implementar en las capas del Dominio ............ 204 3.- Implementación de la Capa de Dominio con .NET 4.0 y desacoplamiento entre objetos con ‘Unity’ ....................................................................................................................... 205 3.1.- Implementación de Entidades del Dominio .......................................................... 206 3.2.- Generación de entidades POCO/IPOCO con plantillas T4 de EF ................. 211 3.3.- Situación de Contratos/Interfaces de Repositorios en Capa de Dominio .... 212 3.4.- Implementación de Servicios del Dominio ............................................................ 214 3.4.1.- Desacoplamiento e Inyección de Dependencias entre Servicios y Repositorios mediante IoC de UNITY ........................................................................ 217 3.4.2.- SERVICIOS del Dominio como coordinadores de procesos de Negocio 224 3.4.3.- Implementación de Transacciones en .NET ................................................. 225 3.4.4.- Implementación de Transacciones en la Capa de Servicios del Dominio 228 3.4.5.- Modelo de Concurrencia en actualizaciones y transacciones ................. 230 3.4.6.- Tipos de Aislamiento de Transacciones ........................................................ 231 3.5.- Implementación de patrón ESPECIFICACION (SPECIFICATION pattern) ... 236 3.5.1.- Especificaciones compuestas por operadores AND y OR ....................... 239 3.6.- Implementación de pruebas en la capa del dominio ........................................... 242 CAPA DE APLICACIÓN ........................................................................................... 247 1.- Capa de Aplicacion .................................................................................................................. 247 vi Guía de Arquitectura N-Capas orientada al Dominio con .NET 4.0 (Beta) 2.- Arquitectura y Diseño lógico de la Capa de Aplicación ................................................ 248 2.1.- Componentes de la Capa de Aplicación ................................................................ 250 2.2.- Servicios de Aplicación ............................................................................................... 250 3.- Implementación en .NET de Capa de Aplicacion ........................................................... 250 CAPA DE SERVICIOS DISTRIBUIDOS ........................................................................ 253 1.- Situación en Arquitectura N-Capas .................................................................................... 253 2.- Arquitecturas Orientadas a Servicios y Arquitecturas en N-Capas (N-Layer) ....... 255 3.- Situación de Arquitectura N-Layer con respecto a Aplicaciones aisladas y a Servicios SOA ................................................................................................................................. 256 4.- ¿Qué es SOA? ........................................................................................................................... 257 5.- Pilares de SOA (‘Service Orientation Tenets’) ................................................................ 258 6.- Arquitectura interna de los Servicios SOA ....................................................................... 262 7.- Pasos de Diseño de la Capa de Servicios .......................................................................... 263 8.- Tipos de Objetos de Datos a comunicar .......................................................................... 264 9.- Consumo de Servicios Distribuidos basado en Agentes ............................................... 268 10.- Interoperabilidad ................................................................................................................ 270 11.- Rendimiento ........................................................................................................................... 271 12.- Comunicación Asíncrona vs. Síncrona ............................................................................ 272 13.- REST vs. SOAP ...................................................................................................................... 273 13.1.- Consideraciones de Diseño para SOAP ............................................................... 276 13.2.- Consideraciones de Diseño para REST ................................................................ 277 14.- Introducción a SOAP y WS-* ............................................................................................ 278 15.- Especificaciones WS-* ......................................................................................................... 278 16.- Introducción a REST ............................................................................................................ 281 16.1.- La URI en REST ........................................................................................................... 282 16.2.- Simplicidad .................................................................................................................... 283 16.3.- URLs lógicas versus URLs físicas ............................................................................ 284 16.4.- Características base de Servicios Web REST ...................................................... 284 16.5.- Principios de Diseño de Servicios Web REST .................................................... 285 17.- Reglas globales de Diseño para sistemas y servicios SOA ....................................... 286 18.- Implementación de la Capa de Servicios Distribuidos con WCF .NET 4.0 .......... 290 19.- Opciones tecnológicas ........................................................................................................ 291 19.1.- Tecnología WCF ......................................................................................................... 292 19.2.- Tecnología ASMX (Servicios Web ASP.NET) ..................................................... 293 19.3.- Selección de tecnología ............................................................................................. 293 19.4.- Consideraciones de Despliegue .............................................................................. 294 20.- Introducción a WCF (Windows Communication Foundation) ............................... 295 20.1.- El ‘ABC’ de Windows Communication Foundation .......................................... 297 20.2.- Definición e implementación de un servicio WCF ............................................ 300 20.3.- Hospedaje del servicio (Hosting) y configuración (Bindings) .......................... 304 20.4.- Configuración del servicio ........................................................................................ 306 20.5.- Tipos de alojamiento de Servicios WCF y su implementación ...................... 308 21.- Implementación de Capa de Servicios WCF en Arquitectura N-Layer ................. 312 22.- Tipos de Objetos de Datos a Comunicar con Servicios WCF ................................ 314 23.- Código de Servicio WCF publicando lógica de Aplicación y Dominio .................. 317 vi Índice vii 23.1.- Desacoplamiento de objetos de capas internas de la Arquitectura, mediante UNITY ....................................................................................................................................... 317 23.2.- Gestión de Excepciones en Servicios WCF ........................................................ 319 24.- Referencias Globales DE WCF y Servicios.................................................................... 319 CAPA DE PRESENTACIÓN ....................................................................................... 321 1.- Situación en Arquitectura N-Capas .................................................................................... 321 2.- Necesidades de invertir en la interfaz de usuario ........................................................... 322 3.- Necesidad de arquitecturas en la capa de presentación ............................................... 324 3.1.- Acoplamiento entre capas ......................................................................................... 324 3.2.- Búsqueda de rendimiento. ......................................................................................... 325 3.3.- Pruebas unitarias .......................................................................................................... 325 4.- Patrones de Arquitectura en la capa de Presentación ................................................... 325 4.1.- Patrón MVC (Modelo Vista Controlador) ............................................................ 326 4.2.- Patrón MVP (Modelo Vista Presentador) .............................................................. 328 4.3.- Patrón MVVM (Model-View-ViewModel) ........................................................... 330 4.4.- Visión global de MVVM en la arquitectura orientada a dominios ................... 332 4.5.- Patrones de diseño utilizados en MVVM ............................................................... 333 4.5.1.- El patrón Comandos (Command) ................................................................... 333 4.5.2.- El patrón Observador (Observer) .................................................................. 335 5.- Implementación de Capa DE Presentación ....................................................................... 337 5.1.- Arquetipos, Tecnologías UX y Patrones de Diseño relacionados .................. 340 5.2.- Implementación de Patrón MVVM con WPF 4.0 ................................................. 341 5.2.1.- Justificación de MVVM ....................................................................................... 342 5.2.2.- Diseño con patrón Model-View-ViewModel (MVVM) .............................. 346 5.3.- Beneficios y Consecuencias del uso de MVVM .................................................... 352 CAPAS DE INFRAESTRUCTURA TRANSVERSAL ........................................................ 355 1.- Capas de Infraestructura Transversal ................................................................................. 355 2.- Situación de Infraestructura Transversal en la Arquitectura ........................................ 356 3.- Consideraciones Generales de Diseño .............................................................................. 357 4.- Aspectos Transversales .......................................................................................................... 358 4.1.- Seguridad en la aplicación: Autenticación y Autorización ................................. 359 4.1.1.- Autenticación ....................................................................................................... 359 4.1.2.- Autorización ......................................................................................................... 360 4.1.3.- Arquitectura de Seguridad basada en ‘Claims’............................................. 361 4.2.- Cache .............................................................................................................................. 367 4.3.- Gestión de Configuración .......................................................................................... 368 4.4.- Gestión de Excepciones ............................................................................................. 369 4.5.- Registro/Logging y Auditorías ................................................................................... 370 4.6.- Instrumentalización ...................................................................................................... 371 4.7.- Gestión de Estados ...................................................................................................... 371 4.8.- Validación ....................................................................................................................... 372 5.- Implementación en .NET de Aspectos Transversales .................................................... 373 5.1.- Implementación en .NET de Seguridad basada en ‘Claims’............................... 373 5.1.1.- STS y ADFS 2.0 .................................................................................................... 373 5.1.2.- Pasos para implementar ‘Orientación a Claims’ con WIF ........................ 376 5.1.3.- Beneficios de la ‘Orientación a Claims’, WIF y ADFS 2.0 ........................ 378 viii Guía de Arquitectura N-Capas orientada al Dominio con .NET 4.0 (Beta) 5.2.- Implementación de Cache en plataforma .NET ................................................... 379 5.2.1.- Implementación de Cache-Servidor con Microsoft AppFabric-Cache .... 379 5.2.2.- Implementación de Cache en Nivel Cliente de Aplicaciones N-Tier (Rich-Client y RIA) ............................................................................................................ 385 5.3.- Implementación de Logging/Registro ...................................................................... 386 5.4.- Implementación de Validación .................................................................................. 386 ARQUETIPOS DE APLICACIÓN ................................................................................ 387 1.- Arquetipo ‘Aplicación Web’ ................................................................................................. 389 2.- Arquetipo ‘Aplicaciones RIA’ ................................................................................................ 391 3.- Arquetipo ‘Aplicación rica de escritorio’ (Rich Client) ................................................. 393 4.- Arquetipo Servicio Distribuido - SOA ............................................................................... 395 5.- Arquetipo Aplicaciones Móviles .......................................................................................... 398 6.- Arquetipo ‘Aplicaciones Cloud Computing ’ .................................................................... 400 7.- Arquetipo Aplicaciones OBA (Office Business Applications) ...................................... 404 8.- Arquetipo ‘Aplicación de negocio basada en Sharepoint’ ............................................. 407 EL PROCESO DE DISEÑO DE LA ARQUITECTURA .................................................... 411 1.- Identificar los objetivos de la iteración .............................................................................. 413 2.- Seleccionar los casos de uso arquitecturalmente importantes .................................... 413 3.- Realizar un esquema del sistema ......................................................................................... 414 4.- Identificar los principales riesgos y definir una solución .............................................. 419 5.- Crear Arquitecturas Candidatas .......................................................................................... 420 viii Arquitectura Marco .NET Microsoft Ibérica 1.- INTRODUCCIÓN Microsoft Ibérica ha detectado en diversos clientes la necesidad de disponer de una “Guía de Arquitectura base .NET” en español, que sirva para marcar unas líneas maestras de diseño e implementación a la hora de desarrollar aplicaciones .NET complejas. Este marco de trabajo común (en muchas empresas denominado “Libro Blanco”) define un camino para diseñar e implementar aplicaciones empresariales de envergadura, con un volumen importante de lógica de negocio. Seguir estas guías ofrece importantes beneficios en cuanto a calidad, estabilidad y especialmente un incremento en la facilidad del mantenimiento futuro de las aplicaciones, debido al desacoplamiento entre sus componentes, así como por la homogeneidad y similitudes de los diferentes desarrollos. Microsoft Ibérica define el presente „Libro de Arquitectura Marco‟ como patrón y modelo base, sin embargo, en ningún caso este marco debe ser inalterable. Al contrario, se trata del primer peldaño de una escalera, un acelerador inicial, que debería ser personalizado y modificado por cada organización que lo adopte, enfocándolo hacia necesidades concretas, adaptándolo y agregándole funcionalidad específica según el mercado objetivo, etc. 1.1.- Audiencia del documento Este documento está dirigido a las personas involucradas en todo el ciclo de vida de productos software o de aplicaciones corporativas desarrolladas a medida. Especialmente los siguientes perfiles:  Arquitecto de Software  Desarrollador 1.2.- Objetivos de la Arquitectura marco .NET Este documento pretende describir una arquitectura marco sobre la que desarrollar las aplicaciones a medida y establece un conjunto de normas, mejores prácticas y guías de desarrollo para utilizar .NET de forma adecuada y sobre todo homogénea en las diferentes implementaciones de aplicaciones. 1

Description:
Guía de Arquitectura N-Capas orientada al Dominio con .NET. 4.0. (Beta). César de la Torre .. Arquitectura y Diseño lógico de la Capa de Persistencia de Datos 1 .. 102. 2.1. 292. 19.2.- Tecnología ASMX (Servicios Web ASP.NET) 325. 4.1.- Patrón MVC (Modelo Vista Controlador) .
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.