GoFrame v2.2.0 发布,企业级 Golang 开发框架 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
johng
V2EX    Go 编程语言

GoFrame v2.2.0 发布,企业级 Golang 开发框架

  •  1
     
  •   johng 2022-10-10 21:10:13 +08:00 3737 次点击
    这是一个创建于 1110 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Hi ,朋友们!GoFrame框架v2.2.0版本在今天发布啦!

    本次版本的最大的看点在于:

    • 重构并改进了开发者最频繁使用的校验组件,使得社区的开发者可以很方便地开发和维护内置校验规则。并且扩增了一些常用校验规则,使得组件内置规则更加丰富强大。
    • 改建了数据库组件接口设计,使得社区开发者可以更简单地新增一个数据库类型的driver,目前框架通过社区组件的方式提供了9种数据库类型的driver实现,满足绝大部分业务项目的需求。尤其是本次版本新增了对国产达梦数据库的支持,未来我们期望社区的开发者能提供更多国产数据库类型的driver实现,贡献给开源社区。
    • 社区组件的丰富,本次主要新增了3种类型的配置中心接口实现,支持Apollo/Polaris/Kubernetes ConfigMapGoFrame框架采用了模块化低耦设计,组件分为框架主库与社区组件。框架主库提供核心通用轻量的基础组件,而社区组件是与框架主库解耦的单独组件包,保证主库通用轻量的同时为框架扩充了更多的能力。
    • 本次版本的代码贡献者超过44位,框架的贡献者达到了107位。感谢大家为社区付出的努力和贡献!

    Github ChangeLog:https://github.com/gogf/gf/releases/tag/v2.2.0

    新特性

    1. 重构校验组件的内置校验规则管理器,增加并支持到了59种常用内置校验规则:数据校验-校验规则
    2. 新增社区组件contrib/config/kubecm,实现基于kubernetes configmap的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/kubecm
    3. 新增社区组件contrib/config/apollo,实现基于apollo配置中心的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/apollo
    4. 新增社区组件contrib/config/polaris,实现基于polaris配置中心的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/polaris
    5. 新增contrib/drivers/dm国产达梦数据库支持:https://github.com/gogf/gf/tree/master/contrib/drivers

    主要改进

    社区组件

    ORM 驱动实现

    1. 改进contrib/drivers/pgsql在 ORM 组件层面支持更多pgsql内置的数据类型。
    2. 改进contrib/drivers/pgsql支持写入操作下的LastInsertId特性。
    3. 改进contrib/drivers/clickhouse支持decimal.Decimal数据类型。
    4. 新增contrib/drivers/dm国产达梦数据库支持:https://github.com/gogf/gf/tree/master/contrib/drivers

    注册发现组件

    1. 改进contrib/registry/etcd实现,将日志对象改为接口属性,允许外部注册自定义的日志对象。

    配置组件

    1. 新增社区组件contrib/config/kubecm,实现基于kubernetes configmap的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/kubecm
    2. 新增社区组件contrib/config/apollo,实现基于apollo配置中心的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/apollo
    3. 新增社区组件contrib/config/polaris,实现基于polaris配置中心的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/polaris

    数据库 ORM

    1. 统一不同数据库类型下,单行字符串配置管理格式,并兼容支持已有不同数据库类型特定的配置格式:ORM 使用配置
    2. 改进接口设计,简化driver实现逻辑,后续新增更多的数据库driver支持更加简便。
    3. 新增ToSQL方法,用于将 ORM 操作生成可供调试的SQL语句,并不真正执行SQL
    4. 新增CatchSQL方法,用于通过闭包方法获取内部执行的SQL语句列表。
    5. 废弃Core对象中的GetStruct/GetStructs方法,统一使用Scan方法操作,以提高易用性。
    6. 数据库对象使用日志对象改为接口属性,允许外部注册自定义的日志对象。
    7. 新增ExtraProtocol配置,用于设置额外的配置参数以及链接协议,默认通过Link配置自动解析。
    8. 去掉Filtered接口,采用默认实现,简化复杂度、提高易用性。
    9. 新增ConvertValueForLocalCheckLocalTypeForField接口,用于自定义的数据类型转换及数据类型获取,并提供默认实现。
    10. 新增ClearTableFields方法,用于清理特定数据表的数据结构缓存:ORM 高级特性-字段映射
    11. 新增ClearTableFieldsAll方法,用于清理当前数据库对象所有的数据表数据结构缓存:ORM 高级特性-字段映射
    12. 新增ClearCache方法,用于清理特定数据表的所有查询缓存:ORM 链式操作-查询缓存
    13. 新增ClearCacheAll方法,用于清理当前数据库对象所有的查询缓存:ORM 链式操作-查询缓存
    14. 其他一些改进。

    编解码组件

    1. gcompress
      1. 新增GzipPathWriter方法没用与将特定路径下的文件压缩到指定的io.Writer中。
      2. 新增 ZipPathContent 方法,用于使用zip算法打包压缩文件 /目录并返回字节内容。
    2. gjson
      1. ContentTypeJson等字符串参数调整为ContentType类型

    错误处理

    1. 增加命令行参数--gf.gerror.briefGF_GERROR_BRIEF环境变量开关,控制是否在错误堆栈打印时过滤框架堆栈:错误处理-其他特性
    2. 其他一些细节改进。

    网络组件

    1. ghttp
      1. 新增常用中间件MiddlewareJsonBody用于校验请求Body是否JSON格式。
      2. 新增GetListenedAddress方法,用于获取HTTP Server在指定:0监听端口时系统随机分配的监听地址。
      3. 当服务端执行出错时,修改返回 HTTP 状态码为500
    2. gtcp
      1. 新增GetListenedAddress/GetListenedPort方法,用于获取TCP Server在指定:0监听端口时系统随机分配的监听地址 /端口。
    3. gudp
      1. 新增GetListenedAddress/GetListenedPort方法,用于获取UDP Server在指定:0监听端口时系统随机分配的监听地址 /端口。
    4. goai
      1. 生成接口文档时,支持内嵌结构体定义的属性。
      2. 去掉接口文档中重复的参数说明,特别是在URLBody中存在相同参数时。
    5. gtrace
      1. 改进WithTraceID方法的错误提示为更明确的信息。
      2. 新增WithUUID方法,用于将标准的UUID转换为OpenTelemetryTraceID

    系统组件

    1. gcfg
      1. 调整Available接口方法定义,将resource参数改为非必须参数。
    2. gcron
      1. 针对定时任务延迟的场景,增加时间差异计算逻辑,尽可能减少对定时任务的影响。
    3. gctx
      1. 新增跨进程的链路跟踪支持。
      2. 新增GetInitCtx/SetInitCtx方法,用于main包及包init包初始化方法执行时的context获取和设置。
    4. glog
      1. 新增ILogger接口定义,用于跨组件使用日志组件时的接口化解耦。
      2. 其他细节改进。
    5. gres
      1. 资源File对象新增Export方法,用于将该对象关联的资源导出到指定的磁盘路径。
    6. gstructs
      1. RecursiveOptionint类型改进为自定义类型,并调整对应的方法参数定义。

    文本处理

    1. 新增gstr.IsGNUVersion方法,用于判断给定的字符串是否满足GNU版本规则。

    工具方法

    1. gconv
      1. 改进对NaN特殊字符串的int64/uint64转换支持。
    2. gutil
      1. 新增GetOrDefaultStr/GetOrDefaultAny方法用于默认值和非必须参数的便捷处理。
    3. gvalid
      1. 重构内置校验规则管理器,使得新增一个内置校验非常简便。
      2. 增加并支持到了59种常用内置校验规则:数据校验-校验规则

    功能修复

    1. 修复garray/gmap/gset/glist/gtype/gvar在容器对象为nil场景下DeepCopypanic问题。
    2. 修复gtime在对象为nil场景下DeepCopypanic问题。
    3. 修复数据库 ORM 链式操作Group方法在给定多个排序条件时的覆盖问题。
    4. 修复HTTP ServerJSON格式字符串返回时的内容重复输出问题。
    5. 修复gstr.Nl2Br方法在部分场景下由于逻辑判断引起的数组访问越界问题。
    6. 修复查询数据表字段信息时表名为空场景的错误打印问题。
    7. 修复Req对象属性为*gjson.Json类型的参数接收问题。

    开发工具

    1. 改进gen dao命令,增加clear参数,用于自动清理目标数据库中不存在的本地数据模型 Go 文件:数据规范-gen dao
    2. 改进gen service命令:接口维护-gen service
      1. 按照业务模块对结构体对象生成的接口进行整合。
      2. 增加clear参数,用于自动清理在logic没有对应的接口代码及文件。
      3. 其他一些细节改进。
    3. 改进run命令,增加自定义的程序运行参数。
    12 条回复    2022-10-17 18:03:07 +08:00
    sadfQED2
        1
    sadfQED2  
       2022-10-10 21:13:06 +08:00 via Android
    不是 java 写的,这不够企业级啊 [狗头]
    FreeBSD
        2
    FreeBSD  
       2022-10-10 21:44:25 +08:00 via Android
    @johng 有没有啥成功案例啊
    lvsshuttao
        3
    lvsshuttao  
       2022-10-10 22:03:47 +08:00
    升太快了,我还在用 2.0.3
    chenall
        4
    chenall  
       2022-10-10 23:43:57 +08:00 via Android
    新项目考虑用新版的,旧的还是继续用旧版的。
    我还在用 1.6 的没精力升级
    wzw
        5
    wzw  
       2022-10-11 07:02:25 +08:00 via iPhone
    @chenall #4 我也还在用 1.6……
    daiv
        6
    daiv  
       2022-10-11 07:36:00 +08:00
    很棒的框架, 我们是用来写 api 和处理数据等
    GP1
        7
    GP1  
       2022-10-11 07:40:21 +08:00
    有那么多的框架,为什么要用你们的呢?
    你们的框架和其他框架比,优缺点是什么呢?
    用了有什么好处呢?
    sunny1688
        8
    sunny1688  
       2022-10-11 09:12:02 +08:00
    gin 不香吗
    dic
        9
    dic  
       2022-10-11 10:09:16 +08:00
    之前写了一个自己的小网站用的 GoFrame ,网站都写的差不多了,最后用到 ORM 的多对多功能时发现非常难用,文档上也把多对多直接省略了,最后直接换成 Echo + Ent 舒服多了。
    sauren
        10
    sauren  
       2022-10-11 10:12:12 +08:00
    支持支持~~~ 我正在用~
    dorothyREN
        11
    dorothyREN  
       2022-10-11 15:56:24 +08:00
    还是 springboot 香
    darkyoung
        12
    darkyoung  
       2022-10-17 18:03:07 +08:00
    支持下!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2557 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 13:17 PVG 21:17 LAX 06:17 JFK 09:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86