La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Fundamental: Desarrollo en Capas

Presentaciones similares


Presentación del tema: "Fundamental: Desarrollo en Capas"— Transcripción de la presentación:

1 Fundamental: Desarrollo en Capas
David Jirón Arquitecto .NET Soluziona 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? Ventajas Mantenibilidad Escalabilidad Seguridad
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 Diseño en capas UI Components UI Process Components
Data Access Components User Devices Service Agents Operational Management Security Communication 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

6 Diseño en capas 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: Proceso
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 Business Process Components
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 Data Access Components
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 Seguridad Comunicaciones
Administración y operaciones Operational Management Security Communication

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 Manejo de Perfiles
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 Designing Data Tier Components and Passing Data Through Tiers .NET Data Access Architecture Guide 3-tier architecture in C# By Rahman Mahmoodi

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

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? Con el programa Desarrollador Cinco Estrellas, Microsoft busca a las personas más talentosas de España y Latinoamérica para apoyarlas en su capacitación y generar una relación a largo plazo. Este programa te permite incrementar tus conocimientos y habilidades en las tecnologías .NET de forma progresiva, en una serie escalonada de etapas. Cada una de ellas te asigna una estrella que te permite acceder a múltiples beneficios y te califica en función de los conocimientos adquiridos. En qué consiste? Esta iniciativa no es solamente un conjunto de documentación e información, es una relación educativa que nos involucra en un proceso constante de aprendizaje donde el objetivo final sos vos. Durante tu participación en este programa, tendrás una serie de evaluaciones que te permitirán avanzar a los sucesivos niveles, obteniendo las estrellas correspondientes a tu nivel. En Microsoft creemos en la importancia de la formación constante de los desarrolladores, tanto para el crecimiento profesional como para ayudarlos a mantener el nivel de competitividad, mediante el conocimiento de las tecnologías que hoy se utilizan para el desarrollo de aplicaciones corporativas y de Internet. Sabemos lo importante que es estar actualizado y las dificultades para hacerlo con la evolución constante de la tecnología. Es por esto que Microsoft invirtió en una iniciativa on line, gratuita y en español – Programa de Desarrollador 5 estrellas- para que todos puedan acceder a conocer la tecnología más innovadora del sector. Dentro de este marco, queremos acercarle a los estudiantes, esta herramienta de capacitación de la que están participando actualmente desarrolladores de todo América latina, para que cuenten con un elemento adicional que les permita mejorar sus skills, contribuyendo así con su plan de carrera, sin ningún costo. Es un programa basado en niveles y no tiene límite de tiempo. Permite incrementar los conocimientos y habilidades en las tecnologías .NET de forma progresiva, en una serie escalonada de etapas y para cada una de ellas te asigna una estrella. La superación del nivel previo es condición indispensable para obtener el nivel siguiente, hasta llegar al último nivel, conocido como 5 estrellas. Durante la participación en este programa, tendrán una serie de evaluaciones on line que les permitirán avanzar a los sucesivos niveles, obteniendo las estrellas correspondientes a cada nivel. A partir de la primera estrella obtenida, figuran en un Directorio en el site de Microsoft donde se publican los datos de todos los desarrolladores que hayan obtenido sus estrellas. Cómo comenzar? Sólo es necesario registrarse en e iniciar la formación a través de las Guías de estudio. Desarrolladores profesionales que adopten la plataforma Microsoft .NET sin importar su experiencia previa y quieran actualizar sus conocimientos a esta nueva plataforma. Estudiantes universitarios que deseen incorporar en su currículum los conocimientos necesarios para desarrollar la nueva generación de aplicaciones Windows, aplicaciones listas para Internet y Servicios Web XML.

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. ESTE SLIDE DEBEN ESTAR PRESENTE SIEMPRE AL FINAL DEL TEMA QUE CORRESPONDA. Es a modo informativo para que la audiencia conozca cómo acceder a las herramientas de desarrollo y los beneficios.


Descargar ppt "Fundamental: Desarrollo en Capas"

Presentaciones similares


Anuncios Google