事务—事务模式

程序猿基础知识的学习、理解、整理——事务(方方土)

什么是事务模式?这里提到的事务模式,主要是指在系统设计过程中的设计模式,主要阐述的是事务在那一层控制的概念,分为以下三种事务模式:客户端拥有事务模式,领域服务拥有事务模式,服务端代理拥有事务模式;

可能你要问了,我作为一个开发人员,我对事务很熟悉,我也很了解事务的模型,我可以很好地处理好我程序的事务问题,为什么还要有一个事务模式的概念呢?

确实,对于一个小型的demo或者对于一个有单独个人完成的整体项目而言,没有必要提及事务模式的概念,但是在一个大型的项目中,特别是传统的三层架构或者四层架构的项目中,有一群开发人员并发开发的项目中,就要去考虑事务模式的问题了

在说以下三种不同模式之前,要先说清楚一个程序的层次是怎么样的?

客户端(可以是单独的一个客户端程序,或者是三层架构中的展现层):
服务端:服务器端的“代理层”,(一般三层架构不包含这层,可以用代理模式或者命令模式来实现)
服务端:服务器端的“领域层”,(三层架构中的service层)
服务端:服务器端的“DAO层”,(三层架构中的数据访问层)

基于上面的层次划分,就比较好理解以下的三种模式了
1、客户端拥有事务模式:事务控制在客户端
2、领域服务拥有事务模式:事务控制在服务端“领域层”
3、服务端代理拥有事务模式:事务控制在服务端“代理层”

很简单,这三种事务设计模式的主要区别就在于这里,那么遵循设计模式是否有必要?那么在什么情况下选择怎么样的事务设计模式?这三种设计模式的最佳实践又是怎么样的呢?
1、极端来说,不采用这些设计模式,你也可以把事务处理好,带式带来的问题是不统一了,凌乱了,整个项目不好管理了。所以从这一点上来说,事务的设计模式,应该是架构师在分层的时候一定要考虑好的事情;
2、万不得已情况下采用客户端事务模式,推荐使用领取服务事务模式,如果在你的层次划分中,有代理层,而且在你的设计过程中,领域服务划分粒度的考虑,不以一个事务为粒度来划分的话,那么推荐使用服务端代理事务模式;
3、结合着这三种事务的设计模式,回想一下以前提到的事务设计模型,是不是发现,声明式事务帮我们解决了很多问题,如果还采用本地事务模型,那么完了,开发人员就无法聚焦于业务逻辑的开发,而整天在处理一些事务的相关问题了。

推荐阅读更多精彩内容