When I give an overview of the Enterprise Library, I often refer to an ecosystem of the core application blocks built by the Microsoft patterns & practices team, components tailored by the customers for their own needs as well as those produced and shared by the community. Extensibility has been one of core architectural design principles and pretty much everything in EntLib has an extension point (see my earlier post on the topic of extensibility and a set of Hands-on Labs we’ve produced to teach you how to write extensions). The EntLib Contrib project is used for sharing community-developed extensions - from additional providers for the existing blocks to the entirely new application blocks.. The project is managed entirely by the community.
A couple of days ago, the EntLibContrib project facilitators notified me of reaching an important milestone – porting a big chunk of the EntLibContrib codebase to be compatible with EntLib v5. They released the binaries via NuGet (search for ‘entlibcontrib’ or ‘entlib'). Here’s what this October 2011 release includes:
- EntLibContrib 5.0 - Oracle ODP.NET Data Provider
- allows to use the Oracle Data Provider for .NET (ODP.NET) with the Microsoft Enterprise Library Data Access Application Block (DAAB).
- EntLibContrib 5.0 - MySql Data Provider
- allows to use the MySql .NET Connector with the Microsoft Enterprise Library Data Access Application Block (DAAB).
- EntLibContrib 5.0 - Query Application Block
- provides a common interface to query and update data stored in a DB, XML file or Web/WCF service.
- EntLibContrib 5.0 - Query Application Block Database Extensions
- allow to use the Query Application Block with the Microsoft Enterprise Library Data Access Application Block.
- EntLibContrib 5.0 - Validation Application Block Extensions
- provide additional validators, design-time enhancements and some other features.
- EntLibContrib 5.0 - Logging Application Block Extensions
- provide additional trace listeners, log entries parsing support and some other features.
- EntLibContrib 5.0 - Exception Handling Application Block Extensions
- provide additional exception handlers.
- EntLibContrib 5.0 - Policy Injection Application Block Extensions
- provide additional PIAB call handlers.
- EntLibContrib 5.0 - Common Extensions
- extend the Microsoft Enterprise Library Common Infrastructure by providing new configuration element classes (TypeConfigurationElement and AnonymousConfigurationElement) that help dealing with design-time support for your custom providers.
- EntLibContrib 5.0 - Source Code
- this package includes a zip file with the source code of all the extensions and the additional blocks of EntLibContrib v5. This source code can also be used in combination with the PDBs for debugging purpose.
The following packages are planned to be subsequently released in November:
- EntLibContrib 5.0 – Castle Windsor Configuration Support
- This Castle Windsor IContainerConfigurator implementation will allow EntLib to use Windsor as the container (instead of Unity).
- EntLibContrib 5.0 – Autofac Configuration Support
- This Autofac IContainerConfigurator implementation will allow EntLib to use Autofac as the container (instead of Unity).
- Additional Data Providers for DB2, PostgreSQL, SQLite, and SqlEx
- EntLibContrib 5.0 – Resource Application Block
- a full application block of configurable providers for Globalization and Localization, complete with configuration console designer, Unity support, group policy support and instrumentation.
- EntLibContrib 5.0 – Mapping Application Block
- complements the Query Application Block (QAB) and manages the data transfer objects used by the QAB and mapping them to and from fully typed domain objects.
Congratulations to the EntLibContrib community on this release! It’s great to see such work coming from community enthusiasts. If you get to use these extensions and benefit from them, make sure to send your kudos to the contributors. And if you build your own extensions and feel that other EntLib users may benefit from them, consider sharing them via EntLibContrib as well.