2009年7月15日 星期三

探討.NET Configuration Files 1-1

RunPC 112、113期:在.NET上保存應用程式設定(四)

在過去這一系列的文章中我們為各位介紹了,怎麼利用DynamicProperties快速設定來保留應用程式;怎麼規劃、自訂自己所屬的XML應用程式設定檔案;以及怎麼使用PropertyGrid控制項物件來讓應用程式的設定更加的方便,將設計時期的屬性視窗延伸到執行時期來對整個應用程式的環境來作配置;而本期我們將帶領各位讀者深入探討.NET Framework所提供的配置檔案(machine、security、application),當然為配合主題,我們將會把焦點放在Application配置檔案上,我們會為各位讀者說明利用DynamicProperties設定後產生的app.config內的appSettings配置區段(Configuration Section)是怎麼來的,以及key和value的配對關係;如何利用.NET Framework所提供的事先定義好的區段處理器(Section Handlers)來建立一個新的配置區段;如何將配置檔案內的Section群組化以利團隊模式開發;和要如何實作IConfigurationSectionHandler介面來自訂自己的區段處理器…等。首先讓我們對.NET Framework上的配置檔案做個概念性的解說。
配置檔案(Configuration Files)
在.NET Framework提供了三種基本型態的配置檔案資訊:電腦(machine)、應用程式(application)和安全性(security)。它們各自是為了不同目的而產生的,但它們皆是XML-Base具有相同的結構描述(Schema),例如:它們皆以這個項目為配置檔案的最上層項目,在配置檔案內根項目內包含了一些子項目(表1),而這些項目是使用標記(Tag)來標記項目的開頭和結尾,而項目的XML標記(Tag)和屬性是有大小寫區分的。當然若您使用事先定義好的區段來定義一個新的配置區段,則您必需要使用預先定義的屬性(項目之開始標記內的key/value配對)來指定配置設定。

表1:項目下的子項目

我們會將重心放置在二個子項目來探討,在開始這二個子項目介紹之前讓我們先對電腦(machine)和安全性(security)的配置檔案做個基本性介紹。
電腦配置檔案(Machine Configuration Files)
電腦配置檔案它的名稱為machine.config,位在.NET Framework安裝路徑的Config子目錄下,一般會在C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\CONFIG目錄下,它包含套用於整個電腦的設定值,如:電腦範圍組件繫結、內建遠端通道和 ASP.NET 的配置設定。配置系統首先會在電腦配置檔案中尋找 項目和開發人員可能定義的其他配置區段。它接著查看應用程式配置檔案(app.config、AppName.exe.config或web.config)。在電腦配置檔所定義的配置區段可在該部電腦的任一配置檔案上使用,除非該配置區段被應用程式配置檔案所覆寫,是故我們可以想像所有應用程式的配置檔案是繼承電腦配置檔案,而應用程式配置檔案可以覆寫電腦配置檔案的配置區段。若要讓電腦配置檔案易於管理,最好將這些設定值放在應用程式配置檔案中,以免喪失應用程式配置檔案的獨立性。然而,若該部電腦共通的設定值會置於電腦配置檔案中,如此做可讓我們的系統更容易維護。例如,如果我們在一台電腦上佈署多個應用程式,而各應用程式皆會連結到同一個單一登錄(Single Sign On)的資料庫伺服器以達到單一登錄,那我們就可將該連結參數設定值放置於電腦配置檔案上是比較適當的位置,而不用在各個應用程式配置檔案上設定,所以您在兩個不同檔案中沒有相同的設定值。但在佈署上若使用 XCOPY 部署應用程式將不會複製電腦配置檔案中的設定值此點要請讀者注意。下面是machine.config的部份內容:

而在先前文章中為各位介紹的『DynamicProperties』是利用DynamicProperties設定後產生的app.config內的appSettings配置區段(Configuration Section)是從電腦配置檔案(Machine.config)內的區段指定配對而來:

您可以將其appSettings區段名稱更名為appSettings1執行,則系統會發生如(圖一)的錯誤,請選擇[否],若要觀察錯誤所在位置,請按『Ctrl+F5』或點選功能表中的[偵錯]-->[啟動但不偵錯],即可見如圖二的配置錯誤畫面,告訴您在配置檔案中發生錯誤的位置,和錯誤的原因,顯而易見的它是告訴我們無法辨認配置區段appSettings,由此可知appSettings配置區段是必預由machine.config電腦配置檔案中事先宣告過。

(圖一)系統配置檔錯誤對話盒


(圖二)配置錯誤畫面

安全性配置檔案(Security Configuration Files)
安全配置檔案包含程式碼群組階層架構和與原則層級相關聯的使用權限集合的資訊。安全性配置檔案包含有三種原則配置檔案:企業(Enterprise)原則配置檔案、電腦(Machine)原則配置檔案、使用者(User)原則配置檔案,各所存在的路徑與檔名如(表2),我們強烈建議讀者使用 .NET Framework 配置工具 (Mscorcfg.msc位在%Runtime install path%下) 或程式碼存取安全性原則工具 (Caspol.exe位在%Runtime install path%下) 來修改安全性原則,確保原則變更不會損毀安全配置檔案。企業原則配置檔案是設定全部企業的安全性配置;電腦原則配置檔案只定義本機的安全性配置,此二者只可被具有administrator權限的使用者來設定配置,而使用者原則配置檔案是用來設定配置目前登錄使用者的相關安全性配置。

表2安全性配置檔案的位置

註:%Runtime install path%為.NET Framework安裝路徑;
vxx.xx.NET Framework的版本,目前一般為v1.0.3705。

沒有留言:

加入書籤: MyShare HemiDemi Baidu Google Bookmarks Yahoo! My Web PChome Del.icio.us Digg technorati furludn bookmark 其他更多書籤

BOOKS:New and Upcoming