日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
WCF契約回調(diào)六步驟簡單操作

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

站在用戶的角度思考問題,與客戶深入溝通,找到沁源網(wǎng)站設(shè)計與沁源網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋沁源地區(qū)。

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

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

回調(diào)契約,用于在客戶端顯示結(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)契約的類型

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

WCF契約回調(diào)第二步 在服務(wù)端實現(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ù)的客戶端實例的操作。  
  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é)定或通過 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. //啟動事件  
  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)第四步 在客戶端實現(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)第五步 實現(xiàn)客戶端代理

 
 
 
  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)第六步 客戶端調(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)時,需要開通兩個HTTP通道,一個用于服務(wù),一個用于回調(diào)。因此需要配置兩個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. < !-- 指定一個或多個系統(tǒng)預(yù)定義的binding,比如< basicHttpBinding>,
    當(dāng)然也可以指定自定義的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契約回調(diào)的全部方法介紹。


分享名稱:WCF契約回調(diào)六步驟簡單操作
鏈接URL:http://www.dlmjj.cn/article/dhpjhee.html