日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

一次搞懂WCF 配置文件

發(fā)布時(shí)間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一次搞懂WCF 配置文件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.WCF的服務(wù)端配置

服務(wù)端的配置文件主要包括endpoint、binding、behavior的配置。一個(gè)標(biāo)準(zhǔn)的服務(wù)端配置文件所包含的主要xml配置節(jié)如下所示:
<system.ServiceModel>
? ?<services>
? ? ? <service>
? ? ? ? ?<endpoint/>
? ? ? </service>
? ?</services>
? ?<bindings>
? ?<!—定義一個(gè)或多個(gè)系統(tǒng)提供的binding元素,例如<basicHttpBinding> -->?
? ?<!—也可以是自定義的binding元素,如<customBinding>. -->
? ? ? <binding>
? ? ? <!—例如<BasicHttpBinding>元素. -->
? ? ? </binding>
? ?</bindings>
? ?<behaviors>
? ?<!—一個(gè)或多個(gè)系統(tǒng)提供的behavior元素. -->
? ? ? <behavior>
? ? ? <!—例如<throttling>元素. -->
? ? ? </behavior>
? ?</behaviors>
</system.ServiceModel>
1.1 <services>配置節(jié)
在<services>配置節(jié)中可以定義多個(gè)服務(wù),每一個(gè)服務(wù)都被放到<service>配置節(jié)中,WCF的宿主程序可以通過(guò)配置文件找到這些定義的服務(wù)并發(fā)布這些服務(wù)。


<service>配置節(jié)包含name和behaviorConfiguration屬性。其中,name配置了實(shí)現(xiàn)Service Contract的類(lèi)型名。類(lèi)型名必須是完整地包含了命名空間和類(lèi)型名。而


behaviorConfiguration的配置值則與其后的<behaviors>配置節(jié)的內(nèi)容有關(guān)。<endpoint>是<service>配置節(jié)的主體,其中,<endpoint>配置節(jié)包含了endpoint的三個(gè)組成部分:


Address、Binding和Contract。由于具體的binding配置是在<bindings>配置節(jié)中完成,因而,在<endpoint>中配置了bindingConfiguration屬性,指向具體的binding配置。如下所示



<services>
? <service name="BruceZhang.MyService" behaviorConfiguration="MyBehavior">
? ? <endpoint address=""
? ? ? ? ? ? ?binding="netTcpBinding"
? ? ? ? ? ? ?bindingConfiguration="DuplexBinding"
? ? ? ? ? ? ?contract="BruceZhang.IHello" />
? </service>
</services>


我們也可以定義多個(gè)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的地址就是默認(rèn)的基地址(Base Address)。例如ICalculator服務(wù)的地址就是http://localhost/servicemodelsamples/service.svc,而


IMetadataExchange服務(wù)的地址則為http://localhost/servicemodelsamples/service.svc/mex。這里所謂的基地址可以在<service>中通過(guò)配置<host>來(lái)定義:
<service?
? ? ? name="Microsoft.ServiceModel.Samples.CalculatorService"
? ? ? behaviorConfiguration="CalculatorServiceBehavior">
<host>
? ? <baseAddresses>
? ? ? ? <add baseAddress=
"http://localhost/ServiceModelSamples/service.svc"/>
? ? </baseAddresses>
</host>
<endpoint … />
</service>


1.2 <behaviors>配置節(jié)


? ? 當(dāng)我們?cè)诙x一個(gè)實(shí)現(xiàn)了Service Contract的類(lèi)時(shí), binding和address信息是客戶(hù)端必須知道的,否則無(wú)法調(diào)用該服務(wù)。然而,如果需要指定服務(wù)在執(zhí)行方面的相關(guān)特性時(shí),就必


須定義服務(wù)的behavior。在WCF中,定義behavior就可以設(shè)置服務(wù)的運(yùn)行時(shí)屬性,甚至于通過(guò)自定義behavior插入一些自定義類(lèi)型。例如通過(guò)指定ServiceMetadataBehavior,可以使WCF


服務(wù)對(duì)外公布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可以通過(guò)編程的方式直接施加到服務(wù)上,但出于靈活性的考慮,將behavior定義到配置文件中才是最好的設(shè)計(jì)方式。
利用ServiceBehavior與OperationBehavior可以控制服務(wù)的如下屬性:
1、 對(duì)象實(shí)例的生命周期;
2、 并發(fā)與異步處理;
3、 配置行為;
4、 事務(wù)行為;
5、 序列化行為;
6、 元數(shù)據(jù)轉(zhuǎn)換;
7、 會(huì)話(huà)的生命周期;
8、 地址過(guò)濾以及消息頭的處理;
9、 模擬(Impersonation);


例如,通過(guò)ServiceBehavior設(shè)置對(duì)象實(shí)例的生命周期:
<behaviors>
? ? <serviceBehaviors>
? ? <behavior name="metadataSupport">
? ? ? <instanceContextMode httpGetEnabled="true" httpGetUrl=""/>
? ? </behavior>
? ? <serviceBehaviors>
<behaviors>

總結(jié)

以上是生活随笔為你收集整理的一次搞懂WCF 配置文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。