Wednesday, November 17, 2010

Enterprise Library 5 Fluent Configuration

One of the big disadvantages of Enterprise Library was that the configuration was very XML centric. In Enterprise Library 5 a new fluent configuration API has been added which allows you to configure your Enterprise Library settings without writing ton’s of XML. The API makes configuring Enterprise Library very intuitive and easy to learn.

In order to use the fluent configuration API, you need to create a ConfigurationSourceBuilder which is the main class to build a runtime configuration. Each feature in Enterprise Library, such as the application blocks for example, provides extension methods for this class which enables us to use the API in the same manner. Thanks to the use of extension methods this is very intuitive and easy. The ConfigurationSourceBuilder class is located in the Microsoft.Practices.EnterpriseLibrary.Common.Configuration DLL and you need to reference it. In order to use the fluent configuration extension methods for every application block, you need to add a reference to that application block’s DLL also.

A sample:

   1:  var configBuilder = new ConfigurationSourceBuilder();
   2:  configBuilder.ConfigureData()
   3:           .ForDatabaseNamed("Northwind")
   4:             .ThatIs
   5:             .ASqlDatabase()
   6:             .WithConnectionString(ConnectionString)
   7:             .AsDefault();
   8:   
   9:    var configSource = new DictionaryConfigurationSource();
  10:    configBuilder.UpdateConfigurationWithReplace(configSource);
  11:    EnterpriseLibraryContainer.Current = EnterpriseLibraryContainer.CreateDefaultContainer(configSource);

Remark: If you already have an Enterprise Library configuration in your config file, you will be able to merge the configuration you created in runtime to it or update it.

No comments: