一次搞懂WCF 配置檔案
1.WCF的服務端配置
服務端的配置檔案主要包括endpoint、binding、behavior的配置。一個標準的服務端配置檔案所包含的主要xml配置節如下所示:
<system.ServiceModel>
<services>
<service>
<endpoint/>
</service>
</services>
<bindings>
<!—定義一個或多個系統提供的binding元素,例如<basicHttpBinding> -->
<!—也可以是自定義的binding元素,如<customBinding>. -->
<binding>
<!—例如<BasicHttpBinding>元素. -->
</binding>
</bindings>
<behaviors>
<!—一個或多個系統提供的behavior元素. -->
<behavior>
<!—例如<throttling>元素. -->
</behavior>
</behaviors>
</system.ServiceModel>
1.1 <services>配置節
在<services>配置節中可以定義多個服務,每一個服務都被放到<service>配置節中,WCF的宿主程式可以通過配置檔案找到這些定義的服務併發布這些服務。
<service>配置節包含name和behaviorConfiguration屬性。其中,name配置了實現Service Contract的型別名。型別名必須是完整地包含了名稱空間和型別名。而
behaviorConfiguration的配置值則與其後的<behaviors>配置節的內容有關。<endpoint>是<service>配置節的主體,其中,<endpoint>配置節包含了endpoint的三個組成部分:
Address、Binding和Contract。由於具體的binding配置是在<bindings>配置節中完成,因而,在<endpoint>中配置了bindingConfiguration屬性,指向具體的binding配置。如下所示
:
<services>
<service name="BruceZhang.MyService" behaviorConfiguration="MyBehavior">
<endpoint address=""
binding="netTcpBinding"
bindingConfiguration="DuplexBinding"
contract="BruceZhang.IHello" />
</service>
</services>
我們也可以定義多個endpoint,例如:
<services>
<service
name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<endpoint address="mex"
binding="mexHttpBinding"
contract=" Microsoft.ServiceModel.Samples.IMetadataExchange" />
</service>
</services>
如果address值為空,那麼endpoint的地址就是預設的基地址(Base Address)。例如ICalculator服務的地址就是http://localhost/servicemodelsamples/service.svc,而
IMetadataExchange服務的地址則為http://localhost/servicemodelsamples/service.svc/mex。這裡所謂的基地址可以在<service>中通過配置<host>來定義:
<service
name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<host>
<baseAddresses>
<add baseAddress=
"http://localhost/ServiceModelSamples/service.svc"/>
</baseAddresses>
</host>
<endpoint … />
</service>
1.2 <behaviors>配置節
當我們在定義一個實現了Service Contract的類時, binding和address資訊是客戶端必須知道的,否則無法呼叫該服務。然而,如果需要指定服務在執行方面的相關特性時,就必
須定義服務的behavior。在WCF中,定義behavior就可以設定服務的執行時屬性,甚至於通過自定義behavior插入一些自定義型別。例如通過指定ServiceMetadataBehavior,可以使WCF
服務對外公佈Metadata。配置如下:
<behaviors>
<serviceBehaviors>
<behavior name="metadataSupport">
<serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
</behavior>
<serviceBehaviors>
<behaviors>
在WCF中,behavior被定義為Attribute,其中,System.ServiceModel.ServiceBehaviorAttribute和System.ServiceModel.OperationBehaviorAttribute是最常用的behavior。雖然,
behavior作為Attribute可以通過程式設計的方式直接施加到服務上,但出於靈活性的考慮,將behavior定義到配置檔案中才是最好的設計方式。
利用ServiceBehavior與OperationBehavior可以控制服務的如下屬性:
1、 物件例項的生命週期;
2、 併發與非同步處理;
3、 配置行為;
4、 事務行為;
5、 序列化行為;
6、 後設資料轉換;
7、 會話的生命週期;
8、 地址過濾以及訊息頭的處理;
9、 模擬(Impersonation);
例如,通過ServiceBehavior設定物件例項的生命週期:
<behaviors>
<serviceBehaviors>
<behavior name="metadataSupport">
<instanceContextMode httpGetEnabled="true" httpGetUrl=""/>
</behavior>
<serviceBehaviors>
<behaviors>
相關文章
- WCF配置檔案
- WCF配置檔案詳解
- WCF中的web.config配置檔案Web
- 記一次Webpack配置檔案的分離Web
- 手動配置WCF宿主的.config檔案遇到的幾種錯誤
- 由一次WCF專案的需求擴充套件想到的套件
- wcf 配置與程式碼建立
- Git配置配置檔案Git
- 記錄一次使用 nacos config 配置檔案都正確 但是獲取不到配置檔案的問題
- 這一次搞懂SpringMVC原理SpringMVC
- 最後一次搞懂 Event LoopOOP
- 8.4.4 配置檔案
- vim配置檔案
- Maven配置檔案Maven
- 配置檔案vimrc
- MySQL配置檔案MySql
- shell配置檔案
- mysql 配置檔案MySql
- bash配置檔案
- pch檔案配置
- nginx配置檔案Nginx
- Nginx 配置檔案Nginx
- Maven 配置檔案Maven
- 記一次 IIS 站點配置檔案備份和還原,物理路徑檔案批量備份
- 這一次搞懂Spring Web零xml配置原理以及父子容器關係SpringWebXML
- 一次webapck4 配置檔案無效的解決歷程Web
- mongodb配置檔案常用配置項MongoDB
- apache 配置檔案的配置(轉)Apache
- 這一次搞懂SpringBoot核心原理(自動配置、事件驅動、Condition)Spring Boot事件
- 一次資料檔案COPY
- 跟蹤一次trc檔案
- 熱更新配置檔案
- 理解 Typescript 配置檔案TypeScript
- Git修改配置檔案Git
- 【Mongo】mongo配置檔案Go
- Nginx配置檔案解析Nginx
- redis配置檔案解析Redis
- EBS--配置檔案