龙空技术网

体会框架设计的乐趣

编程乐趣 862

前言:

今天你们对“orm框架和ef框架是什么关系”都比较看重,咱们都需要了解一些“orm框架和ef框架是什么关系”的相关资讯。那么小编在网摘上收集了一些对于“orm框架和ef框架是什么关系””的相关知识,希望各位老铁们能喜欢,咱们快快来了解一下吧!

我是编程乐趣,一个10年.Net开发经验老程序员,点击右上方“关注”,每天为你分享开源项目和编程知识。

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

一、第一个版本的实现

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

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

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

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

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

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

二、第二个版本的实现

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

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

三、第三个版本的实现

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

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

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

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

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

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

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

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

四、总结

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

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

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

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

好了,今天就分享到这边,欢迎一起加入学习.Net Core从零学习搭建权限管理系统带你从零学习框架的搭建

我是编程乐趣,一个10年.Net开发经验老程序员,专注开源项目和编程知识分享。

私信回复:【888】,领取.Net视频教程。

- End -

推荐阅读

C#实现的滑块验证码

推荐一个微软反向代理组件+NetCore开发的API网关

推荐基于.NET 6.0开发的开源访客系统

一个基于.Net Core开发的适合外贸商城系统

.Net服务器性能监控,应用耗时统一监控平台

标签: #orm框架和ef框架是什么关系