WCF behavior不同級別及類型總結
對于大多數開發人員來說,掌握一個開發工具的應用是一件非常重要的事情。那么WCF的出現,對開發人員來說又多了一個不錯的選擇。在這里我們先來為大家介紹一下WCF behavior的相關內容。WCF behavior,說白了,就是內部的附加操作。在效果上,有點像ASP.NET中的HttpModule和HttpHandle(實現原理當然不一樣了)。#t#
在上面的例子中,我們為Service添加了附加的操作,就是在調用契約方法之前,把從Client傳來的參數+1。我們還可以在Client端也添加類似的行為,我會在下一章中給出這個例子。
behavior在Service和Client分別有不同的類型:
在Service中,這些類型都存放在System.ServiceModel.Dispatcher命名空間下。
在Client中,這些類型都存放在System.ServiceModel.Channels命名空間下。
此外,可以在3個級別定義WCF behavior:
1.Contract級別,顧名思義,把行為加諸于接口(契約)之上,如下所示,也就是MyContractBehavior這個Attribute:
- [MyContractBehavior]
- [ServiceContract]
- public interface ISimple
- {
- [OperationContract(IsOneWay=true)]
- void AcceptRequest(string someRequest);
- }
2.Endpoint級別,把行為加在終結點上,還記得上一篇文章的MyParameterInspector么,下面是code形式的添加(另一種是在配置文件中添加,稍后討論):
- host.Description.Endpoints[0].Contract.Operations[0].
Behaviors.Add(new MyParameterInspector());
3.Operation級別,把行為加在操作(契約的方法)上。這個級別是***的。如下所示,IdentityValidate和IdentityCache都是自定義行為。
- [ServiceContract]
- public interface IIdentityService
- {
- [IdentityValidate]
- [IdentityCache]
- [OperationContract]
- int GetIDByName(string name);
- }
根據我們的需要,在不同級別定義WCF behavior,它們的作用域不同,像Operation級別只影響一個方法,而Endpoint級別影響到這個終結點的所有操作,Contract級別則影響調用該契約的所有操作。
有5種類型的WCF behavior:
ParameterInspection
MessageFormatting
OperationInvoker
MessageInspection
OperationSelector