在決定分布基於.Net框架的應用程序之前,要決定怎樣管理公共程序的設置。要提高代碼的重用率和應用程序的互用性,所有的應用程序 – WEB, Windows, Web服務,Windows 服務都要使用應用配置文件作為公共的方法來管理以應用為中心的信息。
系統配置 vs. 應用配置
當.NET的公共語言運行庫(CLR)執行應用程序的時候,它會使用一系列的XML配置文件來設置運行環境的基本屬性。舉例說,如果執行WEB應用程序,那麼CLR就會詢問WEB.config文件來確定以下的設置,包括認證模式(Forms, Windows,或者沒有),認證的用戶,會話狀態設置(InProc, StateServer, or SQL),以及其他關鍵設置。
和上面一樣,Machine.config系統文件提供整個網站的ASP.NET配置設定,並設置用於ASP.NET應用的Web.config中的基礎設定。Security.config 和 EnterpriseSec.config定義系統范圍內的安全和代碼權限設置,它應用於Windows應用程序。
如果應用程序需要運行在相同的運行環境中,默認的設置就可以滿足需求並運行良好。但是,如果需要特定配置提供給基於應用的應用程序,可以將這些信息存儲到特定的由CLR認可的文件,並由應用程序來調用。
存儲應用配置信息
.NET應用的信息存儲在應用執行的目錄下,以.config作為文件擴展名。應用程序的全文件名可以作為配置文件的前綴名:
applicationname.exe.config
<也可以通過使用SYSTEM.CONFIGURATION命名空間程序化的從XML.config文件取得應用程序設定。下面的應用程序配置文件樣例顯示了應用程序中存儲的連接字符串。
<configuration>
<appSettings>
<add key="ConnectionString" value="Provider=SQLOLEDB.1;..."/>
</appSettings>
</configuration>
將應用程序配置信息存儲到外部文件更新應用程序的屬性而不用重新編譯整個程序。比如,假設正在開發基於SQL數據庫的應用程序,如果將連接信息寫入程序內部。當數據庫轉移到另外的服務器上,就需要重新編譯並且重新分發程序來適應這個改變。如果使用.config文件,要做的事情僅僅是在.config文件中改動ConnectionString鍵。
要更有效的使用.config文件,需要為該應用程序創建鍵名和值的標准定義,該定義將作為整個開發團隊的標准,這就允許在同一項目工作的開發者使用同一個項目設定。這個標准在分發應用程序並交付生產時也非常有用。一旦標准化.config設置,運作組就會知道當公共應用程序配置相關問題發生時哪裡是首先應該進行檢查和排錯的。