微软事务服务器
微软事务服务器(英语:Microsoft Transaction Server,缩写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 在实际的 MTS 对象与其客户端之间插入了一个工厂包装对象和一个对象包装器,这一过程称为拦截。每当客户端调用 MTS 组件时,包装器(工厂和对象)都会拦截这些调用,并将它们的实例管理算法,即即时激活 (JITA),注入到调用中。随后,包装器会将调用转发给实际的 MTS 组件。由于当时缺乏可扩展的元数据,拦截被认为是一个相对困难的过程。
此外,根据来自组件部署属性的信息,事务逻辑和安全检查也在这些包装对象中进行。
每个 MTS 托管的对象都存在一个实现了 IObjectContext 接口的上下文对象。上下文对象维护着与该对象相关的特定信息,例如事务信息、安全信息和部署信息。MTS 组件中的方法通过 IObjectContext 接口调用这个上下文对象。
在来自客户端的调用到达容器之前,MTS 不会创建实际的中间层 MTS 对象。由于对象并非一直在运行,因此它不会占用大量系统资源(即使对象的对象包装器和骨架确实存在)。
一旦来自客户端的调用到达,MTS 包装器进程会激活其称为 JITA 的实例管理算法。实际的 MTS 对象会“及时”创建,以便响应来自包装器的请求。当请求处理完成并将回复发送回客户端时,组件会调用 SetComplete()/SetAbort(),或者在其事务结束时,或者客户端在对对象的引用上调用 Release(),从而销毁实际的 MTS 对象。简而言之,MTS 采用无状态组件模型。