1 / 44

Fundamental: Desarrollo en Capas

Fundamental: Desarrollo en Capas. David Jirón Arquitecto .NET Soluziona djiron@cl.soluziona.com. Juan Pablo García Developer Manager DATCO Chile jpgarcia@datco.cl. Temas a tratar hoy. ¿Por qué desarrollo en capas? Diseño en Capas Entidades y mensajes Aspectos transversales

ivi
Download Presentation

Fundamental: Desarrollo en Capas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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? • Ventajas • Mantenibilidad • 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. User Devices Communication Operational Management Security External Service Agents Users UI Components Presentation Messaging Infrastructure UI Process Components Service Interfaces Business Logic Business Process Components Business Components Business Entities Data Layer Data Access Components Service Agents Data and External Systems Owned Data Sources External Services Diseño en capas

  6. UI Components Presentation UI Process Components Diseño en capas • Capa de Presentación • Componentes de interfaz de usuario • Componentes de proceso de usuario

  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. Service Interfaces Business Process Components Business Components Diseño en capas • Capa de Negocio • Interfaces de servicio • Componentes de procesos de negocio • Componentes de negocio

  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. Business Entities Data Layer Data Access Components Diseño en capas • Capa de datos • Entidades de negocio • Componentes de acceso a datos

  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. Communication Operational Management Security Diseño en capas • Aspectos transversales • Seguridad • Comunicaciones • Administración y operaciones

  25. Diseño en capas • Aspectos transversales Seguridad

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

  27. Diseño de capas • Seguridad • Autenticación • Flujo de Identidad • Delegación • Trusted Subsystem <identity impersonate="false" />

  28. Diseño en capas • Autorización • Access Control List (ACLs) • Autorización Capa Presentación • ASP URL Authentication <authorization>   <allow users="DomainName\Bob" />   <deny users="*" /> </authorization> • .NET Role-Based Security if(userPrincipal.IsInRole(“Managers"))          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 • Seguridad • Auditorí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 http://www.microsoft.com/spanish/msdn/arquitectura/das/guias/AppArchCh1.asp • Designing Data Tier Components and Passing Data Through Tiers http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/BOAGag.asp • .NET Data Access Architecture Guide http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daag.asp • 3-tier architecture in C# By Rahman Mahmoodihttp://www.codeproject.com/csharp/three_tier_architecture.asp

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

  43. Desarrollador 5 EstrellasCaracterí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? • www.microsoft.com/spanish/msdn/comunidad/dce/

  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.

More Related