跳至內容

微軟事務伺服器

維基百科,自由的百科全書

微軟事務伺服器(英語:Microsoft Transaction Server,縮寫MTS)是為組件對象模型 (COM) 軟體組件提供服務的軟體,可以更輕鬆地創建大型分布式應用程式

MTS 提供的主要服務是自動事務管理、實例管理(或即時激活)和基於角色的安全性。 MTS 被認為是第一個實現面向方面編程的主要軟體。

MTS 最初是在 Windows NT 4.0 選項包中提供的。在 Windows 2000 中,MTS 得到了增強,更好地與作業系統和 COM 集成,並更名為 COM+。 COM+ 為 MTS 的特性添加了對象池、鬆散耦合事件和用戶定義的簡單事務(補償資源管理器)。

COM+ 仍然隨 Windows Server 2003Windows 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 接口調用這個上下文對象。

在來自客戶端的調用到達容器之前,MTS 不會創建實際的中間層 MTS 對象。由於對象並非一直在運行,因此它不會占用大量系統資源(即使對象的對象包裝器和骨架確實存在)。

一旦調用來自客戶端,MTS 包裝進程會激活其稱為 JITA 的實例管理算法。實際的 MTS 對象會「及時」創建,以便響應來自包裝器的請求。當請求處理完成並將回復發送回客戶端時,組件會調用 SetComplete()/SetAbort(),或者在其事務結束時,或者客戶端在對對象的引用上調用 Release(),從而銷毀實際的 MTS 對象。簡而言之,MTS 採用無狀態組件模型。

通常,當客戶端向典型的 MTS 組件請求服務時,伺服器上會發生以下順序:

  1. 獲取資料庫連接
  2. 從共享屬性管理器或已存在的對象或客戶端讀取組件的狀態
  3. 執行業務邏輯
  4. 將組件的更改狀態(如果有)寫回資料庫
  5. 關閉並釋放資料庫連接
  6. 對交易結果進行評估。 MTS 組件不直接提交事務,而是將它們的成功或失敗傳達給 MTS。
  7. 因此,可以將高延遲資源實現為異步資源池,這應該利用中間件伺服器提供的無狀態 JIT 激活。

因此,可以將高延遲資源實現為異步資源池,這應該利用中間件伺服器提供的無狀態 JIT 激活。

外部連結

[編輯]