The Microsoft Enterprise Library is a set of tools and programming libraries for the Microsoft.NET Framework. It provides APIs to facilitate proven practices in core areas of programming including data access, logging, exception handling and others. Enterprise Library is provided as pluggable binaries and source code, which can be freely used and customized by developers for their own purposes. It also ships with test cases and quickstarts.
Benefits
Improved productivity: Each of the Application Blocks provides several interfaces meant to satisfy common application concerns.
Configuration-driven design: Many technical decisions about the application behavior can be delayed until configuration time of the application. For instance, if an application does not properly handle an exception, instead of adding another exception handler to the code, an administrator can configure an additional exception handling policy.
Improved testability: Many application areas can be reconfigured to improve testing of the application in isolation.
Each application block addresses a specific cross-cutting concern and provides highly configurable features, which results in higher developer productivity. The Application Blocks in Enterprise Library are designed to be as agnostic as possible to the application architecture, for example the Logging Application Block may be used equally in a web, smart client or service-oriented application. The produces a number of other deliverables that leverage Enterprise Library Application Blocks. These include the Web Service Software Factory and Smart Client Software Factory.
Utilities
In addition to the Application Blocks, the standard Microsoft distribution of the Enterprise Library includes:
Configuration console: to visually add an Application Block to an application's configuration.
Out-of-proc service for production logging.
Version history
There have been several versions of the Microsoft Enterprise Library:
Enterprise Library 6.0 - Current
Enterprise Library 5.0 Windows Azure Integration Pack - Current
Enterprise Library 5.0 Optional Update 1 - Current
Enterprise Library 5.0 Silverlight Integration Pack - Active
Microsoft Enterprise Library 6 was in April 2013. Public announcements by S.Somasegar, Senior VP, Developer Division and Grigori Melnik, Enterprise Library Producer are available and . New features include:
new
Simplifying the library all around
Generalized and updated Transient Fault Handling Application Block to help increasing resiliency to errors
Registration by convention and other improvements in Unity
Support for async logging in the Logging Application Block
Streamlined programmatic configuration of all blocks to facilitate fast start and ease of experimentation/use
Integrating with other technologies
This release has also retired the following 3 blocks:
Caching Application Block
Cryptography Application Block
Security Application Block
For the details, see the
Version 5.0
Microsoft Enterprise Library 5.0 was in April 2010. Public announcement by Grigori Melnik, Enterprise Library Producer is available . New features include:
Architectural refactoring fully supporting DI-style of development
Simplification of the codebase
Container independence
Async database support
Data accessors
Fluent configuration interface support
Configuration schemas to enable IntelliSense
New configuration tool
Higher performing logging
Support for hierarchical configuration merge and redirects
Honouring validation attributes between VAB and System.ComponentModel.DataAnnotations
Note: Existing public APIs are mostly supported. For the list of breaking changes, see Note: Several features are demoed in this video: Note: For the full Change Log, see Note: An optional update was released in May 2011. It contains fixes to Unity Interception and file configuration source. This update is required if you are using the Silverlight Integration Pack and need WCF RIA Services Integration or configuration tool support. Available via NuGet or from http://www.microsoft.com/download/en/details.aspx?id=6836
Version 5.0 Silverlight Integration Pack
This is a port of Microsoft Enterprise Library 5.0 to Silverlight. Includes the following blocks:
Caching Application Block
Validation Application Block
Logging Application Block
Exception Handling Application Block
Unity Application Block
Policy Injection Application Block
Public announcement - http://blogs.msdn.com/b/agile/archive/2011/05/11/silverlight-integration-pack-for-microsoft-enterprise-library-5-0-released.aspx Available as individual blocks via or as a
Version 5.0 Windows Azure Integration Pack
Published: December 2011
Unity 3.0
Version 4.1
This release of Enterprise Library in October 2008 is a service releases that includes the following:
Unity interception mechanism and integration of the Policy Injection Application Block with the Unity Application Block
Added support for generics in the Unity Application Block
Added support for arrays in the Unity Application Block
The Application Block Software Factory and the Strong Naming Guidance Package are not included in this release but are available as a separate download. Thus, there is no longer a dependency on Guidance Automation Extensions. For the detailed list of all changes, see .
Version 4.0
This release of Enterprise Library in May 2008 includes the following:
In May 2007, Enterprise Library 3.1 was released with minor enhancements to the Validation and Policy Injection Application Blocks.
Version 3.0
In April 2007, Enterprise Library 3.0 was released. It contains new Application Blocks, a new Application Block Software factory designed to simplify the development of new Application Blocks and extensions, and new features providing better integration with .NET Framework 3.0. The 3.0 release of Enterprise Library contains the following Application Blocks:
In January 2006, a new version of Enterprise Library was released that targeted.NET Framework 2.0. The most significant change in this release was that the Configuration Application Block was removed, and the blocks were updated to use.NET's improved System.Configuration capabilities. This release also included significant improvements to the Logging Application Block, and much of the Security Application Block was removed due to similar capabilities provided in.NET Framework 2.0. The.NET 2.0 release of Enterprise Library contained the following Application Blocks:
Caching
Data Access
Cryptography
Exception Handling
Logging
Security
Version 1.1
Two releases of Enterprise Library were released for.NET Framework 1.1. The first was released in January 2005, followed by a minormaintenance release in June 2005. The.NET 1.1 releases of Enterprise Library contained the following Application Blocks:
Caching
Configuration
Cryptography
Data Access
Exception Handling
Logging and Instrumentation
Security
Version 1.0
Future
Ron Jacobs, a Microsoft Evangelist, described the purpose of Enterprise Library as "filling in the gaps" of.NET development between releases of the framework. As the framework continues to advance, developers are demanding more productive development libraries. At the same time, Microsoft platforms evolve and certain scenarios, initially addressed by the Enterprise Library, are now being supported by the platforms themselves. In this case, the patterns & practices team uses the graceful retirement process to deprecate some parts as explained . Microsoft continues to promote Enterprise Library for enterprise/line-of-business development, and even many Microsoft products as well as projects within Microsoft IT use it extensively. Starting November 2013, Microsoft Enterprise Library and all of its application blocks. They now accept community contributions. The latest releases of and are developed in close collaboration with the community. In August 2015, Microsoft posted they were handing Unity Dependency Injection over to new owners into a new GitHub repo. At the same time, the patterns & practices - Enterprise Library home web site on CodePlex, announced that the remainder of the application blocks will no longer be developed. However, the source will continue to be available.