La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Oscar Berroteran Norberto Planchart Noixno,S.A.

Presentaciones similares


Presentación del tema: "Oscar Berroteran Norberto Planchart Noixno,S.A."— Transcripción de la presentación:

1 Oscar Berroteran Norberto Planchart Noixno,S.A.
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 Ecosistema de Enterprise Library
Libreria Y de cliente Libreria X de socio p&p Enterprise Library Libreía Z de Cliente While Enterprise Library can be thought of as just a set of application blocks, we like to think of it as much more. Our vision is that we can create an entire ecosystem in which customers, partners, community and the patterns & practices team can deliver reusable assets which can be combined into libraries based on customer need. To make this vision a reality, we began with a specification that defines what an Enterprise Library block is <build> Then we built a core group of application blocks based on the specification Now we are inviting our customers, partners and community to create their own blocks based on the spec Each customer and partner will choose the blocks that meet their needs To make this a vision a reality we need to consider how specification defines what an ideal application block should be Bloques de p&p Bloques de socios Bloques de clientes Bloques de comunidades

4 Enterprise Library No es… Un componente del .NET Framework
Una libreria de application blocks, los cuales resuelves problemas comunes Un conjunto de clases que funcionan con cualquier modelo de arquitectura Guia de arquitectura incorporada en código, la cual se descarga con todo el cód. fuente, permitiendonos modificarla y extenderla Disponible como descarga libre 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) It is important that you understand exactly what Enterprise Library is and is not. <build> Enterprise library is a library of application blocks which solve common challenges Enterprise library is not a part of the .NET framework Enterprise library is architectural guidance embodied in code which ships with full source allowing you to modify and extend Enterprise library is not a Microsoft product with support, compatibility and localization Enterprise library is available as a free download (or will be when it ships) Enterprise library is not for sale The important point is that this code is provided to you “as-is” with no guarantees as to future compatibility or migration. It represents something that you might have built yourself if the code were not available otherwise.

5 Enterprise Library 3.0 – Application Blocks
Caching Data Access Logging Plug-in Config Helpers & Design Instrumen- tation Object Builder Core Cryptography Exception Handling First up is the configuration application block and configuration tool. 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
Mejoras en Configuración Herramienta de config. Integrada en Visual Studio Manageable Configuration Source Automatización Application Block Software Factory Strong Naming Guidance Package 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

8 Enterprise Library 3.0 – Application Blocks
Caching Data Access Logging Plug-in Config Helpers & Design Instrumen- tation Object Builder Core Cryptography Exception Handling First up is the configuration application block and configuration tool. 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ón para crear los artefactos de instrumenmtación: Ejecute installservices.bat (usando una cuenta de Administrador), o Ejecute installutil.exe sobre cada assembly de Enterprise Library assembly (usando una cuenta de administrador), o Cree su propio instalador Configure su aplicación para utilizar instrumentació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

15 Data Access Application Block

16 Enterprise Library 3.0 – Application Blocks
Caching Data Access Logging Plug-in Config Helpers & Design Instrumen- tation Object Builder Core Cryptography Exception Handling First up is the configuration application block and configuration tool. 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 Data access is the one thing that almost every application does. The success of our previous data access application block has shown that developers are often looking for help in this area. When we asked our customers they told us what they needed. First – simple and efficient way of working with commonly used databases (SQL Server, IBM DB2 and Oracle) Second – Some degree of transparency when developing for multiple types of databases Third - A way to place an indirection between a logical database instance and a physical database instance And fourth - An easy way to adjust and validate the database configuration settings

18 Data Access Application Block
Nos porporciona un acceso sencillo a las caracteristicas más utilizadas de ADO.NET, aplicando mejores prácticas Aumenta la consistencia Nos da la posibilidad de escribir código que trabaja contras múltiples bases de datos Esta integrado con la funcionalidad del namespace System.Transactions Fácil de utilizar Llamamos a un proc. Almacenado con una línea de código El DAAB administra el tiempo de vida de las conexiones a bases de datos Funciona de manera indiferente si se define la cadena de conexión en la configuración o si se escribe directamente en código The data access application block helps to meet these needs by providing a simple way for developers to use ADO.NET quickly and correctly. The data access block helps to improve consistency by allowing you to write code that works against multiple database brands (but remember...caveats apply!) It also helps to improve security by leveraging the crypto block and configuration system to securely store connection strings And third it improve ease of use by allowing you to easily call a stored procedure with one line of code

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 } In this example, you can see how with one line code I am able to invoke a stored procedure returning a dataset. Also – I didn't have to worry about managing the connection string in my code. The connection string in this application will be manage securely through the configuration block which allows me to encrypt the configuration if I need to store security sensitive items such as username and password in the connection string.

23 Validation Application Block

24 Enterprise Library 3.0 – Application Blocks
Caching Data Access Logging Plug-in Config Helpers & Design Instrumen- tation Object Builder Core Cryptography Exception Handling First up is the configuration application block and configuration tool. Security Policy Injection Validation

25 Por que un Validation Application Block?
La Validación es un requerimiento en el 100% de las aplicaciones empresariales .NET proporciona algunas capacidades de validación, pero estas estan unidas a tecnologías IU (ASP .NET) Usualmente es necesario implementar reglas de validación en diferentes partes de la aplicación Muchos escenarios de validación requieren escribir 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
Especificar nuestra reglas de validación sólo una vez En la configuración Usando atributos Programaticamente Fácil validación de los datos desde cualquier parte en la aplicación Integrada en Windows Forms, ASP.NET o WCF Logica de validación personalizable Librería Built-in de reglas comunes de validación (básicas) Combinación de reglas de validación Aplicación de multiples reglas de validación al mismo tipo

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 incluyen las siguientes reglas: Not Null Contains Characters Regular Expression Range Relative DateTime String Length Domain Enum Conversion Type Conversion Property Comparison Todas las reglas de validación pueden 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 { return lastName; } set { lastName = value; } } MessageTemplate="Invalid address", Ruleset="RuleSetA")] public string get { return ; } set { = 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 { return lastName; } set { lastName = value; } } MessageTemplate="Invalid address", Ruleset="RuleSetA")] public string get { return ; } set { = 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 Exception Handling Application Block Logging Application Block

36 Enterprise Library 3.0 – Application Blocks
Caching Data Access Logging Plug-in Config Helpers & Design Instrumen- tation Object Builder Core Cryptography Exception Handling First up is the configuration application block and configuration tool. 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. Many of you have worked with our previous Exception Management Application Block and you may be wondering how this block relates to it. The old exception block was primarily used for logging exception events to sinks...gee that sounds like the logging application block doesn't it? Right you are. The logging application block is a replacement for the old application block. The Exception Handling application block really addresses a different set of needs. When we asked our customers about exception handling this is what they told us you needed. First - You need consistent exception handling behavior throughout your application. Many bugs and security holes occur because developers fail to properly and consistently handle exceptions through out the application. This is why it is so important that you implement best practice guidance for exception handling. For example, you should not inadvertently disclose security sensitive information to remote callers. And you should add context to exceptions by wrapping or replacing exceptions with more relevant exceptions. Most importantly, you need to make it simple to add exception management boilerplate code to your application.

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 The exception handling application block provides a simple mechanism that allows you to consistently deal with exceptions throughout your application First you define “Exception Policies” which link an exception type to an action. For example Exceptions of type ApplicationException should be logged Exceptions of type SqlClientException should be caught and wrapped with an exception of type DataLayerException and re-thrown Exceptions of type SecurityException should caught and replaced with an AccessDeniedException which will be thrown These are all examples of "Exception policy" which needs to be consistently applied throughout your application. Enterprise Library includes a set of actions which can be applied in your policy. The actions included are Logging the exception Wrapping one exception with another Replacing one exception with an other And you can create your own actions…

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 In this example you can see how a developer can simply refer to the appropriate policy in their exception handling code. Here a developer is writing data layer code which may encounter various SQL exceptions. In this case, the architect decided that it would be best for the Data Layer to return a consistent exception type called MyDataAccessLayerException. You can create an exception policy using the Enterprise Library Configuration Tool (as shown here). In this configuration, when a SqlException occurs two actions will be applied by the exception policy. First, the SqlException will be logged, then the exception will be wrapped with the MyDataAccessLayerException. The ExceptionPolicy will then throw the new exception with the inner exception member containing the original SqlException.

40 Enterprise Library 3.0 – Application Blocks
Caching Data Access Logging Plug-in Config Helpers & Design Instrumen- tation Object Builder Core Cryptography Exception Handling First up is the configuration application block and configuration tool. 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. Logging is something that every enterprise application needs to do. When we asked our customers what they wanted, they told us that there were three things the logging block had to do. One - You need to log business and operations data to various destinations, which are externally configurable Two - You need to be able to specify which messages go where, and how they are formatted Three - You need to be able to log messages to a wide variety of destinations

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); Creating a log entry is simple to do and can be done by setting properties on a log entry or by passing any object to the logger with one line of code. If you pass an object, the ToString() method of the object will be called. This allows you to get a string representation of the object quickly and easily in the log output.

43 Recursos Descargas Enterprise Library Community at: Blogs :
Enterprise Library Community at: Blogs :

44


Descargar ppt "Oscar Berroteran Norberto Planchart Noixno,S.A."

Presentaciones similares


Anuncios Google