WCF服务离线操作与消息队列MSMQ

之前曾经写过一个关于MSMQ消息队列的文章:WCF分布式开发必备知识(1):MSMQ消息队列 ,当时的目的也是用它来作为学习WCF 消息队列MSMQ编程的基础文章。在那篇文章里,我们详细介绍了MSMQ消息队列的基本概念、安装、部署、开发、调试等相关问题。今天我们来学习WCF分布式开发步步为赢(13):WCF服务离线操作与消息队列MSMQ。在WCF框架下使用MSMQ消息队列服务编程。  这里我会给出一个使用WCF MSMQ实现离线请求的DEMO示例程序。

    全文结构是:
【1】MSMQ基本概念
【2】WCF消息队列MSMQ的优势
【3】WCF 消息队列MSMQ通信框架
【4】安装配置注意事项
【5】示例代码
【总结】


【1】MSMQ基本概念:

简要回顾一下MSMQ的基本概念,详细的你们可以参考 WCF分布式开发必备知识(1):MSMQ消息队列

    MSMQ全称MicroSoft Message Queue,微软消息队列,是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置。它的实现原理是:消息的发送者把自己想要发送的信息放入一个容器中(我们称之为Message),然后把它保存至一个系统公用空间的消息队列(Message Queue)中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理。

【2】WCF消息队列MSMQ的优势:

      消息队列MSMQ的优点:稳定、消息优先级、脱机能力以及安全性,有保障的消息传递和执行许多业务处理的可靠的防故障机制。 因此消息队列是实现SOA面向服务架构的重要组件之一。WCF框架提供了和MSMQ集成与扩展的能力。这一点也是WCF在特性中明确指出的。MSMQ支持离线消息模式,而且在WCF框架下,提供了基于http桥的internet网络队列服务的调用扩展。和MSMQ框架的结合和扩展,使得WCF服务具有的新的特点:

【2.1】Availabiliy:可用性。这个是MSMQ离线消息的一种体现。客户单和服务端不需要实时进行连接,然后进行消息的交互.WCF 客户端可以发送请求到离线服务端,服务上线以后在相应客户端请求。

【2.2】Disjoint:分解。可以讲工作分解为多个操作,一次放入队列。改善系统的可用性和吞吐量。

【2.3】Compensating:补偿。对于多业务事务,可以提供单独的事物提供其它事务失败的善后处理。

【2.4】Load Leveling:负载平衡。可以把过载的客户端请求放入队列,空闲的时候进行处理,平衡系统的吞吐量,改善性能

【3】WCF 消息队列MSMQ通信框架:

      WCF使用NetMsmqBinding来支持消息队列通信。当客户端调用服务时,客户端消息会被封装为MSMQ消息,发送懂到特定的消息队列。服务端宿主在运行转台下会,启动通道侦听器,来检测消息队列消息,如果发现对应的消息,会从队列里取出消息,使用分发器转发给对应的服务。具体的通信架构如图:


WCF分布式开发步步为赢(13):WCF服务离线操作与消息队列MSMQ_18823



    如果宿主离线,消息会被放入队列,等待下一次宿主联机时,在执行消息分发处理,给指定的WCF服务。
发布了29 篇原创文章 · 获赞 1 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章