Patrones: Cuándo y Por Patrones: Cuándo y Por qué utilizarlos en la qué utilizarlos en la implementación de implementación de arquitecturas corporativasarquitecturas corporativas
Eugenio Pace - Eugenio Pace - [email protected]@microsoft.com Product ManagerProduct Managerpatternspatterns & practices & practices
“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
AgendaAgenda
Qué es un patrón? Qué es un patrón?
EjemplosEjemplos
Organizando patronesOrganizando patrones
Patrones para construir una Patrones para construir una aplicacionaplicacion
More detailed look into MVCMore detailed look into MVC
Recursos disponiblesRecursos disponibles
Construyendo una casa Construyendo una casa …….…….
Guías de diseñoGuías de diseño PlanosPlanos
MaterialesMateriales
PatronesPatrones
ProcesoProcesoPersonasPersonas
TaxonomiaTaxonomia
Construyendo una casa Construyendo una casa …….…….
Guías de diseñoGuías de diseño PlanosPlanos
MaterialesMateriales
PatronesPatrones
ProcesoProcesoPersonasPersonas
TaxonomiaTaxonomia
PeoplePeople
TaxonomyTaxonomyTaxonomyTaxonomy
PeoplePeopleCimientos
Techos
Pisos
Paredes Electricidad
Canerias Calefaccion
EstructuraEstructuraCielorasoCieloraso
ZocalosZocalosCeramicaCeramicass
RebaRebarr
ConcreConcretete
Construyendo una casa Construyendo una casa …….…….
Guías de diseñoGuías de diseño PlanosPlanos
MaterialesMateriales
PatronesPatrones
ProcesoProcesoPersonasPersonas
TaxonomiaTaxonomia
Construyendo una casa Construyendo una casa …….…….
Guías de diseñoGuías de diseño PlanosPlanos
MaterialesMateriales
PatronesPatrones
ProcesoProcesoPersonasPersonas
TaxonomiaTaxonomia
Construyendo una casa Construyendo una casa …….…….
Guías de diseñoGuías de diseño PlanosPlanos
MaterialesMateriales
PatronesPatrones
ProcesoProcesoPersonasPersonas
TaxonomiaTaxonomia
Fir, #2 Fir, #2 2”x4”x8’ boards2”x4”x8’ boards412412
ASTMASTM4’x8’x ½” placas4’x8’x ½” placas12012020 psf load20 psf load48’ listones48’ listones2424NM 12-2NM 12-212” Cable12” Cable350’350’DWVDWV½ “ cano cobre½ “ cano cobre200’200’
SpecSpecDescripcionDescripcionCantCant
Lista de Materiales
Construyendo una casa Construyendo una casa …….…….
Guías de diseñoGuías de diseño PlanosPlanos
MaterialesMateriales
PatronesPatrones
ProcesoProcesoPersonasPersonas
TaxonomiaTaxonomia
Country
Tilt-up
DepartamentosPH
Stick Frame
Pre-hung doors
Truss Frame
Petit Hotel
Post and Beam
Pre-fab trusses Framing patterns
Patrones de cableados
Patrones
Construyendo una aplicación Construyendo una aplicación …….…….
TaxonomiaTaxonomia
Guias de diseñoGuias de diseño PlanosPlanos
ElementosElementos
PatronesPatrones
PersonasPersonasProcesoProceso
Construyendo una aplicación Construyendo una aplicación …….…….
TaxonomiaTaxonomia
Guias de diseñoGuias de diseño PlanosPlanos
ElementosElementos
PatronesPatrones
PersonasPersonasProcesoProceso
Construyendo una aplicacion Construyendo una aplicacion …….…….
TaxonomiaTaxonomia
Guias de diseñoGuias de diseño PlanosPlanos
ElementosElementos
PatronesPatrones
PersonasPersonasProcesoProceso
Guias
Local – dentro de la compañíaIndustria - principios
Construyendo una aplicación Construyendo una aplicación …….…….
TaxonomiaTaxonomia
Guias de diseñoGuias de diseño PlanosPlanos
ElementosElementos
PatronesPatrones
PersonasPersonasProcesoProceso
Construyendo una aplicación Construyendo una aplicación …….…….
TaxonomiaTaxonomia
Guias de diseñoGuias de diseño PlanosPlanos
ElementosElementos
PatronesPatrones
PersonasPersonasProcesoProceso
Elementos
Application Controller (Custom)Application Controller (Custom)11PAG Data Access ComponentPAG Data Access Component11Microsoft SQL ServerMicrosoft SQL Server11Microsoft Windows Server 2003Microsoft Windows Server 200333Microsoft ASP.NETMicrosoft ASP.NET11DescripciónDescripciónCant.Cant.
Construyendo una aplicación Construyendo una aplicación …….…….
TaxonomiaTaxonomia
Guias de diseñoGuias de diseño PlanosPlanos
ElementosElementos
PatronesPatrones
PersonasPersonasProcesoProceso
Aplicación en capas
BrokerObserver
Implementando Singleton con C#
Model-View-ControllerFacade
Implementando MVC con ASP.NET
Patrones
Distribución de componentes
Gateway
Qué es un patrón?Qué es un patrón?
Es una soluciónEs una solución
A un problema recurrenteA un problema recurrente
En un contexto dado En un contexto dado
Un patrón describe un problema frecuente que Un patrón describe un problema frecuente que ocurre en un contexto determinado y propone una ocurre en un contexto determinado y propone una
solución al mismosolución al mismo
Es “incompleto” por naturaleza Es “incompleto” por naturaleza
Por qué son importantes?Por qué son importantes?
No “reinventar la rueda”No “reinventar la rueda”
Mayor eficiencaMayor eficienca
Reduccion de riesgosReduccion de riesgos
SingletonSingleton
Contexto:Contexto:Controlar el acceso a una clase Controlar el acceso a una clase controlando su instanciacióncontrolando su instanciación
Problema:Problema:Ciertos tipos de datos necesitan ser Ciertos tipos de datos necesitan ser accedidos y mantenidos globalmente accedidos y mantenidos globalmente
Esta información es única a lo largo de Esta información es única a lo largo de todo el sistematodo el sistema
Ejemplo: un contadorEjemplo: un contador
SingletonSingleton
Solución: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 capasArquitectura en capas
Contexto:Contexto:Diseño de una aplicación de negocios Diseño de una aplicación de negocios compleja, con multiples componentes y compleja, con multiples componentes y numerosos niveles de abstracciónnumerosos niveles de abstracción
Problema:Problema:Como estructurar dicha solución para Como estructurar dicha solución para que cumpla con requerimientos de que cumpla con requerimientos de mantenibilidad, escalabilidad, seguridad mantenibilidad, escalabilidad, seguridad y reusabilidad demandados?y reusabilidad demandados?
Arquitectura en capasArquitectura en capas
UI Components
UI Process Components
Data Access Components
Business Workflows
Business Components
Users
Business Entities
Service Agents
Op
eration
al Man
agem
ent
Secu
rity
Co
mm
un
ication
Service Interfaces
Data Sources Services
Patrones y solucionesPatrones y soluciones
RequirimientosRequirimientos
Solución de ingeniería
Packaged Software
Custom Software Hardware
Patterns
Packaged Software
Custom Software Hardware
Organizando el Organizando el pensamientopensamiento
Organizando el Organizando el pensamientopensamiento
Organizando el Organizando el pensamientopensamiento
DiseñoDiseño
ArquitecturaArquitectura
ImplementaciónImplementación
Organizando el Organizando el pensamientopensamiento
DatosDatos Apl.Apl. DeployDeploy InfraestructuraInfraestructura
DiseñoDiseño
ArquitecturaArquitectura
ImplementaciónImplementación
ArquitecturaArquitectura
DiseñoDiseño
ImplementaciónImplementación
InfraestructuraInfraestructuraDeploymentDeploymentAplicaciónAplicaciónDatosDatos
PatronesPatrones
Patrones –Languaje de Patrones –Languaje de solucionessoluciones
Aplicación Aplicación en en
3 capas3 capas
Aplicación en Aplicación en capascapas
Aplicación Aplicación con capas con capas de serviciode servicio
ArquitecturaArquitectura
DiseñoDiseño
ImplementaciImplementaciónón
InfraestructuInfraestructurara
DeploymentDeploymentAplicaciónAplicaciónDatosDatos
Patrones –Languaje de Patrones –Languaje de solucionessoluciones
Aplicación Aplicación en en
3 capas3 capas
Aplicación en Aplicación en capascapas
Aplicación Aplicación con capas con capas de serviciode servicio
ArquitecturaArquitectura
DiseñoDiseño
ImplementaciImplementaciónón
InfraestructuInfraestructurara
DeploymentDeploymentAplicaciónAplicaciónDatosDatos
Patrones –Languaje de Patrones –Languaje de solucionessoluciones
4-Tier4-Tier3-3-nodosnodos
Distribución Distribución en n-nodosen n-nodos
Aplicación Aplicación en en
3 capas3 capas
Aplicacion en Aplicacion en capascapas
Aplicación Aplicación con capas con capas de serviciode servicio
ArquitecturaArquitectura
DiseñoDiseño
ImplementaciImplementaciónón
InfraestructuInfraestructurara
DeploymentDeploymentAplicaciónAplicaciónDatosDatos
Patrones –Languaje de Patrones –Languaje de solucionessoluciones
ThreeThreeLayeredLayered
ApplicationApplication
Layered Layered ApplicationApplication
Simple Simple WebWeb
Complex Complex WebWeb
Rich ClientRich Client
Ext. EnterpriseExt. Enterprise
4-Tier4-Tier3-Tier3-Tier
TieredTieredDistributionDistribution
LayeredLayeredServicesServices
ApplicationApplication
ArquitecturaArquitecturaAplicación InfraestructuraDeploymentDeployment
Tiered Distribution
• Escalabilidad• Disponibilidad• Performance• Seguridad
Discrete Logical Layers Data & Functional Analysis
• Flexibilidad • Administrabilidad• Bajo acoplamiento
Complex Web App
• Seguridad• Reuso de componentes• Administrabilidad• Performance
Complex Web App
• Seguridad• Reuso de componentes• Administrabilidad• Performance
D A D I
A
D
I
DiseñoDiseñoAplicación InfraestructuraDeploymentDeployment
• Clusters• Zonas• Policies • Protocolos• Enlaces
Diseño de clases:• Seguridad• Comunicaciones• Acceso a datos• Excepciones• Logging
Dependencias
Mapeo de Procesos a Procesadores
Dependencias
Mapeo de Procesos a Procesadores
D A D I
A
D
I
ImplementaciónImplementación
• Spec de Hardware y Configuración
• IP Addresses • Ports • Nombres de Servers &
Files
Implementación de Clases & Mecanismos
Product usage – eg: .NET Web Services
Dependencias de configuración
Distribución –Componentes, Maquinas, Files…
Dependencias de configuración
Distribución –Componentes, Maquinas, Files…
D A D I
A
D
I
Aplicación InfraestructuraDeploymentDeployment
ArquitecturaArquitectura
DiseñoDiseño
ImplementaciImplementaciónón
InfraestructuraInfraestructuraDeploymentDeploymentAplicaciónAplicaciónDatosDatos
Patrones - ClustersPatrones - Clusters
ArquitecturaArquitectura
DisenoDiseno
ImplementaciImplementacionon
InfraestructuraInfraestructuraDeploymentDeploymentAplicacionAplicacionDatosDatos
Patrones - ClustersPatrones - Clusters
ComponentesComponentes
ArquitecturaArquitectura
DisenoDiseno
ImplementaciImplementacionon
InfraestructuraInfraestructuraDeploymentDeploymentAplicacionAplicacionDatosDatos
Patrones - ClustersPatrones - Clusters
ComponentesComponentes
FrameworkFramework
de de presentacionpresentacion
ArquitecturaArquitectura
DiseñoDiseño
ImplementaciImplementaciónón
InfraestructuraInfraestructuraDeploymentDeploymentAplicaciónAplicaciónDatosDatos
Patrones - ClustersPatrones - Clusters
ComponentsComponents
PresentationPresentation
FrameworkFramework
SeguridadSeguridad
Arquitectura de base Arquitectura de base
ImplementaciónImplementación
InfraestructuraInfraestructura
Patrones de AplicacionPatrones de Aplicacion
Patrones de IntegraciónPatrones de Integración
Recursos adicionalesRecursos adicionales
Las guias de Patterns & practices, son Las guias de Patterns & practices, son la recomendacion de Microsoft a la recomendacion de Microsoft a arqitectos, desarrolldores, y arqitectos, desarrolldores, y profesinales de IT responsables por la profesinales de IT responsables por la produccion y operacion de soluciones produccion y operacion de soluciones corporativas con tecnologia Microsoftcorporativas con tecnologia Microsoft
http://msdn.microsoft.com/practiceshttp://msdn.microsoft.com/practices
Eugenio Pace email: Eugenio Pace email: [email protected]@microsoft.com
© 2004 Microsoft Corporation. All rights reserved. MICROSOFT CONFIDENTIAL. INTERNAL USE ONLY.© 2004 Microsoft Corporation. All rights reserved. MICROSOFT CONFIDENTIAL. INTERNAL USE ONLY.