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

WCF 設定檔完整攻略:服務端與用戶端配置詳解

     編輯:關於.NET

現代軟體系統離不開設定檔,WCF 透過 system.serviceModel 區段實現服務發布與用戶端連線的靈活配置。本文系統整理服務端與用戶端兩大配置體系。

一、服務端設定檔架構

<system.serviceModel>
  <services>
    <service name="..." behaviorConfiguration="...">
      <endpoint address="" binding="..." bindingConfiguration="..." contract="..." />
    </service>
  </services>
  <bindings> ... </bindings>
  <behaviors> ... </behaviors>
</system.serviceModel>

1. <services> 區段:定義服務與端點

  • service/@name:實作服務契約的完整型別名稱(含命名空間)
  • service/@behaviorConfiguration:參考 <behaviors> 中的行為組態名稱
  • <endpoint>:包含 ABC 三要素
    • address:相對/絕對位址,空值則用基底位址
    • binding:繫結型別(如 netTcpBinding)
    • bindingConfiguration:參考 <bindings> 中的具體設定
    • contract:服務契約介面完整名稱

範例:單一服務暴露兩個端點(業務 + 中繼資料)

<service name="Microsoft.ServiceModel.Samples.CalculatorService"
         behaviorConfiguration="CalculatorServiceBehavior">
  <endpoint address="" binding="wsHttpBinding" contract="Microsoft.ServiceModel.Samples.ICalculator" />
  <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>

2. 基底位址 <host> & <baseAddresses>

當端點 address 為空時,使用基底位址:

<service ...>
  <host>
    <baseAddresses>
      <add baseAddress="https://localhost/ServiceModelSamples/service.svc" />
    </baseAddresses>
  </host>
  <endpoint ... />
</service>

上例中 ICalculator 位址 = https://.../service.svc,IMetadataExchange = https://.../service.svc/mex。

3. <behaviors> 區段:控制執行階段行為

透過 <serviceBehaviors> 定義命名行為組態,再由 service/@behaviorConfiguration 參考。

常見行為:

  • 服務中繼資料發布:<serviceMetadata httpGetEnabled="true" />
  • 實例生命週期:<serviceBehavior> 內設 instanceContextMode(PerCall/PerSession/Single)
  • 並發/非同步:concurrencyMode
  • 交易、序列化、工作節流、模擬身分 等
<behaviors>
  <serviceBehaviors>
    <behavior name="metadataSupport">
      <serviceMetadata httpGetEnabled="true" httpGetUrl="" />
    </behavior>
  </serviceBehaviors>
</behaviors>

ServiceBehaviorAttribute / OperationBehaviorAttribute 雖可直接標註類別/方法,但寫入設定檔才符合「部署時調整、無需重編譯」的彈性原則。

二、用戶端設定檔(略)

用戶端核心為 <client> 區段定義端點,搭配 <bindings>、<behaviors>(如 endpointBehaviors),邏輯與服務端對稱。

最佳實務建議

  1. 盡量使用設定檔而非硬編碼,利於維運彈性
  2. 服務端基底位址集中管理,端點採相對位址
  3. 行為組態命名語意化,便於多服務共用
  4. 生產環境關閉 httpGetEnabled 或限制存取
  5. 善用 configSource 外部化大型區段
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved