WCF双向通信相关概念正确理解

WCF的出现,给开发领域带来了不小的变化。那么如何才能正确的应用这一新的技术呢?在这里我们可以先从WCF双向通信的相关概念开始了解,以此来进一步加深我们对这一工具的了解程度。#t#

创新互联-专业网站定制、快速模板网站建设、高性价比龙岗网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式龙岗网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖龙岗地区。费用合理售后完善,十多年实体公司更值得信赖。

WCF整合了Remoting和webService等等。而且开发简单(相对的),它既弥补Remoting的只能在.net上运行,又弥补了asmx只能单向传送消息的缺点。也就是说,WCF是实现跨平台,在跨平台的同时,也可以双向通信。在WCF的编程思想中,无疑将SOA的思想体现的***。

首先要做的是就是定义服务契约。定义契约一般使用接口,使得实现和消费这个服务的双方都要按照这个契约来实现相应的接口。在双向通信中至少要定义两个服务,一个服务是供消费程序消费的,另一个则是在callBack的时候调用的服务,这个服务应该由消费程序实现。

其次,就是在服务端实现这些契约(说白了就是实现上面定义的接口)。在开发中,我们经常会把这个实现独立出来,方便在不同的宿主中发布这些服务。

***,实现客户端。在WCF双向通信中,客户端也是服务端,因为它也实现了服务契约。

来段代码:

 
 
 
  1. namespace Lin.Contract  
  2. {  
  3. [ServiceContract(CallbackContract=typeof(ICallBack))]  
  4. public interface IHello  
  5. {  
  6. [OperationContract]  
  7. void SayHelloTo(string userName);  
  8. }  
  9. }  
  10. namespace Lin.Contract  
  11. {  
  12. [ServiceContract]  
  13. public interface ICallBack  
  14. {  
  15. [OperationContract]  
  16. void ReceiveTime(DateTime time);  
  17. }  
  18. }  
  19. Service:  
  20. namespace Lin.Service  
  21. {  
  22. [ServiceBehavior(ConcurrencyModeConcurrencyMode = 
    ConcurrencyMode.Reentrant)]  
  23. public class ServiceHello : IHello  
  24. {  
  25. IHello 成员#region IHello 成员  
  26. public void SayHelloTo(string userName)  
  27. {  
  28. Console.WriteLine("Hello {0}", userName);  
  29. OperationContext.Current.GetCallbackChannel()
    .ReceiveTime(DateTime.Now);  
  30. }  
  31. #endregion  
  32. }  
  33. }Host:  
  34. class Program  
  35. {  
  36. static void Main(string[] args)  
  37. {  
  38. using (ServiceHost host = new ServiceHost(typeof(ServiceHello)))  
  39. {  
  40. host.Open();  
  41. Console.Read();  
  42. }  
  43. }  
  44. }Client:  
  45. namespace Lin.Client  
  46. {  
  47. public class ClientCallBack:ICallBack  
  48. {  
  49. ICallBack 成员#region ICallBack 成员  
  50. public void ReceiveTime(DateTime time)  
  51. {  
  52. Console.WriteLine("服务器收到消息的时间是:{0}", 
    time.ToLongTimeString());  
  53. }  
  54. #endregion  
  55. }  

WCF双向通信调用服务:

 
 
 
  1. namespace Lin.Client  
  2. {  
  3. public class ClientHello : DuplexClientBase, IHello  
  4. {  
  5. public ClientHello(InstanceContext instance) : base(instance) { } 

 

IHello 成员#region IHello 成员

 
 
 
  1. public void SayHelloTo(string userName)  
  2. {  
  3. base.Channel.SayHelloTo(userName);  
  4. }  
  5. #endregion  
  6. }  
  7. }  
  8. class Program  
  9. {  
  10. static void Main(string[] args)  
  11. {  
  12. Hello();  
  13. Console.Read();  
  14. }  
  15. static void Hello()  
  16. {  
  17. ClientCallBack callBack = new ClientCallBack();  
  18. ClientHello hello = new ClientHello(new InstanceContext(callBack));  
  19. string commandString = string.Empty;  
  20. while (commandString != "exit")  
  21. {  
  22. commandString = Console.ReadLine();  
  23. hello.SayHelloTo(commandString);  
  24. }  
  25. }  

以上就是我们对WCF双向通信的相关介绍。

分享题目:WCF双向通信相关概念正确理解
网站URL:http://www.csdahua.cn/qtweb/news7/551957.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网