微软事务服务器

微软事务服务器(,缩写MTS)是为组件对象模型(COM)软件组件提供服务的软件,可以更轻松地创建大型分散式應用程式。

MTS提供的主要服务是自动事务管理、實例管理(或即时激活)和基于角色的安全性。MTS也被认为是第一个实现面向方面编程的主要软件。

MTS最初是在Windows NT 4.0可选包中提供的,在Windows 2000中MTS更名为COM+。COM+在MTS的特性基础上,添加了对象池、松散耦合事件和用户定义的简单事务(补偿资源管理器,CRM)等新特性,并能够更好地与操作系统和COM集成。

COM+仍然随Windows Server 2003和Windows Server 2008一起提供,并且.NET框架在EnterpriseServices命名空间中为COM+提供了一个包装器。Windows通訊基礎(WCF)提供了一种使用Web服务调用COM+应用程序的方法。但是COM+是基于COM的,微软的战略软件架构现在是Web服务和.NET,而不是COM。COM+提供的许多功能都有纯基于.NET的替代方案,从长远来看,COM+很可能会被淘汰。

架构
一个基本的 MTS 架构包括:

  • MTS 执行器 (mtxex.dll)
  • 每个组件的工厂包装器和上下文包装器
  • MTS 服务器组件
  • MTS 客户端
  • 辅助功能,例如:

** COM 运行时服务
** 服务控制管理器 (SCM)
** Microsoft 分布式事务协调器 (MS-DTC)
** 消息队列 (MSMQ)
** COM 事务集成器 (COM-TI)
** 其它

MTS 在实际的 MTS 对象与其客户端之间插入了一个工厂包装对象和一个对象包装器,这一过程称为拦截。每当客户端调用 MTS 组件时,包装器(工厂和对象)都会拦截这些调用,并将它们的实例管理算法,即即时激活 (JITA),注入到调用中。随后,包装器会将调用转发给实际的 MTS 组件。由于当时缺乏可扩展的元数据,拦截被认为是一个相对困难的过程。

此外,根据来自组件部署属性的信息,事务逻辑和安全检查也在这些包装对象中进行。

每个 MTS 托管的对象都存在一个实现了 IObjectContext 接口的上下文对象。上下文对象维护着与该对象相关的特定信息,例如事务信息、安全信息和部署信息。MTS 组件中的方法通过 IObjectContext 接口调用这个上下文对象。

在来自客户端的调用到达容器之前,MTS 不会创建实际的中间层 MTS 对象。由于对象并非一直在运行,因此它不会占用大量系统资源(即使对象的对象包装器和骨架确实存在)。

一旦来自客户端的调用到达,MTS 包装器进程会激活其称为 JITA 的实例管理算法。实际的 MTS 对象会“及时”创建,以便响应来自包装器的请求。当请求处理完成并将回复发送回客户端时,组件会调用 SetComplete()/SetAbort(),或者在其事务结束时,或者客户端在对对象的引用上调用 Release(),从而销毁实际的 MTS 对象。简而言之,MTS 采用无状态组件模型。

通常,当客户端向典型的 MTS 组件请求服务时,服务器上会执行下述工作:

获取数据库连接

从共享属性管理器或已存在的对象或客户端读取组件的状态

执行业务逻辑

如果有,将组件的更改状态写回数据库

关闭并释放数据库连接

对事务结果进行评估。 MTS 组件不直接提交事务,而是将它们的成功或失败传达给 MTS。

因此,可以将高延迟资源实现为异步资源池,这应利用中间件服务器提供的无状态即时激活。

外部链接

评论 (0)

  • 还没有评论,来抢沙发吧。