west2-online / fzuhelper-server

Distributed architecture-based server application for fzuhelper, serving more than 「 23,000 」 teachers and students in the school everyday
Apache License 2.0
9 stars 10 forks source link

refactor: more modern project structure #71

Closed ozline closed 3 weeks ago

ozline commented 3 weeks ago

新增特性:

  1. ClientSet:统筹各个客户端的管理,这个对象会一直从 init 开始逐步 handler、service 传递到 dal,只会初始化一次
  2. cmd 职责减配为标准的程序入口(含远程配置读取、初始化、服务启动)
  3. 独立 api 文件夹,将其职责更加确定为网关-HTTP 服务,其余 RPC 服务放置在 internal 中
  4. 删去 dal 文件夹,独立出 db、cache、mq(如有需要)至 pkg,这些函数本质上与业务逻辑无关,仅和持久化存储交互,不应该存在业务逻辑,且可能出现跨业务访问(e.g. user 模块也许会调用到 academic 的信息),作为共享组件优势更大。保留在业务代码内也可能造成代码编写时的误会(如专门设立一个 checkPassword 的 db 函数,实际上应该只设计一个提取 password 的db 函数)
  5. classroom模块的 sync 流程封装为一个独立的 syncer 对象

目的:

作为 example 由我完成的重构:

该 PR 没有完成,需要其他人完成的:

pr 对 api 模块仅作迁移操作,没有更改内部具体的代码,具体后续可以由他人参考目前设计修改 api 模块设计

renbaoshuo commented 3 weeks ago

另外,我没有看到 description 中提到的 ClientSet 啊,是不是没有 push

ozline commented 3 weeks ago

还有一批没推上去,那个 import error 我昨天也注意到了,迁移的时候 goland 的重构功能不好使,还是得人工来 @renbaoshuo