首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

Effective C# 原則 37:採用標準組態機制,正確存放應用程式設定

     編輯:關於C#

應用程式設定存放歷經 INI、登錄表,皆有缺失:INI 結構受限、易衝突;登錄表需管理員權限、易被破壞。.NET 提供標準組態系統,支援 XML 組態檔、隔離儲存區、應用程式域隔離,無需特權即可運作。

唯讀設定:應用程式組態檔

  • XML 格式,含預定義區段(執行版本、偵錯層級、組件探索路徑等);
  • <appSettings> 區段:自訂鍵值對,啟動時載入至 NameValueCollection;
  • ASP.NET:每個虛擬目錄可有 web.config,就近優先覆寫(machine.config → 應用程式 web.config → 子目錄 web.config);
  • 桌面應用:每應用程式域一個 <exe名稱>.exe.config。

讀寫設定:XML 序列化至隔離儲存區

組態檔無寫入 API,且不宜存放使用者可變設定。正確做法:

  1. 定義可序列化設定結構:[Serializable] public struct GlobalSettings { ... }
  2. 使用 XmlSerializer 序列化為 XML 檔案(易讀、易偵錯、非物件圖);
  3. 存放於三種特殊資料夾之一(透過 Environment.GetFolderPath 取得):
資料夾適用範圍典型用途
CommonApplicationData所有使用者、機器級資料庫連線字串
ApplicationData目前使用者、漫遊使用者工作內容
LocalApplicationData目前使用者、本機視窗位置、解析度相關

Application 類別提供現成路徑


Application.LocalAppDataPath   // CommonApplicationData\Company\Product\Version
Application.UserAppDataPath    // ApplicationData\Company\Product\Version
Application.LocalUserAppDataPath // LocalApplicationData\Company\Product\Version

自動包含公司、產品、版本資訊,避免衝突,支援多版本並存。

絕對禁區

切勿寫入 Program Files、Windows 系統目錄——需要高權限,一般使用者無法存取。

總結

唯讀設定用 appSettings,讀寫設定用 XML 序列化存入正確的隔離資料夾。這樣既符合安全原則,又給使用者私密感,無需妥協。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved