4

聊一聊:Service层你觉得有用吗?

 3 years ago
source link: https://blog.didispace.com/is-service-layer-redundant/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

聊一聊:Service层你觉得有用吗?

前段日子在社群(点击加入)里看到有人讨论关于Service层接口的问题,DD也经常碰到周围的新人有问过一些类似的问题:一定要写个Service层的接口吗?Service层的接口到底用做什么用的呢?好像都没什么用啊?

Service层在业务逻辑不复杂的时候,似乎是没有什么用,但是随着应用迭代,业务逻辑变得复杂了之后,这一层是非常有用的。

主要表现在这几个方面:

1、更适合用来处理复杂的业务逻辑,可能会涉及多张表的操作,甚至还混杂着消息投递、接口调用等一系列的复杂综合性事务,这也是我们常说的事务管理所处的层次。

2、对表现层的复用支持,往往我们一个业务逻辑处理,不会单单只应用在一个API接口或页面上,如果直接把这部分内容写到Controller中,那当出现重复操作的时候就会产生复制黏贴,以后再要维护这段逻辑就麻烦了

3、对单元测试的支持,通过单独的一层service实现业务逻辑,那么对于业务逻辑的单元测试会更容易编写,只需要对service来编写就可以了;而web层的单元测试就不需要关注业务本身,只需要关注反馈格式就行了;不然web层就既要考虑业务逻辑的计算,还要考虑web反馈的格式验证,太过复杂。

4、业务逻辑的组装支持,因为Controller中依赖的是Service接口的定义,而具体实现可以有很多种,随着不同的需要可以注入不同的实现,可以比较好的实现多种业务逻辑版本共存。而如果直接把业务逻辑写了Controller,再要替换的时候,就比较麻烦了。

所以,Service层的设计是非常有必要的,这在单体应用的可维护性和可测试性上都占据了非常重要的地位。

换你思考了,你觉得Service层接口是否必要呢?

因个人备案要求,博客已经下掉评论区,所以可以在这里留言讨论:传送门


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK