日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
WCF異步操作具體定義與應(yīng)用

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

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比羅城網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式羅城網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋羅城地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。

實(shí)現(xiàn)WCF異步操作模式在編程上具有一些限制:異步服務(wù)操作是通過(guò)兩個(gè)配對(duì)的方法實(shí)現(xiàn)的,并且采用典型的異步操作命名方式:BeginXxx/EndXxx。兩個(gè)方法需要采用如下的簽名,指定了AsyncPattern屬性的OperationContractAttribute只需要應(yīng)用到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異步操作的定義模式之后,我們來(lái)談?wù)刉CF異步操作實(shí)現(xiàn)的原理。WCF通過(guò)類型OperationDescription表示對(duì)服務(wù)操作的描述。如下面的代碼所示,OperationDescription具有3個(gè)重要的MemthodInfo類型的屬性成員:SyncMethod、BeginMethod和EndMethod,分別表示同步方法、異步開(kāi)始和結(jié)束方法。以上面的代碼為例,如果采用SyncMethod表示Add方法,而B(niǎo)eginMethod和EndMethod對(duì)應(yīng)于BeginAdd和EndAdd方法。

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

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

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

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

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


文章標(biāo)題:WCF異步操作具體定義與應(yīng)用
URL鏈接:http://www.dlmjj.cn/article/djijdso.html