寫在前面:
最近准備寫Enterprise Library Step By Step的系列文章,對於每一個應用程序塊,我都會用入門篇,進階篇,剖析篇三篇文章去寫。 在入門篇裡會詳細介紹應用程序塊的使用步驟,主要是針對新手入門的;進階篇會介紹一些應用程序塊的更深的應用及擴展機制;剖析篇會去分析應用程序塊的底層設計和類設計的一些內容。所有的觀點都純屬個人理解,有不當之處請大家多多指教。
一.配置應用程序塊概述:
幾乎每一個應用程序都需要一些配置信息,這些信息可以是簡單的數據庫連接信息,或者復雜的多塊多層次用戶信息。如何以及在哪裡存儲應用程序配置數據是程序員經常面臨的問題。
.為應用系統提供了一個通用的配置管理解決方案,可方便靈活地從各種存儲中讀寫配置信息配置信息
.為讀寫配置信息提供了簡單的接口
.支持不同的配置存儲
.支持配置信息的加密
.支持配置文件的動態更新
.支持復雜的配置對象
Config Config Block Block 的使用場景:
.應用系統需要在運行時讀寫復雜的配置信息
.應用系統需要在配置文件中保存敏感數據(比如密碼)
.設計應用系統時能幫助開發人員進行正確的配置讀寫
.應用系統部署後系統管理員能有一個好的工具修改XM 配置文件
二.使用步驟:
假設已經新建好的項目中,並且已經存在Web.config或App.config配置文件。
第一步:建立自定義配置數據類:
該類根據項目的實際情況建立,需要注意的是該類必須是可序列化的(XMLSerializer),並且可以任意復雜
1using System;
2using System.Text;
3using System.Xml.Serialization;
4
5namespace ConfigurationQuickStart
6{
7 public class EditorFontData
8 {
9 private string name;
10 private float size;
11 private int style;
12
13 public EditorFontData()
14 {
15 }
16
17 public string Name
18 {
19 get{ return name; }
20 set{ name = value; }
21 }
22
23 public float Size
24 {
25 get{ return size; }
26 set{ size = value; }
27 }
28 public int Style
29 {
30 get{ return style; }
31 set{ style = value; }
32 }
33
34 public override string ToString()
35 {
36 StringBuilder sb = new StringBuilder();
37 sb.AppendFormat("Name = {0}; Size = {1}; Style = {2}", name, size.ToString(), style.ToString());
38
39 return sb.ToString();
40 }
41 }
42}
43
第二步:用Enterprise Library Configuration配置應用程序:
1.運行Enterprise Library Configuration 工具,選擇File | Open Application 打開App.config文件
2.右擊Application並選擇New | Configuration Application Block,創建一個配置應用程序塊
3.右擊 Configuration Application Block 並選擇 New | Configuration Section,創建一個配置區,注意對於每一個配置區都要設置一個Storage Provider 和一個Transformer。
4.重命名configuration section為EditorSettings
5.右擊EditorSettings 並選擇New | XML File Storage Provider,設置它的Storage Provider
6.在FileName輸入框中輸入EditorSettings.config,路徑相對於App.config
7.在Enterprise Library Configuration 工具裡面選擇New | XML Serializer Transformer。指定它的Transformer
8.選擇File | Save All命令保存全部
9.此時在VS中選擇項目|顯示所有文件,就會發現在項目中多出了一個名為EditorSettings.config的配置文件
10.在項目中選擇 屬性|生成事件|生成後事件命令行 輸入如下內容:
1 copy "$(ProjectDir)\*.config" "$(TargetDir)"
第三步:用代碼訪問配置數據:
1.在項目中添加如下兩個引用
Microsoft.Practices.EnterpriseLibrary.Common.dll,
Microsoft.Practices.EnterpriseLibrary.Configuration.dll.
2.並在.CS代碼中添加:
1using Microsoft.Practices.EnterpriseLibrary.Configuration;
3.寫配置信息:注意在寫配置信息時是整個配置區被覆蓋(無合並),另外,元配置文件必須包含該配置區的定義。
1/**//// <summary>
2 /// 寫XML
3 /// </summary>
4 private void writeXmlConfigDataButton_Click(object sender, EventArgs e)
5 {
6 EditorFontData configData = new EditorFontData();
7
8 if (fontDialog.ShowDialog() == DialogResult.OK)
9 {
10 configData.Name = fontDialog.Font.Name;
11 configData.Size = fontDialog.Font.Size;
12 configData.Style = Convert.ToInt32(fontDialog.Font.Style);
13
14 /**////注意WriteConfiguration 方法,有兩個參數:
15 ///第一個是配置節名稱
16 ///第二個就是自定義配置類的對象
17 ///實際上就是將配置數據寫到這個配置節裡去了
18 ///程序對此的處理是透明的
19 ConfigurationManager.WriteConfiguration("EditorSettings", configData);
20
21 StringBuilder results = new StringBuilder();
22 results.Append("Configuration Data Updated:");
23 results.Append(Environment.NewLine);
24 results.Append('\t');
25 results.Append(configData.ToString());
26
27 }
28
4.讀配置信息:
1/**//// <summary>
2 /// 讀XML
3 /// </summary>
4 private void readXmlConfigDataButton_Click(object sender, System.EventArgs e)
5 {
6 Cursor = System.Windows.Forms.Cursors.WaitCursor;
7
8 /**////GetConfiguration方法就一個參數,即配置節名稱
9 ///注意別忘了進行強制類型轉換
10 EditorFontData configData = ConfigurationManager.GetConfiguration("EditorSettings") as EditorFontData;
11
12 StringBuilder results = new StringBuilder();
13 results.Append("Configuration settings:");
14 results.Append(Environment.NewLine);
15 results.Append('\t');
16 results.Append(configData.ToString());
17 results.Append(Environment.NewLine);
18
19 Cursor = System.Windows.Forms.Cursors.Arrow;
20 }
入門篇就到這裡了,下面我會盡快寫配置應用程序塊的進階篇及剖析篇的:)