Last Friday I signed off on the last quality gates! Yesterday we had our Release Readiness Meeting, which gave a resounding GO to the Enterprise Library 5.0 and a round of applause to the team. As one of the directors concluded “It is a beautiful thing… Not just the product, but also how you’ve got there.”
Enterprise Library is a collection of reusable software components (application blocks) designed to assist software developers with common enterprise development challenges (such as logging, validation, caching, exception handling, and many others). Application blocks encapsulate Microsoft recommended development practices; they are provided as source code plus tests and documentation that can be used "as is," extended, or modified.
Enterprise Library is intended for use by developers who build complex, enterprise-level applications. Enterprise Library is used when building applications that typically will be deployed widely and need to interoperate with other applications 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 configuration tool, powerful programmatic configuration support, intuitive interfaces, a simpler installation procedure that allows you to select only those application blocks you desire, and clear documentation, samples and hands-on labs.
Integration. Enterprise Library application blocks are designed to work well together or individually.
This major release of Enterprise Library contains many compelling new features and updates that will make developers more productive. There are no new blocks; instead the team focused on making the existing blocks shine, on testability, maintainability and learnability. The new features include:
– Major architectural refactoring that provides improved testability and maintainability through full support of the dependency injection style of development
– Dependency injection container independence (Unity ships with Enterprise Library, but you can replace Unity with a container of your choice)
– Programmatic configuration support, including a fluent configuration interface and an XSD schema to enable IntelliSense
– Redesign of the configuration tool to provide:
§ A more usable and intuitive look and feel
§ Extensibility improvements through meta-data driven configuration visualizations that replace the requirement to write design time code
§ A wizard framework that can help to simplify complex configuration tasks
– Data accessors for more intuitive processing of data query results
– Asynchronous data access support
– Honoring validation attributes between Validation Application Block attributes and DataAnnotations
– Integration with Windows Presentation Foundation (WPF) validation mechanisms
– Support for complex configuration scenarios, including additive merge from multiple configuration sources and hierarchical merge
– Optimized cache scavenging
– Better performance when logging
– Support for the .NET 4.0 Framework and integration with Microsoft Visual Studio 2010
§ Streamlined configuration schema
§ A simplified API for static factories and interception
§ The capability to add interface implementation through interception
§ Additional types of lifetime manager
§ Deferred resolution (automatic factories)
– A reduction of the number of assemblies
The Enterprise Library team tried its utmost to preserve the existing Enterprise Library APIs (v3.1 and higher). However, due to the redesign of the internals and the .NET Framework roadmap moving forward, there are some breaking changes. A full list is available here.
· Supported architectures: x86 and x64.
· Operating system: Microsoft Windows® 7 Professional, Enterprise or Ultimate; Windows Server 2003 R2; Windows Server 2008 with Service Pack 2; Windows Server 2008 R2; or Windows Vista with Service Pack 2.
· Microsoft .NET Framework 3.5 with Service Pack 1 or Microsoft .NET Framework 4.0.
For a rich development environment, the following are recommended:
· Microsoft Visual Studio® 2008 Development System with Service Pack 1 (any edition) or Microsoft Visual Studio 2010 Development System (any edition).
To run the unit tests, the following are also required:
· Microsoft Visual Studio 2008 Professional, Visual Studio 2008 Team Edition, Visual Studio 2010 Premium, Visual Studio 2010 Professional, or Visual Studio 2010 Ultimate edition.
· Moq v3.1 assemblies.
For the Data Access Application Block, the following is also required:
· A database server running a database that is supported by a .NET Framework 3.5 with Service Pack 1 or .NET Framework 4.0 data provider. This includes SQL Server® 2000 or later, SQL Server 2005 Compact Edition, and Oracle 9i or later. The database server can also run a database that is supported by the .NET Framework 3.5 with Service Pack 1 or the .NET Framework 4.0 data providers for OLE DB or ODBC.
For the Logging Application Block, the following are also required:
· Stores to maintain log messages. If you are using the Message Queuing (MSMQ) Trace Listener to store log messages, you need the Microsoft Message Queuing (MSMQ) components installed. If you are using the Database Trace Listener to store log messages, you need access to a database server. If you are using the E-mail Trace Listener to store log messages, you need access to an SMTP server.
If these dependencies are not met, you may not be able to use certain Enterprise Library features.
If you are new to Enterprise Library:
− read the Introduction to the Enterprise Library section of the documentation
− read and review examples from the Developer’s Guide
− download, compile and run the source code – study the code and the tests;
− practice the Hands-On Labs (the updated set of labs to be released by the end of April);
− watch the videos;
If you already know and love Enterprise Library:
− check out the change log for this release;
− upgrade to v5.0 – to help you with this task, we’ve written the Migration Guide;
− practice the updated Hands-On Labs (the updated set of labs to be released by the end of April);
− watch the videos;
We would appreciate feedback on any issues found, or any other general comments on this release.
We are looking for stories. If you adopt Enterprise Library on your project, please let us know – share your experience, join our advisory board, help us drive the next great release of the Enterprise Library. After all, Enterprise Library is driven and built by developers and for developers.