




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、WCF分布式开发步步为赢(13):WCF服务离线操作与消息队列MSMQ 所属分类: WCF分布式开发步步为赢, SOA and EAI 之前曾经写过一个关于MSMQ消息队列的文章:WCF分布式开发必备知识(1):MSMQ消息队列 ,当时的目的也是用它来作为学习WCF 消息队列MSMQ编程的基础文章。在那篇文章里,我们详细介绍了MSMQ消息队列的基本概念、安装、部署、开发、调试等相关问题。今天我们来学习WCF分布式开发步步为赢(13):WCF服务离线操作与消息队列MSMQ。在WCF框架下使用MSMQ消息队列服务编程。 这里我会给出一个使用WCF MSMQ实现离线请求的DEMO示例程序。 全文结构
2、是:【1】MSMQ基本概念【2】WCF消息队列MSMQ的优势【3】WCF 消息队列MSMQ通信框架【4】安装配置注意事项【5】示例代码 【总结】【1】MSMQ基本概念:简要回顾一下MSMQ的基本概念,详细的你们可以参考WCF分布式开发必备知识(1):MSMQ消息队列。 MSMQ全称MicroSoft Message Queue,微软消息队列,是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置。它的实现原理是:消息的发送者把自己想要发送的信息放入一个容器中(我们称之为Message),然后把它保存至一个系统公用空间的
3、消息队列(Message Queue)中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理。【2】WCF消息队列MSMQ的优势: 消息队列MSMQ的优点:稳定、消息优先级、脱机能力以及安全性,有保障的消息传递和执行许多业务处理的可靠的防故障机制。 因此消息队列是实现SOA面向服务架构的重要组件之一。WCF框架提供了和MSMQ集成与扩展的能力。这一点也是WCF在特性中明确指出的。MSMQ支持离线消息模式,而且在WCF框架下,提供了基于http桥的internet网络队列服务的调用扩展。和MSMQ框架的结合和扩展,使得WCF服务具有的新的特点:【2.1】Availabiliy:可用
4、性。这个是MSMQ离线消息的一种体现。客户单和服务端不需要实时进行连接,然后进行消息的交互.WCF 客户端可以发送请求到离线服务端,服务上线以后在相应客户端请求。【2.2】Disjoint:分解。可以讲工作分解为多个操作,一次放入队列。改善系统的可用性和吞吐量。【2.3】Compensating:补偿。对于多业务事务,可以提供单独的事物提供其它事务失败的善后处理。【2.4】Load Leveling:负载平衡。可以把过载的客户端请求放入队列,空闲的时候进行处理,平衡系统的吞吐量,改善性能。【3】WCF 消息队列MSMQ通信框架: WCF使用NetMsmqBinding来支持消息队列通信。当客户
5、端调用服务时,客户端消息会被封装为MSMQ消息,发送懂到特定的消息队列。服务端宿主在运行转台下会,启动通道侦听器,来检测消息队列消息,如果发现对应的消息,会从队列里取出消息,使用分发器转发给对应的服务。具体的通信架构如图: 如果宿主离线,消息会被放入队列,等待下一次宿主联机时,在执行消息分发处理,给指定的WCF服务。【4】安装配置注意事项: MSMQ队列几种常见的类型就是:1.公共队列:在整个消息队列网络中复制,并且有可能由网络连接的所有站点访问。 2.专用队列:不在整个网络中发布。相反,它们仅在所驻留的本地计算机上可用。专用队列只能由知道队列的完整路径名或标签的应用程序访问。 3.管理队列:
6、包含确认在给定“消息队列”网络中发送的消息回执的消息。指定希望 MessageQueue 组件使用的管理队列(如果有的话)。 4.响应队列:包含目标应用程序接收到消息时返回给发送应用程序的响应消息。指定希望 MessageQueue 组件使用的响应队列(如果有的话)。 这里有几个问题要注意,以前很多人也在配置MSMQ开发环境的时候遇到这个问题。Xp环境下作MSMQ配置开发有很多限制。这里算是做个总结供大家参考:1.公共队列需要域控制器DC Domain Controller; 2.私有队列与托管的机器同属本地,不需要DC,成为工作组安装; 3.私有队列需要禁用安全模式:工作组安装与安全,安全设
7、置需要客户端提供证书,MSMQ传输安全需要使用Windows安全,这里需要使用AD活动目录。 【5】示例代码 : 今天的示例DEMO程序代码,主要演示的是WCF如何配置和开发一个MSMQ服务程序,实现WCF离线操作,MSMQ事务的部分由于内容较多,这里暂时不涉及。我们只讨论WCF离线操作。(1)WCF服务代码: 值得注意的WCF的操作要被定义为单向操作,因为本质上其符合单向操作的特征。异步,离线。无返回值。配置操作契约的时候要添加IsOneWay属性。代码如下:/1.服务契约ServiceContract(Namespace=publicinterfaceIWCFMSMQService/操作契
8、约,必须为单向操作OperationContract(IsOneWay=true)voidSayHelloMSMQ(stringname);/2.服务类,继承接口。实现服务契约定义的操作publicclassWCFMSMQService:IWCFMSMQServicepublicWCFMSMQService()Console.WriteLine(WCFMSMQServiceinstancewascreatedat:0,DateTime.Now);/实现接口定义的方法publicvoidSayHelloMSMQ(stringname)Console.WriteLine(Hello!0,Calli
9、ngWCFMSMQServiceOperationat:1,name,DateTime.Now);(2)宿主: 我的开发环境为XP专业版,工作组模式。这里有个问题要注意,就是安全。MSMQ默认的安全模式是需要证书支持。我们必须在宿主配置文件里给配置为none,简化操作,因为证书需要MSMQ域管理器。MSMQ传输安全需要Windows安全,这个又需要AD活动目录支持,工作组模式下不支持,因此这里我们都设置为none。代码如下:(3)客户端: 运行客户端,添加服务引用,这里客户端的配置文件要做修改,安全模式也修改和宿主对应,设置为none。客户端测试方案是每个2秒调用一次服务请求。我们这里在宿主端
10、打印了时间。客户端发送消息完毕以后,宿主暂时不启动。等待一段时间。在启动宿主,观察宿主打印的消息。代码如下:/HTTPNetMsmqBinding_IWCFMSMQServiceWCFMSMQServiceClientwcfServiceProxy=newWCFMSMQServiceClient(NetMsmqBinding_IWCFMSMQService);/通过代理调用SayHello服务,这里及时服务调用服务失败,消息会发送到队列里进行缓存。Console.WriteLine(WCFFirstCallat:0,DateTime.Now);wcfServiceProxy.SayHelloM
11、SMQ(Frank);Thread.Sleep(2000);/客户端休眠两秒,继续下一次调用Console.WriteLine(WCFSecondCallat:0,DateTime.Now);wcfServiceProxy.SayHelloMSMQ(FrankXu);Thread.Sleep(2000);/客户端休眠两秒,继续下一次调用Console.WriteLine(WCFLastCallat:0,DateTime.Now);wcfServiceProxy.SayHelloMSMQ(FrankXuLei);(4)运行结果: 首先是客户端发送到的消息,我们可以再计算机-管理-服务-专用队列里
12、查看到,如图: 以前的服务要求我们必须启动宿主,不然会出现连接错误。这里为了测试,停留约4分钟后,我们启动宿主。观察宿主打印的消息: 宿主在联机以后响应了客户端的调用操作。【总结】 本节文章主要讲解的是WCF 如何使用MSMQ开发离线服务操作。这里除了回顾了MSMQ的基本概念,还介绍了WCF服务使用MSMQ的通信框架的优势和特点。最后给出了基于WCF 消息队列的离线服务调用实现的过程。 WCF 对MSMQ消息队列的支持和扩展,大大提高了WCF服务调用的伸缩性和灵活性。本文由于开发环境的关系,没有给出公共队列的开发实现过程。另外在WCF 消息队列开发过程中,大家要做注意。(1)在服务宿主端启动宿主,要做队列存在的判断,以免出现读取错误。(2)队列服务涉及到安全的问题,认证和消息加密,签名,需要证
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 摊位餐饮合同分股协议书
- 2025年防阻燃工作服项目投资可行性研究分析报告
- 合同甲乙方调整协议书
- 吉林云计算项目商业计划书
- 健康探秘课件教学
- 个体临时用工合同协议书
- 社交媒体与网络营销的大学生甜品店商业策划书
- 货物搬运合同协议书范本
- 酒店会所合作合同协议书
- 2025年中国脒基脲项目商业计划书
- 施工企业资质及承接工程的范围
- 泥浆测试记录表
- 《摩擦力》说课课件(全国获奖实验说课案例)
- 个人信用报告异议申请表
- 初中数学 北师大版 七年级下册 变量之间的关系 用图象表示的变量间关系 课件
- 2023年艺术与审美期末试卷答案参考
- 电气工程竣工验收表格模板
- Teladoc全球领先的远程医疗服务商
- 制程品质检验流程图
- 必修地球圈层结构通用PPT课件
- 物联网体系结构PPT课件
评论
0/150
提交评论