Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio...

45
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 arquitecturas corporativas corporativas Eugenio Pace - Eugenio Pace - [email protected] [email protected] Product Manager Product Manager patterns patterns & 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

Transcript of Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio...

Page 1: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 2: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 3: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

Construyendo una casa Construyendo una casa …….…….

Guías de diseñoGuías de diseño PlanosPlanos

MaterialesMateriales

PatronesPatrones

ProcesoProcesoPersonasPersonas

TaxonomiaTaxonomia

Page 4: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 5: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

Construyendo una casa Construyendo una casa …….…….

Guías de diseñoGuías de diseño PlanosPlanos

MaterialesMateriales

PatronesPatrones

ProcesoProcesoPersonasPersonas

TaxonomiaTaxonomia

Page 6: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

Construyendo una casa Construyendo una casa …….…….

Guías de diseñoGuías de diseño PlanosPlanos

MaterialesMateriales

PatronesPatrones

ProcesoProcesoPersonasPersonas

TaxonomiaTaxonomia

Page 7: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 8: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 9: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

Construyendo una aplicación Construyendo una aplicación …….…….

TaxonomiaTaxonomia

Guias de diseñoGuias de diseño PlanosPlanos

ElementosElementos

PatronesPatrones

PersonasPersonasProcesoProceso

Page 10: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

Construyendo una aplicación Construyendo una aplicación …….…….

TaxonomiaTaxonomia

Guias de diseñoGuias de diseño PlanosPlanos

ElementosElementos

PatronesPatrones

PersonasPersonasProcesoProceso

Page 11: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 12: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

Construyendo una aplicación Construyendo una aplicación …….…….

TaxonomiaTaxonomia

Guias de diseñoGuias de diseño PlanosPlanos

ElementosElementos

PatronesPatrones

PersonasPersonasProcesoProceso

Page 13: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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.

Page 14: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 15: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 16: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

Por qué son importantes?Por qué son importantes?

No “reinventar la rueda”No “reinventar la rueda”

Mayor eficiencaMayor eficienca

Reduccion de riesgosReduccion de riesgos

Page 17: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 18: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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 }

Page 19: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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?

Page 20: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 21: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

Patrones y solucionesPatrones y soluciones

RequirimientosRequirimientos

Solución de ingeniería

Packaged Software

Custom Software Hardware

Patterns

Packaged Software

Custom Software Hardware

Page 22: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

Organizando el Organizando el pensamientopensamiento

Page 23: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

Organizando el Organizando el pensamientopensamiento

Page 24: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

Organizando el Organizando el pensamientopensamiento

DiseñoDiseño

ArquitecturaArquitectura

ImplementaciónImplementación

Page 25: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

Organizando el Organizando el pensamientopensamiento

DatosDatos Apl.Apl. DeployDeploy InfraestructuraInfraestructura

DiseñoDiseño

ArquitecturaArquitectura

ImplementaciónImplementación

Page 26: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

ArquitecturaArquitectura

DiseñoDiseño

ImplementaciónImplementación

InfraestructuraInfraestructuraDeploymentDeploymentAplicaciónAplicaciónDatosDatos

PatronesPatrones

Page 27: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 28: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 29: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 30: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 31: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 32: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 33: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 34: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

ArquitecturaArquitectura

DiseñoDiseño

ImplementaciImplementaciónón

InfraestructuraInfraestructuraDeploymentDeploymentAplicaciónAplicaciónDatosDatos

Patrones - ClustersPatrones - Clusters

Page 35: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

ArquitecturaArquitectura

DisenoDiseno

ImplementaciImplementacionon

InfraestructuraInfraestructuraDeploymentDeploymentAplicacionAplicacionDatosDatos

Patrones - ClustersPatrones - Clusters

ComponentesComponentes

Page 36: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

ArquitecturaArquitectura

DisenoDiseno

ImplementaciImplementacionon

InfraestructuraInfraestructuraDeploymentDeploymentAplicacionAplicacionDatosDatos

Patrones - ClustersPatrones - Clusters

ComponentesComponentes

FrameworkFramework

de de presentacionpresentacion

Page 37: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

ArquitecturaArquitectura

DiseñoDiseño

ImplementaciImplementaciónón

InfraestructuraInfraestructuraDeploymentDeploymentAplicaciónAplicaciónDatosDatos

Patrones - ClustersPatrones - Clusters

ComponentsComponents

PresentationPresentation

FrameworkFramework

SeguridadSeguridad

Page 38: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.
Page 39: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

Arquitectura de base Arquitectura de base

Page 40: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

ImplementaciónImplementación

Page 41: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

InfraestructuraInfraestructura

Page 42: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

Patrones de AplicacionPatrones de Aplicacion

Page 43: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

Patrones de IntegraciónPatrones de Integración

Page 44: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

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

Page 45: Patrones: Cuándo y Por qué utilizarlos en la implementación de arquitecturas corporativas Eugenio Pace - eugeniop@microsoft.com Product Manager patterns.

© 2004 Microsoft Corporation. All rights reserved. MICROSOFT CONFIDENTIAL. INTERNAL USE ONLY.© 2004 Microsoft Corporation. All rights reserved. MICROSOFT CONFIDENTIAL. INTERNAL USE ONLY.