日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

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

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

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

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

WCF契約回調第一步 創(chuàng)建標準契約和回調契約

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

 
 
 
  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契約回調第二步 在服務端實現(xià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. //調用 GetCallbackChannel< (Of < (T>)>) 屬性以獲取通道,
    使用該通道可以調用調用服務的客戶端實例的操作。  
  9. ICalculatorCallback callBack = OperationContext.Current.
    GetCallbackChannel< ICalculatorCallback>();  
  10. callBack.ShowResult(x, y, result);  
  11. }   
  12. #endregion  
  13. }  

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

 
 
 
  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適用于雙工服務協(xié)定或通過 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契約回調第四步 在客戶端實現(xiàn)回調契約

 
 
 
  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契約回調第五步 實現(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契約回調第六步 客戶端調用

程序代碼

 
 
 
  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í)行回調時,需要開通兩個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. < !-- 指定一個或多個系統(tǒng)預定義的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契約回調的全部方法介紹。


當前題目:WCF契約回調六步驟簡單操作
瀏覽路徑:http://m.5511xx.com/article/dhpjhee.html