成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WCF消息交換應用方式技巧分享

開發 開發工具
WCF消息交換總共有三種定義方式,其中包括:Request/Reply;one-way模式;duplex等。在這里我們將會對此一一做一個詳細介紹。

WCF開發插件的出現為我們帶來了許多不一樣的體驗。而且其在實際應用中起到了非常重要的作用。在這里我們將會為大家詳細介紹一下其中一個比較重要的基礎知識,WCF消息交換的應用技巧。

客戶端和服務之間通過消息交換(Message Exchange)來完成方法調用和數據傳遞,WCF消息交換擁有三種定義方式。

 

WCF消息交換之1. Request/Reply

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

 

 

  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 

 

 

客戶端調用

 

 

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

 

運行結果#t#

 

開始執行時間: 2009-11-06 16:53:51

結束執行時間:2009-11-06 16:53:55

相差了四秒了。

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

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

接口定義如下,實現不用更改

 

 

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

 

我們來看一下運行結果:

 

開始執行時間: 2009-11-06 16:58:28

結束執行時間:2009-11-06 16:58:28

馬上就返回了結果

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

WCF消息交換之3. duplex

這種模式相對復雜一些,我們詳細描述一下步驟:

(1).設計標準的服務契約。為了完成回調操作,我們必須指定SessionMode和回調類型

 

 

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

 

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

  1. Public Interface ICallback  
  2. < OperationContract()> _  
  3. Sub [Call](ByVal t As DateTime)  
  4. End Interface 

實現服務契約,通過OperationContext.Current.GetCallBackChannel可以獲取回調委托,進而完成調用。

  1. Public Class Service1  
  2. Implements IService1  
  3. 'ICallback callback = OperationContext.Current.
    GetCallbackChannel
    < ICallback>();  
  4. Dim callback As ICallback = OperationContext.Current.
    GetCallbackChannel(Of ICallback)()  
  5. Public Sub Run(ByVal name As String) Implements IService1.Run  
  6. Threading.Thread.Sleep(1000) '停四秒  
  7. Me.callback.Call(Now)  
  8. Console.WriteLine("Run Time " & Now.ToString)  
  9. End Sub  
  10. End Class 

這時運行時,會出現以前異常:

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

需要更改服務器的配置文件:

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

客戶端實現:

  1. Sub Main()  
  2. Dim s As New ServiceReference1.Service1Client(New 
    System.ServiceModel.InstanceContext(New ContractCallback))  
  3. Console.WriteLine("開始執行時間: {0}", Now.ToString)  
  4. s.Run("aa")  
  5. Console.WriteLine("結束執行時間:{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 

 

小結:  

運行沒有問題,但是 Call 方法,并沒有進行打印,也沒有刪除C盤下面的1.xml文件。百思不得其解,同時反現不知道怎么調試服務端。這次雖然按照網上博客實現了三種消息傳遞的方式,但是沒有理解其中的奧秘。

以上就是對WCF消息交換的具體介紹。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-03-02 10:50:57

WCF元數據交換

2010-03-01 13:06:49

WCF繼承

2010-02-26 14:12:27

WCF元數據

2010-02-25 15:25:19

WCF通道

2010-02-22 15:20:54

WCF WS-Disc

2010-02-25 09:50:30

WCF路由截獲消息

2010-02-25 10:52:29

WCF響應服務

2010-02-23 13:03:34

WCF序列化

2010-02-26 10:46:12

WCF行為擴展

2010-03-01 09:48:23

WCF會話服務

2010-03-01 15:40:04

WCF實例停用

2010-02-25 18:04:02

WCF IIS宿主

2010-02-26 13:40:28

WCF消息頭

2010-03-01 17:52:03

WCF選擇綁定

2010-02-24 17:07:26

WCF序列化引擎

2010-02-22 17:58:06

WCF異步上傳

2010-02-22 11:25:50

WCF DateSet

2010-02-24 11:22:04

WCF方法重載

2009-12-22 19:00:08

WCF回調

2010-02-23 16:46:47

WCF并發能力
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品欧美久久久久久久 | 亚洲国产成人精品女人久久久 | 色姑娘av| 日韩精品免费一区二区在线观看 | 久久综合久久久 | 羞羞视频网站免费看 | 日韩三级在线观看 | 日韩av电影在线观看 | 亚洲高清av在线 | 欧美一级在线观看 | 日韩电影中文字幕 | av片在线观看网站 | 日本不卡免费新一二三区 | 一区二区三区中文字幕 | 中文字幕人成乱码在线观看 | 2021狠狠天天天 | 午夜电影福利 | 免费观看的黄色网址 | 91久久精品一区 | 中文字幕av网站 | 国产a爽一区二区久久久 | 亚洲一区二区三区在线 | 久久精品一区 | 欧美日韩亚洲一区 | 中文字幕一区二区三区精彩视频 | 成人欧美一区二区三区黑人孕妇 | 福利视频网 | 精品亚洲永久免费精品 | 在线一区二区三区 | 99精品久久久久久中文字幕 | 美人の美乳で授乳プレイ | 亚洲精品国产精品国自产在线 | 欧美久操网 | 久久久高清 | 亚洲自拍偷拍欧美 | 成人三级视频 | 精品国产不卡一区二区三区 | 天天操天天干天天爽 | 亚洲欧美在线观看 | 亚洲狠狠丁香婷婷综合久久久 | 国产成在线观看免费视频 |