微軟事務伺服器
微軟事務伺服器(英語:Microsoft Transaction Server,縮寫MTS)是為組件對象模型 (COM) 軟體組件提供服務的軟體,可以更輕鬆地創建大型分布式應用程式。
MTS 提供的主要服務是自動事務管理、實例管理(或即時激活)和基於角色的安全性。 MTS 被認為是第一個實現面向方面編程的主要軟體。
MTS 最初是在 Windows NT 4.0 可選包中提供的。在 Windows 2000 中,MTS 更名為COM+。COM+ 在 MTS 的特性基礎上,添加了對象池、鬆散耦合事件和用戶定義的簡單事務(補償資源管理器)等新特性,並能夠更好地與作業系統和 COM 集成。
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 在實際的 MTS 對象與其客戶端之間插入了一個工廠包裝對象和一個對象包裝器,這一過程稱為攔截。每當客戶端調用 MTS 組件時,包裝器(工廠和對象)都會攔截這些調用,並將它們的實例管理算法,即即時激活 (JITA),注入到調用中。隨後,包裝器會將調用轉發給實際的 MTS 組件。由於當時缺乏可擴展的元數據,攔截被認為是一個相對困難的過程。
此外,根據來自組件部署屬性的信息,事務邏輯和安全檢查也在這些包裝對象中進行。
每個 MTS 託管的對象都存在一個實現了 IObjectContext 接口的上下文對象。上下文對象維護著與該對象相關的特定信息,例如事務信息、安全信息和部署信息。MTS 組件中的方法通過 IObjectContext 接口調用這個上下文對象。
在來自客戶端的調用到達容器之前,MTS 不會創建實際的中間層 MTS 對象。由於對象並非一直在運行,因此它不會占用大量系統資源(即使對象的對象包裝器和骨架確實存在)。
一旦來自客戶端的調用到達,MTS 包裝器進程會激活其稱為 JITA 的實例管理算法。實際的 MTS 對象會「及時」創建,以便響應來自包裝器的請求。當請求處理完成並將回復發送回客戶端時,組件會調用 SetComplete()/SetAbort(),或者在其事務結束時,或者客戶端在對對象的引用上調用 Release(),從而銷毀實際的 MTS 對象。簡而言之,MTS 採用無狀態組件模型。
通常,當客戶端向典型的 MTS 組件請求服務時,伺服器上會執行下述工作:
- 獲取資料庫連接
- 從共享屬性管理器或已存在的對象或客戶端讀取組件的狀態
- 執行業務邏輯
- 如果有,將組件的更改狀態寫回資料庫
- 關閉並釋放資料庫連接
- 對事務結果進行評估。 MTS 組件不直接提交事務,而是將它們的成功或失敗傳達給 MTS。
因此,可以將高延遲資源實現為異步資源池,這應利用中間件伺服器提供的無狀態即時激活。