偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

WCF契約回調(diào)六步驟簡(jiǎn)單操作

開(kāi)發(fā) 開(kāi)發(fā)工具
我們今天將會(huì)在這篇文章中分為六個(gè)步驟為大家詳細(xì)介紹一下WCF契約回調(diào)的創(chuàng)建以及應(yīng)用技巧等等,希望能給大家?guī)?lái)一些幫助。

WCF開(kāi)發(fā)插件中,對(duì)于契約的各種操作是一個(gè)比較重要的基礎(chǔ)應(yīng)用技術(shù),我們?cè)趯W(xué)習(xí)的過(guò)程中需要對(duì)其進(jìn)行充分的掌握。在這里我們就先來(lái)一起了解一下關(guān)于WCF契約回調(diào)的相關(guān)方法。方便大家理解。#t#

在WCF的默認(rèn)的綁定中WSDualHttpBinding是一個(gè)安全且可互操作的綁定。適用于雙工服務(wù)協(xié)定或通過(guò) SOAP 媒介進(jìn)行的通信。本示例就是基于此綁定來(lái)實(shí)現(xiàn)的。為在編程中多應(yīng)用些WCF編程的技術(shù),服務(wù)端采用代碼來(lái)創(chuàng)建服務(wù)端承載。

 

WCF契約回調(diào)第一步 創(chuàng)建標(biāo)準(zhǔn)契約和回調(diào)契約

回調(diào)契約,用于在客戶(hù)端顯示結(jié)果信息

  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. }  

標(biāo)準(zhǔn)契約,聲明了回調(diào)契約的類(lèi)型

 

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

WCF契約回調(diào)第二步 在服務(wù)端實(shí)現(xiàn)標(biāo)準(zhǔn)契約

 

  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. //調(diào)用 GetCallbackChannel< (Of < (T>)>) 屬性以獲取通道,
    使用該通道可以調(diào)用調(diào)用服務(wù)的客戶(hù)端實(shí)例的操作。  
  9. ICalculatorCallback callBack = OperationContext.Current.
    GetCallbackChannel
    < ICalculatorCallback>();  
  10. callBack.ShowResult(x, y, result);  
  11. }   
  12. #endregion  
  13. }  

 

 

WCF契約回調(diào)第三步 創(chuàng)建服務(wù)端承載

 

  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適用于雙工服務(wù)協(xié)定或通過(guò) SOAP 媒介進(jìn)行的通信。  
  14. WSDualHttpBinding wsDualHttpBinding = new WSDualHttpBinding();  
  15. //添加服務(wù)綁定和服務(wù)契約  
  16. calculatorServiceHost.AddServiceEndpoint(typeof(IDuplexCalculator), 
    wsDualHttpBinding, string.Empty);   
  17. //綁定服務(wù)行為  
  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. //啟動(dòng)事件  
  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契約回調(diào)第四步 在客戶(hù)端實(shí)現(xiàn)回調(diào)契約

 

  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契約回調(diào)第五步 實(shí)現(xiàn)客戶(hù)端代理

 

  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契約回調(diào)第六步 客戶(hù)端調(diào)用

程序代碼

 

  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綁定執(zhí)行回調(diào)時(shí),需要開(kāi)通兩個(gè)HTTP通道,一個(gè)用于服務(wù),一個(gè)用于回調(diào)。因此需要配置兩個(gè)HTTP地址。

 

  1. < ?xml version="1.0" encoding="utf-8" ?> 
  2. < configuration> 
  3. < system.serviceModel> 
  4. < client> 
  5. < !--bindingConfiguration - 指定一個(gè)binding的配置名稱(chēng),跟< bindings>
    下面同類(lèi)< 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. < !-- 指定一個(gè)或多個(gè)系統(tǒng)預(yù)定義的binding,比如< basicHttpBinding>,
    當(dāng)然也可以指定自定義的customBinding,  
  15. 然后在某個(gè)指定的binding下建立一個(gè)或多個(gè)配置,以便被Endpoint來(lái)使用這些配置 --> 
  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契約回調(diào)的全部方法介紹。

責(zé)任編輯:曹凱 來(lái)源: 博客園
相關(guān)推薦

2010-02-22 09:38:22

WCF開(kāi)發(fā)

2010-02-23 15:12:25

WCF客戶(hù)端

2010-09-25 16:32:13

企業(yè)風(fēng)險(xiǎn)管理安全管理

2012-05-04 10:07:56

2021-11-15 23:44:56

網(wǎng)絡(luò)安全零信任隱私

2010-09-24 15:50:03

2010-02-26 16:16:15

2010-03-01 15:12:53

WCF回調(diào)契約

2009-12-21 10:00:46

WCF基礎(chǔ)開(kāi)發(fā)

2010-02-02 16:01:30

安裝fedora 12

2009-11-06 16:05:37

WCF回調(diào)契約

2009-09-09 09:46:00

MyEclipse配置

2010-07-09 12:08:36

設(shè)置SNMP協(xié)議

2010-03-02 10:54:42

WCF回調(diào)操作

2013-08-23 09:30:56

BYOD方案BYODMDM

2010-11-19 10:18:11

網(wǎng)絡(luò)連接故障

2009-10-27 17:40:35

Oracle表空間狀態(tài)

2010-06-29 19:23:20

UML活動(dòng)圖

2011-03-03 10:55:07

2009-12-11 13:31:31

策略路由配置
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)