David Hayden
Enterprise Library 2.0 should be released sometime this month.  The latest version, the Enterprise Library 2.0 December Interim Community Drop, is quite stable and reliable enough to start playing with now.  I doubt there will be many, if any, changes between now and when it gets released this month...."> Enterprise Library 2.0 - Hello IConfigurationSource - David Hayden [MVP C#] - CodeBetter.Com - Stuff you need to Code Better!
 
David Hayden [MVP C#]

Sponsors

The Lounge

Wicked Cool Jobs

News

  • CodeBetter.Com Home

Other Links

Teas

Patterns & Practices

Florida .NET Developer

Book Reviews

Tampa ASP.NET MVC Developer Group

Advertisement

Images in this post missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at imagehelp@codebetter.com
Enterprise Library 2.0 - Hello IConfigurationSource

Enterprise Library 2.0 should be released sometime this month.  The latest version, the Enterprise Library 2.0 December Interim Community Drop, is quite stable and reliable enough to start playing with now.  I doubt there will be many, if any, changes between now and when it gets released this month.

 

Goodbye Configuration Application Block - Hello IConfigurationSource

The Configuration Application Block in Enterprise Library 1.0 has been replaced with an IConfigurationSource interface and two concrete classes that implement the interface, SystemConfigurationSource and FileConfigurationSource.  There is also a SqlConfigurationSource provided in one of the QuickStarts to show you how to build your own concrete implementation of IConfigurationSource, but it is not included in the core architecture.

The application blocks and your code utilize IConfigurationSource in order to properly access configuration information.  As you would expect, SystemConfigurationSource works with the App.config and Web.config in your winform and web applications, respectively, and FileConfigurationSource works with custom configuration files of your choice.

 

 

 

SystemConfigurationSource is Default

Chances are you will never have to think about IConfigurationSource in your applications as you will probably choose to put your application settings in App.config or Web.config , which Enterprise Library 2.0 is expecting by default.

Here is an example of an App.config that tells the Enterprise Library 2.0 Data Access Application Block that my default connection is to the Northwind Database on my local instance of SQL Server:

 

<configuration>
  <configSections>
    <section name="dataConfiguration"
type="Microsoft.Practices.EnterpriseLibrary.
Data.Configuration.DatabaseSettings, Microsoft.
Practices.EnterpriseLibrary.Data
" /> configSections> <connectionStrings> <add name="Northwind" providerName="System.Data.SqlClient" connectionString="Data Source=(local);Initial Catalog=
Northwind;Integrated Security=True
" /> connectionStrings> <dataConfiguration defaultDatabase="Northwind"/> configuration>

 

The part used by the Enterprise Library Data Access Application Block is this:

 

<dataConfiguration defaultDatabase="Northwind"/>

 

essentially telling DAAB that if a database name is unspecified use Northwind.

You can start using the Northwind Database straight away using the configuration above and the following static factory methods that have always been a part of the Enterprise Library Data Access Application Block:

 

Database northwind = DatabaseFactory.CreateDatabase();
Database northwind = DatabaseFactory.CreateDatabase("Northwind");

 

The static factory saves you the work of specifying the following:

 

IConfigurationSource source = new SystemConfigurationSource();
    
DatabaseProviderFactory factory = new DatabaseProviderFactory(source);
    
Database northwind = factory.Create("Northwind");

 

FileConfigurationSource

If you want to place the configuration information in a custom file, “My.config”, you can use the following code:

 

IConfigurationSource source = new FileConfigurationSource("My.config");
    
DatabaseProviderFactory factory = new DatabaseProviderFactory(source);
    
Database northwind = factory.Create("Northwind");

 

However, that gets a little tiresome.  Better that we change the default settings of Enterprise Library 2.0 so that it uses FileConfigurationSource as the default IConfigurationSource and let it know to use “My.config.”

You can do this by adding a couple of things in your App.config or Web.config depending on your situation.

First, register a new config section:

 

<section
    name="enterpriseLibrary.ConfigurationSource"
    type="Microsoft.Practices.EnterpriseLibrary.Common.
Configuration.ConfigurationSourceSection,
Microsoft.Practices.EnterpriseLibrary.Common" />

 

You then add the new section telling Enterprise Library 2.0 that we want the default setting to be FileConfigurationSource and the default file to be “My.config“:

 

<enterpriseLibrary.ConfigurationSource selectedSource="fileSource">
   <sources>
       <add 
         name="fileSource"
         type="Microsoft.Practices.EnterpriseLibrary.
Common.Configuration.FileConfigurationSource,
Microsoft.Practices.EnterpriseLibrary.Common
" filePath ="My.config" /> <add name="systemSource" type="Microsoft.Practices.EnterpriseLibrary.
Common.Configuration.SystemConfigurationSource,
Microsoft.Practices.EnterpriseLibrary.Common
" /> sources> enterpriseLibrary.ConfigurationSource>

 

These changes will now allow us to use the same static factory methods for the Enterprise Library Data Access Application Block using configuration settings in My.Config.

 

Database northwind = DatabaseFactory.CreateDatabase();
Database northwind = DatabaseFactory.CreateDatabase("Northwind");

 

Conclusion

The new IConfigurationSource, SystemConfigurationSource, and FileConfigurationSource used in Enterprise Library 2.0 is a breath of fresh air over the old Configuration Application Block in Enterprise Library 1.0.

 

DrinkingGyokuro Green Tea

 


Posted Sun, Jan 8 2006 9:03 PM by David Hayden
Filed under:

[Advertisement]

Comments

Sahil Malik wrote re: Enterprise Library 2.0 - Hello IConfigurationSource
on Sun, Jan 8 2006 11:34 PM
Yeah this is quite a detour. I am glad you feel that the CTP is usable enough at this time, good post nonetheless.
John Papa wrote re: Enterprise Library 2.0 - Hello IConfigurationSource
on Mon, Jan 9 2006 1:46 AM
Haven't played with this in a few months. This is a departure from what I had seen, too. Not too shabby :-)
Lorenzo Barbieri @ UGIblogs! wrote Enterprise Library 2.0 - Hello IConfigurationSource
on Mon, Jan 9 2006 4:20 AM
David Hayden wrote Enterprise Library 2.0 Data Access Application Block
on Fri, Jan 13 2006 12:06 PM
The Enterprise Library 2.0 Data Access Application Block can help you with a lot of your data access plumbing in your .NET applications as well as provide a database agnostic solution for .NET applications that need to target multiple databases.
David Hayden wrote Enterprise Library 2.0 Data Access Application Block
on Fri, Jan 13 2006 2:13 PM
Author: &lt;a href=&quot;blogs/david.hayden&quot;&gt;David Hayden&lt;/a&gt;&lt;br /&gt;The Enterprise Library 2.0 Data Access Application Block can help you with a lot of your data access plumbing in your .NET applications as well as provide a database agnostic solution for .NET applications that need to target multiple databases.
David Hayden [MVP C#] wrote Enterprise Library 2.0 Logging Application Block
on Sun, Feb 19 2006 7:12 AM
The Logging Application Block in Enterprise Library 2.0 ( Download ) is probably as popular as the Data...
David Hayden [MVP C#] wrote Enterprise Library 2.0 Logging Application Block
on Sun, Feb 19 2006 9:07 AM
The Logging Application Block in Enterprise Library 2.0 ( Download ) is probably as popular as the Data...
David Hayden [MVP C#] wrote Enterprise Library 2.0 Logging Application Block
on Sun, Feb 19 2006 9:09 AM
The Logging Application Block in Enterprise Library 2.0 ( Download ) is probably as popular as the Data...
Devlicio.us