Enterprise Library 2.0 Cometh

I know everyone has been waiting patiently for us to give some information on V2. Well here is my first post on what we are doing in V2.  We have been really working hard to get the core of Enterprise Library working with Whidbey. We have finally got an approach that is aligned with the platform.  This is the major theme for V2 : align with the platform. 

In the spirit of transparency I want to walk you where we have been, where we are at and where we are going.  Also, we are really pushing to get a preview out really soon (hopefully mid August). 

Where we have been?
.NET 2.0 introduced a whole new System.Configuration subsystem.  It is really cool!  This is very close to what we did in Enterprise Library V1.  We spent a lot of time researching how to integrate this into Enterprise Library with the least amount of pain and produce a greater amount of decoupling of configuration from the rest of the blocks.

In EntLib V1 we had a very heavy use of configuration in all the blocks.  You had to know a lot about configuration if you wanted to dive into the guts and solve some of the edge cases. In this version we wanted to reduce that dependency. This is where Dependency Injection comes in (more on that later).  If you a good look at a DI implementation go check out CAB.

I don’t want to try and explain all of the features in System.Configuration, but I do want to point out how we are using it, the similarities with EntLib V1,  and the changes you can expect. 

System.Configuration has introduced the concept of strongly typed objects .  This is very close to what we accomplished with the XmlSerializer.  Now what is even cooler is they have validations for each property at runtime!  They have the built in ability to protect sections with a specific encryption providers (although key management is somewhere we can help out).  They also have built in support for external storage (only through files).  I will talk about how we are going to support others through the side door .

Dependency Injection
There has been a lot of buzz in the community around dependency injection.  One of the popular frameworks is Spring.  We are doing something similar that will allow you to declaritivly inject your configuration data and other objects into your provider through constructor injections and factories.  We are looking into something similar as in CAB to support setter injection and an event broker.

Where are we now?
We have learn to leverage System.Configuration into our existing blocks.  We will not have as consistent approach as we did last time because of changes in the platform.  Most of our Security Block will need to support the Provider Model found in ASP.NET.  The Data block will become more of a thin shim over ADO.NET 2.0 (your welcome TSHAK). [More on these things later]. 

When we started we had a heck of a problem figuring out how to support polymorphic collection of objects, but through some smart folks and persistence, we have done it. This lets us support the add, remove, clear idiom for collections and integrates well with the current configuration system. This means that we support the hierarchy of config files that we did not in 1.0 . 

We have also developed a mini-spring like framework that we are currently evolving to support separating configuration from the main block logic.  We don’t really want the provider to know about configuration . 

We are also reworking instrumentation so that you can develop LUA and also support pure xcopy.

Where are we going?
We are moving ahead with all the blocks and converting them to align to the platform (get the theme ?  ).   We have worked out the hardest parts (config, DI, instrumentation) and now we are moving on to the design time experience. We are really trying to make that easier!  We will support the developer and operator scenario with the external tool and Visual Studio integration.  We hope to leverage CAB to do this.

I know this has been a brief summary, but as we are close to shipping a preview, I will focus more and more on these topics individual with samples etc.  We can’t wait to get your feedback (even though we have to be ready to go for November 7th).

BTW we have a couple of new additions to the Team : Fernando Simonazzi (who will get a blog), Jonathan Wanagel (who will get a blog) and Lenny Fenster (the guy writing the book for 1.0).  We will all be blogging and helping you guys out real soon.  We will try and get a place on the workspace to discuss these things.

Now playing: King Crimson - Three of a Perfect Pair