處理事務是構建許多商務邏輯的一個重要方面。
.NET Framework 2.0 中的事務
在 .NET Framework 2.0包含 System.Transactions,這是一種新的命名空間,完全專註於控制事務性行為。開發人員將最常將 System.Transactions 與某個“執行內容”配合使用,這是 .NET Framework 2.0 中的一種新結構。執行內容允許指定適用於包含在一個定義範圍內的所有代碼的通用資訊,如事務。以下是應用程式如何使用該方法將一組操作組合成一個事務的樣本:
using System.Transactions;using (TransactionScope ts = new TransactionScope(Required)){ // 執行操作,例如更新不同的 DBMS ts.Complete();
}位於 using 塊內的所有操作將成為一個事務的一部分,因為它們共用其所定義的事務執行內容。本例中的最後一行,調用 TransactionScope 的 Complete 方法,將導致退出該塊時請求提交該事務。此方法還提供了內建的錯誤處理,出現異常時會終止事務。
如本例那樣,為新 TransactionScope 指定 Required,意味著此代碼將總是作為事務的一部分運行:若其調用方的事務存在,則加入之;若不存在,則建立一個新的。如同在企業服務中一樣,還可以指定其他選項,包括 RequiresNew、Supported 和 NotSupported。
與企業服務及其前任 MTS 和 COM+ 不同,Systems.Transactions 完全專註於控制事務性行為。例如,事務與對象的內部狀態之間不需要存在串連。企業服務需求一個對象在其結束事務時被停用,但 Systems.Transactions 則沒有這種需要。
ADO.NET 2.0中的SqlClient提供者與新的System.Transactions命名空間相整合,從而啟用了稱為可升級事務的行為。儘管Transact SQL可以用來啟動本地或分散式交易(BEGIN TRANSACTION和BEGIN DISTRIBUTED TRANSACTION),但在某些情況下(特別是在用戶端/中介層編程方面),程式員可能希望編寫可以在一個資料庫方案或多個資料庫方案中使用的組件。這些方案可能包含多個SQL Server執行個體,並且SQL Server可以自動檢測到多執行個體訪問並將事務從本地“提升”到多執行個體(分布式)。即使在使用多個資料庫產品或多個串連的情況下,這也是可能的,前提是第一個資料庫(在分散式交易術語中稱為資源管理員)是SQL Server。在ADO.NET中,預設情況下啟用可升級的事務。
相關資料:
http://editblog.csdn.net/msdncolumn/archive/2005/02/25/1658.aspx
http://blog.joycode.com/kaneboy/archive/2005/02/15/44356.aspx
http://idior.cnblogs.com/archive/2005/08/15/214300.html
本文為轉載