一、时间安排

2022-04-28 21:00 如遇不可预料的时间冲突,时间另行交流确定。

预计会议时间 30 分钟。

二、会议地址

郭强 邀请您参加腾讯会议
会议主题:GoFrame工程化改进交流:接口化、依赖注入设计
会议时间:2022/04/28 21:00-21:30 (GMT+08:00) 中国标准时间 - 北京

点击链接入会,或添加至会议列表:
https://meeting.tencent.com/dm/VwOiDwqfApbG

#腾讯会议:712-775-838

复制该信息,打开手机腾讯会议即可参与

三、会议内容

本次会议由 郭强 提供主题和一些思考、验证功能分享,对其中的内容大家可以结合现有的行业实现提供合理的建议,共同讨论。

1、工程化中的一些痛点

  • 在工程目录设计中,service层沉淀的业务逻辑越来越多,后期的维护越来越复杂
  • service层单目录下过多的代码文件,小心翼翼组织代码,造成压抑的代码开发体验
  • service无法使用包管理,否则极易出现循环包依赖问题,因此必须采用接口化解耦

2、基础分层仍旧按照职责分层

  • 基础分类按照功能职责,极大规避业务包依赖
  • 例如,controller层作为独立的controller包,可以依赖所有的service业务包,因此在一个请求中可以通过调用不同的业务包方法来实现功能,这也是鼓励的做法
  • 对service层按照业务模块进行包管理。从包设计理论上来讲,一个包应当尽量低耦,这种低耦不仅是代码上的,更是逻辑上的。一个业务包中难以通过依赖过多的其他业务包来实现功能。

3、部分层级仍旧采用单包管理

  • 例如 api/controller/consts/model
  • 这部分层级从工程设计以及长期维护来讲,低复杂度,无需采用包管理
  • 这部分层级的代码采用包管理的成本会高于单包维护成本,这是从务实考虑

4、提高效率的工具命令设计

  • gf gen service
  • 自动根据logic层包代码分析生成service层接口、logic自动引用文件
  • 支持Goland集成,支持编码中自动更新service
  • 接口的实现需要开发者在业务包中手动注入

5、API接口层与gRPC支持的思考

  • 使用api层管理业务的输入输出
  • 不同协议的支持由工程自动生成的代码实现:不需要学习proto语法、也没有中间协议学习负担
  • 对于其他微服务通信协议也同样如此
  • 这样才能实现 开发者只需要关心业务 的目标,一个框架本该就如此

四、视频地址

https://www.bilibili.com/video/BV1m34y1e7MN/