首页 新闻 会员 周边

关于代码分层业务逻辑代码的具体位置问题,请有代码洁癖的兄弟或前辈解惑

0
悬赏园豆:10 [已解决问题] 解决于 2021-06-04 17:27

前言

程序设计中数据库设计很多时候会有多表关联,比如A表的主键是B表的外键。有时候为了不用联合查询还会给某张表设计几个冗余字段方便查询,原则上这几个冗余字段也是作为外键,其他相关表的数据变化这几个字段也会变化。考虑到开发、测试方便以及可能后期数据迁移等,一般数据库设计时不会指定表间关联关系,也不会做触发器来维护上述关联表的数据一致性。数据变化的逻辑由代码去维护。

问题

.Net在使用EF开发过程中,(不考虑直接写一串SQL),假设有学生表(id主键,学号)和成绩表(id主键,学生学号(不考虑设计问题,假设这个是冗余字段)。学生表修改学号时,成绩表学号也要跟着变。分层设计时数据访问 (DAL)层 都有对应表的操作方法,业务逻辑层(BLL)引用了DAL层的方法并在这层做逻辑处理,遇到上述问题,我一般在BLL层学生业务相关的地方 修改学生的代码里加入对成绩表的处理逻辑。 但是很多时候我看到其他人的代码是直接把逻辑写在Controller层里,Controller里除了引入BLL还引入了DAL,controller里混合调用了两层的方法,我想请教下严格意义上来说这样是否有问题。逻辑是否一定要在业务逻辑层里维护?还有如果引入DTO的设计,那BLL的Model和DTO的转换放在Controller里好还是在BLL里好一点?
请不要说你写代码自己决定之类的话,我想要个正确的答案...

路人甲李海根的主页 路人甲李海根 | 菜鸟二级 | 园豆:415
提问于:2021-05-24 12:45
< >
分享
最佳答案
0

1,Controller里除了引入BLL还引入了DAL,controller里混合调用了两层的方法,我想请教下严格意义上来说这样是否有问题。逻辑是否一定要在业务逻辑层里维护?

也可以,但不推荐;不一定,但推荐。我觉得你做的比较好,既然分层了,就应该每层写应该写的内容,要不还分什么层呀

2,那BLL的Model和DTO的转换放在Controller里好还是在BLL里好一点?
我觉得放在BLL比放在Controller里好一点

收获园豆:10
会长 | 专家六级 |园豆:12401 | 2021-05-25 09:05

我的疑问产生原因主要是在 A的改动影响了B,本来 A的dal 和 service 都是提取到专门的文件里 DAL层 Adal和BLL层AService ,B的dal和service 也在各层自己的文件中, 那A改动影响B的逻辑代码是要放在A中还是B中呢?或者再抽出一层中间层吗

路人甲李海根 | 园豆:415 (菜鸟二级) | 2021-06-03 11:04
其他回答(2)
0

首先controller 是不放业业务代码的,主要处理输入参数与输出参数外加一些非业务操作。
关于dto 我的建议放在bll层
这个东西没有标准的。只能说尽可能趋近易修改,便于理解等。毕竟这不是考试一定怎么样 怎么样

winds_随风 | 园豆:156 (初学一级) | 2021-05-24 14:46
0

这块可以参照阿里巴巴项目规范,业界标杆
这是笔者一些实践和理解,适合新手参考
《项目架构设计》

智客工坊 | 园豆:1855 (小虾三级) | 2021-05-26 21:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册