龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

WCF分布式开发必备知识系列文章1:MSMQ消息队列

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
学习WCF是不是就不需要学习.Net Remoting、ASMX、WSE和MSMQ了? 这个问题一直是很多开发者关注的问题.按照微软的说法,WCF是微软分布式应用程序开发的集大成者,学习WCF编程,就不需要了解其他
     学习WCF是不是就不需要学习.Net Remoting、ASMX、WSE和MSMQ了?

     这个问题一直是很多开发者关注的问题.按照微软的说法,WCF是微软分布式应用程序开发的集大成者,学习WCF编程,就不需要了解其他的技术.这个说法有一定的道理.WCF的出现确实解决了很多问题,它整合了.Net平台下所有的和分布式系统有关的技术,例如.Net Remoting、ASMX、WSE和MSMQ。以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet;可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。开发人员可以构建跨平台、安全、可靠和支持事务处理的企业级互联应用解决方案。既然WCF如此强大,开发者再不用去分别了解.Net Remoting,ASMX等各种技术了。

     可事实并非如此,首先,技术的更新换代没有那么迅速,我们接触的工作平台和技术文章不会因为WCF的出现而全部更新,其次作为一个开发人员,在实际开发过程要学习或者解决技术问题,必须知道其相关的概念,扎实的基础知识毕不可少.

     在本节我们就来了解一下MSMQ的基本概念和开发过程.我们先来了解一下什么是MSMQ:

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

       其中两个重要的概念。一个是消息Message ,一个是队列Queue。

     消息Message是由通信的双方所需要传递的信息,它可以是各式各样的媒体,如文本、声音、图象等等。消息最终的理解方式,为消息传递的双方事先商定,这样做的好处是,一是相当于对数据进行了简单的加密,二则采用自己定义的格式可以节省通信的传递量。消息可以含有发送和接收者的标识,只有指定的用户才能看到回执。时间戳,便于接收方对某些与时间相关的应用进行处理。截止时间,指定时间内消息还未到达则作废。

队列的类型主要包括一下几种:

“公共队列”在整个“消息队列”网络中复制,并且有可能由网络连接的所有站点访问。
“专用队列”不在整个网络中发布。相反,它们仅在所驻留的本地计算机上可用。专用队列只能由知道队列的完整路径名或标签的应用程序访问。
“管理队列”包含确认在给定“消息队列”网络中发送的消息回执的消息。指定希望 MessageQueue 组件使用的管理队列(如果有的话)。
“响应队列”包含目标应用程序接收到消息时返回给发送应用程序的响应消息。指定希望 MessageQueue 组件使用的响应队列(如果有的话)。

     消息队列Queue是发送和接收消息的公用存储空间,它可以存在于内存中或者是物理文件中。消息可以以两种方式发送,即快递方式(express)和可恢复模式(recoverable),它们的区别在于,快递方式为了消息放置于内存中,可恢复模式放于物理磁盘上(详细参见MSDN).

 

     了解到消息队列MSMQ相关的基本概念以后,我们知道它的

优点:稳定、消息优先级、脱机能力以及安全性,有保障的消息传递和执行许多业务处理的可靠的防故障机制。

缺点:MSMQ不适合于Client需要Server端实时交互情况.大量请求时候,响应延迟.

     优点决定了它的松耦合的特性,消息队列同样是实现SOA面向对象的架构的方式之一.现在我们就来看看简单的MSMQ编程.

     要在.net平台上进行MSMQ的开发,需要配置开发环境,安装消息队列,具体的安装过程可以baidu,直接在安装光盘里查找安装windows组件,选择消息队列安装即可.


 安装结束后,可以在我的电脑--管理--消息队列

这个证明你已经安装成功.下面就可以来使用Visual Stdudio进行开发了.

首先,创建一个控制台项目(当然你也可以创建Web或者Winform应用程序).添加项目引用System.Messaging,因为消息队列相关的类库全部封装在System.Messaging.dll程序集里了.下面我们就来写自己的代码.


精彩图集

赞助商链接