Enterprise Library and the Future of Service Locator
Enterprise Library for .NET 2.0 has finally been released! This new release contains a lot of breaking changes from the former version; there are many good reasons for this, such as new features of .NET 2.0 which supercede some of the features of Enterprise Library for .NET 1.1, but this also impacts my Service Locator Enterprise Library Application Block. The current version (1.1) obviously also runs on the .NET 2.0 Framework, but since it integrates with Enterprise Library for .NET 1.1, it's not compatible with Enterprise Library for .NET 2.0.
As I still think there's a real need for the Service Locator Application Block (I know I need it!), I'm currently working on a new version. Just like Enterprise Library for .NET 2.0, it's an entirely new code base - the new version of Enterprise Library has a new internal model for creating objects (called Object Builder), and I saw some advantages of leveraging this framework instead of modfying the old version of Service Locator. The new version will support the same scenarios, plus a few new ones, but the API will be a bit different: For once, it now (obviously) uses generics.
Currently, I have a pretty decent beta version on my laptop. What remains to be done before it can be released?
- There are some API changes I want to implement before development finishes. This mostly concerns how Service Locator is configured, and the changes all aim to simplify how this is done. It turns out that I had made the configuration model overly complex, so now I'm making it simple again. Ease of use is a major goal for me.
- Instrumentation. I haven't completely thought this through yet, but I imagine that it might be useful if Service Locator provides performance counters and events whenever it creates an instance of a service.
- QuickStarts. This version of Service Locator addresses two different modes of use, and I plan to provide a QuickStart for each.
- Documentation. Although I'm going to be blogging about Service Locator, the documentation must be good enough to allow the Application Block to stand alone.
As you can see, there's a lot more to creating a full-fledged Application Block than just writing the code. Since this is a semi-hobby project of mine (although something I take quite seriously), I can't guarantee when I'll be able to release the new version, but I hope it will be within the next couple of months.