微软事务服务器

维基百科,自由的百科全书
跳到导航 跳到搜索

微软事务服务器(英语:Microsoft Transaction Server,缩写MTS)是为组件对象模型 (COM) 软件组件提供服务的软件,可以更轻松地创建大型分布式应用程序。

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

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

COM+ 仍然随 Windows Server 2003 和 Windows Server 2008 一起提供,并且 Microsoft .NET Framework 在 EnterpriseServices 命名空间中为 COM+ 提供了一个包装器。 Windows Communication Foundation (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 托管的对象,还存在一个 Context Object,它实现了 IObjectContext 接口。上下文对象维护有关该对象的特定信息,例如其事务信息、安全信息和部署信息。 MTS 组件中的方法通过其 IObjectContext 接口调用 Context Object。

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

一旦调用来自客户端,MTS 包装进程就会激活其称为 JITA 的实例管理算法。实际的 MTS 对象是“及时”创建的,以便为来自包装器的请求提供服务。并且当请求得到处理并将回复发送回客户端时,组件要么调用 SetComplete()/SetAbort(),要么它的事务结束,或者客户端在对对象的引用上调用 Release(),而实际MTS 对象被破坏。简而言之,MTS 使用无状态组件模型。

通常,当客户端向典型的 MTS 组件请求服务时,服务器上会发生以下顺序:

  1. 获取数据库连接
  2. 从共享属性管理器或已存在的对象或客户端读取组件的状态
  3. 执行业务逻辑
  4. 将组件的更改状态(如果有)写回数据库
  5. 关闭并释放数据库连接
  6. 对交易结果进行评估。 MTS 组件不直接提交事务,而是将它们的成功或失败传达给 MTS。
  7. 因此,可以将高延迟资源实现为异步资源池,这应该利用中间件服务器提供的无状态 JIT 激活。

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

外部链接[编辑]