wcf客户端调用服务端服务,使用soap message进行交互,这个消息交互过程称为消息交换(Message Exchange)。wcf支持3种不同的消息交换模式Message Exchange Pattern(MEP):(Request/Reply),Request/Forget(One-way)和Duplex。这些消息交换模式需要底层传输协议的支持,wcf使用以下4个传输协议:Http,TCP,Named Pipe,MSMQ。不同的协议对不同的消息交换模式的支持也不一样,所以在采用不同的消息交换模式时,需要选择合适的底层传输协议。
下面以HTTP和TCP协议对Duplex模式的支持进行说明。HTTP协议是应用层协议,它的主要特征是无连接和无状态,每一次http连接包括请求和回复,客户端发送请求到服务端,服务端处理完请求返回到客户端后,连接便关闭。新的http请求需要建立新的http连接。后一次连接无法获取前一次连接的状态。asp.net应用会在服务端保存连接状态来实现对session的支持,wcf则将session关联到某个实例上来实现session的管理。
所以wcf中绑定选择HTTP协议时,Duplex管道则是由两个Request/Reply Channel组成的。客户端调用服务端服务时,建立http连接。服务端返回结果给客户端时需要重新建立http连接。
TCP协议是传输层协议,它的主要特征是可靠连接。所以采用tcp协议时,天然支持Duplex消息交换模式,Client调用Service,Service回调Client使用的都是同一个连接、同一个管道。所以基于TCP的Duplex才是真正意义上的Duplex。
相关文章
- 用自己的话描述wcf中的传输安全与消息安全的区别(三)
- 交换机的三种交换模式
- 交换机接口三种模式Access、Trunk、Hybrid
- WCF自动添加消息头
- 【WCF--初入江湖】08 并发与实例模式
- OJ在线评测系统 微服务 用分布式消息队列 RabbitMQ 解耦判题服务和题目服务 手搓交换机和队列 实现项目异步化
- RabbitMQ 优点和缺点- 消息可靠性:RabbitMQ 提供了持久化功能和消息确认机制,确保消息在各种情况下都能可靠地存储和处理。 灵活的路由:通过多种交换机类型和绑定规则,RabbitMQ 能够灵活地路由消息到指定的队列。 支持多种消息协议:实现了 AMQP 等(MQTT、STOMP)标准化、开放的消息队列协议,使其能够与多种语言编写的应用程序进行通信。 插件化扩展:RabbitMQ 提供了丰富的插件系统,可以通过插件扩展功能,如死信队列、压缩、追踪等。 高可用性:支持集群模式和镜像队列,确保服务的可用性 易用性和可管理性:提供了丰富的 API 和管理工具,以及多种客户端库和框架支持,易于集成和使用。 多语言支持:RabbitMQ 支持多种编程语言的客户端,包括 Java、Python、Ruby、C#、Node.js 等,方便开发人员集成到各种应用中。 高性能:在处理大量并发消息时表现出色。 广泛的社区支持:拥有庞大的开发者社区和丰富的文档资源。 劣势: 性能和吞吐量较低:相比于 Apache Kafka 等面向大数据流处理的消息队列系统,RabbitMQ 的吞吐量较低,不适合处理海量的实时数据流。RabbitMQ 的设计更注重消息的可靠性和灵活性,而非极高的吞吐性能。
- 【原创】思科和锐捷组建多VLAN交换网络(隧道模式Trunk)
- 面向对象的方式进行数据交换网络之间的差异--无缝切换的发展到单机游戏C/S模式
- WCF请求数据:已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。