引言
編寫應用程序是很難的
隨著時間的推移
我們不斷發掘允許建立大型應用程序的概念和技術
模塊化
或者說將應用程序構建成獨立的模塊
使我們得以由簡單的部分構建復雜的系統
並使軟件得到重復使用
面向對象概念和 Microsoft® 組件對象模塊 (COM) 可提供編寫模塊化應用程序的技術
當某個應用程序構建為組件時
各個單獨部分可共同駐留在單台計算機上
也可通過遠程過程調用在網絡上相互作用
因此
組件同時提供了模塊化和自然分布
將應用程序構建成獨立的組件會產生組件的管理問題
單個程序失敗後
將作為一個單位重新啟動
但在使用模塊化系統時
一個組件的失敗不應當破壞其它組件
這就必須有隔離故障和限制故障傳播的方法
事務提供了模塊化執行方式
因此簡化了故障處理
並使故障處理自動實現
它們同時為執行者和用戶提供了簡單的概念化執行框架
用戶認為事務是單個的要麼發生或要麼不發生的更改事件
執行者認為事務是一種允許他們編寫能參與分布式計算的模塊的編程形式
假定您要將資金從一個銀行帳戶轉到另一個帳戶
執行者和用戶需要確保兩個帳戶都更改或都不更改
在分布式系統中很難完成這項工作
計算機可能失敗
並且會丟失信息
事務提供了一種方法
能夠將一組操作集合成具有原子性的執行單位
原子性要麼全有要麼全無的屬性並不新鮮
它在生活中隨處可見
例如
如果輸入一個合同
escrow(由第三者保存附帶條件委付蓋印的契約)官員將協調這項事務
escrow 官員會收集此合同每一方的簽字
當 escrow 官員宣布所有人都已簽字後
此合同就完成了
主持結婚典禮的牧師先問新娘和新郎
願意此人成為您的配偶嗎?
如果他們都回答
願意
牧師就會宣布他們結婚
電影導演在某一場景會先問
布景准備好了嗎?
如果都回答已准備好
導演就會喊
開拍!
在帆船上預備掉轉航向的舵手會先問船員
准備好轉向了嗎?
如果都回答已准備好
舵手就會喊
轉舵!
改變船的方向
這些情景說明了事務的基本原理
幾個獨立的實體必須達成一致
如果任何一方不同意
交易就會失敗
一旦同意後
事務就會發生
Microsoft Distributed Transaction Coordinator (MS® DTC) 為 COM 結構的其它組件執行這項事務協調任務
在 MS DTC 術語中
執行者被稱為事務管理器
在執行事務保護資源的事務中
其參與者(如關系數據庫)被稱為資源管理器
應用程序通過調用事務管理器的 BeginTransaction 方法開始事務
這樣可創建一個代表事務的事務對象
然後應用程序會調用資源管理器來完成事務工作
應用程序對每個資源管理器的第一次調用確定應用程序的當前事務
例如
如果應用程序在使用關系數據庫
它會調用 ODBC 接口
此接口將事務對象與 ODBC 連接關聯起來
在此之後
所有通過此連接的數據庫調用都會代表該事務執行
直到該事務結束為止
當某個資源管理器首先代表某個事務工作時
會通過調用事務管理器
登記
到該事務中
隨著事務的發展
事務管理器會跟蹤每個登記到該事務中的資源管理器
通常
應用程序用 Commit 事務方法來完成事務
如果應用程序無法完成
則調用 Abort 事務方法
該方法可以撤消事務的操作
如果應用程序失敗
MS DTC 就會放棄此事務
當應用程序成功地完成事務的工作後
它會調用 MS DTC 來
提交
事務
然後 MS DTC 會仔細檢查
兩階段
提交協議
使所有已登記的資源管理器都提交
兩階段提交協議可確保所有的資源管理器提交此事務
或全都放棄此事務
在第一階段
MS DTC 詢問每個資源管理器是否
准備
提交
如果所有參與者都回答
是
那麼在第二階段 MS DTC 將向所有參與者廣播提交信息
如果事務的任何部分失敗
或資源管理器響應准備請求失敗
或資源管理器響應
否
那麼 MS DTC 將通知所有資源管理器該事務已被放棄
事務管理器是大多數數據庫系統的關鍵部分
事務管理器還是某些操作系統的可選部分
Microsoft 相信事務對分布式應用至關重要
事務提供了模塊化執行
從而使 COM 模塊化編程更加完備
Microsoft 提供 Microsoft Windows®
和 Microsoft Windows NT® 操作系統的事務管理軟件
將事務概念與 COM 必需的創新相結合
傳統的事務系統要求具有很高的安裝和管理技巧
而集成 MS DTC 與 Microsoft 操作系統的難點是自動實現安裝
管理和使用
許多概念和技術必須針對新的客戶/服務器
面向對象和可視化管理環境重新創造
在第一版中
MS DTC 使用了一個資源管理器
Microsoft SQL Server®
它還使用了幾個事務處理監視器
包括 Encina®
Top End 和 TUXEDO®
MS DTC 實現 OLE 事務接口
所有 OLE 事務接口都是公用的
因此任何資源管理器都可以變成 OLE 事務資源管理器
將來
Microsoft 和其它軟件公司將增加其它事務資源管理器
比如分布式對象系統
事務文件系統
事務隊列系統及業務流程管理系統
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22019.html