Share via

Microsoft Enterprise Library 4.1 – October 2008

Retired Content

This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

The latest Enterprise Library information can be found at the Enterprise Library site.

patterns & practices Developer Center

patterns & practices Developer Center

October 2008


The Microsoft Enterprise Library is a collection of application blocks designed to assist developers with common enterprise development challenges. Application blocks are a type of guidance, provided as source code that can be used "as is," extended, or modified by developers to use on enterprise development projects.


Enterprise Library 4.1 – October 2008 (for .NET Framework 3.5 and Visual Studio 2008)

Class Library

Enterprise Library 4.1 Class Library on MSDN

Discussion forum

Discussions for patterns & practices – Enterprise Library


patterns & practices community site

Community Extensions

Enterprise Library Contrib

Hands-On Labs

Hands-on Labs for Enterprise Library 4.1

Hands-on Labs for the Validation Application Block 4.1 (included with the Hands-on labs for Enterprise Library 4.1)

Hands-on Labs for the Unity Application Block 1.2 (included with the Hands-on Labs for Enterprise Library 4.1)


Taking advantage of Microsoft Enterprise Library 4.0 for Visual Studio 2008, (demo code)

Introduction to dependency injection with Unity, (demo code)

Extending the Unity dependency injection container, (demo code)


Microsoft Public License (Ms-PL)


What’s New
Getting Started
Feedback and Support
Authors and Contributors
Related Titles


Enterprise Library consists of reusable software components that are designed to assist developers with common enterprise development challenges. It includes a collection of application blocks and a set of core features, such as object generation, configuration, and instrumentation mechanisms. This release of the Enterprise Library includes one new application block, the Unity Application Block, which implements a framework that provides object generation and dependency injection capabilities, plus other new features and enhancements.

Different applications have different requirements, and you will not find that every application block is useful in every application that you build. Before using an application block, you should have a good understanding of your application requirements and of the scenarios that the application block is designed to address.

Enterprise Library 4.1 – October 2008 contains the following application blocks:

  • Caching Application Block. Developers can use this application block to incorporate a cache in their applications. Pluggable cache providers are supported.
  • Cryptography Application Block. Developers can use this application block to incorporate hashing and symmetric encryption in their applications.
  • Data Access Application Block. Developers can use this application block to incorporate standard database functionality in their applications.
  • Exception Handling Application Block. Developers and policy makers can use this application block to create a consistent strategy for processing exceptions that occur throughout the architectural layers of enterprise applications.
  • Logging Application Block. Developers can use this application block to include standard logging functionality in their applications.
  • Policy Injection Application Block. Developers can use this application block to implement interception policies that can be used to streamline the implementation of common features, such as logging, caching, exception handling, and validation, across a system.
  • Security Application Block. Developers can use this application block to incorporate authorization and security caching functionality in their applications.
  • Unity Application Block. Developers can use this application block as a lightweight and extensible dependency injection container with support for constructor, property, and method call injection, as well as instance and type interception (via an extension).
  • Validation Application Block. Developers can use this application block to create validation rules for business objects that can be used across different layers of their applications.

Enterprise Library also includes a set of core functions, including configuration, instrumentation, and object creation. These functions are used by all other application blocks.

Common Scenarios

Enterprise Library can be useful in a variety of situations:

  • Enterprise Library provides enough functionality to support many common scenarios that enterprise-level applications must address.
  • Enterprise Library can serve as the basis for a custom library. You can take advantage of the extensibility points incorporated in each application block and extend the application block by supplying new providers. You can also modify the source code for the existing application blocks to incorporate new functionality. You can also add new application blocks to Enterprise Library. You can either develop extensions for existing application blocks and new application blocks yourself, or you can use extensions and application blocks developed by others.
  • Enterprise Library is designed so that its application blocks can function independently of each other. You have to add only the application blocks that your application will use; you do not have to add the entire library.
  • Enterprise Library includes the source code and the unit tests for all application blocks. This means you can modify the application blocks to merge into your existing library or you can use parts of the Enterprise Library source code in other application blocks or applications that you build.
  • Enterprise Library includes documentation, QuickStart samples, and source code. You can use the library as a tool for learning architectural, design, and coding best practices.

Audience Requirements

This guidance is intended for software developers and software architects. To get the most benefit from this guidance, you should have an understanding of the following technologies:

  • Microsoft Visual C# or Microsoft Visual Basic .NET
  • Microsoft .NET Framework

Contents of This Release

The Enterprise Library 4.1 – October 2008 contains the following:

  • Binaries. The Enterprise Library includes pre-compiled, strong-named assemblies for all the source code.
  • Source code. The Enterprise Library includes the source code for the application blocks, the configuration tools, the unit tests, and the QuickStarts.
  • Unit tests. The Enterprise Library includes the unit tests that were created while the application blocks were being developed.
  • QuickStarts. Enterprise Library QuickStarts are brief, easy-to-understand illustrations of key application block features. Each application block includes one or more QuickStart.
  • Documentation. Enterprise Library includes documentation that can be viewed with the Visual Studio Help system. The documentation includes guidance about how to use the Enterprise Library and a class library reference.

The following two features have been removed from Enterprise Library 4.x and are now available separately:

  • The Application Block Software Factory
  • The Strong-Naming Guidance Package

Both of these features are suitable for use in many situations outside of Enterprise Library; therefore, it is appropriate to be able to download and install them separately from Enterprise Library. For more details, and to download these features, see the Enterprise Library community site on CodePlex.

System Requirements

For all application blocks except for the Unity Application Block, the Enterprise Library core features, and the configuration tools, the minimum requirements are the following:

  • Microsoft Windows XP Professional, Windows Server 2003, Windows Server 2008, or Windows Vista operating system
  • Microsoft .NET Framework 3.5
  • Microsoft Visual Studio 2008 development system (any of the following editions):
    • Standard Edition
    • Professional Edition
    • Team Edition for Software Developers
    • Team Edition for Software Testers
    • Team Edition for Software Architects
    • Team Suite

Minimum requirements for the Unity Application Block can be found on the Unity Application Block Home page.

Design Goals

Enterprise Library is a collection of application blocks and services intended for use by developers who build complex, enterprise-level applications. These applications are typically deployed widely and have interdependencies with other application and systems. In addition, they generally have strict security, reliability, and performance requirements.

The goals of Enterprise Library are the following:

  • Consistency. All Enterprise Library application blocks feature consistent design patterns and implementation approaches.
  • Extensibility. All application blocks include defined extensibility points that allow developers to customize the behavior of the application blocks by adding their own code.
  • Ease of use. Enterprise Library offers numerous usability improvements, including a graphical configuration tool, a simpler installation procedure, and clearer and more complete documentation and samples.
  • Integration. Enterprise Library application blocks are designed to work well together and are tested to make sure that they do. It is also possible to use the application blocks individually.

What's New

This release of Enterprise Library is a service release 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
  • Performance improvements
  • Usability improvements to the configuration tool
  • Visual Studio 2008 Service Pack 1 support
  • Bug fixes

For the detailed list of all changes, see About This Release of Enterprise Library.

Getting Started

For information about getting started with Enterprise Library, see Getting Started with Enterprise Library.

Each application block also contains a QuickStart application that demonstrates some of the key features of the application block. These QuickStarts use a set of walkthroughs, which are implementations of the common scenarios addressed by individual application blocks.

The QuickStart instructions can be found here:

You can also use the Hands-on Labs to practice Enterprise Library application block capabilities in various contexts. The Hands-On Labs are a separate download:

If an application block looks like a good fit for your application, try implementing a simple use case in your application or in a throw-away prototype application using the application block.


The Enterprise Library, like many patterns & practices deliverables, is associated with a community site— On this community site, you can provide feedback and connect with other users for sharing ideas. You can post questions using the Enterprise Library Discussion forum. You can also download additional content, such as extensions and training material. Community members can also help Microsoft plan and test future releases of the Enterprise Library and other application blocks. Community-developed extensions to the Enterprise Library are available on the EntLib Contrib site.

Feedback and Support

Questions? Comments? Suggestions? To provide feedback about this application block, or to get help with any problems, please visit the Enterprise Library Discussion forum and the Enterprise Library community site. The community site is the preferred feedback and support channel because it allows you to share your ideas, questions, and solutions with the entire community. Enterprise Library is a guidance offering, designed to be reused, customized, and extended. Code-based guidance is shipped "as is" and without warranties. Customers can obtain support through Microsoft Premier Support Services for a fee, but the code is considered user-written by Microsoft support staff.

Authors and Contributors

The Enterprise Library 4.1 – October 2008 release was produced by the following individuals:

  • Product/Program Management: Grigori Melnik (Microsoft Corporation)
  • Architecture/Development: Chris Tavares (Microsoft Corporation) and Fernando Simonazzi (Clarius Consulting)
  • Testing: Erik Renaud (nVentive Inc), Vijaya Janakiraman (Solutions IQ), Hanz Zhang and Carlos Farre (Microsoft Corporation)
  • Documentation: Dennis DeWitt (Linda Werner & Associates Inc) and Alex Homer (Microsoft Corporation)
  • Editing and release: Nelly Delgado and RoAnn Corbisier (Microsoft Corporation), Tina Burden McGrayne (TinaTech, Inc.), and Richard Burte (, Inc.)

Many thanks to the following advisors who provided invaluable assistance:

  • Brandon Bohling (Intel)
  • Brian Button (Asynchrony Solutions)
  • Daniel Piessens (Red Prairie)
  • Francois Tanguay (nVentive)
  • Gail Fraiteur (PostSharper)
  • Keenan Newton (Microsoft Corporation)
  • Kyle Huntley (Avanade)
  • Lenny Fenster (Microsoft Corporation)
  • Rinat Shagisultanov (Neudesic)
  • Tom Hollander (Microsoft Corporation)

Many thanks to the following people who previewed the Enterprise Library 4.1 – October 2008 and provided meaningful feedback and ideas:

  • Ade Miller, Blaine Wastell, Bob Brumfield, Brad Wilson, Dmitri Ossipov, Don Smith, Francis Cheung, Glenn Block, Michael Puleio, Mohammad Al-Sabt, Jason Hogg, and Junfeng Zhang (Microsoft Corporation), and Francois Tanguay (nVentive).

Related Titles

patterns & practices Developer Center