- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WCF分布式开发步步为赢(13):WCF 服务离线操作与消息队列 MSMQ
所属分类:WCF分布式开发步步为赢,SOA and EAI .
之前曾经写过一个关于 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消息队列逋信框架
如果宿主离线,消息会被放入队列,等待下一次宿主联机时,在执行消息分发处理,给指定的 WCF服
务。
【4】安装配置注意事项:
MSMQ队列几种常见的类型就是:
公共队列:在整个消息队列网络中复制,并且有可能由网络连接的所有站点访问。
专用队列:不在整个网络中发布。相反,它们仅在所驻留的本地计算机上可用。专用队列只能由知道队列 的完整路径名或标签的应用程序访问。
管理队列:包含确认在给定 消息队列”网络中发送的消息回执的消息。指定希望 MessageQueue 组件
使用的管理队列(如果有的话)。
响应队列:包含目标应用程序接收到消息时返回给发送应用程序的响应消息。 指定希望 MessageQueue
组件使用的响应队列(如果有的话)。
这里有几个问题要注意,以前很多人也在配置 MSMQ开发环境的时候遇到这个问题。 Xp环境下作
MSMQ配置开发有很多限制。这里算是做个总结供大家参考 :
公共队列需要域控制器 DC Domain Controller ;
私有队列与托管的机器同属本地,不需要 DC,成为工作组安装;
私有队列需要禁用安全模式:工作组安装与安全,安全设置需要客户端提供证书, MSMQ传输安全需要
使用Windows安全,这里需要使用 AD活动目录。
【5】示例代码:
今天的示例DEMO程序代码,主要演示的是 WCF如何配置和开发一个 MSMQ服务程序,实现 WCF 离线操作,MSMQ事务的部分由于内容较多,这里暂时不涉及。
文档评论(0)