Effective C#:使用標準配置機制

iDotNetSpace發表於2010-01-26

    為了避免在程式中使用過多的“硬編碼”,我們一般要把一些會影響到程式執行方式的變數匯出到外部檔案中,這樣我們可以通過簡單的修改檔案的方式,達到改變程式行為的目的。

    我們一般不推薦將變數匯出到外部ini檔案中,因為這種型別的檔案結構受限,而且可能會和其他應用程式的檔名發生衝突;我們也不推薦將變數匯出到登錄檔 中,因為一方面操作登錄檔需要管理員的許可權,而一般使用者應該不會擁有管理員的許可權,另一方面,如果不恰當的操作登錄檔,很容易對機器造成嚴重的損壞。

    我們推薦將變數匯出到XML檔案中。.NET針對XML配置檔案提供了豐富的支援,它本身已經定義了一些結構,例如appSettings,這個節點中的 內容應用於Web和桌面應用程式,當程式啟動時,CLR會讀取這部分資料,將其中的內容以鍵值對的方式儲存在應用程式的 NameValueCollection屬性中。

    ASP.NET應用程式的配置檔案會更加靈活一些,它可以在每一層虛擬目錄中建立一個名為web.config的配置檔案,用於配置該層虛擬目錄中所有文 件的屬性,例如:http://localhost/MyApplication/SubDir1/SubDir2/file.aspx,這個URL可以 使用四個配置檔案:machine.config檔案、位於MyApplication目錄中的web.config配置檔案,然後依次是SubDir1 和SubDir2目錄中的web.config配置檔案。

    在桌面應用程式中,只有一個配置檔案,該配置檔案和可執行檔案在同一個目錄中,命名規則:..config。

    我們在解析配置檔案時,有兩種方式:一種是使用平時常見的讀寫XML檔案的方式,使用XmlReader進行讀取;另一種方式是採用序列化的方式,按照配 置檔案中的結構建立一個DataModel,然後利用序列化和反序列化,對配置檔案進行讀取和儲存。我們推薦使用第二種方法。

    關於配置檔案的儲存位置,有以下三種方式:

  1. 全域性全使用者應用程式資料目錄,通過 Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 方式取得,該目錄用來儲存由所有機器上的所有使用者共享的資訊,通常我們需要使用安裝程式或者管理模組來對該目錄進行讀寫,一般的應用程式不推薦使用該目 錄。
  2. 全域性單用於應用程式資料目錄,通過 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);方式取 得,該目錄用於儲存當前使用者的應用程式資料資訊,使用者無論通過本地登入還是網路遠端登入,都可以使用這個目錄。
  3. 本地單使用者資料目錄,通過Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);方式取得。使用者只有在本地登入機器時,才可以訪問這個目錄。

    我們一般不推薦將配置檔案放置在Program Files目錄或者Windows目錄下,因為這兩個目錄都資料比較敏感的目錄,很可能使用者沒有對這兩個目錄的操作許可權。

    
作者:李勝攀
    

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-626017/,如需轉載,請註明出處,否則將追究法律責任。

相關文章