对于大多数的开发人员来说,在工作需要的情况下,需要掌握一两个比较实用的开发工具。而WCF这样一款功能强大的开发工具就是其中一个重要的选择。在这里我们可以先来了解一下WCF编码规范,以方便大家学习这一开发工具的应用。#t#
1、不要将单向调用设置为异步调用
2、不要将单向调用设置为并发调用
3、单向操作不应该包含异常
4、为单向调用启用可靠性。对于单向调用而言,使用有序传递属于可选项
5、避免在会话服务中定义单向操作。如果定义了,则应将它定义为终止操作
- [ServiceContract(SessionModeSessionMode=SessionMode.Required)]
- interface IOrderManager
- {
- [OperationContract]
- void SetCustomerId(int customerId);
- [OperationContract(IsInitiating=false)]
- void AddItem(int itemId);
- [OperationContract(IsInitiating=false)]
- decimal GetTotal();
- [OperationContract(IsOneWay=true,IsInitiating=falting,
IsTerminating=true)]- void ProcessOrders()
- }
6、为服务端的回调契约取名时,应使用服务契约名加上Callback后缀:
- interfaxe IMyContractCallback
- {...}
- [ServiceContract(CallbackContract=typeof(IMyContractCallback))]
- interface IMyContract
- {...}
7、尽量将回调操作标记为单向
8、只为回调使用回调契约
9、避免在相同的回调契约中将常规的回调与事件混为一谈
10、在WCF编码规范中,事件操作的设计应遵循如下规范:
a、void返回类型
b、没有out参数
c、标记为单向操作
11、避免在事件管理中使用原来的回调契约,而应该使用发布-订阅框架
12、避免为回调显式地定义创建(Setup)方法和销毁(Teardown)方法
- [ServiceContract(CallbackContract=typeof(IMyContractCallback))]
- interface IMyContract
- {
- [OperationContract]
- void DoSomething();
- [OperationContract]
- void Connect();
- [OperationContract]
- void Disconnect();
- }
- interface IMyContractCallback
- {...}
13、使用类型安全的DuplexClientBase<T,C>,而不是DuplexClientBase<T>
14、使用类型安全的DuplexChannelFactory<T,C>,而不是DuplexChannelFactory<T>
15、调试在局域网部署基于WSDualHttpBinding绑定的回调时,应该使用CallbackBaseAddressBehaviorAttribute特性,并将CallbackPort设置为0:
- [CallbackBaseAddressBehavior(CallbackPort=0)]
- class MyClient:IMyContrackBack
- {...}
这就是我们为大家介绍的有关WCF编码规范的一些简要内容。