自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

WCF異步操作具體定義與應用

開發(fā) 開發(fā)工具
WCF異步操作的實現(xiàn)原理與相關定義我們將會在這篇文章中為大家詳細介紹。希望對于又需要的朋友們可以從中獲得一些幫助。

如果想要熟練的應用WCF開發(fā)工具,就需要在學習與實踐的過程中去掌握那些重要的應用技巧。在這里我們就先為大家介紹一下有關WCF異步操作的相關應用技巧,以方便大家在實際應用中獲得些幫助。

實現(xiàn)WCF異步操作模式在編程上具有一些限制:異步服務操作是通過兩個配對的方法實現(xiàn)的,并且采用典型的異步操作命名方式:BeginXxx/EndXxx。兩個方法需要采用如下的簽名,指定了AsyncPattern屬性的OperationContractAttribute只需要應用到BeginXxx方法上面。

  1. [OperationContract(AsyncPattern = true)]   
  2. IAsyncResult BeginDoWork(parameters, AsyncCallback 
    userCallback, object stateObject);   
  3. ReturnType EndDoWork(IAsyncResult asynResult); 

比如下面兩段代碼可以看作相同的操作在同步和異步下的不同表現(xiàn)。

  1. [OperationContract]   
  2. double Add(double x, double y);   
  3. [OperationContract(AsyncPattern = true)]   
  4. IAsyncResult BeginAdd(double x, double y, 
    AsyncCallback userCallback, object stateObject);   
  5. double EndAdd(IAsyncResult asynResult); 

理解了WCF異步操作的定義模式之后,我們來談談WCF異步操作實現(xiàn)的原理。WCF通過類型OperationDescription表示對服務操作的描述。如下面的代碼所示,OperationDescription具有3個重要的MemthodInfo類型的屬性成員:SyncMethod、BeginMethod和EndMethod,分別表示同步方法、異步開始和結(jié)束方法。以上面的代碼為例,如果采用SyncMethod表示Add方法,而BeginMethod和EndMethod對應于BeginAdd和EndAdd方法。

  1. public class OperationDescription   
  2. {   
  3. public MethodInfo SyncMethod { get; set; }   
  4. public MethodInfo BeginMethod { get; set; }   
  5. public MethodInfo EndMethod { get; set; }   
  6. //其他成員   

WCF通過OperationSelector選擇相應的操作,通過OperationInvoker執(zhí)行被選擇操作對應的方法。所有的OperationInvoker都實現(xiàn)了接口System.ServiceModel.Dispatcher.IOperationInvoker。下面是IOperationInvoker基本的定義。Invoke和InvokeBegin/InvokeEnd代表對操作同步和異步執(zhí)行,IsSynchronous表示當前操作是否是異步的,如果操作的AsyncPattern為true則表明是異步操作。

  1. public interface IOperationInvoker   
  2. {   
  3. object[] AllocateInputs();   
  4. object Invoke(object instance, object[] inputs, 
    out object[] outputs);   
  5. IAsyncResult InvokeBegin(object instance, object[] inputs, 
    AsyncCallback callback, object state);   
  6. object InvokeEnd(object instance, out object[] outputs, 
    IAsyncResult result);   
  7. bool IsSynchronous { get; }   

在WCF中定義了兩個典型的OperationInvoker:SyncOperationInvoker與AsyncOperationInvoker,它們分別用于同步操作和異步操作的執(zhí)行。這兩個OperationINvoker均實現(xiàn)了IOperationInvoker接口,SyncOperationInvoker實現(xiàn)了Invoke方法,AsyncOperationInvoker實現(xiàn)了InvokeBegin和InvokeEnd

當通過OperationSelector和InstanceProvider選出正確的方法和得到相應的服務實例的時候,WCF根據(jù)操作的AsyncPattern選擇相應的OperationInvoker。如果是同步的則自然選擇SyncOperationInvoker,執(zhí)行Invoke方法。Invoke方法會通過OperationDescription的SyncMethod屬性,得到同步操作方法的MethodInfo,采用反射的機制執(zhí)行該方法;對于WCF異步操作,則會調(diào)用AsyncOperationInvoker的InvokeBegin和InvokeEnd方法,InvokeBegin和InvokeEnd方法對應的MethodInfo通過OperationDescription的BeginMethod和EndMethod屬性獲得。得到相應的MethodInfo對象后,同樣通過反射調(diào)用服務實例。

【編輯推薦】

  1. WCF自定義集合類型應用注意事項探討
  2. WCF會話服務基本應用技巧分享
  3. WCF編碼規(guī)范相關知識詳解
  4. Silverlight調(diào)用WCF服務相關應用細節(jié)解析
  5. WCF安全參數(shù)正確設置方式解讀
責任編輯:曹凱 來源: CSDN
相關推薦

2010-02-25 11:23:29

WCF返回自定義格式

2010-03-01 15:08:05

WCF單向操作

2009-12-21 16:04:45

WCF Dispose

2010-02-22 17:07:50

WCF綁定元素

2010-02-25 15:25:19

WCF通道

2010-02-24 09:38:58

WCF應用編碼

2009-12-07 14:35:42

WCF異步調(diào)用

2010-02-22 13:28:05

WCF異步調(diào)用

2010-02-23 13:03:34

WCF序列化

2010-03-02 09:39:11

保護WCF服務

2010-03-02 16:15:59

WCF控制事務

2010-02-24 13:06:27

WCF使用Nhiber

2010-02-24 17:07:26

WCF序列化引擎

2010-03-01 14:56:48

WCF服務引用

2012-04-20 10:05:16

WCF

2010-02-25 14:26:48

WCF特點

2009-12-08 10:21:17

WCF地址

2010-03-01 17:28:25

WCF Stream對

2009-12-21 14:10:26

WCF異步調(diào)用

2009-11-09 10:50:30

WCF異步調(diào)用
點贊
收藏

51CTO技術(shù)棧公眾號