您的位置:軟件測試 > 軟件項目管理 > 項目案例分析 >
實戰(zhàn)項目分析
作者:網(wǎng)絡轉載 發(fā)布時間:[ 2013/7/19 15:14:57 ] 推薦標簽:

6. 自定義事務

.Net framework 2.0中內(nèi)置了對事務的支持,不但可以管理進程內(nèi)的事務(包括SQLServer事務),還可以自動提升至MSDTC來管理分布式事務(包括WCF事務)。所以我們無需再編寫任何事物的管理代碼。

本系統(tǒng)中使用了Enterprise Library中的Data Access Application Block作為數(shù)據(jù)存取方案。但卻沒有很好地利用.Net framework 2.0的事務功能,而是自己寫了很多管理事務的代碼。例如使用一個TransactionContext類管理事務的執(zhí)行,在很多數(shù)據(jù)存取的方法上支持傳入TransactionContext類型的參數(shù),用來管理事務邊界。

這樣不僅需要花費精力維護TransactionContext類,管理事務的執(zhí)行,也使數(shù)據(jù)存取接口變的很復雜,臃腫。

其實我們完全可以利用TransactionScope這一.Net framework2.0中的事務處理類還管理事務。簡單的方式是:

Using(TransactionScope cpe = new TranscationScope())

{

數(shù)據(jù)操作方法1();

數(shù)據(jù)操作方法2();

數(shù)據(jù)操作方法N();

}

這樣可以自動提交和回滾事務了,而且可以根據(jù)實際情況,如果其中某個方法調(diào)用了分布式事務的話,可以自動升級為MSDTC事務。

關于如何使用.Net framework2.0中的事務功能,可以參考:Introducing System.Transactions in the .NET Framework 2.0。

7. 其它問題

還有一些其它的小問題,雖然不涉及到系統(tǒng)架構,但也會帶來一些負面的影響,包括:

A.代碼重復

a) 很多數(shù)據(jù)查詢方法功能相同,只是返回的數(shù)據(jù)“格式” 不同(有的返回DataSet,有的返回DataRow,有的返回實體對象),為了調(diào)用方便,做了很多重載的方法,但沒有考慮代碼重復利用,造成大量的代碼冗余。

B.公共模塊

a) 設計者把系統(tǒng)中使用到的公共代碼和枚舉等等組織在一起,放在一個文件中,為各個項目所使用。其實這本來很好,但是我卻發(fā)現(xiàn),公共模塊同時被三個層次引用,這樣也是很不好的。這樣會使得系統(tǒng)的分層結構遭到破壞,公共模塊難于理解和使用。應該把屬于各層專屬使用的功能集成到各自的層中,每個層中設一個公共模塊,這樣既保障了分層的清晰,同時又很好地規(guī)劃了公共模塊。

上一頁123下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd