- Created by 郭强, last modified on Jul 13, 2023
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
Version 19 Next »
大家好啊,GoFrame
框架今天发布了v2.4.0
正式版本啦!👏👏👏👏
该版本最大的亮点在于提供了微服务开发的功能特性、开发工具以及工程脚手架,并且提供了完善的微服务开发文档!!微服务的组件设计仍然以接口设计为主,以保证良好的灵活性和扩展性,接口维护在框架主库中;具体的接口实现仍然以务实为主,并在社区组件中提供了常用的接口实现。
其实该版本特性功能早已Ready
,但由于文档工作量较大,陆续花了1
个月左右才相对完善,因此版本的发布时间也相应做了调整。我们认为文档和代码同等重要,是发布里程碑不可分割的部分。我们知道怎么用好,也希望能告诉大家怎么用好,才能更务实地帮助到更多的开发者。这也是GoFrame
框架的文档能够逐步沉淀丰富的原因之一。此外,详尽的源码注释依旧英文为主,以帮助到海外使用者。官网文档仍然以中文为主,帮助到主要的大中国区开发团队。
赶快来看看我们都更新了什么东西吧!Enjoy!
🍺🍺🍺🍺🍺🍺🍺🍺
完整代码变更: v2.3.0...v2.4.0 ,感谢本次所有的贡献开发者:
新特性
正式发布微服务开发特性,并新增完整的微服务开发官网章节:微服务开发
功能改进
数据库组件
gdb
- 修复跨库操作时自动查询表结构失败的问题:https://github.com/gogf/gf/issues/2338
- 修复
Namespace
配置在pgsql
下未生效的问题。 - 修复使用新版统一配置,无法打开
sqlite
数据库文件的问题:https://github.com/gogf/gf/issues/2435 - 改进底层数据库操作返回逻辑,将底层错误通过
gerror.Wrap
后返回,以保证上层能获取底层自定义错误对象。 - 修复查询数据表时,底层
unsigned
整形字段转换为了signed
整形类型的问题:https://github.com/gogf/gf/issues/2356 - 修复子查询时,多层
Model
作为子查询参数的解析问题:https://github.com/gogf/gf/issues/2339 - 改进时间维护功能,写入/更新/删除时间支持完整的时间(粒度到纳秒)写入。
- 修复在软删除场景下,给定空
Where
条件的未限制执行问题:https://github.com/gogf/gf/issues/2427
gredis
- 修复对象创建时的配置处理及对象初始化问题。
容器组件
garray
- 增加
Filter
方法,用于自定义遍历并过滤数组元素项。 - 增加
RemoveValues
方法,支持按照参数值批量删除元素项。 - 改进
InsertBefore
方法,支持批量的参数插入能力。
- 增加
gmap
- 增加
IsSubOf
方法,用于判断当前map
是否是指定map
的子集。
- 增加
gqueue
- 修复
Len/Size
长度计算问题:https://github.com/gogf/gf/issues/2509 - 修复
Close
方法的并发安全问题:https://github.com/gogf/gf/issues/2015
- 修复
网络组件
gclient
- 增加
SetDiscovery
及SetBuilder
方法,允许调用者自定义客户端的服务发现及负载均衡接口实现。
- 增加
ghttp
- 改进支持参数接收时从
Header/Cookie
中读取指定参数,支持规范路由中的in
标签定义读取Header/Cookie
(in:header/cookie
)。 - 改进
ResponseWriter
实现http.Flusher
接口,简化使用者的Stream
输出开发逻辑:数据返回-Stream返回 - 改进链路跟踪实现逻辑,避免内部读取提交内容发生错误时被忽略的问题。
- 改进参数读取逻辑,避免
r.GetRequestMap()
返回内容包含form-data
表单body
信息的问题:https://github.com/gogf/gf/issues/2261 - 改进内部上下文接收逻辑:
- 原有逻辑:去掉忽略底层
Request
的ctx
并新建支持链路跟踪的ctx
- 最新逻辑:继承底层
Request
的ctx
对象,并扩展该ctx
支持链路跟踪特性
- 原有逻辑:去掉忽略底层
- 改进优雅关闭进程逻辑,允许自定义优雅关闭的超时时间。
- 改进配置功能,允许开发者配置自定义的服务注册接口实现对象。
- 改进支持参数接收时从
系统组件
gcmd
- 改进
AddObject
方法,允许直接将指定的*Command
或者规范编写的Object
对象添加为子级命令。
- 改进
gctx
- 修复
GetInitCtx
方法缺失TraceID
的问题:上下文-gctx
- 修复
gfile
- 改进
Temp
方法,保持基础逻辑实现与标准库os.TempDir
一致,避免单机多人协作时的临时目录冲突问题。
- 改进
gtimer
- 创建定时器新增
Quick
选项,用以实现是否在添加定时器时同时执行指定的回调方法。
- 创建定时器新增
工具组件
gconv
- 修复
Scan
方法转换在部分场景下,如果属性为整型/浮点型数组时的转换失败问题:https://github.com/gogf/gf/issues/2391 - 修复
Interfaces
方法在属性为0的场景下,转换结构体直接返回[]
的问题:https://github.com/gogf/gf/issues/2395 - 修复当
json tag
为,omitempty
不带变量名称的结构体转换问题。 - 修复当转换目标类型为自定义基本类型的指针,而转换失败的问题。
- 修复
gvar.Var
类型转换为常见第三方包decimal.Decimal
类型失败的问题:https://github.com/gogf/gf/issues/2584 - 改进
Struct
方法,解决当结构体的属性类型为time.Time/*time.Time
,给定的转换值为非标准库支持的字符串如2022-12-15 16:11:34
而引发的转换失败问题:https://github.com/gogf/gf/issues/2371
- 修复
gtag
- 增加
SetGlobalEnums/GetEnumsByType
方法,用以实现自动化的Golang Enums
管理。需要结合gf gen enums
命令使用。
- 增加
gutil
- 修复
Dump
方法在个别场景下的空指针报错问题:https://github.com/gogf/gf/issues/2487
- 修复
gvalid
- 自定义校验方法参数新增
Field
字段,表示校验字段的名称,用以解决自定义校验错误提示的字段丢失问题:https://github.com/gogf/gf/issues/2499
- 自定义校验方法参数新增
社区组件
数据库驱动
- 改进
dm/mysql
组件,解决当时区配置中带有特殊字符(例如/
)的QueryEscape
问题。
NoSQL适配
- 修复
redis
组件配置中缺失的连接池配置参数。
服务注册发现
- 增加
file
注册发现组件,用于本地基于文件的服务注册发现,通常用于单节点测试。 - 完善
etcd/polaris/zookeeper
实现细节,并完善单测用例。
微服务脚手架
- 新增
grpcx
微服务组件,用于grpc
通信协议的微服务开发:微服务开发
开发工具
- 增加
gf gen pb
命令,用于编译proto
文件生成go pb
文件:协议编译-gen pb - 增加
gf gen pbentity
命令,用于自动生成数据库表的proto
数据结构定义文件:数据表PB-gen pbentity - 增加
gf gen enums
命令,用于解析指定目录go
文件,并根据enum
定义规范自动生成enums
数据文件,主要用于OpenAPI
接口文档展示(实验特性):枚举维护-gen enums - 改进
gf up
命令,增加自动升级工具CLI
的功能。 - 改进
gf gen service
命令,当方法注释后不再自动生成到接口定义文件中。 - 改进
gf build
命令,增加DumpENV
选项,用于控制在编译时是否打印编译使用的环境信息,默认关闭。 - 改进
gf docker
命令,增加Tag
选项,用以兼容旧版本。
大家好啊,GoFrame
框架今天发布了v2.4.0
正式版本啦!👏👏👏👏
该版本最大的亮点在于提供了微服务开发的功能特性、开发工具以及工程脚手架,并且提供了完善的微服务开发文档!!微服务的组件设计仍然以接口设计为主,以保证良好的灵活性和扩展性,接口维护在框架主库中;具体的接口实现仍然以务实为主,并在社区组件中提供了常用的接口实现。
其实该版本特性功能早已Ready
,但由于文档工作量较大,陆续花了1
个月左右才相对完善,因此版本的发布时间也相应做了调整。我们认为文档和代码同等重要,是发布里程碑不可分割的部分。我们知道怎么用好,也希望能告诉大家怎么用好,才能更务实地帮助到更多的开发者。这也是GoFrame
框架的文档能够逐步沉淀丰富的原因之一。此外,详尽的源码注释依旧英文为主,以帮助到海外使用者。官网文档仍然以中文为主,帮助到主要的大中国区开发团队。
赶快来看看我们都更新了什么东西吧!Enjoy!
🍺🍺🍺🍺🍺🍺🍺🍺
完整代码变更: v2.3.0...v2.4.0 ,感谢本次所有的贡献开发者:
新特性
正式发布微服务开发特性,并新增完整的微服务开发官网章节:微服务开发
功能改进
数据库组件
gdb
- 修复跨库操作时自动查询表结构失败的问题:https://github.com/gogf/gf/issues/2338
- 修复
Namespace
配置在pgsql
下未生效的问题。 - 修复使用新版统一配置,无法打开
sqlite
数据库文件的问题:https://github.com/gogf/gf/issues/2435 - 改进底层数据库操作返回逻辑,将底层错误通过
gerror.Wrap
后返回,以保证上层能获取底层自定义错误对象。 - 修复查询数据表时,底层
unsigned
整形字段转换为了signed
整形类型的问题:https://github.com/gogf/gf/issues/2356 - 修复子查询时,多层
Model
作为子查询参数的解析问题:https://github.com/gogf/gf/issues/2339 - 改进时间维护功能,写入/更新/删除时间支持完整的时间(粒度到纳秒)写入。
- 修复在软删除场景下,给定空
Where
条件的未限制执行问题:https://github.com/gogf/gf/issues/2427
gredis
- 修复对象创建时的配置处理及对象初始化问题。
容器组件
garray
- 增加
Filter
方法,用于自定义遍历并过滤数组元素项。 - 增加
RemoveValues
方法,支持按照参数值批量删除元素项。 - 改进
InsertBefore
方法,支持批量的参数插入能力。
- 增加
gmap
- 增加
IsSubOf
方法,用于判断当前map
是否是指定map
的子集。
- 增加
gqueue
- 修复
Len/Size
长度计算问题:https://github.com/gogf/gf/issues/2509 - 修复
Close
方法的并发安全问题:https://github.com/gogf/gf/issues/2015
- 修复
网络组件
gclient
- 增加
SetDiscovery
及SetBuilder
方法,允许调用者自定义客户端的服务发现及负载均衡接口实现。
- 增加
ghttp
- 改进支持参数接收时从
Header/Cookie
中读取指定参数,支持规范路由中的in
标签定义读取Header/Cookie
(in:header/cookie
)。 - 改进
ResponseWriter
实现http.Flusher
接口,简化使用者的Stream
输出开发逻辑:数据返回-Stream返回 - 改进链路跟踪实现逻辑,避免内部读取提交内容发生错误时被忽略的问题。
- 改进参数读取逻辑,避免
r.GetRequestMap()
返回内容包含form-data
表单body
信息的问题:https://github.com/gogf/gf/issues/2261 - 改进内部上下文接收逻辑:
- 原有逻辑:去掉忽略底层
Request
的ctx
并新建支持链路跟踪的ctx
- 最新逻辑:继承底层
Request
的ctx
对象,并扩展该ctx
支持链路跟踪特性
- 原有逻辑:去掉忽略底层
- 改进优雅关闭进程逻辑,允许自定义优雅关闭的超时时间。
- 改进配置功能,允许开发者配置自定义的服务注册接口实现对象。
- 改进支持参数接收时从
系统组件
gcmd
- 改进
AddObject
方法,允许直接将指定的*Command
或者规范编写的Object
对象添加为子级命令。
- 改进
gctx
- 修复
GetInitCtx
方法缺失TraceID
的问题:上下文-gctx
- 修复
gfile
- 改进
Temp
方法,保持基础逻辑实现与标准库os.TempDir
一致,避免单机多人协作时的临时目录冲突问题。
- 改进
gtimer
- 创建定时器新增
Quick
选项,用以实现是否在添加定时器时同时执行指定的回调方法。
- 创建定时器新增
工具组件
gconv
- 修复
Scan
方法转换在部分场景下,如果属性为整型/浮点型数组时的转换失败问题:https://github.com/gogf/gf/issues/2391 - 修复
Interfaces
方法在属性为0的场景下,转换结构体直接返回[]
的问题:https://github.com/gogf/gf/issues/2395 - 修复当
json tag
为,omitempty
不带变量名称的结构体转换问题。 - 修复当转换目标类型为自定义基本类型的指针,而转换失败的问题。
- 修复
gvar.Var
类型转换为常见第三方包decimal.Decimal
类型失败的问题:https://github.com/gogf/gf/issues/2584 - 改进
Struct
方法,解决当结构体的属性类型为time.Time/*time.Time
,给定的转换值为非标准库支持的字符串如2022-12-15 16:11:34
而引发的转换失败问题:https://github.com/gogf/gf/issues/2371
- 修复
gtag
- 增加
SetGlobalEnums/GetEnumsByType
方法,用以实现自动化的Golang Enums
管理。需要结合gf gen enums
命令使用。
- 增加
gutil
- 修复
Dump
方法在个别场景下的空指针报错问题:https://github.com/gogf/gf/issues/2487
- 修复
gvalid
- 自定义校验方法参数新增
Field
字段,表示校验字段的名称,用以解决自定义校验错误提示的字段丢失问题:https://github.com/gogf/gf/issues/2499
- 自定义校验方法参数新增
社区组件
数据库驱动
- 改进
dm/mysql
组件,解决当时区配置中带有特殊字符(例如/
)的QueryEscape
问题。
NoSQL适配
- 修复
redis
组件配置中缺失的连接池配置参数。
服务注册发现
- 增加
file
注册发现组件,用于本地基于文件的服务注册发现,通常用于单节点测试。 - 完善
etcd/polaris/zookeeper
实现细节,并完善单测用例。
微服务脚手架
- 新增
grpcx
微服务组件,用于grpc
通信协议的微服务开发:微服务开发
开发工具
- 增加
gf gen pb
命令,用于编译proto
文件生成go pb
文件:协议编译-gen pb - 增加
gf gen pbentity
命令,用于自动生成数据库表的proto
数据结构定义文件:数据表PB-gen pbentity - 增加
gf gen enums
命令,用于解析指定目录go
文件,并根据enum
定义规范自动生成enums
数据文件,主要用于OpenAPI
接口文档展示(实验特性):枚举维护-gen enums - 改进
gf up
命令,增加自动升级工具CLI
的功能。 - 改进
gf gen service
命令,当方法注释后不再自动生成到接口定义文件中。 - 改进
gf build
命令,增加DumpENV
选项,用于控制在编译时是否打印编译使用的环境信息,默认关闭。 - 改进
gf docker
命令,增加Tag
选项,用以兼容旧版本。
- No labels