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

6. 自定義事務(wù)

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

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

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

其實(shí)我們完全可以利用TransactionScope這一.Net framework2.0中的事務(wù)處理類(lèi)還管理事務(wù)。簡(jiǎn)單的方式是:

Using(TransactionScope cpe = new TranscationScope())

{

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

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

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

}

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

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

7. 其它問(wèn)題

還有一些其它的小問(wèn)題,雖然不涉及到系統(tǒng)架構(gòu),但也會(huì)帶來(lái)一些負(fù)面的影響,包括:

A.代碼重復(fù)

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

B.公共模塊

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

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