.NET應用程式的設定檔
前述樣本中Host項目中的App.config以及Client項目中的App.config稱為應用程式設定檔,通過該檔案配置可控製程序的運行時行為,相對於在設計時通過程式來設定運行時行為,設定檔具有更高的靈活性:我們無需重新編譯器即可修改應用程式行為。編譯器最終會將App.config編譯成 [應用程式名稱].exe.config 檔案,並放在當前應用程式目錄中。而對應Web應用程式(ASP.NET)其對應的設定檔為Web.config。
.NET存在一個預設的全域設定檔Machine.config,通常位於相應.Net Framework運行庫目錄下的Config目錄中,如:C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG。.NET應用程式啟動時,會將應用程式下的App.config與Machine.config合并(App.config的配置會覆蓋Machine.config配置)。
.NET設定檔是一個標準的XML檔案,根節點為<configuration>,在該節點下包含多個.NET的配置節點
隱藏行號 複製代碼 ? C#
<?xml version="1.0" encoding="utf-8"?>
<configuration>
......
</configuration>
WCF設定檔結構
WCF配置位於應用程式設定檔中的<system.serviceModel>節點下,其主要內容如下:
隱藏行號 複製代碼 ? C#
<system.ServiceModel>
<services>
<service>
<endpoint/>
</service>
</services>
<bindings>
<binding>
</binding>
</bindings>
<behaviors>
<behavior>
</behavior>
</behaviors>
<client>
<endpoint/>
</client>
</system.ServiceModel>
<services>節點
該節點下包含應用程式承載的所有服務規範,由多個<service>節點群組成。
<service>節點
一個<service>定義一個服務,該節點包含兩個屬性:name,指定提供服務契約實現的類型,是一個完全限定名稱(即包括命名空間和類型名稱),如樣本一中指定的Xfrog.Study.WCF.FirstService;behaviorConfiguration,指定服務的行為控制配置名稱,該名稱和<behaviors>下<behavior>節點的name屬性對應,如樣本一中的behaviorConfiguration。
<endpoint>節點
<service>節點下可包含多個<endpoint>節點,每個節點包含以下屬性,用以指定終結點的地址、綁定及契約:
address屬性,一個URI用以指定服務的地址,它可以是相對位址也可以是絕對位址,如果指定的是相對位址,其基地址取<service><host><baseAddresses>下定義的地址,如樣本一中的定義。
binding屬性,指定一個綁定,通常是WCF中預定義綁定,當然也可以指定一個自訂的綁定。
contract屬性,指定一個契約,通常為通過ServiceContract特性定義的介面或類型,同樣是一個完全限定名稱,如樣本一中的Xfrog.Study.WCF.IFirstService。
bindingConfiguration屬性,如果需要修改綁定的預設行為,則需要在bindings節點下,預定義綁定對應的綁定配置節點(參見【WCF編程系列(三)】中的預定義繫結資料行表)下的<binding>節點來指定,該節點的name屬性和此處bindingConfiguration屬性對應,如樣本一中Client項目中的綁定:
隱藏行號 複製代碼 ? C#
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IFirstService" ....>
....
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IFirstService" contract="IFirstService"
name="BasicHttpBinding_IFirstService" />
</client>
</system.serviceModel>
</configuration>
<endpoint>中bindingConfigration設定為BasicHttpBinding_IFirstService,對應於<bindings><basicHttpBinding><binding name="BasicHttpBinding_IFirstService"….>中的定義,而<basicHttpBinding>配置節點對應的是basicHttpBinding預定義綁定。
<client>節點
該節點用於用戶端的配置,在該節點下指定用戶端需調用的終結點定義。
使用WCF配置編輯器
前面樣本中我們都是通過手動輸入的配置內容,實際上Visual Studio 2008 為我們提供了一個WCF配置編輯器,在VS中選擇工具菜單—>WCF服務配置編輯器可啟動它,如果項目中已經存在App.config檔案,則可直接在該檔案上單擊右鍵,選擇編輯WCF配置來啟動編輯器。