Enterprise Library 6 and Unity 3 are out today... (Semantic Logging and Transient Fault Handling Application Block added, other Blocks updated)
Microsoft Enterprise Library is a popular collection of reusable software components (called application blocks) designed to address common cross-cutting concerns of enterprise application developers (such as logging, validation, data access, exception handling, and more). Enterprise Library is provided as source code, test cases, and documentation that can be used "as is" or extended, and encapsulates the Microsoft recommended and proven practices for .NET application development.
Unity is one of the Enterprise Library application blocks which provides a lightweight, extensible dependency injection container with support for constructor, property, and method call injection, as well as support for instance and type interception. It facilitates building loosely coupled applications (including Windows Store apps).
What’s in the Box?
- New Blocks
- Semantic Logging Application Block [video]
- Transient Fault Handling Application Block (this application block was previously a part of the Enterprise Library Integration Pack for Windows Azure; in this release it has been generalized and updated to the latest technologies).
- Updated Application Blocks – 6 blocks from previous versions have been updated:
- Data Access Application Block
- Exception Handling Application Block
- Logging Application Block
- Policy Injection Application Block
- Validation Application Block
- Unity Application Block/DI Container (v3.0)
- New Programmatic Configuration – Streamlining programmatic configuration of all blocks and improving ease of learning and ease of experimentation.
- Configuration Console – largely unchanged from the previous release.
- Reference Implementation – To versions of the same application: one using Enterprise Library 5 and one using Enterprise Library 6 to illustrate the changes and to help users migrate.
- Guides – The “Developer’s Guide to Enterprise Library” is designed to introduce users to the library and explain how to use it through short, practical code examples. The new “Dependency Injection with Unity” guide introduces users to the Dependency Injection pattern, describes the problems it can solve, and shows how to use the Unity container in their own applications.
Enterprise Library 6.0 comes 3 years after EL 5.0 with a new application block, Semantic Logging, providing consistent format and structure of logging messages based on strongly typed events. Log messages can be saved simultaneously to multiple destinations including flat file, console window, database or Windows Azure storage. An example of generating a log message for a UI error in an application, taken from the Developer Guide (PDF), looks like this:
Grigori Melnik: Thoughts on Agile Software Engineering and Beyond - Just released - Microsoft Enterprise Library 6
Five month ago we formulated our vision for the new version of Enterprise Library. Now we are delivering on it. I’m excited to announce the latest release of Microsoft Enterprise Library: version 6.
What is Enterprise Library?
Enterprise Library is made up of application blocks, each aimed at managing specific crosscutting concerns. Crosscutting concerns are those tasks that you need to accomplish in several places in your application. When trying to manage crosscutting concerns there is often the risk that you/different team members will implement slightly different solutions for each task at each location in your application, or that you will just forget them altogether. Writing entries to a system log file or Windows Azure table storage, dealing with transient error conditions and validating user input are typical crosscutting concerns. While there are several approaches to managing them, the Enterprise Library application blocks make it a whole lot easier by providing generic and configurable functionality that you can centralize and manage.
Enterprise Library application blocks are standalone. They work well together, but you only have to get the ones that you need. They are also customizable and extensible, so you can extend them to provide what you need in your specific contexts. You can choose to use it as a seedwork and grow your own library, which you can later reuse and sell. We ship under MS-PL, so this is allowed.
What are the main themes for this release?
- Simplifying the library all around
- Embracing semantic logging
- Increasing resiliency to errors
- Enhancing Unity type registration
- Supporting Windows Store apps (Unity, Topaz)
- Streamlining programmatic configuration of all blocks
- Integrating with other technologies (ASP.NET MVC and ASP.NET Web API)
- Improving ease of learning, ease of experimentation (fast start), and ease of use
While this 6.0 release is filled with great things to talk about, I want to highlight three in particular:
- .NET 4.5 saw the introduction of the EventSource class, which dramatically simplifies the task of doing ETW tracing in managed applications (ETW, or Event Tracing for Windows, is a fast and scalable logging mechanism built into the Windows operating system). Enterprise Library 6.0 includes the new Semantic Logging Application Block, which enables you to have the simplicity and power of EventSource while still utilizing log formats and storage facilities you’re familiar with. With this block, you can easily direct your log messages to a variety of destinations, such as rolling flat files, SQL Server databases, or Windows Azure table storage, while still maintaining the structured nature that ETW and EventSource provide. This structure makes it much easier to later aggregate, query, and process the information you've captured.
- LOB apps are more and more likely to be running in distributed environments, where intermittent error conditions are not uncommon. The updated Transient Fault Handling Application Block, which helps to provide resilience against such conditions, has been updated with new detection strategies and with support for the new asynchronous programming features of C# 5 and Visual Basic 11, enabling increased scalability. It’s also now available as a portable library for use with .NET 4.5, Windows Store apps, and Windows Phone apps.
- Previous releases of Enterprise Library have included Unity, a lightweight and extensible dependency injection container that facilitates building loosely coupled applications. With this release, it’s seen several important enhancements, including support for Windows Store apps.
As has been the case with Enterprise Library in the past, you can easily add to your projects just the blocks you need by using the NuGet package manager in Visual Studio:
You can check out the Enterprise Library at http://entlib.codeplex.com.
Microsoft Enterprise Library is a collection of reusable application blocks designed to assist software developers with common enterprise development challenges. This release includes: Data Access Block, Exception Handling Block, Logging Block, Policy Injection Block, Semantic Logging Block, Transient Fault Handling Block, Validation Block, and Unity.
Date published: 4/25/2013
EnterpriseLibrary6-binaries.exe, 1.0 MB
EnterpriseLibrary6-source.exe, 7.5 MB
Microsoft.Practices.EnterpriseLibrary.ConfigConsoleV6.vsix, 726 KB
SemanticLogging-service.exe, 1.0 MB
Microsoft Enterprise Library is a collection of reusable application blocks addressing common cross-cutting concerns. This release includes: Data Access Application Block, Exception Handling Application Block, Logging Application Block, Policy Injection Application Block, Semantic Logging Application Block, Transient Fault Handling Application Block, Validation Application Block, and Unity Application Block.
This major release of Enterprise Library contains many compelling new features and updates that will make developers and IT professionals more productive. Two new application blocks are:
Other major new features include:
- Semantic Logging Application Block
- Transient Fault Handling Application Block (this application block was previously a part of the Enterprise Library Integration Pack for Windows Azure; in this release it has been generalized and updated to the latest technologies)
New Unity Application Block includes many improvements:
- New programmatic configuration that doesn’t require a container
- AsynchronousTraceListenerWrapper for the Logging Application Block, which enables existing listeners to write messages asynchronously
- JSON formatter for the Logging Application Block.
- Registration by convention
- Support for NetCore (Windows Store apps)
- Resolving objects of type Lazy<T>
- The Unity assembly is now Security Transparent
- Support for ASP.NET MVC and ASP.NET Web API
The detailed list of all changes is included in the Release Notes.
All application blocks are also available as NuGet packages.
Unity is a dependency injection container. It is full-featured, with support for instance and type interception and custom extensions. Unity 3 also supports Windows Store apps.
Date published: 4/25/2013
Unity3-binaries-only.exe, 401 KB
Unity3-binaries-symbols-source.exe, 1.6 MB
This major release of Unity includes the following new features:
- Registration by convention.
- Support for NetCore (Windows Store apps).
- Resolving objects of type Lazy<T> by Unity.
- The Unity assembly is now Security Transparent.
- Support for ASP.NET MVC and ASP.NET Web API.
The detailed list of all changes is included in the Release Notes
Also available via NuGet.