微軟事務伺服器

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

微軟事務伺服器(英語: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 激活。

外部連結[編輯]