WCF編碼規(guī)范相關(guān)知識詳解
對于大多數(shù)的開發(fā)人員來說,在工作需要的情況下,需要掌握一兩個比較實用的開發(fā)工具。而WCF這樣一款功能強大的開發(fā)工具就是其中一個重要的選擇。在這里我們可以先來了解一下WCF編碼規(guī)范,以方便大家學(xué)習(xí)這一開發(fā)工具的應(yīng)用。#t#
1、不要將單向調(diào)用設(shè)置為異步調(diào)用
2、不要將單向調(diào)用設(shè)置為并發(fā)調(diào)用
3、單向操作不應(yīng)該包含異常
4、為單向調(diào)用啟用可靠性。對于單向調(diào)用而言,使用有序傳遞屬于可選項
5、避免在會話服務(wù)中定義單向操作。如果定義了,則應(yīng)將它定義為終止操作
- [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、為服務(wù)端的回調(diào)契約取名時,應(yīng)使用服務(wù)契約名加上Callback后綴:
- interfaxe IMyContractCallback
- {...}
- [ServiceContract(CallbackContract=typeof(IMyContractCallback))]
- interface IMyContract
- {...}
7、盡量將回調(diào)操作標(biāo)記為單向
8、只為回調(diào)使用回調(diào)契約
9、避免在相同的回調(diào)契約中將常規(guī)的回調(diào)與事件混為一談
10、在WCF編碼規(guī)范中,事件操作的設(shè)計應(yīng)遵循如下規(guī)范:
a、void返回類型
b、沒有out參數(shù)
c、標(biāo)記為單向操作
11、避免在事件管理中使用原來的回調(diào)契約,而應(yīng)該使用發(fā)布-訂閱框架
12、避免為回調(diào)顯式地定義創(chuàng)建(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、調(diào)試在局域網(wǎng)部署基于WSDualHttpBinding綁定的回調(diào)時,應(yīng)該使用CallbackBaseAddressBehaviorAttribute特性,并將CallbackPort設(shè)置為0:
- [CallbackBaseAddressBehavior(CallbackPort=0)]
- class MyClient:IMyContrackBack
- {...}
這就是我們?yōu)榇蠹医榻B的有關(guān)WCF編碼規(guī)范的一些簡要內(nèi)容。