Enterprise Library

Microsoft Enterprise Library 5.0 es un conjunto de librerías que facilitan el desarrollo de aplicaciones empresariales en .NET. Implementan funcionalidad que típicamente debe incorporarse a las aplicaciones empresariales. Esta funcionalidad se presenta subdividida en 9 bloques, cada uno apuntando a resolver un tipo de problema particular:

  • Caching Application Block: Implementación de un sistema de caching con políticas de recolección y expiración. Su principal característica es permitir persistencia, por ejemplo una base de datos. El bloque se encarga de mantener sincronizado el cache en memoria y la copia almacenada, cuando la aplicación se reinicia el cache no se pierde, es recuperado desde el lugar de almacenamiento.
  • Cryptography Application Block: Facilita la incorporación de funciones de criptografía presentando una interfaz única que permite realizar encriptación y hashing de datos con diversos algoritmos de clave simétrica. Ademas incluye un sistema para administrar y distribuir las claves de encriptación.
  • Data Access Application Block: Facilita uso de ADO.NET, presenta una interfaz con métodos simples para las tareas mas comunes de acceso a datos. Incorpora un mecanismo de descubrimiento y caching de parámetros de procedimientos almacenados. Permite escribir código agnóstico compatible con múltiples bases de datos.
  • Exception Handling Application Block: Permite simplificar y estructurar el manejo de excepciones. El código que va en la clausula catch delega el manejo de la excepción al bloque. Mediante configuración es posible elegir diferentes comportamientos de tratamiento tales como: logging, reemplazar la excepción y envolver la excepción.
  • Logging Application Block: Implementa funcionalidad de logging a diferentes destinos tales como: Registro de eventos, archivo de texto plano, base de datos, email, msmq y wmi. Es posible configurar filtros, formatos, múltiples destinos y categorías.
  • Policy Injection Application Block: Implementa funcionalidad de Programacion Orientada a Aspectos. Mediante un mecanismo de intercepcion permite extender la funcionalidad de metodos y propiedades sin modificar el codigo fuente. Usualmente se utiliza para incorporar funcionalid transversal como logging, autorizacion, intrumentacion, transacciones y caching. La funcionalidad transversal es aplicada como politicas definidas en el archivo de configuracion en el cual se determina mediante wildcards a que metodos y propiedades se aplicara que funcionalidad.
  • Security Application Block: Estandariza el código necesario para realizar autorización, (determinar si un usuario tiene acceso a un recurso). Puede operar con Authorization Manager (AZMAN) o simples reglas definidas en el archivo de configuración. También incluye funcionalidad de caching de identidades que facilita la Implementación de un sistema de tickets para evitar el impacto de rendimiento de autenticar un usuario cada vez que llama un método.
  • Unity Application Block: Es un contenedor de inyección de dependencias (Dependecy Injection). Soporta inyección de constructores, propiedades y métodos. Facilita el desarrollo de aplicaciones modulares y extensibles. También implementa un mecanismo de intercepción para incorporar funcionalidad transversal.
  • Validation Application Block: Facilita la incorporacion de lógica de validación a una aplicación. Muchas de las reglas de validación comunes son encapsuladas en clases reutilizables como: largo de string, rango de un numero o fecha y expresión regular. Estas reglas se pueden utilizar en el código y también ser asignadas a propiedades de clases mediante atributos o usando el archivo de configuración. Incluye conectores que hacen posible automatizar la validación de controles de formularios Windows Forms, ASP.NET y parámetros de operaciones WCF.

Cada bloque de Enterprise Library puede ser extendido para ser adaptado a las necesidades particulares de un proyecto. Los bloques presentan puntos de extensión bien definidos mediante interfaces y clases base que el usuario debe implementar. Estas extensiones son incorporadas a la aplicación usando el archivo de configuración en el cual se explicita el ensamblado y nombre de clase de la extensión.

Otra posibilidad de modificar la funcionalidad de la Enterprise Library es editar el código fuente y recompilar. Enterprise Library es open source, el código fuente se publica mediante licencia Ms-PL (aprobada por OSI) y puede ser descargado desde el sitio principal en codeplex. En código fuente de Enterprise Library incluye un importante numero de unit tests lo que da un nivel de seguridad al momento de editar los fuentes.

Enterprise Library incluye ademas una herramienta de configuración que puede integrarse como plug-in a Visual Studio y que también se puede ejecutar como una aplicación independiente. Usar esta herramienta es la mejor forma para configurar Enterprise Library pues presenta una interfaz fácil de usar y que ademas valida las configuraciones. El hecho que pueda usarse como una aplicación la transforma en una herramienta de administración para el personal que opera los servidores de producción.

Enterprise Library incluye una abundante documentación. Para cada bloque hay una introducción, indicaciones de configuración, código de ejemplo para escenarios comunes, explicación del diseño interno del bloque, indicaciones de como extender el bloque y una aplicación de ejemplo Quickstart. Se ha construido una importante comunidad en torno a Enterprise Library, hay una librería de contribuciones con extensiones y un foro de discusión donde es posible buscar ayuda.

Enterprise Library 5.0 es desarrollada por el equipo Patterns & Practices de Microsoft. Este equipo tiene como misión entregar orientación sobre las mejores practicas para el desarrollo de aplicaciones empresariales en .NET, para ello pone a disposición del publico artículos y libros sobre estas materias. Patterns & Practices desarrolla ademas otras librerías que presentan un alto nivel de integración con Enterprise Library tales como: Smart Client Software Factory, Web Client Software Factory y Composite WPF and Silverlight.

Enterprise Library es ampliamente usada, cuenta con el respaldo de Microsoft e incorpora las mejores practicas de programación que emanan de los propios equipos desarrolladores de .NET. Sin duda es una interesante opción para compañías y equipos que estén buscando un framework de aplicaciones para sus proyectos.

Links