首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

体会框架设计的乐趣

这周在专栏《.Net Core从零学习搭建权限管理系统教程》里,编写了事务功能的教程,今天就结合事务功能实现的演变,一起来体会下框架设计有趣的地方。

一、第一个版本的实现

在专栏里,我们ORM框架使用的是EF,EF本身提供的事务API有:开始、提交和回滚事务。

经过我们简单封装以后,实现方式如下,见截图的红色框。

从功能上说,这样是可以完成我们的需求。

但是目前的实现方式存在2个问题:

1、所有有多个数据库操作的地方,我们全部需要添加以上代码;

2、虽然实现事务代码比较简单,但是代码是比较重复的,这样就会导致所有Action存在着重复的代码。

二、第二个版本的实现

我们可以通过自定义特性(Attribute)的方式,来实现事务功能。

这种实现方式,可以大大简化我们的代码,我们只需为需要事务的Action,添加特性就可以。

三、第三个版本的实现

虽然第二版本,可以大大的减少代码量,但还是存在2个问题:

1、虽然简化了事务的使用,但是还是需要手动添加;

2、对于开发人员,需要知道事务的概念。在实际项目开发中,涉及保存更新的操作,基本都是需要事务的,这样每个开发人员都需要掌握事务的使用。

最后,我们通过添加全局事务的方式,默认为所有Action添加事务,这样我们就可以连为Action添加特性都可以省略,见如下截图:

默认为所有Action添加事务,这样的设计方式,主要基于如下考虑:

1、一般的管理系统,不会涉及高并发,所以默认开启事务功能,损失点性能不会有影响;

2、对于普通开发人员来说,无需关心事务的实现,因为框架已经默认为所有Aciton添加了事务。

当然了,对于不需要事务的,也可以通过特性的方式来关闭。

四、总结

一个好的框架,不仅仅是核心的功能实现,也是要考虑开发难度与开发效率的。

1、在我们项目开发中,框架是给团队所有成员使用的,团队成员水平是参差不平的,如果框架使用难度太大,就会影响框架的使用与开发进度;

2、框架能做的事情,尽量不要让开发人员参与,尽量对开发人员是透明的,减少开发人员的代码量,提升开发进度,同时也减少错误的可能。

我们设计框架,需要全方面的考虑,为团队考虑,在这过程就需要大量的思考,我认为这就是框架设计非常有趣的地方。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230528A05T5G00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券