GoFrame v1.16 发布,企业级 Golang 开发框架
Hello
,小伙伴久等啦!距离上一次发布,时隔刚好半年,这半年发生了很多很多的事情。薛老的猫以不同的观测方式决定了小猫不同的结果,同样看待世界的不同方式决定了世界在我们眼中的样子。这次给大家带来了最新GoFrame v1.16
版本!GoFrame
是一款模块化、高性能、企业级的Go
基础开发框架:https://goframe.org ,一款低调务实、真正意义的企业级Golang
开发框架!本次更新包含了大量的新特性和功能改进,特别是全链路跟踪、ORM
模型关联/嵌套事务/子查询/数十项新增方法、HTTP
客户端拦截器、数据校验及I18N
组件改进、重构版的定时器等等。本次更新内容较多,以下为主要更新介绍,希望大家喜欢!Enjoy!
本次文档有大量更新,目前开发文档总约有20+万字,建议按照官方目录结构进行阅读
重要特性
- 框架新增全链路跟踪特性,采用
OpenTelementry
标准,目前已打通HTTP Client&Server/GRPC Client&Server/ORM/Redis/Logging
组件,详细介绍请参考章节: - 数据库核心组件新增以下特性:
- 模型关联:
- 嵌套事务:ORM事务处理
- 子查询特性:ORM查询-子查询特性
- 新增数十项个ORM模型操作方法(参考
PHP Laravel
),正在使用goframe
的小伙伴们建议务必看一下:
- HTTP客户端增加中间件拦截器功能特性,详情请参考章节:HTTPClient-拦截器/中间件
- 数据校验组件大量改进:
- 增加链式操作校验对象:数据校验-校验对象
- 增加对
Context
的支持,并改进支持了强大的I18N
国际化错误信息管理能力,详情请参考章节: - 自定义校验规则改进,增加局部校验规则注册特性,增加完整数据校验:数据校验-自定义规则
- 定时器组件
gtimer
的全新重构,去掉TimingWheel
的实现,改为了更加稳健的PriorityQueue
的改进实现,详情请参考章节:gtimer (任务定时器) - 框架核心基础组件已增加全错误堆栈特性。当错误产生时可以完整获取链路相关组件的错误堆栈信息。该特性只有一款基础组件相对完善并且统一设计的开发框架才能具备。
功能改进
ORM
- 增加全链路的链路跟踪上下文
Context
参数传递:ORM上下文变量 链路跟踪中默认会记录SQL
以及数据库连接信息(不包含敏感配置),组件链路跟踪信息可配置关闭。 - 进一步完善
ORM
组件日志记录,日志仅在调试模式下有效,详细介绍请参考章节:ORM高级特性 - 新增数十项
ORM
模型操作方法(参考PHP Laravel
),例如:InsertAndGetId
、Min/Max/Avg/Sum
、Increment/Decrement
、WhereBetween/WhereLike/WhereIn/WhereNull
、OrderAsc/OrderDesc/OrderRandom
等等。正在使用goframe
的小伙伴们建议务必看一下,详情请参考章节: - 新版本开始,数据库
ORM
链式操作默认启用了字段过滤特性,当给定的参数无法与数据表字段智能匹配时将会被自动过滤,详情请参考章节:ORM链式操作-字段过滤 - 改进
pgsql
数据库类型int8
到Golang
类型的转换,从int
类型调整为了int64
。 - 大量重构、改进工作,细节比较多,这里不再一一赘述。关键结果是组件功能更加丰富、代码更加严谨、设计更加简洁、使用更加便捷。
- 增加全链路的链路跟踪上下文
HTTP
HTTP Client
增加中间件拦截器功能特性:HTTPClient-拦截器/中间件HTTP Client&Server
增加链路跟踪支持:链路跟踪-HTTP请求ghttp
包中的客户端请求方法标记废除,后续统一采用HTTP Client
对象方式使用。- 改进
Request.Parse
方法的数据校验,直接校验提交参数,而不是校验数据转换后的struct
对象:请求输入-请求校验 - 增加
WrapF/WrapH
方法,用于将标准库的http.HandlerFunc/http.Handler
转换为ghttp.Server
支持的服务方法类型。 - 其他大量改进工作,细节也很多。关键结果就是组件功能更加丰富、代码更加严谨、使用更加便捷。
gvalid
Check
方法名称修改为了CheckValue
,详情请参考章节:数据校验-单数据校验- 新增
CheckStructWithData
方法,用于校验指定参数的struct
对象:数据校验-结构体校验 - 新增
Validator
校验对象,用于便捷的链式操作,并可在后期进行进一步扩展:数据校验-校验对象 - 自定义的规则方法定义增加了
Context
上下文变量输入,并增加RuleFunc
及RuleFuncMap
局部校验规则注册方法:数据校验-自定义规则 - 左右校验方法增加了
Context
参数支持,并改进支持了强大的I18N
国际化错误信息管理能力: Error
错误对象修改为了接口实现,需要注意之前使用*Error
指针方式的地方会报错。- 其他一些细节改进。
gcache
gredis
- 增加了对链路跟踪的支持,详情请参考章节:Redis-Context
gjson
Option
类型名称修改为了Options
,这是一项非兼容性更新。NewWithOption
方法名称修改为了NewWithOptions
。
gcmd
- 新增
GetOptWithEnv
方法,并将GetWithEnv
方法标记废弃。
- 新增
glog
- 增加基于
OpenTelemetry
标准的链路跟踪支持:日志组件-Context上下文
- 增加基于
gproc
- 增加统一的信号注册监听回调特性:gproc-信号注册监听
gres
- 资源管理的最佳实践参考:资源管理-最佳实践
gtimer
- 定时器组件
gtimer
的全新重构,去掉TimingWheel
的实现,改为了更加稳健的PriorityQueue
的改进实现,详情请参考章节:gtimer (任务定时器)
- 定时器组件
gview
- 所有模板解析方法增加了
Context
参数输入:模板引擎
- 所有模板解析方法增加了
gconv
- 改进
Scan
方法,增加对Map/Maps
参数类型的自动转换支持:类型转换-Scan转换
- 改进
gi18n
I18N
国际化组件增加对Context
的支持,详情请参考章节:I18N国际化- 注意,所有方法都增加了
ctx
参数的输入,并去掉了部分方法的language
参数,转而由ctx
参数来控制language
输入,并提高可扩展性:I18N国际化-使用介绍 - 去掉了
TranslateFormatLang
、Tfl
方法。
gmeta
- 新增
gmeta
元数据包,详情请参考章节:gmeta(元数据管理)
- 新增
- 各个组件的其他一些细节改进,不用特意在发布文档中阐述。
开发工具链
CLI
工具有更新,主要是简化了dao
模型代码生成,去掉了重复方法生成,去掉了直接返回模型对象的相关方法,dao
对象修改为了直接继承GoFrame ORM
组件中的Model
对象,通过给定模型接受查询数据,因此部分方法使用的方式会需要调整。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
高性能分布式文件系统 FastCFS V2.1.0 发布
FastCFS V2.1.0 发布,主要改进: 1. 程序启动时加载slice索引拆分为两个阶段,均改造成多线程方式,缩短服务就绪时间 2. 服务端程序和fuse客户端支持命令行参数: 1)fuse客户端配合对接K8s,支持 --user、--key、--mountpoint等5个选项; 2)server端程序和fuse客户端支持 -V(--version)和 -h(--help)选项; 3)fs_serverd和 fdir_serverd支持选项--force-leader-election/--force-master-election,用于强制leader/master选举。 3. 提供精简版的配置文件 4. 基础库libfastcommon使用 libcurl获取URL资源 5. 其他改进和bug修复: 1)提供服务是否就绪命令行工具 fcfs_active_test 2)为集群运维脚本提供命令行工具 fauth_list_servers、fdir_list_servers和fstore_list_servers 3)对于 fdir server 和 fsto...
- 下一篇
TXR 260 发布,用于文本抽取的模式匹配语言
TXR 260 现已发布。TXR是一个实用、方便的工具,提供全文档模式匹配和从任意文本源中提取文本的功能。其由由两种语言组成,分别是 TXR 模式语言,以及 TXR Lisp。 主要更新内容 现在可以省略哈希模式中的值,并提供有用的细微语义 对未结束的表达式的诊断现在可以让编辑人员跳到未结束的结构的开始部分 为全局变量定义制定更好的翻译策略 改进了部分文档 修复了window-map中的buggy:wrap和 buggy:reflect 修复了 case{q*,ql*,qual*} 宏未能展开关键表达式的问题 修复编译文件警告被推迟到负载结束的问题 修复了Carray 对象作为参数传递给外部函数时发生崩溃的问题 修复了 bignum 转换到 64 位的几个错误 不完成只是内部的符号,没有约束力 doc 函数现在可以处理文档中使用 HTML 代码的符号,如<= 详情请查看更新公告。
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7设置SWAP分区,小内存服务器的救世主
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,CentOS7官方镜像安装Oracle11G
- Mario游戏-低调大师作品