經(jīng)驗(yàn)之談WCF behaviors配置節(jié)
學(xué)習(xí)WCF時(shí),你可能會(huì)遇到WCF behaviors配置節(jié)問(wèn)題,這里將介紹WCF behaviors配置節(jié)問(wèn)題的解決方法,在這里拿出來(lái)和大家分享一下。當(dāng)我們?cè)诙x一個(gè)實(shí)現(xiàn)了Service Contract的類(lèi)時(shí), binding和address信息是客戶端必須知道的,否則無(wú)法調(diào)用該服務(wù)。然而,如果需要指定服務(wù)在執(zhí)行方面的相關(guān)特性時(shí),就必須定義服務(wù)的 WCF behaviors配置節(jié)。在WCF中,定義behavior就可以設(shè)置服務(wù)的運(yùn)行時(shí)屬性,甚至于通過(guò)自定義WCF behaviors配置節(jié)插入一些自定義類(lèi)型。例如通過(guò)指定 ServiceMetadataBehavior,可以使WCF服務(wù)對(duì)外公布Metadata。配置如下:
- <behaviors>
- <serviceBehaviors>
- <behavior name="metadataSupport">
- <serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
- < SPAN>behavior>
- <serviceBehaviors>
- <behaviors>
在 WCF中,behavior被定義為Attribute,其中,System.ServiceModel.ServiceBehaviorAttribute和 System.ServiceModel.OperationBehaviorAttribute是最常用的behavior。雖然,WCF behaviors配置節(jié)作為Attribute可以通過(guò)編程的方式直接施加到服務(wù)上,但出于靈活性的考慮,將behavior定義到配置文件中才是***的設(shè)計(jì)方式。
利用ServiceBehavior與OperationBehavior可以控制服務(wù)的如下屬性:
#T#◆對(duì)象實(shí)例的生命周期;
◆并發(fā)與異步處理;
◆配置行為;
◆事務(wù)行為;
◆序列化行為;
◆元數(shù)據(jù)轉(zhuǎn)換;
◆會(huì)話的生命周期;
◆地址過(guò)濾以及消息頭的處理;
◆模擬(Impersonation);
例如,通過(guò)ServiceBehavior設(shè)置對(duì)象實(shí)例的生命周期:
- <behaviors>
- <serviceBehaviors>
- <behavior name="metadataSupport">
- <instanceContextMode httpGetEnabled="true" httpGetUrl=""/>
- < SPAN>behavior>
- <serviceBehaviors>
- <behaviors>