GoFrame v2.5 版本发布,企业级 Golang 开发框架

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: GoFrame v2.5 版本发布,企业级 Golang 开发框架

大家好啊,GoFrame 框架今天发布了 v2.5.0 正式版本啦!👏👏👏👏

本次版本主要是对已有功能组件以及开发工具上的改进工作。其中,开发工具新增了 gf gen ctrl 命令,以规范化定义、开发 API 接口,增加控制器、SDK 的代码生成提高开发效率,以解决 Golang 工程开发中接口层面的规范和效率问题,详情请参考:接口规范 - gen ctrl。其他变更内容请参考以下 change logEnjoy!🍺🍺🍺🍺🍺🍺🍺🍺

Github ChangeLoggithub.com/gogf/gf/rel…

完整代码变更: v2.4.0...v2.5.0,感谢本次所有的贡献开发者:image.png

功能改进

  1. gdb
  1. 改进 ORM SQL 日志记录,操作的字段按照数据表字段定义顺序进行操作。
  2. 改进 HOOK 方法实现,支持修改 in 参数的 Table 字段后修改执行的表名。
  3. 新增 AllAndCount/ScanAndCount 方法,用于实现便捷的分页查询场景。
  4. 新增 Model.WhereOrNot/WhereOrPrefixNot 条件方法。
  1. gi18n
  1. 改进支持中文(Unicode)作为转译的键名。
  1. gclient
  1. 新增 Discovery 链式操作方法,用于设置本次请求的服务发现组件。
  1. ghttp
  1. 改进请求 Context 上下文处理,每次 Context 的变更将会影响底层的 http.Request 对象。以支持自定义 HTTP Handler 的数据交互场景。
  2. 新增 Endpoints 配置项支持,用于自定义 Server 的服务注册发现地址,而可以使用当前监听的地址。
  1. goai
  1. 改进参数校验识别,如果参数为必须参数,则在 OpenAPIv3 结果中进行标记。
  1. gsel
  1. 修复 RoundRobin 实现中 Endpoints 更新的锁机制问题。
  1. glog
  1. 新增 TimeFormat 配置,用于自定义日志输出的时间格式:日志组件 - 配置管理
  2. 改进 Rotation 实现,支持短运行程序的日志文件切分。
  1. gtag
  1. 新增 GetGlobalEnums 方法,用于获取全局注册的枚举类型。
  1. gutil
  1. 新增 DumpJson 方法,用于将任意类型变量按照 JSON 格式化打印到终端,便于人工阅读。
  1. gvalid
  1. 新增 enums 校验规则,用于实现枚举类型的自动识别和校验:数据校验 - 校验规则

社区组件

  1. 修复 contrib/registry/polaris 组件在多个服务端时的负载均衡问题。
  2. 改进 contrib/drivers/pgsqlTableFields 返回的 Index 字段序号统一从 0 开始。
  3. 改进 contrib/nosql/redis 新增用户配置项支持。
  4. 改进 contrib/rpc/grpcx 组件,grpcx.Server 新增 Endpoints 配置项支持,用于自定义服务注册发现的地址。
  5. 新增 contrib/sdk/httpclient 组件,用于本次版本新增的 gf gen ctrl 命令生成的 HTTP SDK 代码文件依赖库。
  6. 新增 contrib/trace/otlpgrpccontrib/trace/otlphttp 组件,用以实现基于 OpenTelemetry 的链路跟踪统一对接组件。

开发工具

  1. 新增 gf gen ctrl 命令,用于编译 api 定义目录,自动生成规范的 controllerHTTP SDK 代码:接口规范 - gen ctrl
  2. 改进 gf gen dao 命令,新增 TypeMapping 特性,开发者可自定义数据表字段类型与生成的 Go 实体数据结构属性类型映射,并且可以方便引入第三方包类型(如 decimal 包以支持高精度类型):数据规范 - gen dao
  3. 改进 gf gen enums 命令,其中的 Prefix 参数改为 Prefixes,以支持多个生成枚举类型的包前缀指定:枚举维护 - gen enums
  4. 改进 gf gen service 命令:
  • 生成的 service 文件中,增加方法注释生成。
  • 当生成的 service 文件中存在 import 冲突时,自动生成 import alias
  1. 改进命令行封装,暴露 gfcmd.Command 类型,便于开发者可以继承扩展自定义命令行功能。
  2. 改进 gf docker 命令,将构建文件参数设置为非必须(考虑兼容),未来将会只用于 Docker 构建,不再耦合二进制构建功能。如果有完整构建需求,建议未来结合 gf build 功能共同使用。并更新项目工程模板的 make image 命令,使用 gf build+gf docker 命令实现。
  3. 改进 gf init 命令,修复在部分场景下初始化项目覆盖已存在的.git/.gitignore 目录及文件问题或权限报错问题。
  4. 改进 gf up 命令,修复在部分场景下的框架版本更新问题,以及在 windows 系统下的下载安装问题。
  5. 改进 gf version 命令,修复在部分场景下的框架版本识别问题。
  6. 修复 gf gen pbentity 命令,生成的 proto 文件实体数据结构的 float32/float64/[]byte 类型修改为 float/double/bytes 类型。
  7. 改进开发工具,部分命令可以不用显示配置 importPrefix 参数,如:gf gen dao/service


相关实践学习
日志服务之数据清洗与入湖
本教程介绍如何使用日志服务接入NGINX模拟数据,通过数据加工对数据进行清洗并归档至OSS中进行存储。
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
探索Gorm - Golang流行的数据库ORM框架
探索Gorm - Golang流行的数据库ORM框架
|
21天前
|
负载均衡 监控 Go
使用Golang框架构建分布式系统
本文探讨了使用Golang构建分布式系统的方法。Golang因其高效、简洁的语法和并发支持成为理想的开发语言。文中列举了几个常用的Golang框架,如Echo、Gin、gRPC和NATS等,并强调了服务拆分、通信机制、负载均衡等构建分布式系统的关键要素。通过选择合适的框架,遵循需求分析、技术选型、服务设计等步骤,开发者可以构建出高性能、高可用和可扩展的系统。此外,文中还提供了一个使用gRPC和etcd的简单代码案例来说明实现过程。
37 4
|
15天前
|
Go 开发工具 C语言
从零开始使用golang开发
【6月更文挑战第17天】本文介绍 Go 语言安装与配置等操作。包括.下载与安装从[Go官网](https://golang.org/dl/)下载对应平台的安装包,安装时可自定义路径。安装验证,使用 `go version` 检查版本。环境配置和变量设置,包管理等
19 1
|
2月前
|
存储 测试技术 Go
Golang框架实战-KisFlow流式计算框架(2)-项目构建/基础模块-(上)
KisFlow项目源码位于<https://github.com/aceld/kis-flow,初始阶段涉及项目构建和基础模块定义。首先在GitHub创建仓库,克隆到本地。项目目录包括`common/`, `example/`, `function/`, `conn/`, `config/`, `flow/`, 和 `kis/`。`go.mod`用于包管理,`KisLogger`接口定义了日志功能,提供不同级别的日志方法。默认日志对象`kisDefaultLogger`打印到标准输出。
631 1
Golang框架实战-KisFlow流式计算框架(2)-项目构建/基础模块-(上)
|
2月前
|
分布式计算 Java Go
Golang深入浅出之-Go语言中的分布式计算框架Apache Beam
【5月更文挑战第6天】Apache Beam是一个统一的编程模型,适用于批处理和流处理,主要支持Java和Python,但也提供实验性的Go SDK。Go SDK的基本概念包括`PTransform`、`PCollection`和`Pipeline`。在使用中,需注意类型转换、窗口和触发器配置、资源管理和错误处理。尽管Go SDK文档有限,生态系统尚不成熟,且性能可能不高,但它仍为分布式计算提供了可移植的解决方案。通过理解和掌握Beam模型,开发者能编写高效的数据处理程序。
161 1
|
2月前
|
Kubernetes Cloud Native Go
Golang深入浅出之-Go语言中的云原生开发:Kubernetes与Docker
【5月更文挑战第5天】本文探讨了Go语言在云原生开发中的应用,特别是在Kubernetes和Docker中的使用。Docker利用Go语言的性能和跨平台能力编写Dockerfile和构建镜像。Kubernetes,主要由Go语言编写,提供了方便的客户端库与集群交互。文章列举了Dockerfile编写、Kubernetes资源定义和服务发现的常见问题及解决方案,并给出了Go语言构建Docker镜像和与Kubernetes交互的代码示例。通过掌握这些技巧,开发者能更高效地进行云原生应用开发。
87 1
|
2月前
|
XML JSON 人工智能
探索Gin框架:Golang Gin框架请求参数的获取
探索Gin框架:Golang Gin框架请求参数的获取
|
2月前
|
存储 中间件 Go
探索Gin框架:快速构建高性能的Golang Web应用
探索Gin框架:快速构建高性能的Golang Web应用
|
2月前
|
Go
golang学习3,golang 项目中配置gin的web框架
golang学习3,golang 项目中配置gin的web框架
|
2月前
|
Go
golang学习2,golang开发配置国内镜像
golang学习2,golang开发配置国内镜像