Skip to content

Latest commit

 

History

History
239 lines (171 loc) · 11.6 KB

readme-cn.md

File metadata and controls

239 lines (171 loc) · 11.6 KB

English | 简体中文


sponge 是一个强大的 Go 开发框架,其核心理念是通过解析 JSONSQLProtobuf 文件逆向生成模块化的代码,这些代码可以灵活、无缝地组合成多种类型的完整后端服务(类似海绵细胞的特性,打散的海绵细胞能自动重新组合成新的海绵)。sponge 提供一站式项目开发解决方案,涵盖代码生成、开发、测试、API 文档生成和部署,大幅提升开发效率,降低开发难度,实现以"低代码"方式构建高质量项目。


适用场景

sponge 适用于快速开发各种高性能后端服务,包括但不限于:

  • Web 服务 (gin);
  • gRPC 服务;
  • HTTP+gRPC 混合服务;
  • gRPC Gateway API 服务;
  • 云原生微服务;

此外,开发者还可以通过自定义模板,生成满足业务需求的各类代码。


核心亮点

  1. 一键生成完整后端服务代码
    对于仅需 CRUD APIWebgRPC 服务,无需编写任何 Go 代码。只需连接数据库(如 MySQLMongoDBPostgreSQLSQLite),即可一键生成完整后端服务代码,并轻松部署到 Linux 服务器、Docker 或 Kubernetes 上。

  2. 高效开发通用服务
    开发通用的 WebgRPCHTTP+gRPCgRPC Gateway 服务,只需专注于以下三部分:

    • 数据库表的定义;
    • 在 Protobuf 文件中定义 API 描述信息;
    • 在生成的模板中编写业务逻辑代码。

    服务的框架代码和 CRUD API 代码均由 sponge 自动生成。

  3. 支持自定义模板,灵活扩展
    sponge 支持通过自定义模板生成项目所需的多种代码类型,不局限于 Go 语言。例如:

    • 后端代码;
    • 前端代码;
    • 配置文件;
    • 测试代码;
    • 构建和部署脚本等。
  4. 在页面生成代码,简单易用

  5. 支持 AI 助手生成与业务逻辑匹配的参考代码,从而提升开发效率。 点击查看使用文档


快速开始

  1. 安装 sponge

    支持在 windows、mac、linux 环境下安装 sponge,点击查看 安装 sponge 说明

  2. 打开生成代码 UI 页面

    安装完成后,执行命令打开 sponge UI 页面:

    sponge run

    在本地浏览器访问 http://localhost:24631,在页面上操作生成代码,如下图所示:

    如果想要在跨主机的浏览器上访问,启动UI时需要指定宿主机ip或域名,示例 sponge run -a http://your_host_ip:24631。 也可以在 docker 上启动UI服务来支持跨主机访问,点击查看 在 docker 运行 sponge UI 服务说明


主要功能

sponge 内置了丰富的功能(按需使用):


生成代码的框架

sponge 支持基于自带模板和自定义模板两种方式生成你的项目所需的代码,下面是两种生成代码的框架图。

  1. sponge 基于自带模板生成代码框架如下图所示,支持 sql 和 protobuf 两种方式。


  1. sponge 基于自定义模板生成代码框架如下图所示,支持 json、sql、protobuf 三种方式。


微服务框架

sponge 创建的 6 种类型的后端服务中有 5 种属于微服务架构。下图展示了典型的微服务分层结构,具备高性能、高扩展性,并内置常用的服务治理功能。


创建的http和grpc服务代码的性能测试: 50个并发,总共100万个请求。

http-server

grpc-server

点击查看测试代码


目录结构

sponge 创建的服务代码目录结构遵循 project-layout

sponge 支持创建 单体应用单体仓库(monolith)微服务多仓库(multi-repo)微服务单体仓库(mono-repo)三种类型的项目代码结构。

  1. 创建单体应用单体仓库(monolith)微服务多仓库(multi-repo)代码目录结构如下:
   .
   ├── api            # protobuf文件和生成的*pb.go目录
   ├── assets         # 其他与资源库一起使用的资产(图片、logo等)目录
   ├── cmd            # 程序入口目录
   ├── configs        # 配置文件的目录
   ├── deployments    # 裸机、docker、k8s部署脚本目录
   ├── docs           # 设计文档和界面文档目录
   ├── internal       # 业务逻辑代码目录
   │    ├── cache        # 基于业务包装的缓存目录
   │    ├── config       # Go结构的配置文件目录
   │    ├── dao          # 数据访问目录
   │    ├── database     # 数据库目录
   │    ├── ecode        # 自定义业务错误代码目录
   │    ├── handler      # http的业务功能实现目录
   │    ├── model        # 数据库模型目录
   │    ├── routers      # http路由目录
   │    ├── rpcclient    # 连接grpc服务的客户端目录
   │    ├── server       # 服务入口,包括http、grpc等
   │    ├── service      # grpc的业务功能实现目录
   │    └── types        # http的请求和响应类型目录
   ├── pkg            # 外部应用程序可以使用的库目录
   ├── scripts        # 执行脚本目录
   ├── test           # 额外的外部测试程序和测试数据
   ├── third_party    # 依赖第三方protobuf文件或其他工具的目录
   ├── Makefile       # 开发、测试、部署相关的命令集合
   ├── go.mod         # go 模块依赖关系和版本控制文件
   └── go.sum         # go 模块依赖项的密钥和校验文件

  1. 创建微服务单体仓库(mono-repo)代码目录结构(大仓库代码目录结构)如下:
   .
   ├── api
   │    ├── server1       # 服务1的protobuf文件和生成的*pb.go目录
   │    ├── server2       # 服务2的protobuf文件和生成的*pb.go目录
   │    ├── server3       # 服务3的protobuf文件和生成的*pb.go目录
   │    └── ...
   ├── server1        # 服务1的代码目录,与微服务多仓库(multi-repo)目录结构基本一样
   ├── server2        # 服务2的代码目录,与微服务多仓库(multi-repo)目录结构基本一样
   ├── server3        # 服务3的代码目录,与微服务多仓库(multi-repo)目录结构基本一样
   ├── ...
   ├── third_party    # 依赖的第三方protobuf文件
   ├── go.mod         # go 模块依赖关系和版本控制文件
   └── go.sum         # go 模块依赖项的密钥和校验和文件

sponge 开发文档

点击查看 sponge 开发项目的详细文档,包括代码生成、开发、配置、部署说明等。


使用示例

使用 sponge 创建服务示例

使用 sponge 开发完整项目示例

分布式事务示例



如果对您有帮助给个star⭐,欢迎加入go sponge微信群交流,加微信(备注sponge)进群。