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

WCF契約回調六步驟簡單操作

開發 開發工具
我們今天將會在這篇文章中分為六個步驟為大家詳細介紹一下WCF契約回調的創建以及應用技巧等等,希望能給大家帶來一些幫助。

WCF開發插件中,對于契約的各種操作是一個比較重要的基礎應用技術,我們在學習的過程中需要對其進行充分的掌握。在這里我們就先來一起了解一下關于WCF契約回調的相關方法。方便大家理解。#t#

在WCF的默認的綁定中WSDualHttpBinding是一個安全且可互操作的綁定。適用于雙工服務協定或通過 SOAP 媒介進行的通信。本示例就是基于此綁定來實現的。為在編程中多應用些WCF編程的技術,服務端采用代碼來創建服務端承載。

 

WCF契約回調第一步 創建標準契約和回調契約

回調契約,用于在客戶端顯示結果信息

  1. [ServiceContract(Namespace="http://www,cbcye.com/wcf/Callback/)]  
  2. public interface ICalculatorCallback  
  3. {  
  4. [OperationContract]  
  5. void ShowResult(double x, double y, double result);  
  6. }  

標準契約,聲明了回調契約的類型

 

  1. [ServiceContract(CallbackContract = typeof(ICalculatorCallback))]  
  2. public interface IDuplexCalculator  
  3. {  
  4. [OperationContract]  
  5. void Add(double x, double y);  
  6. }  

WCF契約回調第二步 在服務端實現標準契約

 

  1. [ServiceBehavior(ConcurrencyModeConcurrencyMode=ConcurrencyMode.Multiple)]  
  2. public class DuplexCalculatorService:IDuplexCalculator  
  3. {   
  4. IDuplexCalculator Members#region IDuplexCalculator Members   
  5. public void Add(double x, double y)  
  6. {  
  7. double result = x + y;  
  8. //調用 GetCallbackChannel< (Of < (T>)>) 屬性以獲取通道,
    使用該通道可以調用調用服務的客戶端實例的操作。  
  9. ICalculatorCallback callBack = OperationContext.Current.
    GetCallbackChannel
    < ICalculatorCallback>();  
  10. callBack.ShowResult(x, y, result);  
  11. }   
  12. #endregion  
  13. }  

 

 

WCF契約回調第三步 創建服務端承載

 

  1. class Program  
  2. {  
  3. static void Main(string[] args)  
  4. {  
  5. HostCalculatorService();  
  6. }   
  7. static void HostCalculatorService()  
  8. {  
  9. Uri dualUri = new Uri("http://localhost:7788/cbcye/Calculator%22);  
  10. //向HOST中添加BaseAddress  
  11. using (ServiceHost calculatorServiceHost = new ServiceHost
    (typeof(DuplexCalculatorService), dualUri))  
  12. {  
  13. //WSDualHttpBinding適用于雙工服務協定或通過 SOAP 媒介進行的通信。  
  14. WSDualHttpBinding wsDualHttpBinding = new WSDualHttpBinding();  
  15. //添加服務綁定和服務契約  
  16. calculatorServiceHost.AddServiceEndpoint(typeof(IDuplexCalculator), 
    wsDualHttpBinding, string.Empty);   
  17. //綁定服務行為  
  18. ServiceMetadataBehavior behavior = calculatorServiceHost.
    Description.Behaviors.Find
    < ServiceMetadataBehavior>();  
  19. {  
  20. if (behavior == null)  
  21. {  
  22. behavior = new ServiceMetadataBehavior();  
  23. behavior.HttpGetEnabled = true;  
  24. calculatorServiceHost.Description.Behaviors.Add(behavior);  
  25. }  
  26. else  
  27. {  
  28. behavior.HttpGetEnabled = true;  
  29. }  
  30. }   
  31. //啟動事件  
  32. calculatorServiceHost.Opened += delegate  
  33. {  
  34. Console.WriteLine("Calculator Service has begun to listen 
    on "+ dualUri.ToString());  
  35. };   
  36. calculatorServiceHost.Open();  
  37. Console.Read();  
  38. }  
  39. }  

 

WCF契約回調第四步 在客戶端實現回調契約

 

  1. class CalculatorCallbackHandler:ICalculatorCallback  
  2. {  
  3. #region ICalculatorCallback Members   
  4. public void ShowResult(double x, double y, double result)  
  5. {  
  6. Console.WriteLine("x + y = {2} (x = {0} , y = {1})", x, y, result);  
  7. }   
  8. #endregion  

 

 

WCF契約回調第五步 實現客戶端代理

 

  1. class ClientProxy:ClientBase< IDuplexCalculator>,IDuplexCalculator  
  2. {   
  3. public ClientProxy(InstanceContext callbackInstance)  
  4. : base(callbackInstance)  
  5. { }   
  6. #region IDuplexCalculator Members   
  7. public void Add(double x, double y)  
  8. {  
  9. this.Channel.Add(x, y);  
  10. }  
  11. #endregion  

 

 

WCF契約回調第六步 客戶端調用

程序代碼

 

  1. class Program  
  2. {  
  3. static void Main(string[] args)  
  4. {  
  5. try  
  6. {  
  7. InvocateDuplexCalculator();  
  8. }  
  9. catch (Exception exp)  
  10. {  
  11. Console.WriteLine("[Error] " + exp.Message);  
  12. }   
  13. Console.Read();  
  14. }   
  15. static void InvocateDuplexCalculator()  
  16. {  
  17. CalculatorCallbackHandler callbackHandler = 
    new CalculatorCallbackHandler();   
  18. using (ClientProxy calculator = new ClientProxy
    (new InstanceContext(callbackHandler)))  
  19. {  
  20. Console.WriteLine("Begin to invocate duplex calculator ");  
  21. calculator.Add(85, 86);  
  22. calculator.Close();  
  23. }  
  24. }  

 

 

配置文件

由于使用WSDualHttpBinding綁定執行回調時,需要開通兩個HTTP通道,一個用于服務,一個用于回調。因此需要配置兩個HTTP地址。

 

  1. < ?xml version="1.0" encoding="utf-8" ?> 
  2. < configuration> 
  3. < system.serviceModel> 
  4. < client> 
  5. < !--bindingConfiguration - 指定一個binding的配置名稱,跟< bindings>
    下面同類< binding>的name匹配--> 
  6. < endpoint name="SubscriptionService" 
  7. address="http://localhost:7788/cbcye/Calculator%22  
  8. binding="wsDualHttpBinding" 
  9. bindingConfiguration="wsDualHttpBinding_DuplexCalculator" 
  10. contract="Cbcye.Contract.IDuplexCalculator" 
  11. /> 
  12. < /client> 
  13. < bindings> 
  14. < !-- 指定一個或多個系統預定義的binding,比如< basicHttpBinding>
    當然也可以指定自定義的customBinding,  
  15. 然后在某個指定的binding下建立一個或多個配置,以便被Endpoint來使用這些配置 --> 
  16. < wsDualHttpBinding> 
  17. < binding 
  18. name="wsDualHttpBinding_DuplexCalculator" 
  19. clientBaseAddress="http://localhost:7799/cbcye/Calculator%22  
  20. /> 
  21. < /wsDualHttpBinding> 
  22. < /bindings> 
  23. < /system.serviceModel> 
  24. < /configuration> 

以上就是WCF契約回調的全部方法介紹。

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

2010-02-22 09:38:22

WCF開發

2010-02-23 15:12:25

WCF客戶端

2010-09-25 16:32:13

企業風險管理安全管理

2012-05-04 10:07:56

2010-09-24 15:50:03

2021-11-15 23:44:56

網絡安全零信任隱私

2010-02-26 16:16:15

2010-03-01 15:12:53

WCF回調契約

2009-12-21 10:00:46

WCF基礎開發

2010-02-02 16:01:30

安裝fedora 12

2009-11-06 16:05:37

WCF回調契約

2010-07-09 12:08:36

設置SNMP協議

2009-09-09 09:46:00

MyEclipse配置

2010-03-02 10:54:42

WCF回調操作

2013-08-23 09:30:56

BYOD方案BYODMDM

2010-11-19 10:18:11

網絡連接故障

2011-07-30 13:28:03

2009-12-11 13:31:31

策略路由配置

2010-06-29 19:23:20

UML活動圖

2009-10-27 17:40:35

Oracle表空間狀態
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕在线免费观看 | 精品在线一区 | 亚洲一区二区三区四区五区午夜 | 一级黄色片免费在线观看 | 国产成人综合网 | 欧美精品一区久久 | 国产999在线观看 | 精区3d动漫一品二品精区 | 中文字幕一区二区三区在线视频 | 91成人免费电影 | 久久久久久黄 | 亚洲精品视频免费观看 | 欧美一区二区三区视频 | 龙珠z在线观看 | 中文字幕成人av | 美女爽到呻吟久久久久 | 老熟女毛片 | 国产不卡在线观看 | 毛片一区二区三区 | 久久久久久亚洲精品 | 热久久久 | 中文字幕在线观看 | 国产福利资源在线 | 中文字幕电影在线观看 | 国产一二三区精品视频 | 91精品国产日韩91久久久久久 | 日本不卡视频 | 国产一区二区高清在线 | 国产视频精品在线 | 成人免费视频网站在线看 | 日韩国产中文字幕 | 成人黄色电影在线播放 | 久久成人精品 | 一区二区福利视频 | 91久久精品国产91久久性色tv | 一区二区在线 | 日韩久久久久 | 免费看淫片 | www.99精品| 九九热精品视频 | 欧美精品91|