1 / 44

Enterprise Library 3.0 :

Enterprise Library 3.0 :. Oscar Berroteran Norberto Planchart Noixno,S.A. Contexto. Los componontes reusables son importantes Solucionan consistentemente problemas comunes del desarrollo de aplicaciones Los Application Blocks son el factor común para los componentes reusables

oren-henry
Download Presentation

Enterprise Library 3.0 :

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. Enterprise Library 3.0: Oscar Berroteran Norberto Planchart Noixno,S.A.

  2. Contexto • Los componontes reusables son importantes • Solucionan consistentemente problemas comunes del desarrollo de aplicaciones • Los Application Blocks son el factor común para los componentes reusables • Código fuente reusable, extensible y modificable • La Enterprise Library es un conjunto de application blocks de proposito general • No es especifica para un tipo de aplicación o estilo de arquitectura • Puede ser utilizada directamente o como un punto de partida para nuestras propias librerias o frameworks

  3. Libreria Y de cliente Libreria X de socio Libreía Z de Cliente Ecosistema de Enterprise Library p&p Enterprise Library Bloques de p&p Bloques de socios Bloques de clientes Bloques de comunidades

  4. Enterprise Library ES… • Unalibreria de application blocks, los cualesresuelvesproblemascomunes • Un conjunto de clasesquefuncionan con cualquiermodelo de arquitectura • Guia de arquitecturaincorporada en código, la cual se descarga con todo el cód. fuente, permitiendonosmodificarla y extenderla • Disponiblecomodescargalibre No es… • Un componente del .NET Framework • Un framework de aplicaciones que impone un estilo de arquitectura • Un producto de Microsoft con soporte, compatibilidad y regionalización • Comercial (no se vende)

  5. Plug-in Config Helpers & Design Instrumen-tation ObjectBuilder Enterprise Library 3.0 – Application Blocks Data Access Logging Caching Core Cryptography Exception Handling Security Policy Injection Validation

  6. Objetivos de Enterprise Library 3.0 • Tomar en cuenta el feedback recibido para los application blocks existentes • Proporcionar nuevos application blocks para dar soporte a retos adicionales en el proceso de desarrollo de software • Soportar la integración con las nuevas caracteristicas más relevantes del .NET Framework 3.0 • Aumentar la experiencia acerca de actividades claves del desarrollo • Simplificar el desarrollo de nuevos application blocks • Mantener la compatibilidad con Enterprise Library 2.0

  7. Enterprise Library 3.0 – Nuevas Características a primera vista • Nuevos application blocks • Validation Application Block • Policy Injection Application Block • Mejoras a application blocks existentes • Data Access Application Block • Logging Application Block • Integración con .NET Framework 3.0 • Logging, Exception Handling y Validation Application Blocks • Mejoras en Configuración • Herramienta de config. Integrada en Visual Studio • Manageable Configuration Source • Automatización • Application Block Software Factory • Strong Naming Guidance Package

  8. Plug-in Config Helpers & Design Instrumen-tation ObjectBuilder Enterprise Library 3.0 – Application Blocks Data Access Logging Caching Core Cryptography Exception Handling Security Policy Injection Validation

  9. El Core • Configuración • Diseño de la configuración y herramientas • Instrumentación • Object Builder

  10. Configuración • Todos los bloques son configurables • Controla como el bloque trabaja con la aplicación • Especifica cuales bloques se van a utilizar • Bloques pueden ser utilizados con (o sin) archivos de configuración • Los Factories objects construyen objetos de bloque utilizando datos de los archivos de configuración • La configuración es almacenada en archivos estandar XML (.config ) de manera predeterminada • Es poisible utilizar “Configuration Sources” alternativos • System, File, Manageable y SQL

  11. Herramientas de configuración • Las herramientas de configuración elimina la necesidad de editar los archivos de configuración • Rápidamente se añade la configuración predeterminada de un bloque • Propiedades y providers fuertemente tipados (Strongly typed) • La configuración el validada antes de almacenar los cambios • Se permite encriptar los archivos de configuración • Es posible especificar configuraciones que son únicas para diferentes entornos (desarrollo, test, producción, etc.) • Incorpora un editor integrado a Visual Studio y también incorpora una consola de configuración externa

  12. Instrumentación • Todos los bloques de Enterprise Library incluyen instrumentación • Event Log events • Performance Counters • Eventos WMI • De manera predertminada toda la instrumentación esta deshabilitada; pero cada tipo puede ser habilitado individualmente usando la herramienta de configuración • El código de Instrumentación está contenido en el assembly Common, lo que nos permite utilizarlo en nuestras aplicaciones

  13. Instrumentación • Ejecute la instalaciónparacrear los artefactos de instrumenmtación: • Ejecute installservices.bat (usandounacuenta de Administrador), o • Ejecute installutil.exe sobrecada assembly de Enterprise Library assembly (usandounacuenta de administrador), o • Cree supropioinstalador • Configure suaplicaciónparautilizarinstrumentación

  14. Object Builder • Componente compartido utilizado en varios aplicaciones p&p • Responsible de la construcción de objetos dentrol de los bloques de aplicaciones • Invocando el “custom factory” con los datos de la configuración • Can be leveraged from your own apps, but understanding ObjectBuilder is not required to use Enterprise Library • Mayor información y descargas en http://codeplex.com/objectbuilder

  15. Data Access Application Block

  16. Plug-in Config Helpers & Design Instrumen-tation ObjectBuilder Enterprise Library 3.0 – Application Blocks Data Access Logging Caching Core Cryptography Exception Handling Security Policy Injection Validation

  17. Escenarios de DAAB • Necesitamos una forma simple y eficiente para trabajar con repositorios de datos usualmente utilizados • Es necesario que el desarrollo con múltiples tipos de bases de datos sea transparente • SQL Server, SQL Server CE, Oracle, OLE-DB, ODBC, … • Necesitamos una manera sencilla de ajustar y validar la configuración de acceso a datos

  18. Data Access Application Block • Nosporporciona un accesosencillo a lascaracteristicasmásutilizadas de ADO.NET, aplicandomejoresprácticas • Aumenta la consistencia • Nosda la posibilidad de escribircódigoquetrabaja contras múltiples bases de datos • Estaintegrado con la funcionalidad del namespace System.Transactions • Fácil de utilizar • Llamamos a un proc. Almacenado con unalínea de código • El DAAB administra el tiempo de vida de lasconexiones a bases de datos • Funciona de maneraindiferentesi se define la cadena de conexión en la configuración o si se escribedirectamente en código

  19. Configurando el Data Access Application Block • Sólo necesitamos definir la cádena de conexión • La herramienta de configuración incorpora el asistente de cadenas de conexión • Es posible definir más de una cadena de conexión (instancia) para múltiples tipos de bases de datos • De forma predeterminada el DAAB es incorporado al archivo de configuración • ´Sólo se necesita la referencia a Microsoft.Practices.EnterpriseLibrary.Data.dll

  20. Uso del Data Access Application Block • Todos los métodos del DAAB son ejecutados contra un objeto tipo DataBase • La clase DatabaseFactory crea este objeto basado en la información de configuración • Es posible utilizar directamente la cadena de conexión Dim db As Database = DatabaseFactory.CreateDatabase() Dim db As Database = DatabaseFactory.CreateDatabase("Sales") Dim myConnectionString As String = “CADENA DE CONEXION” Dim db As SqlDatabase = New SqlDatabase(myConnectionString)

  21. Uso del Data Access Application Block

  22. Data Access - Ejemplos Public Function GetProductsInCategory(ByVal Category As Integer) As DataSet ' Create the Database object, using the database instance with the ' specified logical name. This is mapped to a connection string in ' the configuration file Dim db As Database = DatabaseFactory.CreateDatabase("Sales") ' Invoke the stored procedure with one line of code! return db.ExecuteDataSet("GetProductsByCategory", Category) ' Note: connection was closed by ExecuteDataSet method call End Function public Dataset GetProductsInCategory(string connectionString, int category) { // Create the Database object, using the specified connection string SqlDatabase db = new SqlDatabase(connectionString); // Invoke the stored procedure with one line of code! return db.ExecuteDataSet("GetProductsByCategory", category); // Note: connection was closed by ExecuteDataSet method call }

  23. Validation Application Block

  24. Plug-in Config Helpers & Design Instrumen-tation ObjectBuilder Enterprise Library 3.0 – Application Blocks Data Access Logging Caching Core Cryptography Exception Handling Security Policy Injection Validation

  25. Por que un Validation Application Block? • La Validaciónes un requerimiento en el 100% de lasaplicacionesempresariales • .NET proporcionaalgunascapacidades de validación, peroestasestanunidas a tecnologías IU (ASP .NET) • Usualmenteesnecesarioimplementarreglas de validación en diferentespartes de la aplicación • Muchosescenarios de validaciónrequierenescribir mucho código de “plomería”

  26. Escenarios de Validación • Necesitamos verificar que los datos son válidos antes de procesarlos • Necesitamos que la lógica de validación sea fácil de mantener • Durante el desarrollo y luego del deployment • Necesitamos validar los mismos datos en diferentes capas de la aplicación • Es necesario utilizar lógica consistente a nivel de validaciones

  27. Validation Application Block – Objetivos • Especificarnuestrareglas de validaciónsólounavez • En la configuración • Usandoatributos • Programaticamente • Fácilvalidación de los datosdesdecualquier parte en la aplicación • Programaticamente • Integrada en Windows Forms, ASP.NET o WCF • Logica de validaciónpersonalizable • Librería Built-in de reglascomunes de validación (básicas) • Combinación de reglas de validación • Aplicación de multiples reglas de validación al mismotipo

  28. Usando el Validation Application Block • Creamos nuestros objetos de negocio • Se decoran con reglas de validación • Validamos los datos cuando sea requerido • Procesamos o mostramos los resultados de las validaciones

  29. Reglas de validación basicas • Con el Validation Application Block se incluyenlassiguientesreglas: • Not Null • Contains Characters • Regular Expression • Range • Relative DateTime • String Length • Domain • Enum Conversion • Type Conversion • Property Comparison • Todaslasreglas de validaciónpueden ser negadas • Ej. String Length must not be between 5 and 10 characters

  30. Creando Reglas de validación compuestas • Es posible crear reglas de validación complejas, combinando múltiples reglas primitivas • Combinando reglas con lógica Booleana (AND / OR) • Asignado diferentes validators a diferentes miembros de un tipo • Especificando como objetos anidados o colecciones Specifying how nested objects or collections van a ser validados • Un tipo sencillo puede tener múltiples conjuntos de reglas que pueden ser utilizadas en diferentes contextos • Por ejemplo, Válido para mostrar o válido para almacenar • Pro ejemplo, Cliente válido o cliente preferido

  31. Especificando reglas de validación usando atributos • Los atributos nos permiten especificar reglas de validación directamente dentro del tipo que se esta validando • La lógica de validación no cambia hasta que se re-compila la aplicación • Necesitamos el código fuente del tipo [StringLengthValidator(1, 50, Ruleset="RuleSetA", MessageTemplate="Last Name must be 1-50 characters")] public string LastName { get { returnlastName; } set { lastName = value; } } [RegexValidator(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", MessageTemplate="Invalid e-mail address", Ruleset="RuleSetA")] public string Email { get { return email; } set { email = value; } } [ObjectValidator("RuleSetA", Ruleset="RuleSetA")] public Address Address { get { return address; } set { address = value; } }

  32. Especificando reglas de validación a través de la configuración • Las reglas de validación son almacenadas como XML y pueden ser editadas con la herramienta de configuración • La lógica de validación puede ser cambiada sin ncesidad de recompilar la aplicación • No necesitamos el cód. fuente

  33. Validando datos– Programaticamente • No importa como se especifiquen las reglas, los objetos son validados de la misma forma • Si falla la validación, obtenemos una colleción de objetos ValidationResult • Cada resultado incluye un mensaje, tag, referencias al objeto y la propiedad que esta validandose, y una referncia al “validator” original. Validator<Customer> validator = ValidationFactory.CreateValidator<Customer>("Ruleset"); ValidationResults results = validator.Validate(customer);if (!results.IsValid) { foreach (ValidationResult result in results) { Console.WriteLine("Message={0}, Key={1}, "Tag={2}", result.Message, result.Key.ToString(), result.Tag == null ? "null" : "\"" + result.Tag.ToString() + "\""); } }

  34. Ejemplos de Validaciones [StringLengthValidator(1, 50, Ruleset="RuleSetA", MessageTemplate="Last Name must be 1-50 characters")] public string LastName { get { returnlastName; } set { lastName = value; } } [RegexValidator(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", MessageTemplate="Invalid e-mail address", Ruleset="RuleSetA")] public string Email { get { return email; } set { email = value; } } …or in configuration Specify validation rules in attributes… Validator<Customer> validator = ValidationFactory.CreateValidator<Customer>("Ruleset"); ValidationResults results = validator.Validate(customer);if (!results.IsValid) { foreach (ValidationResult result in results) { Console.WriteLine("Message={0}, Key={1}, "Tag={2}", result.Message, result.Key.ToString(), result.Tag == null ? "null" : "\"" + result.Tag.ToString() + "\""); } } Validate objects and process results

  35. ExceptionHandlingApplication BlockLoggingApplication Block

  36. Plug-in Config Helpers & Design Instrumen-tation ObjectBuilder Enterprise Library 3.0 – Application Blocks Data Access Logging Caching Core Cryptography Exception Handling Security Policy Injection Validation

  37. Escenarios para el Manejo de Excepciones • Cuando se necesita un manejo de Excepciones “consistente” en la aplicación. • Al momento de implementar las mejores practicas con respecto al manejo de excepciones • No revelar información sensible a quienes acceden remotamente a las aplicaciones. • Agregar un contexto de excepciones, agrepandolas o reemplazandola. • Cuando se necesita hacer más simple el agregar código “ para administrar excepciones.

  38. Exception Handling Application Block • Provee un simple mecanismo que permite tratar consistentemente las excepciones en una aplicación. • Se pueden definir políticas para vincular excepciones con acciones • Las Excepciones de tipo ApplicationException podrían ser registradas (en el log de Windows) • Excepciones de tipo SqlClientException pueden ser capturadas y agrupadas en un tipo DataLayerException para ser lanzadas nuevamente • Excepciones de tipo SecurityException podrían ser capturadas y reemplazadas con una de tipo AccessDeniedException, para luego lanzarla • Acciones que provee • Registro de Excepciones • Agrupar unas excepciones en otra • Reemplazar una Excepcion con otra • Mapeo a WCF Fault Contract

  39. Exception Handling - Example Try ' some code that may throw Catch Ex As Exception If ExceptionPolicy.HandleException(ex, “Data Layer Policy”) Then Throw End Try

  40. Plug-in Config Helpers & Design Instrumen-tation ObjectBuilder Enterprise Library 3.0 – Application Blocks Data Access Logging Caching Core Cryptography Exception Handling Security Policy Injection Validation

  41. Escenarios de Logging • Cuando se necesita registrar datos de negocios y operaciones en varios destinos. • Cuando se necesita proveer una traza de depuración a “Soporte Productivo” • Cuando se necesita proveer auditoria para incrementar la seguridad • Para especificar “adonde van” “cuales mensajes” y en que formato. • Cuando se necesita registrar los mensajes en una amplia variedad de destinos.

  42. Logging - Examples Dim log As LogEntry = New LogEntry log.Message = “Your message here…” log.Priority = 1 log.EventId = 100 log.Categories.Add("UI") log.Categories.Add("Debug") Logger.Write(log) // Or if you prefer one line... Customer cust = GetCustomer(123); // Log the customer – will call cust.ToString() for the log entry Logger.Write(cust, category, priority);

  43. Recursos • Descargas • http://msdn.microsoft.com/practices • Enterprise Library Community at: • http://codeplex.com/entlib • Blogs : • http://msdn.microsoft.com/practices/Comm/EntLibBlogs/ • http://www.msmvps.com/blogs/oberroteran

More Related