WCF分布式开发步步为赢(13):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服务。

时间: 2024-11-03 19:12:46

WCF分布式开发步步为赢(13):WCF服务离线操作与消息队列MSMQ的相关文章

WCF分布式开发步步为赢(3)WCF服务元数据交换、配置及编程开发

今天我们继续WCF分布式开发步步为赢(3)WCF服务元数据交换.配置及编程开发的学习.经过前面两节的学习,我们了解WCF分布式开发的相关的基本的概念和自定义宿主托管服务的完整的开发和配置过程.今天我们来详细学习WCF服务元数据交换的相关内容.WCF服务元数据究竟是什么?为什么WCF服务要暴露元数据交换节点?这些和以前的Web Service有什么关系?WCF服务元数据交换的方式有那些?我们如何实现WCF服务元数据交换,本节我们会详细讲解.全文结构如下:[1]WCF服务元数据的基本概念.[2]WC

WCF分布式开发步步为赢(7):WCF数据契约与序列化

本节继续学习WCF分布式开发步步为赢(7):WCF数据契约与序列化.数据契约是WCF应用程序开发中一个重要的概念,毫无疑问实现客户端与服务端数据契约的传递中序列化是非常重要的步骤.那么序列化是什么?为什么会有序列化机制?或者说它是为了解决什么问题?作用是什么?现有的.NET 序列化机制和WCF序列化机制有什么不同?我们在本节文章里都会详细介绍.本节结构:[0]数据契约[1]序列化基本概念[2].NET 序列化机制[3]WCF序列化机制[4]代码实现与分析[5]总结. 下面我们正式进入今天的学习阶

WCF分布式开发步步为赢(12):WCF事务机制(Transaction)和分布式事务编程

今天我们继续学习WCF分布式开发步步为赢系列的12节:WCF事务机制(Transaction)和分布式事务编程.众所周知,应用系统开发过程中,事务是一个重要的概念.它是保证数据与服务可靠性的重要机制.作为面向服务应用的开发平台,WCF也提供了对事物编程模型的支持..NET 2.0提供的System.Transactions类来开发事务应用程序.同样WCF也支持事务特性,WCF事务机制是什么,它与微软已有的技术如Microsoft 分布式事务协调器 (MSDTC)有何关系?与Enterpise S

WCF分布式开发步步为赢(11):WCF流处理(Streaming)机制

WSE3.0框架提供了数据优化传输机制,WSE3.0构建Web服务安全(4):MTOM消息传输优化和文件上传.下载疑问里进行了介绍.WCF同样也提供了流操作来支持大数据对象的传输和处理优化机制,今天我们WCF分布式开发步步为赢系列的(4):使用流操作(Streaming Operations)优化传输.本节会详细介绍流操作的相关概念.编程实现过程,以及实际开发过程中需要主要的一些问题.本节结构:[1]流处理的概念[2]流处理的特点[3]示例代码分析[4]总结.最后上传本文的示例代码. Strea

WCF分布式开发步步为赢(9):WCF服务实例激活类型编程与开发

.Net Remoting的激活方式也有三种:SingleTon模式.SingleCall模式.客户端激活方式,WCF服务实例激活类型包括三种方式:单调服务(Call Service),会话服务(Sessionful Service),单例服务(Singleton Service).他们之间有什么联系.WCF服务激活类型的优势和缺点,以及如何在项目里编程开发和设置服务实例.全文分为5个部分,首先一次介绍单调服务(Call Service),会话服务(Sessionful Service),单例服

WCF分布式开发步步为赢(14):WCF安全编程--基本概念

WCF安全机制是个非常复杂的问题,因为涉及的知识点较多,所以今天这个文 章,会分析进行WCF安全开发应该了解的哪些知识点.如何查看资料.为了更好 地理解WCF安全相关知识,我把WCF安全机制主要知识点整理为图表.本章以介绍 WCF安全机制的基础概念为主. 要学习WCF安全编程,你应该学习什么首先掌握什么基础知识?很多时候会因 为缺乏系统的安全概念,在进行WCF安全编程开发的时候,遇到很多问题,比如 所证书,这个概念相信很多初学者第一次接触的时候花费了很多时间.我当时在 做WSE安全开发的时候就查

WCF分布式开发步步为赢

WCF分布式开发步步为赢(15) WCF分布式开发步步为赢(14):WCF安全编程--基本概念 WCF分布式开发步步为赢(13):WCF服务离线操作与消息队列MSMQ WCF分布式开发步步为赢(12):WCF事务机制(Transaction)和分布式 WCF分布式开发步步为赢(11):WCF流处理(Streaming)机制 WCF分布式开发步步为赢(10) WCF分布式开发步步为赢(9):WCF服务实例激活类型编程与开发 WCF分布式开发步步为赢(8) WCF分布式开发步步为赢(7):WCF数据

WCF分布式开发步步为赢(6):WCF服务契约继承与分解设计

上一节我们学习了WCF分布式开发步步为赢(5)服务契约与操作重载部分.今天我们来继续学习WCF服务契约继承和服务分解设计相关的知识点.WCF服务契约继承有何优势和缺点?实际项目里契约设计有什么原则和依据?面向对象的设计经验有何值得借鉴的地方?这里我们会一一给出详细的介绍.本文首先介绍的是WCF服务中契约继承的一些概念.例子代码分析,其次来讲解服务契约的设计问题.首先介绍的也是进行服务设计的必要性,服务设计的原则,示例代码分析.最后是全文的总结部分.结构如下:[1]OO面向对象设计原则,[2]服务

WCF分布式开发步步为赢(5)服务契约与操作重载

继上一节WCF分布式开发步步为赢(4):WCF服务可靠性传输配置与编程开发,本节我们继续学习WCF分布式开发步步为赢的第(5)节:服务契约与操作重载.这里我们首先讲解OOP面向对象的编程中方法重载,重载的意义,WCF服务编程开发如何实现操作重载,随后是代码分析部分,给出了服务端服务契约定义和实现操作重载的注意的问题和实现过程,然后详细介绍了客户端实现操作重载的方式.最后是本文的总结部分.本节的结构是:[1]重载概念[2]操作重载[3]代码实现分析[4]运行结果[5]总结 [1]重载概念: [1.