栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

goframe与gin对比(一) 综述

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

goframe与gin对比(一) 综述

整体优缺点

可以把goframe比作 windows,整体性强,结合都高,开箱即用。而gin,则类似于linux,各组件小而独立,通过融合各个组件,完全可以组成一个比goframe更好的二开平台,但技术要求高,时间跨度长。

goframe 优点

  • 整体全面,基本覆盖建设企业级系统所需的组件
  • 文档全面具体,基本上可以在文档中找到答案。

goframe 缺点

  • 目前事实上基本只有一个作者,停止维护的风险较大。
  • 较封闭,类似微软DotNet,平台涉及各个方面,一旦出现bug,无法整体替换,第三方组件兼容性尚不明确。
  • 虽然官方文档全面,但公网上文档比较少。

gin 优点

  • 较轻量级,事实上是加了路由和模板功能的net/http库
  • 第三方组件兼容性好,可以自由选择第三方组件

gin 缺点

  • 过于轻量级,初学者初期需要花时间去寻找学习第三方组件的使用方式,并将其融合到项目中
  • 官方文档过于简单,需要大量求助于google
  • 没有工程化的组件,需要自行研究引入。
核心关注点 开发文档
  • goframe 全面具体。
  • gin 官方文档过于简单,有基础的示例,但不全。具体问题需要大量求助于google
ORM
  • goframe 使用自带的 gdb 实现
  • gin 可通过引入第三方(如gorm)实现
路由管理

路由规则和注册方法有一些区别,goframe 路由存在优先级,会按照优先级排序,gin 则是出现冲突时直接报错。中间件方面能实现的功能类似。

请求输入
  • 对待输入参数的顺序处理有一些区别。主要是因为底层依赖的库不一样,但最终能达到的结果差不多。
  • 转换 对象,json,xml 为结构体相差不多,gin不支持 json,xml 参数绑定默认值,但影响不大,可用其他方法实现赋予默认值。
  • 都支持ctx中自定义变量
cookie
  • goframe 中的cookie是一个对象,对象还封装了 sessionId相关的方法
  • gin 的 cookie 比较简单,只是一个字符串
session
  • goframe 通过request 获取 session,gin则是通过在中间件处引入gin-contrib/sessions库来实现
  • 都支持把session放在cookie、redis、memcached、MongoDB等中。
配置管理
  • goframe自带
  • 无
日志组件
  • goframe 功能较为全面,涵盖日志级别,错误堆栈打印,链式操作等特性。
  • gin,使用中间件,可以将日志输出,只能完成基本功能,这种做法可能会有性能瓶颈,需引入第三方,增强功能,提高性能。
错误处理
  • goframe 可输出错误堆栈,添加错误码,以对开发者友好的方式输出
  • gin则是以go原生异常抛出方式处理。
数据校验
  • goframe 自带
  • gin 默认引入第三方解决
类型转换
  • goframe 自带,支持基本类型,map,结构体。高级用法支持通过scan方法实现任意参数到struct/struct数组/map/map数组的转换,并且根据开发者输入的转换目标参数自动识别执行转换。支持通过自定义类型转换规则做类型转换。
  • gin 无
缓存管理
  • goframe 自带,支持内存缓存,redis适配,通过缓存适配实现存储到对应的cache对象上。
  • gin 无
模板引擎

不使用,未对比

链路跟踪
  • goframe 自带OpenTelemetry实施标准支持
  • gin 无
微服务支持
  • 除链路跟踪外,无区别。
  • 当前都尚未考虑到大规模微服务场景支持。
实用工具类
  • goframe自带,较全
  • gin 无
构建部署流程

无区别

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/990157.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号