av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

三種WCF消息交換常見模式解讀

WCF剛剛開始學(xué)的時候會覺得比較難以掌握,其實(shí)我們可以通過在實(shí)踐中慢慢去體會那些難以掌握的知識點(diǎn)。當(dāng)我們在實(shí)際使用中,會發(fā)現(xiàn)WCF消息交換總共有三種模式。#t#

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計(jì)制作的公司,為廣大用戶提供了網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì),成都網(wǎng)站設(shè)計(jì),廣告投放平臺,成都做網(wǎng)站選創(chuàng)新互聯(lián),貼合企業(yè)需求,高性價比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。

WCF消息交換1. Request/Reply

這是缺省模式,又稱為同步調(diào)用。在調(diào)用服務(wù)方法后需要要等待服務(wù)消息的返回。

  1. Public Class Service1  
  2. Implements IService1  
  3. Public Sub Run() Implements 
    IService1.Run  
  4. Threading.Thread.Sleep(4000) '停四秒  
  5. End Sub  
  6. End Class 

客戶端調(diào)用

 
 
 
  1. Dim s As New ServiceReference1
    .Service1Client  
  2. s.Open()  
  3. Console.WriteLine("開始執(zhí)行時間: 
    {0}", Now.ToString)  
  4. s.Run()  
  5. Console.WriteLine("結(jié)束執(zhí)行時間:
    {0}", Now.ToString)  
  6. s.Close()  
  7. Console.ReadKey() 

運(yùn)行結(jié)果

開始執(zhí)行時間: 2009-11-06 16:53:51

結(jié)束執(zhí)行時間:2009-11-06 16:53:55

相差了四秒了。

WCF消息交換2.one-way模式

這種方式在調(diào)用方法后會立即返回,非常類似于異步行為。不過需要注意的是one-way只能用在過程方法是,而不用于函數(shù)。

接口定義如下,實(shí)現(xiàn)不用更改

 
 
 
  1. < ServiceContract()> _  
  2. Public Interface IService1  
  3. < OperationContract
    (isoneway:=True)> _  
  4. Sub Run()  
  5. End Interface 

我們來看一下運(yùn)行結(jié)果:

開始執(zhí)行時間: 2009-11-06 16:58:28

結(jié)束執(zhí)行時間:2009-11-06 16:58:28

馬上就返回了結(jié)果

注意使用此模式,不得聲明輸出參數(shù)、引用參數(shù)或返回值。

WCF消息交換3. duplex

這種模式相對復(fù)雜一些,我們詳細(xì)描述一下步驟:

(1).設(shè)計(jì)標(biāo)準(zhǔn)的服務(wù)契約。為了完成回調(diào)操作,我們必須指定SessionMode和回調(diào)類型

 
 
 
  1. < ServiceContract(SessionMode
    SessionMode:=SessionMode.Required, 
    callbackcontract:=GetType(ICallback))> _  
  2. Public Interface IService1  
  3. < OperationContract(isoneway:=True)> _  
  4. Sub Run(ByVal name As String)  
  5. End Interface 

設(shè)置回調(diào)接口類型。由于回調(diào)方法在客戶端執(zhí)行,因此無須加ServiceContractAttribute屬性。對于回調(diào)操作,服務(wù)器無須獲取返回消息,因此添加isOneWay:=True特性參數(shù)。

 
 
 
  1. Public Interface ICallback  
  2. < OperationContract()> _  
  3. Sub [Call](ByVal t As DateTime)  
  4. End Interface  
  5. 實(shí)現(xiàn)服務(wù)契約,通過OperationContext
    .Current.GetCallBackChannel
    可以獲取回調(diào)委托,進(jìn)而完成調(diào)用。  
  6. Code  
  7. Public Class Service1  
  8. Implements IService1  
  9. 'ICallback callback = OperationContext
    .Current.GetCallbackChannel< ICallback>();  
  10. Dim callback As ICallback = 
    OperationContext.Current.
    GetCallbackChannel(Of ICallback)()  
  11. Public Sub Run(ByVal name As 
    String) Implements IService1.Run  
  12. Threading.Thread.Sleep(1000) '停四秒  
  13. Me.callback.Call(Now)  
  14. Console.WriteLine("Run Time 
    " & Now.ToString)  
  15. End Sub  
  16. End Class 

這時運(yùn)行時,會出現(xiàn)以前異常:

System.InvalidOperationException: 協(xié)定需要雙工,但是綁定“WSHttpBinding”不支持它或者因配置不正確而無法支持它。

需要更改服務(wù)器的配置文件:

< endpoint address ="" binding="wsHttpBinding" contract="異步.IService1">中的wsHttpBinding改為wsDualHttpBinding,客戶端重新更新服務(wù)器引用即可

客戶端實(shí)現(xiàn):

 
 
 
  1. Sub Main()  
  2. Dim s As New ServiceReference1
    .Service1Client(New System.
    ServiceModel.InstanceContext
    (New ContractCallback))  
  3. Console.WriteLine("開始執(zhí)行時間: 
    {0}", Now.ToString)  
  4. s.Run("aa")  
  5. Console.WriteLine("結(jié)束執(zhí)行時間:
    {0}", Now.ToString)  
  6. Console.ReadKey()  
  7. End Sub  
  8. Public Class ContractCallback  
  9. Implements ServiceReference1.
    IService1Callback  
  10. Public Sub [Call](ByVal t As Date) 
    Implements ServiceReference1
    .IService1Callback.Call  
  11. IO.File.Delete("c:\1.xml")  
  12. Console.WriteLine("Call AppDomain:" 
    & AppDomain.CurrentDomain.FriendlyName)  
  13. Console.WriteLine("Server DateTime:" 
    & t.ToString)  
  14. End Sub  
  15. End Class 

小結(jié):  

運(yùn)行沒有問題,但是 Call 方法,并沒有進(jìn)行打印,也沒有刪除C盤下面的1.xml文件。百思不得其解,同時反現(xiàn)不知道怎么調(diào)試服務(wù)端。這次雖然按照網(wǎng)上博客實(shí)現(xiàn)了三種WCF消息交換的方式,但是沒有理解其中的奧秘。


新聞名稱:三種WCF消息交換常見模式解讀
文章位置:http://uogjgqi.cn/article/dpcsidj.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流