WCF編程系列(四)設定檔

來源:互聯網
上載者:User

.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#
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <configuration>
  3.   ......
  4. </configuration>

 

WCF設定檔結構

    WCF配置位於應用程式設定檔中的<system.serviceModel>節點下,其主要內容如下:

隱藏行號 複製代碼 ? C#
  1. <system.ServiceModel>
  2.   
  3.   <services>
  4.     <service>
  5.       <endpoint/>
  6.     </service>
  7.   </services>
  8.  
  9.   <bindings>
  10.     <binding>
  11.     </binding>
  12.   </bindings>
  13.  
  14.   <behaviors>
  15.     <behavior>
  16.     </behavior>
  17.   </behaviors>
  18.   <client>
  19.     <endpoint/>
  20.   </client>
  21. </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#
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <configuration>
  3.   <system.serviceModel>
  4.     <bindings>
  5.       <basicHttpBinding> 
  6.         <binding name="BasicHttpBinding_IFirstService" ....>
  7.           ....
  8.         </binding>
  9.       </basicHttpBinding>
  10.     </bindings>
  11.     <client>
  12.       <endpoint  binding="basicHttpBinding"
  13.           bindingConfiguration="BasicHttpBinding_IFirstService" contract="IFirstService"
  14.           name="BasicHttpBinding_IFirstService" />
  15.     </client>
  16.   </system.serviceModel>
  17. </configuration>

    <endpoint>中bindingConfigration設定為BasicHttpBinding_IFirstService,對應於<bindings><basicHttpBinding><binding name="BasicHttpBinding_IFirstService"….>中的定義,而<basicHttpBinding>配置節點對應的是basicHttpBinding預定義綁定。

<client>節點

    該節點用於用戶端的配置,在該節點下指定用戶端需調用的終結點定義。

 

使用WCF配置編輯器

    前面樣本中我們都是通過手動輸入的配置內容,實際上Visual Studio 2008 為我們提供了一個WCF配置編輯器,在VS中選擇工具菜單—>WCF服務配置編輯器可啟動它,如果項目中已經存在App.config檔案,則可直接在該檔案上單擊右鍵,選擇編輯WCF配置來啟動編輯器。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.