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

WCF回調契約如何進行正確定義

開發 開發工具
如果我們想在程序中對WCF回調契約進行定義,那么正確的操作方法應該是如何的呢?在這里將會針對這一問題進行詳細講解。

WCF作為一款功能強大的.NET Framework 3.5的重要組成部件,它的出現為開發人員帶來了非常大的好處。今天就先為大家講解一下WCF回調契約的相關定義方式。一個服務契約最多只能包含一個WCF回調契約。通過ServiceContract特性,可以指定回調契約:

  1. interface ISomeCallbackContract   
  2. {   
  3. [OperationContract] void OnCallback( );   
  4. }   
  5. [ServiceContract(CallbackContract = typeof(ISomeCallbackContract))]   
  6. interface IMyContract {   
  7. [OperationContract] intDoSomething( );   
  8. }  

WCF回調契約無須標記ServiceContract特性,但是在回調契約中必須為服務的操作標記OperationContract特性。

在導入回調契約的元數據中,回調契約以Callback結尾。為簡便起見,我們在定義回調契約時,***以Callback為后綴。

為了托管一個回調對象,客戶端需要實例化回調對象,然后通過它創建一個上下文對象:

  1. class MyCallback : IMyContractCallback {   
  2. public void OnCallback( )   
  3. {...}   
  4. }   
  5. IMyContractCallback callback = new MyCallback( );   
  6. InstanceContext context = new InstanceContext(callback);  

假定客戶端的代理類為MyContractClient,則在客戶端就可以通過上下文對象獲得代理對象:

  1. MyContractClient proxy = new MyContractClient(context);  

注意,如果使用了WCF回調契約,則客戶端生成的代理類必須繼承自DuplexClientBase<T>代理類,這是一個專門的支持雙向通信的代理類。注意,該類的構造函數參數既可以接收InstanceContext類型的上下文對象,也可以接收object類型的回調契約對象。

然而,如果是通過SvcUtil或Visual Studio 2005生成的代理,卻不能使用接收object類型對象的構造函數,若要創建代理對象,我們必須先創建上下文對象,如前面的代碼所示。

我們可以手動修改代理類,添加對它的支持,如下所示:

  1. partial class MyContractClient : DuplexClientBase
    <IMyContract>,IMyContract   
  2. {   
  3. public MyContractClient(object callbackInstance) : 
    base(callbackInstance) {} //More constructors   
  4. public void DoSomething( ) { Channel.DoSomething( );   
  5. }  
  6. }   
  7. class MyClient : IMyContractCallback,IDisposable   
  8. {   
  9. MyContractClient m_Proxy;   
  10. public void CallService( )   
  11. {   
  12. m_Proxy = new MyContractClient(this);  
  13.  m_Proxy.DoSomething( );   
  14. }  
  15.  public void OnCallback( )   
  16. {...}   
  17. public void Dispose( )   
  18. {   
  19. m_Proxy.Close( );   
  20. }   
  21. }  

注意,上述的代碼中直接由客戶端實現了回調契約,這是一種比較常見的實現方式。

客戶端通過回調傳遞給服務端的消息包含了WCF回調契約終結點的引用。在服務端,可以通過OperationContext類的泛型方法GetCallbackChannel<T>()獲得。如下所示:

  1. ISomeCallbackContract callback = OperationContext.Current. 
    GetCallbackChannel
    <ISomeCallbackContract>( ); 

【編輯推薦】

  1. WCF單向操作不同于異步操作
  2. WCF服務引用具體操作步驟圖解
  3. WCF行為擴展為程序開發提供極大便利
  4. WCF編碼器正確創建方式解讀
  5. WCF服務異步調用不同實現方式講解
責任編輯:曹凱 來源: IT168
相關推薦

2010-02-26 11:15:51

WCF接口方法

2010-02-24 14:41:16

WCF物理地址

2010-02-25 16:07:28

WCF REST

2010-02-23 14:03:53

WCF契約回調

2009-12-08 11:34:40

WCF Windows

2009-11-06 16:05:37

WCF回調契約

2010-02-24 15:27:26

Python數組

2010-01-18 17:07:52

C++類

2009-12-21 14:05:18

WCF契約

2009-12-30 17:35:21

Silverlight

2009-12-22 19:00:08

WCF回調

2010-02-22 15:27:05

WCF數據契約

2010-02-24 16:58:14

WCF Session

2010-02-22 13:56:35

WCF服務契約

2009-11-09 09:23:10

WCF數據契約

2024-05-21 09:08:57

JVM調優面試

2023-11-30 07:50:38

SaaS企業

2009-12-08 14:10:55

Silverlight

2012-03-26 10:55:03

JavaJava EE

2009-11-09 15:58:07

WCF回調方法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲男人天堂 | 羞羞网站免费观看 | 亚洲精品在线看 | 国产日产精品一区二区三区四区 | 成人免费大片黄在线播放 | 一区二区不卡视频 | 欧美xxxx性| 久久精品一区 | 福利一区二区在线 | 九九精品在线 | 久草福利 | 久久国产精品99久久久久久丝袜 | 一级毛片视频在线 | 成人一区av | 日韩电影中文字幕 | 成人免费福利 | 国产免费一区二区 | 天天摸天天干 | 成人免费福利 | 日韩在线一区二区 | 天天操 夜夜操 | 请别相信他免费喜剧电影在线观看 | 国产丝袜一区二区三区免费视频 | 中文字字幕一区二区三区四区五区 | 在线亚洲人成电影网站色www | 国产成人在线视频 | 国产视频中文字幕 | 国产片侵犯亲女视频播放 | 亚洲欧美日韩成人在线 | 色综合色综合网色综合 | 国产激情偷乱视频一区二区三区 | 久久精品电影 | 男女羞羞视频网站 | 精品久久久久一区二区国产 | 欧美日韩在线视频一区 | 久久国产欧美一区二区三区精品 | 懂色中文一区二区三区在线视频 | 日韩精品区 | 精品中文字幕视频 | 奇米四色影视 | 国产精品久久久久久久久久 |