微软消息队列:SQL Service Broker PK MSMQ

  微软为开发人员提供了两种消息队列:MSMQ和SQL Service Broker。这两种消息队列在很多功能上类似。但它们在一些重要领域的差异也许会影响我们的选择。其中MSMQ是一项非常成熟的技术,而SQL Service Broker是非常新的技术,这项技术对于大多数开发人员来说可能并未使用过。为了使广大的开发人员了解这两项技术有什么不同,并且使开发人员知道在什么情况下应该使用哪种技术,本文就这两种技术的不同做了一下详细的阐述。这将会有助于人们做出正确的选择。   虽然很多开发人员都知道消息队列,但大多数人在企业应用中却没有充分发挥这项技术优势。如果能合理使用消息队列。可以大大改善用户接口交互,如提高资源异步访问的吞吐量,增强消息队列的负载平衡,使客户机可以暂时脱离消息队列工作,从而使客户端和服务端形成一种松散的工作模式。消息队列对开发人员的好处也显而易见,因为大多数复杂的工作已经被微软封装了起来,而这一切对开发人员都是透明的。如开发人员不需要直接使用数据表和存储过程在SQL Server中手工创建队列。虽然除了这两种消息队列,还有很多其他的消息队列,如IBM的MQ系列以及BEA的MessageQ,但MSMQ和Service Broker是所有使用微软开发工具的程序员的首选消息队列。对于MSMQ来说,任何版本的SQL Server都可以使用,而MSMQ和SQLService Broker在几乎所有的Windows平台都可以使用。   微软最初是在Windows NT4.0的选择包中提供MSMQ的,自从那时微软对MSMQ进行了数次修订。MSMQ自从它发布那天起,就是免费的。所有Windows消息队列版本都包含MSMQ,MSMQ还提供了API、COM和.NET接口,用于发送和接受数据,并管理消息队列。
    随着SQL Server2005的发行,微软在这个SQL Server版本中提供了Service Broker,作为除了MSMQ的另一种选择。由于Service Broker和SQL Server2005绑定十分紧密,因此,Service Broker在和数据关联非常紧密的队列操作中比MSMQ更有效率。但Service Broker并不是免费的,要想使用Service Broker,必须得到微软的授权。Service Broker可以使用任何程序设计语言进行访问,当然,这种语言必须能访问SQL Server。还有在SQL Service Broker的大多数队列操作都是通过T-SQL来完成的。       这两个消息队列从表面上看非常相似,如它们都提供了先入先出的队列优先算法、异步消息处理以及从各种语言可访问的特性。但它们也有很多的不同点。表1将给出SQL Service Broker和MSMQ的主要区别。虽然这个表中的数据并不能完全体现这两种技术,但却能很清楚地了解它们之间的主要差异。这些差异将帮助正在这两种产品之间徘徊的人们做出最后的决定。  
特性 MSMQ SQL Service Broker
成本 对所有Windows用户免费 必须得购买SQL Server2005许可证
性能 性能非常高 当使用非标准的功能时性能会低一些
事务 分布式事务,但成本较高 由于使用SQL Server的内部事务处理机制,因此,效率很高
代码位置 队列代码不能运行在SQL Server中 队列代码可以运行在SQL Server中
强类型 通过消息类型和契约提供强类型 无强类型
脱机队列 完全支持脱节队列工作模式 要去必须得连接到SQL Server上
备份 特殊的备份 使用SQL Server2005的备份功能
  表1 MSMQ 和 Service Broker 的差异   为了使用MSMQ,你必须使用Windows NT4、Windows2000、Windows XP或Windows Server2003。MSMQ所支持的Windows平台非常广,如果你现在的操作系统平台的版本比较老,如Windows NT或Windows2000,那么MSMQ将是你最好的选择。如果只在客户端有一些限制时,也可以考虑选择SQL Service Broker,因为这个消息队列的客户端几乎可以运行在任何Windows平台上,这是因为Service Broker的客户端只需要能连接SQL Server2005即可。

你可能感兴趣的:(sql,sql,windows,工作,server,service,微软)