GoFrame v2.8.0 发布:更高效、更强大,兼容性与性能全面提升 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
johng

GoFrame v2.8.0 发布:更高效、更强大,兼容性与性能全面提升

  •  1
     
  •   johng 2024 年 11 月 20 日 3616 次点击
    这是一个创建于 520 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们很高兴宣布GoFrame迎来了v2.8.0正式版本的发布! 本次更新带来了重要的改进和新特性,使GoFrame在开发效率、执行性能、稳定性和扩展性方面取得了显著提升。

    版本亮点

    1. 兼容性更新

      • GoFrame v2.8.0要求最低 Golang 版本为 1.20,提供更高效的性能和稳定性。
      • container/gring 组件已被废弃,同时 contrib/trace/jaeger 组件从源码仓库移除,简化了依赖管理。
    2. 组件改进

      • database/gdb模块现在支持created_at/updated_at/deleted_at整型时间戳字段、unix socket连接、time/year 字段类型,并增加了 Model.Exist 方法,显著提升了数据库操作的灵活性和效率。
      • util/gconv组件使用类型缓存提升转换性能,针对复杂数据类型的转换性能提升约300%
      • net/ghttpnet/gudp 网络服务组件优化了参数配置和请求处理逻辑,为用户提供更简洁的开发体验。
    3. 开发工具升级

      • gf init 命令支持生成单仓多应用项目结构。
      • gf gen ctrlgf gen daogf run 等命令的优化,进一步增强了代码生成的灵活性与执行效率,简化了项目搭建流程。
    4. 社区组件支持

      • contrib/drivers/mssqlcontrib/registry/etcd 等多个社区驱动增加了对最新功能的支持,提升了与外部服务集成的便捷性。

    未来展望

    GoFrame团队感谢每一位社区用户的支持。 我们将继续倾听社区反馈,为用户提供更丰富的功能和更高效的开发支持。

    特别致谢

    感谢所有参与本次版本的贡献开发者们

    alt text

    主要内容

    本次版本变更内容较多,以下为本次版本的主要内容,详细的Change Log请参考: https://github.com/gogf/gf/releases/tag/v2.8.0

    完整的代码变更请参考:https://github.com/gogf/gf/compare/v2.7.0...v2.8.0

    兼容提示

    1. 最低Golang版本要求从1.18调整为了1.20
    2. 组件container/gring标记废弃,未来不再继续维护。
    3. 组件contrib/trace/jaeger已从源码仓库删除。
    4. 组件encoding/gjsonLoad*方法参数,从interface{}调整为了[]byte参数,以提高性能。
    5. 组件net/ghttpStartPProfServer方法端口参数从port int调整为了address string以提高灵活性。
    6. 组件net/gudp重构,个别方法参数有调整:UDP 组件

    组件改进

    1. database/gdb
      • 时间维护特性增加对整型字段的支持,当created_at/updated_at/deleted_at为整型字段时,将使用时间戳更新该字段,详见:ORM 链式操作-时间维护
      • 新增Model.Exist方法,用于判断满足所给条件的数据是否存在:ORM 查询-Exist
      • 新增对数据库time/year字段类型的支持:ORM 高级特性-类型识别
      • 新增OrderRandomFunction接口方法,并为常用数据库实现并支持了OrderRandom排序方法。
      • 改进Model.Fields方法,增加对gdb.Raw类型参数的支持:ORM 链式操作-字段获取
      • 改进With特性中的orm标签,增加对unscoped的支持:模型关联-静态关联-With 特性
      • 配置文件增加对unix socket本地数据库服务连接的支持。
      • 去掉链路跟踪trace信息中的sql语句,以减少trace包大小。
      • 改进查询结果到struct的转换性能。
    2. net/ghttp
      • 取消了规范路由注册中对输入输出对象的XxxReq/XxxRes命名限制。
      • StartPProfServer的端口参数从port int调整为了address string以提高灵活性。
      • 去掉了链路跟踪trace信息中的请求/返回数据内容,以减少trace包大小。
      • 修复/debug/admin/shutdown接口关闭Server时的优雅关闭问题。
    3. net/goai
      • 允许在请求/返回结构体属性中通过type标签指定参数的类型。
    4. container/gtree
    5. encoding/gjson
      • Load*方法参数,从interface{}调整为了[]byte参数,以提高性能。
    6. os/gcron
      • 新增StopGracefully方法,用于等待当前正在执行的定时任务完成后再停止定时任务:定时任务-基本使用
    7. os/gfsnotify
      • 改进文件递归监听实现,当监听目录时,如果后续在目录中创建子级目录,或者子级目录的子级目录,以此类推,也将会被递归监听:文件监控-gfsnotify
    8. test/gtest
      • 改进AssertIN/AssertNI断言方法,增加对字符串子串的包含断言支持。
    9. util/gvalid
      • 新增required-if-all校验规则,所有指定的参数和对应的数值相等时,该参数为必须参数:数据校验-校验规则
      • 改进phone校验规则,增加对171系列手机号码的验证支持。
    10. util/gconv * 使用类型缓存提升转换性能,针对复杂数据类型的转换性能提升约300%

    社区组件

    1. drivers/mssql
    2. contrib/drivers/pgsql
      • 增加InsertIgnore操作支持。
      • 增加对Golang数组类型到数据库数组字段类型操作的支持。
    3. contrib/registry/etcd
      • 增加DialTimeoutAutoSyncInterval配置项。
    4. contrib/registry/nacos
    5. contrib/rpc/grpcx
      • 去掉了链路跟踪trace信息中的请求/返回数据内容,以减少trace包大小。
      • 由于grpc组件已启用grpc.Dial方法,这里使用grpc.NewClient替换掉了grpc.Dial
    6. contrib/sdk/httpclient
      • 新增Handler接口,允许使用者自定义处理HTTP Client返回数据。

    开发工具

    1. 改进gf init命令,新增-a/monoApp选项,用于在大仓下新创建应用项目模板:项目创建-init
    2. 改进gf pack命令,新增对命令参数选项的配置文件支持,配置项路径为gfcli.pack
    3. 改进gf tpl命令,新增对命令参数选项的配置文件支持,配置项路径为gfcli.tpl.parse
    4. 改进gf gen ctrl命令,使用AST重新实现解析逻辑,提高生成Go代码文件内容的准确性,并提升该功能的可扩展性。
    5. 改进gf run命令:
      • 新增对命令参数选项的配置文件支持,配置项路径为gfcli.run
      • 在临时的子进程结束时,如新进程替换老进程时,自动删除临时的老进程二进制文件。
    6. 改进gf gen dao命令:
      • 增加field mapping特性,支持对指定字段配置生成的Golang数据类型:数据规范-gen dao
      • 整型字段如果长度为1,例如:bit(1)/tinyint(1)/int(1),那么自动识别生成为bool类型的Golang数据类型。
      • 自动读取生成代码文件的目录名称,作为生成的dao/do/entity文件的包名称。
      • 由于dm数据库限制了cli支持的平台,因此cli去掉了对dm数据库的默认支持,若有需要请手动修改源码安装cli
      • 修复传递link参数和配置文件同时存在的场景下,link参数失效问题。
    16 条回复    2024-11-28 09:31:38 +08:00
    iBenlim
        1
    iBenlim  
       2024 年 11 月 20 日   1
    强烈推荐,文档齐全,框架熟悉后,开发效率非常高!
    ollama
        2
    ollama  
       2024 年 11 月 20 日   2
    这……Changelog 发这?
    Macrow
        3
    Macrow  
       2024 年 11 月 20 日   1
    用过,好评!
    4Et5ShxMIq58n6Lr
        4
    4Et5ShxMIq58n6Lr  
       2024 年 11 月 20 日   1
    尝试了下,非常适合我这初学者,只管写业务即可!挺不错的!
    CodeCodeStudy
        5
    CodeCodeStudy  
       2024 年 11 月 20 日
    路由使用得不够方便
    edcopclub
        6
    edcopclub  
       2024 年 11 月 20 日 via Android
    规范路由中强制 Req,Res ,对于一个框架来说感觉确实不合适。
    ninjashixuan
        7
    ninjashixuan  
       2024 年 11 月 21 日
    orm postgresql 支持不够好,希望完善一下,比如自增主键还要手动调用 OmitEmpty 函数以及批量插入时要 FieldsEx id 字段 ,上面提到的路由注册和 middleware 不够灵活, 路由 rewrite 的方式 不如常规框架在绑定 handler 时灵活的添加 middleware 。
    ninjashixuan
        8
    ninjashixuan  
       2024 年 11 月 21 日
    夸一夸提供的工具库,写业务效率确实高。
    lexno
        9
    lexno  
       2024 年 11 月 25 日
    @ninjashixuan 如果用 gf gen dao 生成的话,会有一个 do 的包,使用那个包里面的结构体就不需要每次手动调用 OmitEmpty 函数了
    ninjashixuan
        10
    ninjashixuan  
       2024 年 11 月 25 日
    @lexno do 字段都是 any ,entity 字段有类型,都用 do 的话丧失类型检查了。明显 insert 用 entity 更可靠,更新用 do 更灵活。
    johng
        11
    johng  
    OP
       2024 年 11 月 27 日
    @edcopclub 确实,之前有限制,根据社区反馈,已经修正了。希望大家一起参与贡献。
    johng
        12
    johng  
    OP
       2024 年 11 月 27 日
    @ninjashixuan do 这个包,各有利弊吧。
    johng
        13
    johng  
    OP
       2024 年 11 月 27 日
    @lanisle 听说这里大佬多,不发这,怕大佬们不知道啊。
    johng
        14
    johng  
    OP
       2024 年 11 月 27 日
    @iBenlim 谢谢,欢迎感兴趣的朋友一起共建。
    johng
        15
    johng  
    OP
       2024 年 11 月 27 日
    @CodeCodeStudy goframe 的路由功能是比较强大的,如果不满意的地方可以提 issue ,由于是开源项目,大家也可以提 pr 一起参与共建哈。
    CodeCodeStudy
        16
    CodeCodeStudy  
       2024 年 11 月 28 日
    @johng #15 有没有考虑用注解写路由,就像 spring boot 那样的,让路由和控制器方法更加紧密
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3038 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 136ms UTC 03:16 PVG 11:16 LAX 20:16 JFK 23:16
    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