“Un sistema complejo que funciona, casi siempre ha evolucionado a partir de un sistema simple que funciona. Un sistema complejo diseñado desde cero, casi nunca funciona y es imposible de arreglar. En esa situación, debe comenzarse de nuevo con un sistema simple que funciona” - John Gall en Systemantics: How Systems Really Work and How They Fail Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns & practices
Agenda Qué es un patrón? Ejemplos Organizando patrones Patrones para construir una aplicacion More detailed look into MVC Recursos disponibles
Construyendo una casa ……. Guías de diseño Planos Patrones Taxonomia Materiales Personas Proceso
Construyendo una casa ……. Guías de diseño Planos Taxonomy People Cimientos Techos Pisos Paredes Electricidad Canerias Calefaccion Estructura Cieloraso Zocalos Ceramicas Rebar Concrete Patrones Taxonomy Taxonomia Materiales Personas People Proceso
Construyendo una casa ……. Guías de diseño Planos Patrones Taxonomia Materiales Personas Proceso
Construyendo una casa ……. Guías de diseño Planos Patrones Taxonomia Materiales Personas Proceso
Construyendo una casa ……. Guías de diseño Planos Fir, #2 2”x4”x8’ boards 412 ASTM 4’x8’x ½” placas 120 20 psf load 48’ listones 24 NM 12-2 12” Cable 350’ DWV ½ “ cano cobre 200’ Spec Descripcion Cant Lista de Materiales Patrones Materiales Taxonomia Personas Proceso
Construyendo una casa ……. Country Tilt-up Departamentos PH Stick Frame Pre-hung doors Truss Frame Petit Hotel Post and Beam Pre-fab trusses Framing patterns Patrones de cableados Patrones Guías de diseño Planos Patrones Taxonomia Materiales Personas Proceso
Construyendo una aplicación ……. Guias de diseño Planos Patrones Taxonomia Elementos Personas Proceso
Construyendo una aplicación ……. Guias de diseño Planos Patrones Taxonomia Elementos Personas Proceso
Construyendo una aplicacion ……. Guias Guias de diseño Planos Local – dentro de la compañía Industria - principios Patrones Taxonomia Elementos Personas Proceso
Construyendo una aplicación ……. Guias de diseño Planos Patrones Taxonomia Elementos Personas Proceso
Construyendo una aplicación ……. Guias de diseño Planos Elementos Application Controller (Custom) 1 PAG Data Access Component Microsoft SQL Server Microsoft Windows Server 2003 3 Microsoft ASP.NET Descripción Cant. Patrones Taxonomia Elementos Personas Proceso
Construyendo una aplicación ……. Patrones Aplicación en capas Guias de diseño Planos Distribución de componentes Broker Model-View-Controller Patrones Observer Facade Gateway Taxonomia Elementos Implementando MVC con ASP.NET Personas Proceso Implementando Singleton con C#
Qué es un patrón? Es una solución A un problema recurrente En un contexto dado Un patrón describe un problema frecuente que ocurre en un contexto determinado y propone una solución al mismo Es “incompleto” por naturaleza
Por qué son importantes? No “reinventar la rueda” Mayor eficienca Reduccion de riesgos
Singleton Contexto: Problema: Controlar el acceso a una clase controlando su instanciación Problema: Ciertos tipos de datos necesitan ser accedidos y mantenidos globalmente Esta información es única a lo largo de todo el sistema Ejemplo: un contador
Singleton Solución: public class Counter { private static Counter _instance = null; private Counter() {} public static Counter getInstance() if (_instance==null) _instance = new Counter(); } return _instance; //... functions provided by Counter
Arquitectura en capas Contexto: Problema: Diseño de una aplicación de negocios compleja, con multiples componentes y numerosos niveles de abstracción Problema: Como estructurar dicha solución para que cumpla con requerimientos de mantenibilidad, escalabilidad, seguridad y reusabilidad demandados?
Data Access Components Arquitectura en capas Users Operational Management Security Communication UI Components UI Process Components Service Interfaces Business Workflows Business Components Business Entities Data Access Components Service Agents Data Sources Services
Solución de ingeniería Patrones y soluciones Requirimientos Packaged Software Custom Software Hardware Patterns Solución de ingeniería Packaged Software Custom Software Hardware
Organizando el pensamiento
Organizando el pensamiento
Organizando el pensamiento Arquitectura Diseño Implementación
Organizando el pensamiento Datos Apl. Deploy Infraestructura Arquitectura Diseño Implementación
Patrones Datos Aplicación Deployment Infraestructura Arquitectura Diseño Implementación
Patrones –Languaje de soluciones Aplicación en capas Aplicación en 3 capas Aplicación con capas de servicio
Patrones –Languaje de soluciones Datos Aplicación Deployment Infraestructura Aplicación en capas Arquitectura Diseño Implementación Aplicación en 3 capas Aplicación con capas de servicio
Patrones –Languaje de soluciones Datos Aplicación Deployment Infraestructura Aplicacion en capas Distribución en n-nodos Arquitectura Diseño Implementación Aplicación en 3 capas Aplicación con capas de servicio 3-nodos 4-Tier
Patrones –Languaje de soluciones Datos Aplicación Deployment Infraestructura Layered Application 4-Tier 3-Tier Tiered Distribution Arquitectura Diseño Implementación Three Layered Application Layered Services Application Simple Web Complex Web Rich Client Ext. Enterprise
Arquitectura Deployment Aplicación Infraestructura Complex Web App Seguridad Reuso de componentes Administrabilidad Performance Discrete Logical Layers Data & Functional Analysis Flexibilidad Administrabilidad Bajo acoplamiento Tiered Distribution Escalabilidad Disponibilidad Performance Seguridad
Diseño Deployment Aplicación Infraestructura Diseño de clases: Dependencias Mapeo de Procesos a Procesadores Diseño de clases: Seguridad Comunicaciones Acceso a datos Excepciones Logging Clusters Zonas Policies Protocolos Enlaces
Implementación Deployment Aplicación Infraestructura Dependencias de configuración Distribución – Componentes, Maquinas, Files… Implementación de Clases & Mecanismos Product usage – eg: .NET Web Services Spec de Hardware y Configuración IP Addresses Ports Nombres de Servers & Files
Patrones - Clusters Datos Arquitectura Diseño Implementación Aplicación Deployment Infraestructura Arquitectura Diseño Implementación
Patrones - Clusters Componentes Datos Arquitectura Diseno Aplicacion Deployment Infraestructura Arquitectura Diseno Implementacion Componentes
Patrones - Clusters Componentes Framework de presentacion Datos Aplicacion Deployment Infraestructura Arquitectura Diseno Implementacion Componentes Framework de presentacion
Patrones - Clusters Components Seguridad Presentation Framework Datos Aplicación Deployment Infraestructura Arquitectura Diseño Implementación Components Seguridad Presentation Framework
Arquitectura de base
Implementación
Infraestructura
Patrones de Aplicacion
Patrones de Integración
Recursos adicionales Las guias de Patterns & practices, son la recomendacion de Microsoft a arqitectos, desarrolldores, y profesinales de IT responsables por la produccion y operacion de soluciones corporativas con tecnologia Microsoft http://msdn.microsoft.com/practices Eugenio Pace email: eugeniop@microsoft.com
© 2004 Microsoft Corporation. All rights reserved © 2004 Microsoft Corporation. All rights reserved. MICROSOFT CONFIDENTIAL. INTERNAL USE ONLY.