montaque

小碗喝酒,小口吃肉

博客园 首页 新随笔 联系 订阅 管理
面向服务SOA 的关键词是服务,是Service ,具体实现的时候一般我们都说Web Service 是比较好的一个实现SOA整个体系的技术. web service 有良好的官方标准,有广大的厂家支持. 其对于面向服务的一些基本要素,比如 Contract, Policy-Oriented, 等又很好的对应支持.

而Web Service的技术剖开的话,无非是实现和调用,或者说Provide and Consume. 对于Consume 而言,我们一般说客户端是通过SOAP1.1或者1.2 同步的调用.这时候我们出了一个次叫做消息. Message. 当然这个消息是以Soap的形式package,他有头,有body,有falut.

而企业应用中,对于面向服务就没有那么简单. 绝对不是简单的一个web service 调用.这时候可能会有三种模式,一种是One-way, 一种是Request/response, 一种是Pub/sub

这三种模式其实可以同分为两类,同步和异步. 对于异步而言,这时候,我们常会提到这几个要求.
1. 异步的话, 可能实在一个很复杂的环境中. 客户端跟服务端需要一个可靠的消息传递机制.他们要解决网络时断时续,机器不能100%可靠等问题.

.这个传递机制其实很多平台都提供了,比如微软的MSMQ, 最近SQL 2005 除了个数据库段到数据库段的可靠消
息传递机制. SQL Service Broker.  ws 也有一个规范叫做Reliable-session, wcf 其实实现了这个规范.




2. 光可靠传递还不够,还需要可靠的消息读取和处理.
  
提到可靠的消息读取和处理,我们很容易想到消息处理的一个完整性. 这个完整性在数据库层次我们可以用一些约束以及事务去保证. 一般我们都是类似的代码. 当然完整性越高并发可能就越低.

Begin Tran
 do what u do, maybe long time transaction
if no error
 commit the tran
else
rollback the tran

到目前位置,消息处理组件其实都有一个共同的趋势就是支持事务的处理. 目前, Service Broker 支持这种机制,他可以跟数据库的事务一起工作,只不过他对queue的缩机制跟其他不一样,也不是两段式的事务.

msmq 式微软Nt 时代出来的技术,目前已经发展到Longhorn 中的4.0 ,runtime几乎可以在任何的os中跑

MSMQ 1.0 can be deployed on computers running Microsoft® Windows NT® 4.0, Windows® 95, and Windows 98.

MSMQ 2.0 can be deployed on computers running Microsoft Windows 2000.

MSMQ 3.0 can be deployed on computers running Microsoft Windows XP Professional and members of the Windows Server 2003 family.

MSMQ is also available with independent client functionality on computers running Windows CE 3.0.


我们目前的应用一般都是msmq 3.0 ,他有一些特性,比如有触发器, http 转发等特性.对于事务的支持, msmq 支持一下两种类型的事务.
1. 发送消息, 目前可以在不同的机器之间开启一个事务. 可靠的发送消息.
2. 接受消息,目前只支持同一个机器上,不同程序之间的事务中接受消息,这个也是msmq 3.0 的一大不足. 因为这也限制,往往会要求处理程序跟队列在一个机器上.

而今天要说的msmq 4.0 ,是longhornserver 中的msmq , 就改进了3.0 的事务支持. 他允许在不同的机器之间使用事务来接受消息. 另外还有一些小的改动.
比如多了一个subqueue,子队列,对多个in order消息的处理改进等.

 
posted on 2006-09-06 11:24  montaque  阅读(2106)  评论(6编辑  收藏  举报