黃聰:Microsoft Enterprise Library 5.0 系列教程(十) Configuration Application Block

來源:互聯網
上載者:User

到目前為止,我們使用的模組都是在同一個設定檔中,這顯然是不靈活的,我們希望每個功能模組能獨立的在一個設定檔中體現,這樣不僅易於管理,易於擴充,也易於閱讀和分類.企業庫當然考慮到了這個問題並且提供瞭解決方案,本章就是講解如何使用Configuration Application Block來將各個模組分割到獨立的設定檔中的.

和以前一樣,我們先提需求,再用執行個體做講解,這樣比較形象生動些:

  1)      建立一個工程,裡面用到企業庫的Data 資料訪問模組和LogTlog模組

  2)      2個模組的配置分別儲存在不同的設定檔中(Data.config和Log.config中)

  3)      在程式中調用這2個模組

1. 用VS 2008建立一個控制台應用程式.接著運行EntLibConfig.exe, 選擇Blocks菜單 ,單擊Add Data Settings .並設定Connection String屬性,可以隨意設定一個連接字串,在此只做測試使用,配置好後儲存成Data.config,儲存到你的控制台程式目錄下:

2. 再開啟一個EntLibConfig.exe. 選擇Blocks菜單 ,單擊Add Logging Settings .設定如下所示,日誌模組的詳細介紹請參考我之前的文章.配置好之後儲存成Log.config,並儲存到你的控制台程式目錄下.

3.   再開啟一個EntLibConfig.exe. 選擇Blocks菜單 ,單擊Add Configuration Settings . 點擊Sources面板右上方的加號按鈕—Add SourcesAdd File-based Configuration Source.設定建立好的File-based Configuration SourceName屬性為Data ConfigurationSource.接著將File Path屬性設定為前面建立好的Data.config檔案: 

 

4.   點擊Redirected Sections面板右上方的加號按鈕—Add Redirected Sections.設定Configuration Source的屬性為Data Configuration Source: 

5. 同3,4步一樣,我們再設定Log模組的配置,最後設定如所示:

6. 好了,儲存該設定檔為App.config,同樣儲存到前面建立好的控制台程式目錄下,這時候你的程式目錄下應該有如下3個檔案啦:

7. 建立一個新的控制台應用程式,將App.config添加到程式內,並加入需要的Dll檔案:

添加引用:

using System.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Manageability;
using Microsoft.Practices.EnterpriseLibrary.Data.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Logging;

8. 測試:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Manageability;
using Microsoft.Practices.EnterpriseLibrary.Data.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Logging;

namespace test
{
class Program
{
staticvoid Main(string[] args)
{
//從Data.config設定檔擷取設定
DatabaseProviderFactory dbFactory =
new DatabaseProviderFactory(GetFileConfigurationSource("Data Configuration Source"));

Database db = dbFactory.Create("Connection String");
Console.WriteLine(db.ConnectionString);

//從Log.config的設定檔擷取設定
LogWriter lw =new LogWriterFactory(GetFileConfigurationSource("Log Configuration Source")).Create();
lw.Write("123");
}

privatestatic FileConfigurationSource GetFileConfigurationSource(string SourceName)
{
//擷取App.config
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

//擷取資源節點集合
ConfigurationSourceSection section =
(ConfigurationSourceSection)config.GetSection(ConfigurationSourceSection.SectionName);

//擷取重新導向設定檔資源配置節點
FileConfigurationSourceElement elem =
(FileConfigurationSourceElement)section.Sources.Get(SourceName);

//擷取重新導向設定檔資源
FileConfigurationSource fileSource =new FileConfigurationSource(elem.FilePath);
return fileSource;
}
}
}

9. 運行結果:

開啟rolling.log可以看見如下內容:

至此,我們就解決了前面提出的所有需求啦,我們將資料庫模組和日誌模組的配置分別建立在Data.config和Log.config檔案中,並用App.config作為字典來查詢各個模組和設定檔的從屬關係,這樣使得各個模組間的耦合度大大降低,簡化了管理.好了,Microsoft Enterprise Library的系列教程到此算是告一段落了.6,7月份要準備期考啦,考完試我再做其他的系列教程吧,請大家屆時關注,哈哈

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.