全面接触微软事务服务
胡朝晖
|
|
五、MTS和MSMQ技术的结合
提到MTS就不能不提到MSMQ(Microsoft Message Queue)。我们知道,DCOM实际上是通过RPC(remote procedure call)来实现组件通讯的,而这个通讯实际上是通过同步方式实现的,但是许多应用系统需要通过消息队列来实现无阻塞的,异步的通讯模式,通过MSMQ,一个应用程序能够发送消息到另外一个应用系统中,然后不需要等待结果就可以返回(象Windows中进行消息通讯的API函数PostMessage一样),而且实际上对方的那个应用程序甚至不一定要处于运行状态。这些消息实际上是被放到一个队列中,发送者可以在它空闲的时候通过检查一个响应队列来判断该消息是否已经被处理完成。
MSMQ服务可以通过一个简单的COM接口来被开发人员使用,这样就使所有使用COM的应用程序,甚至是ASP来直接的发送和接受消息。同时,MSMQ是支持事务处理的,也就是说它实际上是和MTS进行无缝集成的,基于MTS的应用程序可以在一个事务单元中进行消息的发送和接受,在一个事务中的所有的操作要么全部成功要么全部取消。
另外,MSMQ支持进行日志记录,这样当操作出现差错的时候,能够自动进行再次操作。MSMQ对每一条消息的状态进行记录,这样就可以通知发送方该记录是否已经操作成功,以便发送方决定下一步的操作。MSMQ能够对在网络上进行传输的数据进行加密和数字签名,保证系统的安全性。当然,MSMQ也能够指定消息的优先级,让重要的消息被首先得到处理。更为令人惊喜的是, MSMQ可以在多个操作系统平台上得到,其中包括UNIX的多个版本。
为了充分展示MTS和MSMQ结合对企业应用的作用,这里我们展示了一个基于COM,DCOM,MTS,MSMQ应用的例子,其体系结构如下:
在这个例子中,我们实现了一个公司定单处理系统,系统可以以两种方式来接收定单:
1. 允许客户通过Internet来下定单,这就需要通过一个ASP剧本语言来实现,客户可以访问公司的基于ASP的网页填写需要的货物数据,ASP剧本语言通过操作MTS管理下的定单录入组件来存储数据信息。
2. 通过客户(录入相应的数据信息)和定单录入组件之间的直接联系而建立,实际上是通过DCOM来进行通讯的。
这个系统的核心是一些COM组件,这些组件可以用来完成一定的商务逻辑,这些定单录入组件通过查看数据库决定某一个特定的货物是否有足够的库存,而且它们必须能够同时处理多个定单请求,相应的,这些组件是通过MTS来进行统一管理的,MTS同时提供了多数据库的事务处理。
当一个定单被完成以后,定单录入组件就发送一个消息给仓库,告诉仓库这些货物必须被打包以便交给船务公司进行运送。因为定单录入组件没有必要等待仓库结果的返回就可以处理下一票业务,这个消息就被发送到MSMQ中。在仓库的应用程序在方便的时候从MSMQ队列中取出这个请求然后进行相关业务的处理。
六、小节
实际上,我们可以看到,MTS所提供的功能以及对应用系统体系结构的影响是巨大的,MTS使得COM能够真正成为企业级别的分布式的应用系统的基础框架。当然MTS也在不断改进,所以到了W2K时代,MTS被直接集成到COM+里面,而不在是一个独立的可以选择安装的组件。
实际上在.NET Framework系统框架下,MTS的许多思想也被直接运用到里面。MTS以及其发展表现了当前软件发展的趋势,做基础平台的软件厂商提供的框架系统的稳定性、安全性和扩展性越来越好,而具体应用的开发人员只需要关注其应用所相关的领域,而不需要再去考虑系统级别上的问题,使系统的开发越来越快速和方便。
| |