您的位置:软件测试 > 软件项目管理 > 项目案例分析 >
实战项目分析
作者:网络转载 发布时间:[ 2013/7/19 15:14:57 ] 推荐标签:

6. 自定义事务

.Net framework 2.0中内置了对事务的支持,不但可以管理进程内的事务(包括SQLServer事务),还可以自动提升至MSDTC来管理分布式事务(包括WCF事务)。所以我们无需再编写任何事物的管理代码。

本系统中使用了Enterprise Library中的Data Access Application Block作为数据存取方案。但却没有很好地利用.Net framework 2.0的事务功能,而是自己写了很多管理事务的代码。例如使用一个TransactionContext类管理事务的执行,在很多数据存取的方法上支持传入TransactionContext类型的参数,用来管理事务边界。

这样不仅需要花费精力维护TransactionContext类,管理事务的执行,也使数据存取接口变的很复杂,臃肿。

其实我们完全可以利用TransactionScope这一.Net framework2.0中的事务处理类还管理事务。简单的方式是:

Using(TransactionScope cpe = new TranscationScope())

{

数据操作方法1();

数据操作方法2();

数据操作方法N();

}

这样可以自动提交和回滚事务了,而且可以根据实际情况,如果其中某个方法调用了分布式事务的话,可以自动升级为MSDTC事务。

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

7. 其它问题

还有一些其它的小问题,虽然不涉及到系统架构,但也会带来一些负面的影响,包括:

A.代码重复

a) 很多数据查询方法功能相同,只是返回的数据“格式” 不同(有的返回DataSet,有的返回DataRow,有的返回实体对象),为了调用方便,做了很多重载的方法,但没有考虑代码重复利用,造成大量的代码冗余。

B.公共模块

a) 设计者把系统中使用到的公共代码和枚举等等组织在一起,放在一个文件中,为各个项目所使用。其实这本来很好,但是我却发现,公共模块同时被三个层次引用,这样也是很不好的。这样会使得系统的分层结构遭到破坏,公共模块难于理解和使用。应该把属于各层专属使用的功能集成到各自的层中,每个层中设一个公共模块,这样既保障了分层的清晰,同时又很好地规划了公共模块。

上一页123下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd