fundamental: desarrollo en capas david jirón arquitecto.net [email protected] juan...

44
Fundamental: Fundamental: Desarrollo en Capas Desarrollo en Capas David Jirón David Jirón Arquitecto .NET Arquitecto .NET Soluziona Soluziona [email protected] [email protected] ona.com ona.com Juan Pablo García Juan Pablo García Developer Manager Developer Manager DATCO Chile DATCO Chile [email protected] [email protected]

Upload: rico-ovando

Post on 16-Feb-2015

3 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Fundamental:Fundamental:Desarrollo en CapasDesarrollo en Capas

David JirónDavid JirónArquitecto .NETArquitecto [email protected]@cl.soluziona.comcom

Juan Pablo GarcíaJuan Pablo GarcíaDeveloper ManagerDeveloper ManagerDATCO ChileDATCO [email protected]@datco.cl

Page 2: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Temas a tratar hoyTemas a tratar hoy

¿Por qué desarrollo en capas?¿Por qué desarrollo en capas?Diseño en CapasDiseño en CapasEntidades y mensajesEntidades y mensajesAspectos transversalesAspectos transversalesDesafíos de los sistemas en capasDesafíos de los sistemas en capasDemos HOW TODemos HOW TO

Page 3: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

¿Por qué?¿Por qué?

No está basado en Requerimientos No está basado en Requerimientos Funcionales Funcionales

¿Es de mayor rendimiento? No ¿Es de mayor rendimiento? No necesariamente…necesariamente…

¿Es mas rápido de implementar? No ¿Es mas rápido de implementar? No necesariamente…necesariamente…

¿Es mas fácil? No necesariamente…¿Es mas fácil? No necesariamente…

¿Entonces?¿Entonces?

Page 4: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

¿Entonces?¿Entonces?

VentajasVentajasMantenibilidadMantenibilidad

Provee una Organización Lógica de Provee una Organización Lógica de Aplicación y DesarrolloAplicación y Desarrollo

EscalabilidadEscalabilidadPermite distribuir aplicación – cada capa Permite distribuir aplicación – cada capa puede residir en un computador distintopuede residir en un computador distinto

Agregar máquinas mejora rendimientoAgregar máquinas mejora rendimiento

SeguridadSeguridadPermite aislar componentesPermite aislar componentes

Alta DisponiblidadAlta DisponiblidadPermite tener componentes redundantesPermite tener componentes redundantes

Soporta multiples plataformasSoporta multiples plataformas

Page 5: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

UI Components

UI Process Components

Data Access Components

User Devices

Service Agents

Op

eration

al Man

agem

ent

Secu

rity

Co

mm

un

ication

Service Interfaces

Owned Data Sources

External Services

External Service Agents

Messaging Infrastructure

Business Process Components

Business Components

Business Entities

Users

Presentation

BusinessLogic

DataLayer

Data andExternalSystems

Diseño en capasDiseño en capas

Page 6: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

Capa de PresentaciónCapa de PresentaciónComponentes de interfaz de usuarioComponentes de interfaz de usuario

Componentes de proceso de usuarioComponentes de proceso de usuario

UI Components

UI Process ComponentsPresentation

UI Components

UI Process Components

Data Access Components

User Devices

Service Agents

Op

era

tion

al M

an

ag

em

en

t

Se

cu

rity

Co

mm

un

ica

tion

Service Interfaces

Owned Data Sources

External Services

External Service Agents

Messaging Infrastructure

Business Process Components

Business Components

Business Entities

Users

Presentation

BusinessLogic

DataLayer

Data andExternalSystems

Page 7: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

PresentaciónPresentaciónIndependiente de implementación del Independiente de implementación del Resto de AplicaciónResto de Aplicación

ASP.NET, Windows Forms, Mobile, FLEX, ASP.NET, Windows Forms, Mobile, FLEX,

Envía y recibe Recibe Componentes de Envía y recibe Recibe Componentes de Entidades de Negocio (objetos, Entidades de Negocio (objetos, DataSets, XML).DataSets, XML).

Ej. DataGrid.DataSource = dataSet;Ej. DataGrid.DataSource = dataSet;

Ej. Repeater.DataSource = arrayUsuarios;Ej. Repeater.DataSource = arrayUsuarios;

Page 8: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

PresentaciónPresentaciónComponentes de Presentación: Componentes de Presentación:

No inician, participan, ni votan en No inician, participan, ni votan en transacciones transacciones Obtienen una referencia al proceso actual Obtienen una referencia al proceso actual del usuario si necesitan desplegar su data o del usuario si necesitan desplegar su data o actuar en su estado. actuar en su estado. Pueden encapsular tanto la funcionalidades Pueden encapsular tanto la funcionalidades de visualización como de controlador de visualización como de controlador

ProcesoProcesoPatrones de PresentaciónPatrones de Presentación

MVCMVC

Flujo de PresentaciónFlujo de PresentaciónBEA PageFlowBEA PageFlowMS UIP Application BlockMS UIP Application Block

Page 9: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

UI Components

UI Process Components

Data Access Components

User Devices

Service Agents

Op

era

tion

al M

an

ag

em

en

t

Se

cu

rity

Co

mm

un

ica

tion

Service Interfaces

Owned Data Sources

External Services

External Service Agents

Messaging Infrastructure

Business Process Components

Business Components

Business Entities

Users

Presentation

BusinessLogic

DataLayer

Data andExternalSystems

Diseño en capasDiseño en capas

Capa de NegocioCapa de NegocioInterfaces de servicioInterfaces de servicio

Componentes de procesos de negocioComponentes de procesos de negocio

Componentes de negocioComponentes de negocio

Service Interfaces

Business Process Components

Business Components

Page 10: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

Capa de NegociosCapa de NegociosComponentes de NegocioComponentes de Negocio

Proveen lógica de negocio o encapsulan Proveen lógica de negocio o encapsulan otras lógicas de negociootras lógicas de negocio

Son invocados por la capa de presentación, Son invocados por la capa de presentación, interfaz de servicio, u otro proceso de interfaz de servicio, u otro proceso de negocio, usualmente en conjunto con alguna negocio, usualmente en conjunto con alguna data de negocio para operar (estructura o data de negocio para operar (estructura o documento) documento)

Page 11: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño de capasDiseño de capas

Capa de NegociosCapa de NegociosComponentes de NegocioComponentes de Negocio

Son la raíz de las transacciones, y votan en Son la raíz de las transacciones, y votan en las transacciones donde participan las transacciones donde participan

Validan parámetros de entrada y salida Validan parámetros de entrada y salida

Exponen operaciones de compensación Exponen operaciones de compensación

Pueden llamarPueden llamarDALC para obtener o actualizar data DALC para obtener o actualizar data

Servicios externos a través de agentes de Servicios externos a través de agentes de servicios. servicios.

Otros componentes de negocio e iniciar workflows Otros componentes de negocio e iniciar workflows de negocio. de negocio.

Pueden levantar excepciones hacia el Pueden levantar excepciones hacia el llamador si existe un problema con las llamador si existe un problema con las transacciones atómicas transacciones atómicas

Page 12: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

Capa de NegociosCapa de NegociosComponentes de NegocioComponentes de Negocio

RecomendacionesRecomendacionesUsar comunicaciones basadas en mensajes cuando sea Usar comunicaciones basadas en mensajes cuando sea posible posible

Idempotent – aplicación no queda incosistente si el Idempotent – aplicación no queda incosistente si el mismo mensaje es recibido dos veces mismo mensaje es recibido dos veces

Escoger cuidadosamente los comienzos y finales de las Escoger cuidadosamente los comienzos y finales de las transacciones (atómicas o long-running) para permitir re-transacciones (atómicas o long-running) para permitir re-intentos y composición.intentos y composición.

Componentes deberían poder correr en un contexto Componentes deberían poder correr en un contexto independiente del usuario – si necesariamente independiente del usuario – si necesariamente impersonar al usuario actual. Esto permite usarlos sin impersonar al usuario actual. Esto permite usarlos sin tener que transmitir o delegar la identidad. tener que transmitir o delegar la identidad.

Escojer y utilizar en forma consistente los formatos de Escojer y utilizar en forma consistente los formatos de datos (XML, DataSet, etc) como parámetros o retornos. datos (XML, DataSet, etc) como parámetros o retornos.

Colocar el nivel de aislamiento de las transacciones Colocar el nivel de aislamiento de las transacciones (transaction isolation level) apropiadamente.(transaction isolation level) apropiadamente.

Exponer Interfaces en lugar de objetosExponer Interfaces en lugar de objetos

Page 13: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

Capa de NegociosCapa de NegociosInterfaces de ServicioInterfaces de Servicio

Punto de Entrada paraPunto de Entrada para

abstraer implementaciones internasabstraer implementaciones internas

FacadeFacade

Frontera de Confianza (Trust Boundary)Frontera de Confianza (Trust Boundary)

No debiera cambiar cuando implementación No debiera cambiar cuando implementación de Componente de Negocio cambiade Componente de Negocio cambia

Pueden existir distintas interfaces para Pueden existir distintas interfaces para misma funcionalidad de negociomisma funcionalidad de negocio

Necesidad de interoperabilidad y Necesidad de interoperabilidad y rendimiento influye en diseño de Interfaz de rendimiento influye en diseño de Interfaz de Negocio (ej. Web Services vs Llamada Negocio (ej. Web Services vs Llamada directa) directa)

Page 14: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en CapasDiseño en Capas

Capa de NegocioCapa de NegocioComponente de Proceso deComponente de Proceso deNegocioNegocio

Utilizar Integrador (ej. BizTalk) Utilizar Integrador (ej. BizTalk) Maneja procesos que involucranManeja procesos que involucranmúltiples pasos y transacciones largas múltiples pasos y transacciones largas Expone una interfaz que implementa un proceso que Expone una interfaz que implementa un proceso que permite a aplicación conversar con otro servicio permite a aplicación conversar con otro servicio Requieren mapas o manipulación extensiva de formatos Requieren mapas o manipulación extensiva de formatos

Utilizar solo componentes: Utilizar solo componentes: No necesita mantener estado conversacional mas allá de No necesita mantener estado conversacional mas allá de la actual actividad de negocio y la funcionalidad puede la actual actividad de negocio y la funcionalidad puede ser implementada como una transacción atómica única. ser implementada como una transacción atómica única. Necesita encapsular funcionalidad y lógica reutilizable Necesita encapsular funcionalidad y lógica reutilizable por muchos procesos por muchos procesos Lógica es intensiva o necesita llamar a APIs y estructuras Lógica es intensiva o necesita llamar a APIs y estructuras Necesita control fino sobre flujo de datos y lógica Necesita control fino sobre flujo de datos y lógica

Page 15: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

UI Components

UI Process Components

Data Access Components

User Devices

Service Agents

Op

era

tion

al M

an

ag

em

en

t

Se

cu

rity

Co

mm

un

ica

tion

Service Interfaces

Owned Data Sources

External Services

External Service Agents

Messaging Infrastructure

Business Process Components

Business Components

Business Entities

Users

Presentation

BusinessLogic

DataLayer

Data andExternalSystems

Diseño en capasDiseño en capas

Capa de datosCapa de datosEntidades de negocioEntidades de negocio

Componentes de acceso a datosComponentes de acceso a datos

Data Access Components

Business EntitiesDataLayer

Page 16: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

Capa de Capa de datosdatos

Entidades de Entidades de negocionegocio

ComponenteComponentes de acceso s de acceso a datosa datos

Page 17: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

Capa de datosCapa de datosComponentes de acceso a datosComponentes de acceso a datos (DALC o DAC)(DALC o DAC)

Proveen los métodos CRUD:Proveen los métodos CRUD:CREATE, READ UPDATE and DELETECREATE, READ UPDATE and DELETE

Proveen método específicos para el motor de Proveen método específicos para el motor de datos.datos.

Encapsulan la complejidad del modelo de Encapsulan la complejidad del modelo de datos.datos.

Estas son clases sin estado (STATELESS Estas son clases sin estado (STATELESS CLASS).CLASS).

Típicamente invocan procedimientos Típicamente invocan procedimientos almacenados.almacenados.

Data Access Components

Business EntitiesDataLayer

Data Access Components

Business EntitiesDataLayer

Page 18: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

Capa de datosCapa de datosComponentes de acceso a datosComponentes de acceso a datos (DALC o DAC)(DALC o DAC)

Maneja los detalles de implementación de:Maneja los detalles de implementación de:Encapsula y administra los esquemas de bloqueosEncapsula y administra los esquemas de bloqueosManeja la seguridad y autorizaciónManeja la seguridad y autorizaciónManeja los aspectos transaccionales.Maneja los aspectos transaccionales.Realiza la paginación.Realiza la paginación.Implementa la estrategia de cacheImplementa la estrategia de cacheRealiza la serialización de los datos.Realiza la serialización de los datos.

Si se tienen varios DALC, use un HELPERSi se tienen varios DALC, use un HELPERPara generalizar funciones comunes, use Para generalizar funciones comunes, use herencia.herencia.Para soportar diversos procesos de negocio Para soportar diversos procesos de negocio considere usar como argumentos de los considere usar como argumentos de los métodos del DALC entidades de negociométodos del DALC entidades de negocio

Data Access Components

Business EntitiesDataLayer

Data Access Components

Business EntitiesDataLayer

Page 19: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

Capa de datosCapa de datosEntidades de negocioEntidades de negocio

Proveen acceso programático con estados a Proveen acceso programático con estados a los datos del sistema.los datos del sistema.

Son usados como argumentos de los Son usados como argumentos de los procesos de negocio.procesos de negocio.

Son serializables.Son serializables.

No acceden directamente a la base de datosNo acceden directamente a la base de datos

No manejan transacciones, eso lo hacen los No manejan transacciones, eso lo hacen los procesos de negocio.procesos de negocio.

Data Access Components

Business EntitiesDataLayer

Data Access Components

Business EntitiesDataLayer

Page 20: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

Capa de datosCapa de datosEntidades de negocioEntidades de negocio

Pueden ser representadas como:Pueden ser representadas como:XMLXML

Dataset genéricos.Dataset genéricos.

Dataset fuertemente tipiadosDataset fuertemente tipiados

Componentes propiosComponentes propios

Componentes propios con responsabilidades de Componentes propios con responsabilidades de CRUDCRUD

Data Access Components

Business EntitiesDataLayer

Data Access Components

Business EntitiesDataLayer

Page 21: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

Capa de datosCapa de datosDatos Relacionales a Entidades de Datos Relacionales a Entidades de negocio negocio

Identificar las entidades centrales que Identificar las entidades centrales que encapsulan la funcionalidad de la aplicación.encapsulan la funcionalidad de la aplicación.Para cada entidad implemente un DALC.Para cada entidad implemente un DALC.Recomendaciones:Recomendaciones:

No defina entidades separadas para representar No defina entidades separadas para representar las relaciones de tablas MANY-TO-MANY, eso es las relaciones de tablas MANY-TO-MANY, eso es mejor con métodos del DALC.mejor con métodos del DALC.Los métodos que Los métodos que retornanretornan un tipo en particular de un tipo en particular de entidad de negocio, impleméntelos en el DALC.entidad de negocio, impleméntelos en el DALC.Para cada fuente de datos use un DALC diferente y Para cada fuente de datos use un DALC diferente y llámelos desde el BPM hace la agregación.llámelos desde el BPM hace la agregación.

El control transaccional queda centralizadoEl control transaccional queda centralizadoGranularidad de la agregación (cero hasta 100%)Granularidad de la agregación (cero hasta 100%)

Data Access Components

Business EntitiesDataLayer

Data Access Components

Business EntitiesDataLayer

Page 22: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

Capa de datosCapa de datosDatos Relacionales a Entidades de Datos Relacionales a Entidades de negocio negocio

Data Access Components

Business EntitiesDataLayer

Data Access Components

Business EntitiesDataLayer

Page 23: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

DEMODEMO

HOW TO: Representar EntidadesHOW TO: Representar Entidades

Page 24: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

Aspectos transversalesAspectos transversalesSeguridadSeguridad

ComunicacionesComunicaciones

Administración y operacionesAdministración y operaciones

Op

eration

al Man

agem

ent

Secu

rity

Co

mm

un

ication

UI Components

UI Process Components

Data Access Components

User Devices

Service Agents

Op

era

tion

al M

an

ag

em

en

t

Se

cu

rity

Co

mm

un

ica

tion

Service Interfaces

Owned Data Sources

External Services

External Service Agents

Messaging Infrastructure

Business Process Components

Business Components

Business Entities

Users

Presentation

BusinessLogic

DataLayer

Data andExternalSystems

Page 25: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

Aspectos transversales SeguridadAspectos transversales Seguridad

Op

eratio

na

l Ma

nag

emen

t

Secu

rity

Co

mm

un

ication

Op

eratio

na

l Ma

nag

emen

t

Secu

rity

Co

mm

un

ication

Page 26: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

SeguridadSeguridadAutenticaciónAutenticación

Windows Authentication / Forms Windows Authentication / Forms AuthenticationAuthentication

Credenciales (nombre/password, smartcards, Credenciales (nombre/password, smartcards, llaves, etc)llaves, etc)

Flujo de Identidad por las CapasFlujo de Identidad por las Capas

Page 27: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño de capasDiseño de capas

SeguridadSeguridadAutenticaciónAutenticación

Flujo de IdentidadFlujo de IdentidadDelegaciónDelegación

Trusted SubsystemTrusted Subsystem<identity impersonate="false" /> <identity impersonate="false" />

Page 28: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

AutorizaciónAutorizaciónAccess Control List (ACLs)Access Control List (ACLs)Autorización Capa PresentaciónAutorización Capa Presentación

ASP URL AuthenticationASP URL Authentication<authorization><authorization>      <allow users="DomainName\Bob" /><allow users="DomainName\Bob" />      <deny users="*" /><deny users="*" /></authorization> </authorization>

.NET Role-Based Security .NET Role-Based Security if(userPrincipal.IsInRole(“Managers"))if(userPrincipal.IsInRole(“Managers"))

                  Operacion();Operacion();

oo

[PrincipalPermission(SecurityAction.Demand, [PrincipalPermission(SecurityAction.Demand, role="Managers")]role="Managers")]

public void Operacion(…)public void Operacion(…){{// … // … }}

Page 29: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

SeguridadSeguridadSeguridad de ComunicaciónSeguridad de Comunicación

Establecer que la data que pase entre capas Establecer que la data que pase entre capas está seguraestá segura

Securitizar el mensajeSecuritizar el mensajeFirmar el mensajeFirmar el mensaje

Encriptar el mensajeEncriptar el mensaje

Encriptar parte sensible del mensajeEncriptar parte sensible del mensaje

Securitizar el canalSecuritizar el canalSSL, IPSec, VPNsSSL, IPSec, VPNs

Page 30: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

SeguridadSeguridadAuditoríaAuditoría

Presentación – logon/logoff, cambios de Presentación – logon/logoff, cambios de password, etcpassword, etc

Negocio – actividades, transaccionesNegocio – actividades, transacciones

Datos – actividades, transaccionesDatos – actividades, transacciones

Intercepción de mensajesIntercepción de mensajes

Almacenaje seguroAlmacenaje seguro

Manejo de PerfilesManejo de PerfilesBase de Datos o DirectorioBase de Datos o Directorio

AzManAzMan

Page 31: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

Aspectos transversales Aspectos transversales AdministraciónAdministración

Op

eratio

na

l Ma

nag

emen

t

Secu

rity

Co

mm

un

ication

Op

eratio

na

l Ma

nag

emen

t

Secu

rity

Co

mm

un

ication

Page 32: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño de capasDiseño de capas

Manejo de ExcepcionesManejo de ExcepcionesSon excepcionales!Son excepcionales!Lanzando y Atrapando ExcepcionesLanzando y Atrapando ExcepcionesDiseño y Comportamiento de Diseño y Comportamiento de ExcepcionesExcepciones

PresentaciónPresentaciónReintentar, Exponer, o continuarReintentar, Exponer, o continuar

NegociosNegociosExcepciones de Negocio, Excepciones Técnicas – Excepciones de Negocio, Excepciones Técnicas – PropagarPropagarViolaciones de Validaciones, data insuficiente – Violaciones de Validaciones, data insuficiente – GenerarGenerarEn general, propagarEn general, propagar

DataDataRAISERROR de SQLRAISERROR de SQLMapear a Exception apropiada - PropagarMapear a Exception apropiada - Propagar

Page 33: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Diseño en capasDiseño en capas

Aspectos transversales Aspectos transversales ComunicacionesComunicaciones

Op

eratio

na

l Ma

nag

emen

t

Secu

rity

Co

mm

un

ication

Op

eratio

na

l Ma

nag

emen

t

Secu

rity

Co

mm

un

ication

Page 34: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Desafíos del diseño en Desafíos del diseño en CapasCapas

Mover Datos entre las capasMover Datos entre las capasNo existe una técnica universal, No existe una técnica universal, depende de la aplicación.depende de la aplicación.

Algunas recomendaciones:Algunas recomendaciones:Si es necesario poder ordenar, buscar y Si es necesario poder ordenar, buscar y hacer “Binding” es recomendable usar hacer “Binding” es recomendable usar DATASETDATASET

Si la aplicación trabaja principalmente con Si la aplicación trabaja principalmente con instancias de datos (no colecciones) use instancias de datos (no colecciones) use objetos entidades de negocio, para evitar el objetos entidades de negocio, para evitar el overhead de los DATASET.overhead de los DATASET.

El uso de XML es la mejor opción para El uso de XML es la mejor opción para interoperar, pero tiene costos asociados a la interoperar, pero tiene costos asociados a la validación de esquemas y serialización.validación de esquemas y serialización.

Page 35: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Desafíos del diseño en Desafíos del diseño en CapasCapas

Concurrencia y BloqueosConcurrencia y BloqueosAproximación “Last in Wins”Aproximación “Last in Wins”

Aproximación de ConcurrenciaAproximación de ConcurrenciaConcurrencia pesimista:Concurrencia pesimista:

El usuario que lee el registro con intención de El usuario que lee el registro con intención de actualizarlo lo bloquea hasta terminar su uso.actualizarlo lo bloquea hasta terminar su uso.

Concurrencia optimista:Concurrencia optimista:El usuario no bloquea el registro, al momento de El usuario no bloquea el registro, al momento de actualizarlo valida que no cambió desde que lo actualizarlo valida que no cambió desde que lo leyó. Si ha cambiado se genera una excepción.leyó. Si ha cambiado se genera una excepción.

Page 36: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Desafíos del diseño en Desafíos del diseño en CapasCapas

TransaccionesTransaccionesTípicamente iniciadas por el BPTípicamente iniciadas por el BP

ManualesManualesADO.NET y SQL.ADO.NET y SQL.

Usted escribe el código de control.Usted escribe el código de control.

Son las más rápidas.Son las más rápidas.

Simple para un solo origen de datosSimple para un solo origen de datos

AutomáticasAutomáticasUsan Enterprise Services (COM+)Usan Enterprise Services (COM+)

Funcionan con DTC.Funcionan con DTC.

Para múltiples orígenes de datos.Para múltiples orígenes de datos.

Page 37: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Desafíos del diseño en Desafíos del diseño en CapasCapas

TransaccionesTransaccionesNecesidad detransacción

BP llama alcomponente? ¿Se usa SP?NO Use ADO.NETNO

Use la DB

SI

¿Componentenecesita votar en la

TX?

SI

No implemente TXautomaticas

NO

Implemente TXque soporten

atributos

SI

Page 38: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

DEMODEMO

HOW TO: .NET TIERHOW TO: .NET TIER

Page 39: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Desafíos del diseño en Desafíos del diseño en CapasCapas

ValidacionesValidacionesPuede ser hecha en cualquier capa.Puede ser hecha en cualquier capa.

BP puede validar los documentos que BP puede validar los documentos que recibe usando esquemas XDS.recibe usando esquemas XDS.

DALC y los store procedure pueden DALC y los store procedure pueden hacer validaciones complejas de hacer validaciones complejas de negocio.negocio.

Existen dos aproximacionesExisten dos aproximacionesPOINT-IN-TIMEPOINT-IN-TIME

Validación continua.Validación continua.

Page 40: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

ConclusionesConclusiones

Es útil desarrollar en capas, aunque Es útil desarrollar en capas, aunque al principio sea más trabajo.al principio sea más trabajo.Diseñar toma su tiempo, hágalo.Diseñar toma su tiempo, hágalo.Si usa BP, todo se facilita. Por Si usa BP, todo se facilita. Por ejemplo exponer servicios en una ejemplo exponer servicios en una arquitectura SOA.arquitectura SOA.Si Entidades, todo se facilita. Por Si Entidades, todo se facilita. Por ejemplo intercambiar mensajes en ejemplo intercambiar mensajes en una arquitectura SOA.una arquitectura SOA.XML es una tecnología madura, use XML es una tecnología madura, use las herramientas disponibles.las herramientas disponibles.

Page 41: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

ReferenciasReferencias

Arquitectura de aplicaciones de .NET: Arquitectura de aplicaciones de .NET: Diseño de aplicaciones y serviciosDiseño de aplicaciones y servicios

http://www.microsoft.com/spanish/msdn/arquhttp://www.microsoft.com/spanish/msdn/arquitectura/das/guias/AppArchCh1.aspitectura/das/guias/AppArchCh1.asp

Designing Data Tier Components and Designing Data Tier Components and Passing Data Through TiersPassing Data Through Tiers

http://msdn.microsoft.com/library/default.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/BOAGag.asp?url=/library/en-us/dnbda/html/BOAGag.asp

.NET Data Access Architecture Guide.NET Data Access Architecture Guidehttp://msdn.microsoft.com/library/default.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daag.asp?url=/library/en-us/dnbda/html/daag.asp

3-tier architecture in C# By 3-tier architecture in C# By RahmanRahman MahmoodiMahmoodi httphttp://://www.codeproject.comwww.codeproject.com//csharpcsharp//three_tier_architecture.aspthree_tier_architecture.asp

Page 42: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

© 2006 Microsoft Corporation. © 2006 Microsoft Corporation. Todos los derechos reservadosTodos los derechos reservados

Muchas gracias por su participaciónMuchas gracias por su participación

Page 43: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Desarrollador 5 EstrellasDesarrollador 5 EstrellasCaracterísticas:Características:

¿Qué es?¿Qué es?Un conjunto de herramientas que te permite Un conjunto de herramientas que te permite incrementar tus conocimientos y habilidades en la incrementar tus conocimientos y habilidades en la tecnología .NETtecnología .NET

¿En qué consiste?¿En qué consiste?Cursos GratuitosCursos GratuitosCapacitación en líneaCapacitación en líneaExámenes de evaluaciónExámenes de evaluaciónReconocimiento del mercadoReconocimiento del mercado

¿Para quién es?¿Para quién es?Desarrolladores profesionalesDesarrolladores profesionalesEstudiantes universitariosEstudiantes universitarios

¿Dónde comenzar?¿Dónde comenzar?www.microsoft.com/spanish/msdn/comunidad/dce/www.microsoft.com/spanish/msdn/comunidad/dce/

Page 44: Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Soluzionadjiron@cl.soluziona.com Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl

Suscripciones MSDNSuscripciones MSDN

Acceso a Productos Microsoft (limitadas o Acceso a Productos Microsoft (limitadas o perpetuas) y garantía tecnológica por 2 años.perpetuas) y garantía tecnológica por 2 años.

Downloads electrónicos de los productos el día Downloads electrónicos de los productos el día de su publicación.de su publicación.

Soporte técnico para Desarrolladores, Soporte técnico para Desarrolladores, garantizado por Microsoft, dentro de las 48 hs.garantizado por Microsoft, dentro de las 48 hs.

Acceso a información preferencial en el site Acceso a información preferencial en el site MSDN, invitación a eventos y seminarios, etc. MSDN, invitación a eventos y seminarios, etc.

Soporte para el uso de los recursos MSDN a Soporte para el uso de los recursos MSDN a través de Chat.través de Chat.

Línea exclusiva de ayuda para administrar la Línea exclusiva de ayuda para administrar la suscripción MSDN. suscripción MSDN.