已经有不少优秀开源的 go 开发框架或脚手架,我为什么重新造轮子做了一个 go 开发框架。

14次阅读

共计 1285 个字符,预计需要花费 4 分钟才能阅读完成。

使用 go 开发项目多年,了解和使用过不少 go 框架,例如 web 框架有 gin、echo、fiber、iris、beego 等,微服务框架有 grpc、go-micro、kratos、go-zero 等,无论是 web 框架或微服务框架,当深入了解使用一个框架之后,同类的框架都比较容易上手使用。

开发一个完整后端服务通常不止只有框架代码,还有 API 设计、数据库、测试、文档、配置、部署和监控等等,如果经常使用 gin 开发 web 服务都知道,由于 gin 过于轻量简洁,从 0 开始搭建一个完整的 web 后端服务还是过于麻烦,需要像搭积木一样拼接成完整的后端服务,达不到预想的一键创建一整套完整的后端服务代码。而使用微服务框架可以创建一整套目录结构代码,还有包含了配置、api 文档、部署和监控等。而在根据多种类型数据的表生成 CRUD api 方面没怎么支持 (这不是微服务框架需要考虑的,毕竟使用什么数据库和 orm 由使用者决定)。如果开发一个业务相对简单的 web 服务,通常又不会使用微服务框架。

我实现一个从项目层级的开发框架目的是能够把以往开发项目经验固化下来,这对于提升个人开发技术水平和解决问题能力具有极大的帮助,从项目层面思考和设计架构,并将其经验应用于其他项目开发中,方便自己和也方便团队开发,在团队协作中使用统一的开发框架可以提高代码的一致性和可维护性,如果团队成员对现有框架有不同的意见和建议,则可能导致沟通成本上升。

注:这里的项目层级的开发框架是指一键创建包含了 web 或 grpc 框架、常用中间件或拦截器、API、配置、orm、测试、文档、部署和监控等等,大多情况只需关心编写业务逻辑代码。理论上从项目层级看,越往项目层设计的开发框架,可以做到自动化会越高,而 web 框架或微服务框架从框架层级设计,自动化程度没那么高,当然可以在框架层级基础上转换到项目层级设计。

实现的在项目层级的 go 开发框架 sponge 没有从 0 开始,而是选择在 gin 和 grpc 两个基础上设计,因为这两个框架都是比较轻量级,可以定制化程度更高。

sponge 主要特点:

  • 内置了丰富的生成代码和合并代码功能,自动化程度更高,减少了大量原本需要手动编写的代码,只需专注于编写业务逻辑代码。
  • 支持基于 mysql、mongodb、postgresql、tidb、sqlite 表来生成 CRUD 代码。
  • 支持在 UI 界面上生成代码,更简单易用。
  • 支持丰富的 gin 中间件、grpc 拦截器,同时有很好的可扩展性。
  • 包含丰富的常用的组件,开箱即用。
  • 支持创建多种服务类型:

    • ⓵基于 sql 创建 web 服务 (gin, gorm 或 mongo)
    • ⓶基于 sql 创建 grpc 服务 (grpc, gorm 或 mongo)
    • ⓷基于 protobuf 创建 web 服务 (gin)
    • ⓸基于 protobuf 创建 grpc 服务 (grpc)
    • ⓹基于 protobuf 创建 grpc 网关服务 (gin)
    • ⓺基于 protobuf 创建 grpc+http 服务 (gin, grpc)

GitHub 地址:https://github.com/zhufuyi/sponge

优秀的开发框架或脚手架有很多,选择适合自己或团队来解决实际问题就是好的选择。

正文完
 0