【引自Artech的博客】在一个基于面向服务的分布式环境中,借助一个标准的、平台无关的Communication Infrastructure,各个Service通过SOAP Message实现相互之间的交互。这个交互的过程实际上就是Message Exchange的过程。
WCF支持不同形式的Message Exchange,我们把这称之为Message Exchange Pattern(MEP),常见的MEP包括:Request/Reply,Request/Forget(One-way)和Duplex。通过采用Duplex MEP,我们可以实现在Service端Callback Client的操作。虽然WCF为我们实现底层的通信细节,使得我们把精力转移到业务逻辑的实现,进行Transport无关的编程,但是对底层Transport的理解有利于我们根据所处的具体环境选择一个合适的Transport。说到Transport, WCF 经常使用的是以下4个:Http,TCP,Named Pipe,MSMQ。由于不同协议自身的差异,他们对具体MEP的支持方式也会不同,我们今天就来谈谈Http和TCP对Duplex的支持。一、Sample
为了使大家对在WCF如何实现双向通信(Bidirectional Communication)有一个直观的理解,我们先来看一个简单的Sample。我们照例采用下面的4层结构和Calculator的例子:

图1
1、Contract:Artech.DuplexWCF.Contract. ICalculator
|
由于模拟的是通过Callback来显示Add方法计算的结果,我把Add Operation设置成One-way。在Service Contract中设置了Callback Contract,Callback Contract定义在Interface Artech.DuplexWCF.Contract. ICallback中:
|
2、Service: Artech.DuplexWCF.Service. CalculatorService
|
在Service端,通过OperationContext.Current.GetCallbackChannel来获得Ciient指定的CallbackContext instance,进而调用Client的Operation。
3、Hosting:
Configuration:
|
我们通过netTcpBinding来模拟基于TCP的双向通信。
文章地址: http://www.qqread.com/other-devtool/j401801.html相关专题
- HTTP协议 (337篇文章)
- WCF宿主与服务托管 (21次浏览)
- 如何创建一个简单的WCF程序 (21次浏览)
- Windows CE 6.0的技术发展与突破 (11次浏览)
- 在Shell中执行vi/cp/mv时自动备份源文件 (11次浏览)
- WCF Tips之三:WCF中的Stream操作 (7次浏览)
- 动态和静态程序设计语言的可伸缩性 (7次浏览)
- WCF配置文件全攻略 (6次浏览)
- 下雪系统类SnowSystem (5次浏览)
- WCF Tips之四:WCF中的异步调用 (5次浏览)
- WCF安全性方面的一些概念 (4次浏览)



