La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Juan Pablo García Developer Manager DATCO Chile

Presentaciones similares


Presentación del tema: "Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Juan Pablo García Developer Manager DATCO Chile"— Transcripción de la presentación:

1 Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Juan Pablo García Developer Manager DATCO Chile

2 Temas a tratar hoy ¿Por qué desarrollo en capas? Diseño en Capas Entidades y mensajes Aspectos transversales Desafíos de los sistemas en capas Demos HOW TO

3 ¿Por qué? No está basado en Requerimientos Funcionales ¿Es de mayor rendimiento? No necesariamente… ¿Es mas rápido de implementar? No necesariamente… ¿Es mas fácil? No necesariamente… ¿Entonces?

4 ¿Entonces? VentajasMantenibilidad Provee una Organización Lógica de Aplicación y Desarrollo Escalabilidad Permite distribuir aplicación – cada capa puede residir en un computador distinto Agregar máquinas mejora rendimiento Seguridad Permite aislar componentes Alta Disponiblidad Permite tener componentes redundantes Soporta multiples plataformas

5 UI Components UI Process Components Data Access Components User Devices Service Agents Operational ManagementSecurityCommunication Service Interfaces Owned Data Sources External Services External Service Agents Messaging Infrastructure Business Process Components Business Components Business Entities Users Presentation Business Logic Data Layer Data and External Systems Diseño en capas

6 Capa de Presentación Componentes de interfaz de usuario Componentes de proceso de usuario UI Components UI Process Components Presentation

7 Diseño en capas Presentación Independiente de implementación del Resto de Aplicación ASP.NET, Windows Forms, Mobile, FLEX, Envía y recibe Recibe Componentes de Entidades de Negocio (objetos, DataSets, XML). Ej. DataGrid.DataSource = dataSet; Ej. Repeater.DataSource = arrayUsuarios;

8 Diseño en capas Presentación Componentes de Presentación: No inician, participan, ni votan en transacciones Obtienen una referencia al proceso actual del usuario si necesitan desplegar su data o actuar en su estado. Pueden encapsular tanto la funcionalidades de visualización como de controlador Proceso Patrones de Presentación MVC Flujo de Presentación BEA PageFlow MS UIP Application Block

9 Diseño en capas Capa de Negocio Interfaces de servicio Componentes de procesos de negocio Componentes de negocio Service Interfaces Business Process Components Business Components

10 Diseño en capas Capa de Negocios Componentes de Negocio Proveen lógica de negocio o encapsulan otras lógicas de negocio Son invocados por la capa de presentación, interfaz de servicio, u otro proceso de negocio, usualmente en conjunto con alguna data de negocio para operar (estructura o documento)

11 Diseño de capas Capa de Negocios Componentes de Negocio Son la raíz de las transacciones, y votan en las transacciones donde participan Validan parámetros de entrada y salida Exponen operaciones de compensación Pueden llamar DALC para obtener o actualizar data Servicios externos a través de agentes de servicios. Otros componentes de negocio e iniciar workflows de negocio. Pueden levantar excepciones hacia el llamador si existe un problema con las transacciones atómicas

12 Diseño en capas Capa de Negocios Componentes de Negocio Recomendaciones Usar comunicaciones basadas en mensajes cuando sea posible Idempotent – aplicación no queda incosistente si el mismo mensaje es recibido dos veces Escoger cuidadosamente los comienzos y finales de las transacciones (atómicas o long-running) para permitir re-intentos y composición. Componentes deberían poder correr en un contexto independiente del usuario – si necesariamente impersonar al usuario actual. Esto permite usarlos sin tener que transmitir o delegar la identidad. Escojer y utilizar en forma consistente los formatos de datos (XML, DataSet, etc) como parámetros o retornos. Colocar el nivel de aislamiento de las transacciones (transaction isolation level) apropiadamente. Exponer Interfaces en lugar de objetos

13 Diseño en capas Capa de Negocios Interfaces de Servicio Punto de Entrada para abstraer implementaciones internas Facade Frontera de Confianza (Trust Boundary) No debiera cambiar cuando implementación de Componente de Negocio cambia Pueden existir distintas interfaces para misma funcionalidad de negocio Necesidad de interoperabilidad y rendimiento influye en diseño de Interfaz de Negocio (ej. Web Services vs Llamada directa)

14 Diseño en Capas Capa de Negocio Componente de Proceso de Negocio Utilizar Integrador (ej. BizTalk) Maneja procesos que involucran múltiples pasos y transacciones largas Expone una interfaz que implementa un proceso que permite a aplicación conversar con otro servicio Requieren mapas o manipulación extensiva de formatos Utilizar solo componentes: No necesita mantener estado conversacional mas allá de la actual actividad de negocio y la funcionalidad puede ser implementada como una transacción atómica única. Necesita encapsular funcionalidad y lógica reutilizable por muchos procesos Lógica es intensiva o necesita llamar a APIs y estructuras Necesita control fino sobre flujo de datos y lógica

15 Diseño en capas Capa de datos Entidades de negocio Componentes de acceso a datos Data Access Components Business Entities Data Layer

16 Diseño en capas Capa de datos Entidades de negocio Componentes de acceso a datos

17 Diseño en capas Capa de datos Componentes de acceso a datos (DALC o DAC) Proveen los métodos CRUD: CREATE, READ UPDATE and DELETE Proveen método específicos para el motor de datos. Encapsulan la complejidad del modelo de datos. Estas son clases sin estado (STATELESS CLASS). Típicamente invocan procedimientos almacenados.

18 Diseño en capas Capa de datos Componentes de acceso a datos (DALC o DAC) Maneja los detalles de implementación de: Encapsula y administra los esquemas de bloqueos Maneja la seguridad y autorización Maneja los aspectos transaccionales. Realiza la paginación. Implementa la estrategia de cache Realiza la serialización de los datos. Si se tienen varios DALC, use un HELPER Para generalizar funciones comunes, use herencia. Para soportar diversos procesos de negocio considere usar como argumentos de los métodos del DALC entidades de negocio

19 Diseño en capas Capa de datos Entidades de negocio Proveen acceso programático con estados a los datos del sistema. Son usados como argumentos de los procesos de negocio. Son serializables. No acceden directamente a la base de datos No manejan transacciones, eso lo hacen los procesos de negocio.

20 Diseño en capas Capa de datos Entidades de negocio Pueden ser representadas como: XML Dataset genéricos. Dataset fuertemente tipiados Componentes propios Componentes propios con responsabilidades de CRUD

21 Diseño en capas Capa de datos Datos Relacionales a Entidades de negocio Identificar las entidades centrales que encapsulan la funcionalidad de la aplicación. Para cada entidad implemente un DALC. Recomendaciones: No defina entidades separadas para representar las relaciones de tablas MANY-TO-MANY, eso es mejor con métodos del DALC. Los métodos que retornan un tipo en particular de entidad de negocio, impleméntelos en el DALC. Para cada fuente de datos use un DALC diferente y llámelos desde el BPM hace la agregación. El control transaccional queda centralizado Granularidad de la agregación (cero hasta 100%)

22 Diseño en capas Capa de datos Datos Relacionales a Entidades de negocio

23 DEMO HOW TO: Representar Entidades

24 Diseño en capas Aspectos transversales SeguridadComunicaciones Administración y operaciones Operational ManagementSecurityCommunication

25 Diseño en capas Aspectos transversales Seguridad

26 Diseño en capas SeguridadAutenticación Windows Authentication / Forms Authentication Credenciales (nombre/password, smartcards, llaves, etc) Flujo de Identidad por las Capas

27 Diseño de capas SeguridadAutenticación Flujo de Identidad Delegación Trusted Subsystem

28 Diseño en capas Autorización Access Control List (ACLs) Autorización Capa Presentación ASP URL Authentication .NET Role-Based Security if(userPrincipal.IsInRole(Managers")) Operacion(); Operacion();o [PrincipalPermission(SecurityAction.Demand, role="Managers")] public void Operacion(…) { // … }

29 Diseño en capas Seguridad Seguridad de Comunicación Establecer que la data que pase entre capas está segura Securitizar el mensaje Firmar el mensaje Encriptar el mensaje Encriptar parte sensible del mensaje Securitizar el canal SSL, IPSec, VPNs

30 Diseño en capas SeguridadAuditoría Presentación – logon/logoff, cambios de password, etc Negocio – actividades, transacciones Datos – actividades, transacciones Intercepción de mensajes Almacenaje seguro Manejo de Perfiles Base de Datos o Directorio AzMan

31 Diseño en capas Aspectos transversales Administración

32 Diseño de capas Manejo de Excepciones Son excepcionales! Lanzando y Atrapando Excepciones Diseño y Comportamiento de Excepciones Presentación Reintentar, Exponer, o continuar Negocios Excepciones de Negocio, Excepciones Técnicas – Propagar Violaciones de Validaciones, data insuficiente – Generar En general, propagar Data RAISERROR de SQL Mapear a Exception apropiada - Propagar

33 Diseño en capas Aspectos transversales Comunicaciones

34 Desafíos del diseño en Capas Mover Datos entre las capas No existe una técnica universal, depende de la aplicación. Algunas recomendaciones: Si es necesario poder ordenar, buscar y hacer Binding es recomendable usar DATASET Si la aplicación trabaja principalmente con instancias de datos (no colecciones) use objetos entidades de negocio, para evitar el overhead de los DATASET. El uso de XML es la mejor opción para interoperar, pero tiene costos asociados a la validación de esquemas y serialización.

35 Desafíos del diseño en Capas Concurrencia y Bloqueos Aproximación Last in Wins Aproximación de Concurrencia Concurrencia pesimista: El usuario que lee el registro con intención de actualizarlo lo bloquea hasta terminar su uso. Concurrencia optimista: El usuario no bloquea el registro, al momento de actualizarlo valida que no cambió desde que lo leyó. Si ha cambiado se genera una excepción.

36 Desafíos del diseño en Capas Transacciones Típicamente iniciadas por el BP Manuales ADO.NET y SQL. Usted escribe el código de control. Son las más rápidas. Simple para un solo origen de datos Automáticas Usan Enterprise Services (COM+) Funcionan con DTC. Para múltiples orígenes de datos.

37 Desafíos del diseño en Capas Transacciones

38 DEMO HOW TO:.NET TIER

39 Desafíos del diseño en Capas Validaciones Puede ser hecha en cualquier capa. BP puede validar los documentos que recibe usando esquemas XDS. DALC y los store procedure pueden hacer validaciones complejas de negocio. Existen dos aproximaciones POINT-IN-TIME Validación continua.

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

41 Referencias Arquitectura de aplicaciones de.NET: Diseño de aplicaciones y servicios a/das/guias/AppArchCh1.asp a/das/guias/AppArchCh1.asp Designing Data Tier Components and Passing Data Through Tiers brary/en-us/dnbda/html/BOAGag.asp brary/en-us/dnbda/html/BOAGag.asp.NET Data Access Architecture Guide brary/en-us/dnbda/html/daag.asp brary/en-us/dnbda/html/daag.asp 3-tier architecture in C# By Rahman Mahmoodi chitecture.asp Rahman Mahmoodi chitecture.aspRahman Mahmoodi chitecture.asp

42 © 2006 Microsoft Corporation. Todos los derechos reservados Muchas gracias por su participación

43 Desarrollador 5 Estrellas Características: ¿Qué es? Un conjunto de herramientas que te permite incrementar tus conocimientos y habilidades en la tecnología.NET ¿En qué consiste? Cursos Gratuitos Capacitación en línea Exámenes de evaluación Reconocimiento del mercado ¿Para quién es? Desarrolladores profesionales Estudiantes universitarios ¿Dónde comenzar?

44 Suscripciones MSDN Acceso a Productos Microsoft (limitadas o perpetuas) y garantía tecnológica por 2 años. Downloads electrónicos de los productos el día de su publicación. Soporte técnico para Desarrolladores, garantizado por Microsoft, dentro de las 48 hs. Acceso a información preferencial en el site MSDN, invitación a eventos y seminarios, etc. Soporte para el uso de los recursos MSDN a través de Chat. Línea exclusiva de ayuda para administrar la suscripción MSDN.


Descargar ppt "Fundamental: Desarrollo en Capas David Jirón Arquitecto.NET Juan Pablo García Developer Manager DATCO Chile"

Presentaciones similares


Anuncios Google