使用 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

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

最新回复 (6)
  • kk2syc4月前
    引用2
    已经有不少优秀开源的 go 开发框架或脚手架,我为什么重新造轮子做了一个 go 开发框架?

    > 闲的
  • sumu4月前
    引用3
    在用 GoFrame ,只要看下文档,就明白在 go 开发框架这块,这个已经到顶了。
    另外,gf 脚手架很好用
  • leetom4月前
    引用4
    @sumu 看着功能非常全,不知道用的人多不多,有没有坑
  • dbpe4月前
    引用5
    不知道为什么..我在国内看到最多的开源项目就是相关业务的...
  • dododada4月前
    引用6
    @dbpe 因为研发类的不产生效益的开源,要很多很多钱
  • diagnostics4月前
    引用7
    @dbpe

    三个词:简单、门槛低、可以借鉴

    国内研发类的岗位极其少,大部分都是 CRUD ,他们能接触和想到的也只有这些;
    基础研发类的岗位,大多数是 XX 项目的维护人或贡献者(公司招聘他们的目的也主要是这个),他们本身就为大型开源项目开发了(忙得要死,压根没时间造轮子)
    大多数都是练手开源、小部分是在内部也干这样的事情,然后搬到开源上来
    从公司内孵化而来(和上面有点重复,类似于 Kafka 不是从 Linkined 里面孵化,doris 从百度孵化),中小公司一般只能孵化出业务封装框架(降低成本的角度)要写一个难的,可能没这个资源(没人才、没精力)
  • 回复请 登录 or 快速注册
返回