分布式企業應用離不開事務。在數據訪問代碼中加入事務管理功能主要有兩種方式:手動方式,自動方式。
在手動方式中,程序員負責編寫所有配置、使用事務機制的代碼。自動(或COM+)事務則在.net類中加入聲明式屬性,指定運行時對象的事務特性。自動方式方便了將多個組件配制成在同一個事務之內運行。兩種事務方式都支持本地的或分布式的事務,但自動的事務方式極大地簡化了分布式事務處理。
必須注意的是,事務是一種開銷很大的操作,所以決定使用事務之前務必再三考慮。如果確實需要使用事務,那就要盡量縮小事務的粒度,減少對數據庫的加鎖時間、加鎖范圍。例如,對于SQL Server,單個的SQL語句不需要顯式地聲明事務,SQL Server會自動將每一個語句作為一個獨立的事務運行。手動的本地事務總是比其他事務快得多,因為它不需要涉及DTC(Distributed Transaction Coordinator)。
手動事務、自動事務應當視為兩種不同的、互斥的技術。如果要在單個數據庫上執行事務性操作,優先考慮手動事務。當單個事務跨越多個遠程數據庫,或單個事務涉及多個資源管理器(例如,一個數據庫和一個MSMQ資源管理器),優先考慮自動事務。不管怎樣,應當極力避免混合運用兩種事務模式。如果性能不是特別重要,即使只對一個數據庫操作也可以考慮使用自動事務,使代碼更加簡潔(但速度略慢)。
總而言之,要提高數據庫訪問代碼的質量,必須深入了解ADO.NET對象模型,根據實際情況靈活運用各種技巧。ADO.NET是一個公用的API,各種應用——不管是Windows窗體應用、ASP頁面還是Web服務,都可以通過ADO.NET訪問數據庫;但是,ADO.NET不是一邊接受輸入、一邊吐出結果的黑箱,而是一個由許多工具組成的工具箱。
新聞熱點
疑難解答
圖片精選