微软事务服务器

微软事务服务器（，缩写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。

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

 外部链接 

 Quick Tour of Microsoft Transaction Server 

Category:Windows组件