controller和service

做 web 开发,无论哪个语言,无论哪个框架都有 controller 和 service 两个概念,很多时候也分不清楚逻辑写在 controller 还是 service ,框架一般也不做强制限制,都在于开发者自身的素质能力以及对框架的认知。

究竟什么是 controller,可以说他是对 http 中 request 的解析,以及对 response 的封装,它对应的是每一个路由,是 http 请求到代码的一个承接,它必须是可单例的,是无状态的。

service 顾名思义是为了服务而生,为了业务而生,是为了一个抽象而生,可以写一个 EmailService 去处理邮件的相关逻辑,写一个 AuthorizationService 去处理登录注册,总之是为了处理一系列的业务,在这个层次你不应该去访问 http 中的参数,而是在 controller 中传递一个参数,或者构造一个对象传递到 service。

controller 和 service 也应该是多对多的关系,一个 controller 中当然是可以调用多个 service,一个 service 当然也可以被多个 controller 调用,service 还可以是互相调用。

那为什么 service 中不应该访问 http 相关的参数呢,其实以著名 php 框架 laravel 为例,laravel 中 有个 command 文件夹,可以写一些执行命令,这些命令的业务可能和某个 http 接口是一样的,但是 http 接口可能需要进行签名,token之类的等等规则的校验,但是使用 command 去调用 service 可以直接执行到核心逻辑。

以上的 command 只是举个例子,想表达的意思是 service 是可以被各种环境调用,虽然更多时候它只有一种能力,仅仅去处理 controller 发过来的 http 请求,但是它应该是一个抽象,应该被抽象。

作者:追风骚年
链接:https://www.jianshu.com/p/7dba237b14d3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值