GoFrame v2.4 版本发布,企业级 Golang 开发框架
大家好啊,GoFrame 框架今天发布了 v2.4.0 正式版本啦!👏👏👏👏
该版本最大的亮点在于提供了微服务开发的功能特性、开发工具以及工程脚手架,并且提供了完善的微服务开发文档!!微服务的组件设计仍然以接口设计为主,以保证良好的灵活性和扩展性,接口维护在框架主库中;具体的接口实现仍然以务实为主,并在社区组件中提供了常用的接口实现。
其实该版本特性功能早已 Ready,但由于文档工作量较大,陆续花了 1 个月左右才相对完善,因此版本的发布时间也相应做了调整。我们认为文档和代码同等重要,是发布里程碑不可分割的部分。我们知道怎么用好,也希望能告诉大家怎么用好,才能更务实地帮助到更多的开发者。这也是 GoFrame 框架的文档能够逐步沉淀丰富的原因之一。此外,详尽的源码注释依旧英文为主,以帮助到海外使用者。官网文档仍然以中文为主,帮助到主要的大中国区开发团队。
赶快来看看我们都更新了什么东西吧!Enjoy!🍺🍺🍺🍺🍺🍺🍺🍺
完整代码变更: v2.3.0...v2.4.0
新特性
正式发布微服务开发特性,并新增完整的微服务开发官网章节:微服务开发
功能改进
数据库组件
-
gdb
-
修复跨库操作时自动查询表结构失败的问题:
-
修复 Namespace 配置在 pgsql 下未生效的问题。
-
修复使用新版统一配置,无法打开 sqlite 数据库文件的问题:
-
改进底层数据库操作返回逻辑,将底层错误通过 gerror.Wrap 后返回,以保证上层能获取底层自定义错误对象。
-
修复查询数据表时,底层 unsigned 整形字段转换为了 signed 整形类型的问题:
-
修复子查询时,多层 Model 作为子查询参数的解析问题:
-
改进时间维护功能,写入 / 更新 / 删除时间支持完整的时间(粒度到纳秒)写入。
-
修复在软删除场景下,给定空 Where 条件的未限制执行问题:
-
gredis
-
修复对象创建时的配置处理及对象初始化问题。
容器组件
-
garray
-
增加 Filter 方法,用于自定义遍历并过滤数组元素项。
-
增加 RemoveValues 方法,支持按照参数值批量删除元素项。
-
改进 InsertBefore 方法,支持批量的参数插入能力。
-
gmap
-
增加 IsSubOf 方法,用于判断当前 map 是否是指定 map 的子集。
-
gqueue
-
修复 Len/Size 长度计算问题:
-
修复 Close 方法的并发安全问题:
网络组件
-
gclient
-
增加 SetDiscovery 及 SetBuilder 方法,允许调用者自定义客户端的服务发现及负载均衡接口实现。
-
ghttp
-
改进支持参数接收时从 Header/Cookie 中读取指定参数,支持规范路由中的 in 标签定义读取 Header/Cookie(in:header/cookie)。
-
改进 ResponseWriter 实现 http.Flusher 接口,简化使用者的 Stream 输出开发逻辑:数据返回 - Stream 返回
-
改进链路跟踪实现逻辑,避免内部读取提交内容发生错误时被忽略的问题。
-
改进参数读取逻辑,避免 r.GetRequestMap() 返回内容包含 form-data 表单 body 信息的问题:
-
改进内部上下文接收逻辑:
-
原有逻辑:去掉忽略底层 Request 的 ctx 并新建支持链路跟踪的 ctx
-
最新逻辑:继承底层 Request 的 ctx 对象,并扩展该 ctx 支持链路跟踪特性
-
改进优雅关闭进程逻辑,允许自定义优雅关闭的超时时间。
-
改进配置功能,允许开发者配置