Fausto Loja Mora
El modelo de aplicaciones en capas, permite que las aplicaciones puedan ser distribuidas en sus componentes
Desarrollos paralelos (en cada capa)  Aplicaciones más robustas debido al encapsulamiento    Mantenimiento y soporte más sencillo (es más sencillo cambiar un componente que modificar una aplicación monolítica)    Mayor flexibilidad (se pueden añadir nuevos módulos para dotar al sistema de nueva funcionalidad)    Alta escalabilidad. La principal ventaja de una aplicación distribuida bien diseñada es su buen escalado, es decir, que puede manejar muchas peticiones con el mismo rendimiento simplemente añadiendo más hardware. El crecimiento es casi lineal y no es necesario añadir más código para conseguir esta escalabilidad.
Acceso a bases de datos (BD) Normalmente con BD relacionales Escalables Deberían poder soportar más carga de trabajo sin necesidad de modificar el software (sólo añadir más máquinas) Disponibilidad Idealmente no deben dejar de prestar servicio
Seguras No todos los usuarios pueden acceder a la misma funcionalidad Integración Es preciso integrar aplicaciones construidas con distintas tecnologías Tipo de interfaz De entorno de ventanas (clientes desktop): normalmente sólo tiene sentido en intranets. Web: En Internet y en intranets.
Separación clara entre la interfaz gráfica y la Capa de componentes Capa de componentes: encapsulan la lógica de negocio. Ejemplo => aplicación bancaria Capa de componentes: conjunto de clases que nos permiten: crear cuentas, destruirlas, encontrarlas por distintos criterios, hacer transferencias bancarias, etc. La capa de componentes debería ser reusable con distintas interfaces gráficas En el ejemplo de la aplicación bancaria podría haber dos clientes: uno Web y otro desktop.
Transaccionales Propiedades ACID (Atomicity-Consistency-Isolation-Durability) Operaciones atómicas (Atomicity)  son operaciones que se completan en su totalidad o no se completan en absoluto. Así, en el ejemplo anterior de la transferencia tanto el crédito como el débito deben haber sido exitosos para que el estado de transformación sea exitoso (para que haga efectos), de otro modo el estado de la transformación falla, y el sistema es regresado a su último estado conocido.  Transformaciones consistentes (Consistency)  preservan la integridad interna de los recursos involucrados. Por ejemplo, el borrar registros de una tabla primaria viola la integridad referencial de la base de datos si hay registros relacionados que concuerden.  Transformaciones aisladas (Isolation)  parecen ocurrir serialmente, una detrás de otra, creando la ilusión de que ninguna transformación está siendo ejecutada al mismo tiempo.  La durabilidad (Durability)  se refiere a la habilidad para almacenar los resultados de una transformación de estado, usualmente en un disco, de tal modo que los resultados de una transformación puedan ser recuperados en caso de una falla del sistema.
 
 
 
La capa de servicios de presentación es responsable de: Obtener información del usuario.  Enviar la información del usuario a los servicios de negocios para su procesamiento.  Recibir los resultados del procesamiento de los servicios de negocios.  Presentar estos resultados al usuario.
El nivel de servicios de negocios es responsable de:  Recibir la entrada del nivel de presentación.  Interactuar con los servicios de datos para ejecutar las operaciones de negocios para los que la aplicación fue diseñada a automatizar (por ejemplo, la preparación de impuestos por ingresos, el procesamiento de ordenes y así sucesivamente).  Enviar el resultado procesado al nivel de presentación.
El nivel de servicios de datos es responsable de: Almacenar los datos.  Recuperar los datos.  Mantener los datos.  La integridad de los datos.
 
 
 
UI Components Muestran información al usuario, generalmente se usan en ventanas o páginas  (user components, server components) UI Process Components Implementan procesos de UI Se pueden reutilizar desde distindos UI components y distintas capas de presentación
Model View Controller View Controller Model User
Model View Controller Tiene algunos “problemas” en su implementación: Concepto de Proceso Responsabilidad de navegación Hace falta intercambiar más información entre el Controller y la View
 
 
Service Interface Solo una capa de acceso a la lógica de negocio Expuesta generalmente con WebServices o Remoting Se pueden usar otras formas de acceso: BizTalk, Message Queue, etc. Al ser el punto de acceso a toda la capa de negocio, por lo tanto se utiliza para implementar todos los servicios globales: Transacciones, Seguridad, Monitoreo, Caching, etc.
Demo de Service Interface MBI es una implementación de Service Interface Usando Remoting
Business Entities Son objetos solo con propiedades para mantener una instancia en memoria. Deben soportar la distinción entre una instancia y un conjunto de instancias. “ Pueden” mapearse con las tablas de la base de datos, si la base está bien modelada. El assembly en el que se definen se encuentra en Business Layer y Presentation Layer Hay varias formas de implementar esto: Datasets, Typed Datasets o Custom Objects Discusión sobre este tema en “Designing Data Tier Components and Passing Data Through Tiers”
Business Components Son objetos que definen solo métodos que se ejecutan en el contexto de un Business Entity. FacturaBO.AplicarDescuento( factura, descuento ) ClienteBO.ValidarCredito( cliente, monto, plazo ) Alunos métodos requieren acceder a la base de datos. Porque están separados? Separación de assemblies. Porque las entidades se usan en Business Layer y Presentation Layer, mientras que los Business Components solo están en Business Layer. Es la única forma si se usan DataSets. Evitar la propagación de la lógica de negocio.
Business Workflow Hay métodos que no pertenecen a ningún objeto. :S Facturar( Vendedor, Cliente, Items[] ) Estos métodos se pueden “agrupar” en objetos o tener un objeto por método. Idealmente  Hay un método de Service Interface por cada Business Workflow, pero hay métodos de la Service Interface que usar directamente los Business Object Aunque Si la Service Interface tiene “hardcoded” un método de Business Workflow un cambio, tiene impactos no deseados.
Y donde programo …? Validaciones Locales Globales Formateo Valores calculados (ej: Edad, Factura.Total) ……
Data Access Logic Components Objetos sin comportamiento que solo saben guardar un Business Entity en la base de datos. Generalmente son clases con métodos estáticos. Utilizan alguna forma de acceso a datos simplificado como Data Access Application Block. Debe ser una única clase que sea llamada por el Business Component de forma que no se tenga en cuenta el origen de los datos. Realiza todas las conversiones y validaciones necesarias que estén relacionadas con el modelo de base de datos.
View Controller Model User
Data Access Logic Components DALC Business Component Business Entity Database
Se puede implementar: Escribiendo código ADO.NET para cáda método de cada objeto: Create, Open, Update, Delete, Find. Usando SqlDataAdapter, si se usan DataSets como Business Entities. Alguna herramienta de Object Relational Mapping. Demo
 
Data Access Application Block Versión 1.0 Una sola clase con con todos métodos estáticos que soporta los siguientes features: ExecuteReader, ExecuteDataSet, ExecuteNonQuery, ExecuteXmlReader, cache de parámetros y discovery. Versión 3.0 Una clase abstracta con los siguientes métodos: v1.0 más, FillDataSet, UpdateDataset. Execute_____TypeParams. Todos los métodos están programados usando las interfaces de ADO.NET. Se usan proveedores muy simples para devolver las clases propias de cada driver ADO.NET.
Data Sources Representan los origenes de datos OLTP Solo son accedidos por la capa DALC Service Agents Conectores para acceso a una fuente de datos externa Generalmente son asincrónicos realizan una fuerte conversión de datos External Services Sistemas externos generalmente Batch que se acceden en forma sincrónica o asincrónica. La conectividad puede estar apoyada por alguna tecnología de Store-and-Forward.
Demo de Service Agent
Son servicios para las aplicaciones Dado que no pertenecen a ninguna capa, se definen por fuera aunque en algunos casos se implementen o usen en alguna capa. Son los siguientes: Seguridad AuthZ, AuthN, Comunicación segura, Aditoría, Manejo de Perfiles. Operaciones Manejo de excepciones, Monitoreo, Execución asincrónica, Metadatos, Configuración. Comunicaciones Formato, Protocolo, Asincronismo.
Autenticación.  Generalmente se utiliza el soporte de la plataforma, en Windows: SSPI(Kerberos, NTLM), Passport, etc. Para aplicaciones Web se usa el soporte de IIS Aunque se puede implementar un soporte liviano basado en Forms y cookies. Ver  “ Improving Web Application Security: Threats and Countermeasures” “ Authentication in ASP.NET: .NET Security Guidance”  “ Building Secure ASP.NET Applications”. Autorización Dado que basarse en el soporte de la plataforma es muy complicado, se desarrolla este soporte para la aplicación. Ver “Designing Application-Managed Authorization”
Comunicación segura En .NET la comunicación está basada en Remoting, WebServices o algún tipo de comunicación propietaria. Nuevamente se puede utilizar el soporte de base, sea SSL (WebServices), o algún canal seguro de Remoting (NamedPipes). Es un problema de la capa de Service Interface Aditoría Registro de las operaciones realizadas: Tecnico Lógico Manejo de Perfiles Concepto de usuario de la aplicación que contiene configuración. Todas las capas colaboran, soportada en conjunto con la Autorización .
Manejo de excepciones Registro de todas las excepciones Dos tipos de excepciones (idea de MBI) Tecnicas Funcionales Usar la InnerException Usando Exception Management Application Block (EMAB) o Log4Net Ver “Exception Management in .NET” Responsabilidad de la capa Service Interface
 
Monitoreo Control de la aplicación mientras está en ejecución Performance Counters WMI Responsabilidad de la capa Service Interface Ver “Monitoring in .NET Distributed Applications Design” Execución asincrónica Soportado internamente (Remoting Asincrónica) o externamente (MSMQ). Se puede desarrollar un soporte genérico Ver “Asynchronous Invocation Application Block”
Metadatos “ Información sobre la información o la estructura del software” Se puede usar en Tiempo de diseño: generación de código Tiempo de ejecución: aspectos estáticos (deployment, configuración, seguridad, etc) Integración. Si se usan DataSets se pueden publicar los XSD de forma que el modelo de datos sea público. (Idea de MBI)
Configuración Configuración disponible en toda la aplicación. Generalmente hay dos tipos Capa de presentación Ubicación de la capa de lógica (Remoting, WebService), propiedades de seguridad de Web o Windows, etc. Capa de lógica y de datos. Coneción a la base de datos, exposición de servicios, parámetros de seguridad, etc Se puede implementar como un Singleton, con una clase aprovechando XmlSerialization. Ver “Configuration Management Application Block”
Demo Configuration Management Application Block
Muy basado en las opciones de Remoting y WebServices Puntos que se pueden configurar Formato Binario, SOAP, Custom Xml, Custom Binary. Protocolo HTTP, TCP, BiDirectional TCP, NamedPipes, SMTP, Jabber, IM, etc
Intra-aplicación Inter-aplicación
Caching Puede ser necesario en todas las capas Presentación Lógica Datos Soluciones ASP.NET. Caching ASP.NET Caching Application Block Warnings Sincronización en ambientes distribuidos Soluciones: TTL o Metadatos Mantenimiento Flush, Disable, Failover
Balanceo de Carga / Alta disponibilidad Network Load Balancer. Con WebServices 100% soportado Con Remoting solo SingleCall Basado en el servidor Balanceo estadístico genérico Custom ClientChannelSink Que soporte un balanceo desde el cliente, itera por un listado de servidores cambiando el URI. Puede ser un balanceo “inteligente”
Concurrencia Buscar una opción para mantener la concurrencia de datos Dado que hay un ambiente distribuido sin estado en el servidor, hay que relajar la concurrencia de los datos = optimista. Se puede usar SqlDataAdapter Un Object Relational Mapping tool
Persistencia Transacciones Distribuidas Performance Sesión Reportes
Persistencia Programar los DALC puede ser bastante largo y repetitivo Se pueden usar herramientas ORM Generación de código usando CodeSmith, XSLT, etc. Transacciones Distribuidas No es un atributo del componente sino del contexto de ejecución Implementar soporte transaccional en la capa de Service Interface
Performance Optimización del acceso a la base de datos Atención al tamaño de los objetos para serializar Paginación inteligente obligatoria Sesión Modelo totalmente state-less La sesión se mantiene del Service Interface hacia adelante En WinForms no hay demasiados problemas En ASP.NET hay distintas opciones cada una con su costo asociado.
Reportes QUE PROBLEMA !!! Depende de la herramienta que se use. Si bien es un problema de Capa de Presentación algunas herramientas necesitan acceso directo a la base de datos. Otras usan DataSets lo cual se complica si hay sets de datos muy grandes. Recomendación: Sentido común.

Aplicaciones En Capas

  • 1.
  • 2.
    El modelo deaplicaciones en capas, permite que las aplicaciones puedan ser distribuidas en sus componentes
  • 3.
    Desarrollos paralelos (encada capa) Aplicaciones más robustas debido al encapsulamiento   Mantenimiento y soporte más sencillo (es más sencillo cambiar un componente que modificar una aplicación monolítica)   Mayor flexibilidad (se pueden añadir nuevos módulos para dotar al sistema de nueva funcionalidad)   Alta escalabilidad. La principal ventaja de una aplicación distribuida bien diseñada es su buen escalado, es decir, que puede manejar muchas peticiones con el mismo rendimiento simplemente añadiendo más hardware. El crecimiento es casi lineal y no es necesario añadir más código para conseguir esta escalabilidad.
  • 4.
    Acceso a basesde datos (BD) Normalmente con BD relacionales Escalables Deberían poder soportar más carga de trabajo sin necesidad de modificar el software (sólo añadir más máquinas) Disponibilidad Idealmente no deben dejar de prestar servicio
  • 5.
    Seguras No todoslos usuarios pueden acceder a la misma funcionalidad Integración Es preciso integrar aplicaciones construidas con distintas tecnologías Tipo de interfaz De entorno de ventanas (clientes desktop): normalmente sólo tiene sentido en intranets. Web: En Internet y en intranets.
  • 6.
    Separación clara entrela interfaz gráfica y la Capa de componentes Capa de componentes: encapsulan la lógica de negocio. Ejemplo => aplicación bancaria Capa de componentes: conjunto de clases que nos permiten: crear cuentas, destruirlas, encontrarlas por distintos criterios, hacer transferencias bancarias, etc. La capa de componentes debería ser reusable con distintas interfaces gráficas En el ejemplo de la aplicación bancaria podría haber dos clientes: uno Web y otro desktop.
  • 7.
    Transaccionales Propiedades ACID(Atomicity-Consistency-Isolation-Durability) Operaciones atómicas (Atomicity) son operaciones que se completan en su totalidad o no se completan en absoluto. Así, en el ejemplo anterior de la transferencia tanto el crédito como el débito deben haber sido exitosos para que el estado de transformación sea exitoso (para que haga efectos), de otro modo el estado de la transformación falla, y el sistema es regresado a su último estado conocido. Transformaciones consistentes (Consistency) preservan la integridad interna de los recursos involucrados. Por ejemplo, el borrar registros de una tabla primaria viola la integridad referencial de la base de datos si hay registros relacionados que concuerden. Transformaciones aisladas (Isolation) parecen ocurrir serialmente, una detrás de otra, creando la ilusión de que ninguna transformación está siendo ejecutada al mismo tiempo. La durabilidad (Durability) se refiere a la habilidad para almacenar los resultados de una transformación de estado, usualmente en un disco, de tal modo que los resultados de una transformación puedan ser recuperados en caso de una falla del sistema.
  • 8.
  • 9.
  • 10.
  • 11.
    La capa deservicios de presentación es responsable de: Obtener información del usuario. Enviar la información del usuario a los servicios de negocios para su procesamiento. Recibir los resultados del procesamiento de los servicios de negocios. Presentar estos resultados al usuario.
  • 12.
    El nivel deservicios de negocios es responsable de: Recibir la entrada del nivel de presentación. Interactuar con los servicios de datos para ejecutar las operaciones de negocios para los que la aplicación fue diseñada a automatizar (por ejemplo, la preparación de impuestos por ingresos, el procesamiento de ordenes y así sucesivamente). Enviar el resultado procesado al nivel de presentación.
  • 13.
    El nivel deservicios de datos es responsable de: Almacenar los datos. Recuperar los datos. Mantener los datos. La integridad de los datos.
  • 14.
  • 15.
  • 16.
  • 17.
    UI Components Muestraninformación al usuario, generalmente se usan en ventanas o páginas (user components, server components) UI Process Components Implementan procesos de UI Se pueden reutilizar desde distindos UI components y distintas capas de presentación
  • 18.
    Model View ControllerView Controller Model User
  • 19.
    Model View ControllerTiene algunos “problemas” en su implementación: Concepto de Proceso Responsabilidad de navegación Hace falta intercambiar más información entre el Controller y la View
  • 20.
  • 21.
  • 22.
    Service Interface Solouna capa de acceso a la lógica de negocio Expuesta generalmente con WebServices o Remoting Se pueden usar otras formas de acceso: BizTalk, Message Queue, etc. Al ser el punto de acceso a toda la capa de negocio, por lo tanto se utiliza para implementar todos los servicios globales: Transacciones, Seguridad, Monitoreo, Caching, etc.
  • 23.
    Demo de ServiceInterface MBI es una implementación de Service Interface Usando Remoting
  • 24.
    Business Entities Sonobjetos solo con propiedades para mantener una instancia en memoria. Deben soportar la distinción entre una instancia y un conjunto de instancias. “ Pueden” mapearse con las tablas de la base de datos, si la base está bien modelada. El assembly en el que se definen se encuentra en Business Layer y Presentation Layer Hay varias formas de implementar esto: Datasets, Typed Datasets o Custom Objects Discusión sobre este tema en “Designing Data Tier Components and Passing Data Through Tiers”
  • 25.
    Business Components Sonobjetos que definen solo métodos que se ejecutan en el contexto de un Business Entity. FacturaBO.AplicarDescuento( factura, descuento ) ClienteBO.ValidarCredito( cliente, monto, plazo ) Alunos métodos requieren acceder a la base de datos. Porque están separados? Separación de assemblies. Porque las entidades se usan en Business Layer y Presentation Layer, mientras que los Business Components solo están en Business Layer. Es la única forma si se usan DataSets. Evitar la propagación de la lógica de negocio.
  • 26.
    Business Workflow Haymétodos que no pertenecen a ningún objeto. :S Facturar( Vendedor, Cliente, Items[] ) Estos métodos se pueden “agrupar” en objetos o tener un objeto por método. Idealmente Hay un método de Service Interface por cada Business Workflow, pero hay métodos de la Service Interface que usar directamente los Business Object Aunque Si la Service Interface tiene “hardcoded” un método de Business Workflow un cambio, tiene impactos no deseados.
  • 27.
    Y donde programo…? Validaciones Locales Globales Formateo Valores calculados (ej: Edad, Factura.Total) ……
  • 28.
    Data Access LogicComponents Objetos sin comportamiento que solo saben guardar un Business Entity en la base de datos. Generalmente son clases con métodos estáticos. Utilizan alguna forma de acceso a datos simplificado como Data Access Application Block. Debe ser una única clase que sea llamada por el Business Component de forma que no se tenga en cuenta el origen de los datos. Realiza todas las conversiones y validaciones necesarias que estén relacionadas con el modelo de base de datos.
  • 29.
  • 30.
    Data Access LogicComponents DALC Business Component Business Entity Database
  • 31.
    Se puede implementar:Escribiendo código ADO.NET para cáda método de cada objeto: Create, Open, Update, Delete, Find. Usando SqlDataAdapter, si se usan DataSets como Business Entities. Alguna herramienta de Object Relational Mapping. Demo
  • 32.
  • 33.
    Data Access ApplicationBlock Versión 1.0 Una sola clase con con todos métodos estáticos que soporta los siguientes features: ExecuteReader, ExecuteDataSet, ExecuteNonQuery, ExecuteXmlReader, cache de parámetros y discovery. Versión 3.0 Una clase abstracta con los siguientes métodos: v1.0 más, FillDataSet, UpdateDataset. Execute_____TypeParams. Todos los métodos están programados usando las interfaces de ADO.NET. Se usan proveedores muy simples para devolver las clases propias de cada driver ADO.NET.
  • 34.
    Data Sources Representanlos origenes de datos OLTP Solo son accedidos por la capa DALC Service Agents Conectores para acceso a una fuente de datos externa Generalmente son asincrónicos realizan una fuerte conversión de datos External Services Sistemas externos generalmente Batch que se acceden en forma sincrónica o asincrónica. La conectividad puede estar apoyada por alguna tecnología de Store-and-Forward.
  • 35.
  • 36.
    Son servicios paralas aplicaciones Dado que no pertenecen a ninguna capa, se definen por fuera aunque en algunos casos se implementen o usen en alguna capa. Son los siguientes: Seguridad AuthZ, AuthN, Comunicación segura, Aditoría, Manejo de Perfiles. Operaciones Manejo de excepciones, Monitoreo, Execución asincrónica, Metadatos, Configuración. Comunicaciones Formato, Protocolo, Asincronismo.
  • 37.
    Autenticación. Generalmentese utiliza el soporte de la plataforma, en Windows: SSPI(Kerberos, NTLM), Passport, etc. Para aplicaciones Web se usa el soporte de IIS Aunque se puede implementar un soporte liviano basado en Forms y cookies. Ver “ Improving Web Application Security: Threats and Countermeasures” “ Authentication in ASP.NET: .NET Security Guidance” “ Building Secure ASP.NET Applications”. Autorización Dado que basarse en el soporte de la plataforma es muy complicado, se desarrolla este soporte para la aplicación. Ver “Designing Application-Managed Authorization”
  • 38.
    Comunicación segura En.NET la comunicación está basada en Remoting, WebServices o algún tipo de comunicación propietaria. Nuevamente se puede utilizar el soporte de base, sea SSL (WebServices), o algún canal seguro de Remoting (NamedPipes). Es un problema de la capa de Service Interface Aditoría Registro de las operaciones realizadas: Tecnico Lógico Manejo de Perfiles Concepto de usuario de la aplicación que contiene configuración. Todas las capas colaboran, soportada en conjunto con la Autorización .
  • 39.
    Manejo de excepcionesRegistro de todas las excepciones Dos tipos de excepciones (idea de MBI) Tecnicas Funcionales Usar la InnerException Usando Exception Management Application Block (EMAB) o Log4Net Ver “Exception Management in .NET” Responsabilidad de la capa Service Interface
  • 40.
  • 41.
    Monitoreo Control dela aplicación mientras está en ejecución Performance Counters WMI Responsabilidad de la capa Service Interface Ver “Monitoring in .NET Distributed Applications Design” Execución asincrónica Soportado internamente (Remoting Asincrónica) o externamente (MSMQ). Se puede desarrollar un soporte genérico Ver “Asynchronous Invocation Application Block”
  • 42.
    Metadatos “ Informaciónsobre la información o la estructura del software” Se puede usar en Tiempo de diseño: generación de código Tiempo de ejecución: aspectos estáticos (deployment, configuración, seguridad, etc) Integración. Si se usan DataSets se pueden publicar los XSD de forma que el modelo de datos sea público. (Idea de MBI)
  • 43.
    Configuración Configuración disponibleen toda la aplicación. Generalmente hay dos tipos Capa de presentación Ubicación de la capa de lógica (Remoting, WebService), propiedades de seguridad de Web o Windows, etc. Capa de lógica y de datos. Coneción a la base de datos, exposición de servicios, parámetros de seguridad, etc Se puede implementar como un Singleton, con una clase aprovechando XmlSerialization. Ver “Configuration Management Application Block”
  • 44.
  • 45.
    Muy basado enlas opciones de Remoting y WebServices Puntos que se pueden configurar Formato Binario, SOAP, Custom Xml, Custom Binary. Protocolo HTTP, TCP, BiDirectional TCP, NamedPipes, SMTP, Jabber, IM, etc
  • 46.
  • 47.
    Caching Puede sernecesario en todas las capas Presentación Lógica Datos Soluciones ASP.NET. Caching ASP.NET Caching Application Block Warnings Sincronización en ambientes distribuidos Soluciones: TTL o Metadatos Mantenimiento Flush, Disable, Failover
  • 48.
    Balanceo de Carga/ Alta disponibilidad Network Load Balancer. Con WebServices 100% soportado Con Remoting solo SingleCall Basado en el servidor Balanceo estadístico genérico Custom ClientChannelSink Que soporte un balanceo desde el cliente, itera por un listado de servidores cambiando el URI. Puede ser un balanceo “inteligente”
  • 49.
    Concurrencia Buscar unaopción para mantener la concurrencia de datos Dado que hay un ambiente distribuido sin estado en el servidor, hay que relajar la concurrencia de los datos = optimista. Se puede usar SqlDataAdapter Un Object Relational Mapping tool
  • 50.
    Persistencia Transacciones DistribuidasPerformance Sesión Reportes
  • 51.
    Persistencia Programar losDALC puede ser bastante largo y repetitivo Se pueden usar herramientas ORM Generación de código usando CodeSmith, XSLT, etc. Transacciones Distribuidas No es un atributo del componente sino del contexto de ejecución Implementar soporte transaccional en la capa de Service Interface
  • 52.
    Performance Optimización delacceso a la base de datos Atención al tamaño de los objetos para serializar Paginación inteligente obligatoria Sesión Modelo totalmente state-less La sesión se mantiene del Service Interface hacia adelante En WinForms no hay demasiados problemas En ASP.NET hay distintas opciones cada una con su costo asociado.
  • 53.
    Reportes QUE PROBLEMA!!! Depende de la herramienta que se use. Si bien es un problema de Capa de Presentación algunas herramientas necesitan acceso directo a la base de datos. Otras usan DataSets lo cual se complica si hay sets de datos muy grandes. Recomendación: Sentido común.