使用 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 主要特点:
GitHub 地址: https://github.com/zhufuyi/sponge
优秀的开发框架或脚手架有很多,选择适合自己或团队来解决实际问题就是好的选择。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.