Something that has not gotten a lot of visibility but I was recently asked about is "What is going on with Enterprise Library?". EntLib is alive and kicking and is rapidly closing in on the release of EntLib 4.0. Some quick highlights for EntLib 4.0 include:
- Support for and integration into Visual Studio 2008
- Fixes to various quirks in the Validation and Policy Injection Application Block
- More extensibility in the Caching Application Block
- Performance improvements for the Logging Application Block
- Implement support for Partial Trust
All good stuff. You can get more details on what is being worked on at the EntLib v4 Product Backlog page. As part of the EntLib 4 work, Microsoft will also be releasing Unity 1.0. What is Unity you ask? I think this snippet from the Unit CodePlex site does a nice job giving a high level summary of Unity:
The Unity Application Block (Unity) is a lightweight extensible dependency injection container with support for constructor, property, and method call injection.
Unity addresses the issues faced by developers engaged in component-based software engineering. Modern business applications consist of custom business objects and components that that perform specific or generic tasks within the application, in addition to components that individually address cross cutting concerns such as logging, authentication, authorization, caching, and exception handling.
The key to successfully building such applications is to achieve a decoupled or very loosely coupled design. Loosely coupled applications are more flexible and easier to maintain. They are also easier to test during development. You can mock up shims (lightweight mock implementations) of objects that have strong concrete dependencies; such as database connections, network connections, ERP connections, and rich user interface components.
Dependency injection is a prime technique for building loosely coupled applications. It provides ways to handle the dependencies between objects. For example, an object that processes customer information may depend on other objects that access the data store, validate the information, and check that the user is authorized to perform updates. Dependency injection techniques can ensure that the customer class correctly instantiates and populates all of these objects, especially where the dependencies may be abstract.
There has been a lot of desire for something like Unity and I hadn't really caught wind that this work was underway, so I am sure others where as much a mushroom as I was/am. Feel free to check out the Unity CodePlex site for more info.