整体优缺点

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

goframe 优点

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

goframe 缺点

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

gin 优点

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

gin 缺点

  • 过于轻量级,初学者初期需要花时间去寻找学习第三方组件的使用方式,并将其融合到项目中
  • 官方文档较简单
  • 没有工程化的组件,需要自行研究引入。

核心关注点

开发文档

  • 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自带
  • gin 无

日志组件

  • goframe 功能较为全面,涵盖日志级别,错误堆栈打印,链式操作等特性。
  • gin 使用中间件,可以将日志输出,只能完成基本功能,这种做法可能会有性能瓶颈,需引入第三方,增强功能,提高性能。

错误处理

  • goframe 可输出错误堆栈,添加错误码,以对开发者友好的方式输出
  • gin则是以go原生异常抛出方式处理。

数据校验

  • goframe 自带
  • gin 默认引入第三方解决

类型转换

  • goframe 自带,支持基本类型,map,结构体。高级用法支持通过scan方法实现任意参数到struct/struct数组/map/map数组的转换,并且根据开发者输入的转换目标参数自动识别执行转换。支持通过自定义类型转换规则做类型转换。
  • gin 无

缓存管理

  • goframe 自带,支持内存缓存,redis适配,通过缓存适配实现存储到对应的cache对象上。
  • gin 无

链路跟踪

  • goframe 自带OpenTelemetry实施标准支持
  • gin 无

微服务支持

  • 除链路跟踪外,无区别。
  • 当前都尚未考虑到大规模微服务场景支持。

实用工具类

  • goframe自带,较全
  • gin 无

构建部署流程

无区别

goframe与gin对比(一) 综述相关推荐

  1. CV领域的对比学习综述(下)

    CV领域的对比学习综述(下) – 潘登同学的深度学习笔记 文章目录 CV领域的对比学习综述(下) -- 潘登同学的深度学习笔记 对比学习发展历程 不用负样本 BYOL 整体思路 网络架构 BN层知道了 ...

  2. CV领域的对比学习综述

    对比学习发展历程 发展历程大概可以分为四个阶段 1.百花齐放 InstDisc(instance discrimination) CPC CMC 在这个阶段中,方法.模型.目标函数.代理任务都还没有统 ...

  3. 自监督学习(十九):对比学习方法综述

    A SURVEY ON CONTRASTIVE SELF-SUPERVISED LEARNING Introduction Architectures Introduction 这里我们介绍一篇对比学 ...

  4. 国产厂商硬件防火墙对比解析综述

    防火墙从形式上可分为软件防火墙和硬件防火墙.此次,我们主要介绍硬件防火墙.防火墙一般是通过网线连接于外部网络接口与内部服务器或企业网络之间的设备.它又分为普通硬件级别防火墙和"芯片" ...

  5. 对比自监督学习浪潮迅猛来袭,你准备好了吗?

    来源:AI科技评论 本文约5800字,建议阅读10分钟 PyTorch Lightning 创始人的对比学习综述,对自监督学习.对比学习等进行了简要回顾. 近年来,自监督学习逐渐成为了备受人们关注的应 ...

  6. [转]综述论文翻译:A Review on Deep Learning Techniques Applied to Semantic Segmentation

    近期主要在学习语义分割相关方法,计划将arXiv上的这篇综述好好翻译下,目前已完成了一部分,但仅仅是尊重原文的直译,后续将继续完成剩余的部分,并对文中提及的多个方法给出自己的理解. _论文地址:htt ...

  7. 综述论文翻译:A Review on Deep Learning Techniques Applied to Semantic Segmentation

    综述论文翻译:A Review on Deep Learning Techniques Applied to Semantic Segmentation 近期主要在学习语义分割相关方法,计划将arXi ...

  8. 应用于语义分割问题的深度学习技术综述(语义分割综述)

    应用于语义分割问题的深度学习技术综述 基本介绍 摘要 1 .引言 2.术语及背景概念 2.1 常见的深度网络架构 2.1.1 AlexNet 2.1.2 VGG 2.1.3 GoogLeNet 2.1 ...

  9. 应用于语义分割问题的深度学习技术综述

    论文地址:https://arxiv.org/abs/1704.06857 应用于语义分割问题的深度学习技术综述 摘要 计算机视觉与机器学习研究者对图像语义分割问题越来越感兴趣.越来越多的应用场景需要 ...

最新文章

  1. 最小二乘法、迭代优化、坐标轴下降法(Coordinate Descent, CD)、坐标下降和梯度下降对比、梯度下降法/最速下降法
  2. 横河川仪压力变送器调零_YOKOGAWA/横河EJX110A差压变送器的性能误差和精度介绍!...
  3. php小程序地图处理,微信小程序 地图map详解及简单实例
  4. python函数count_python中count函数知识点浅析
  5. Linux 学习重点内容(第二节)
  6. 每天定时打开某个网页_Python科普帖定时通知
  7. python mysql 内存_Python将系统内存使用量写入mysql数据库
  8. mybatis3 配置文件解析
  9. flask json传输失败_GO小知识之实例演示 json 如何转化为 map 和 struct
  10. 7-5 删除字符串中的子串 (20 分)
  11. linux mysql 5.7.13 安装_Linux环境下mysql5.7.13安装教程
  12. 那些年陪伴我的老师+我期待的师生关系
  13. mysql提权马免杀_webshell/牛逼免杀提权隐藏大马.asp at master · tennc/webshell · GitHub...
  14. Tomcat修改端口号图文详解
  15. 【人类简史】从动物到上帝 [以色列-尤瓦尔 · 赫拉利](阅读笔记)
  16. 四月之 诗四首和五十六句话
  17. 导弹防御系统(LIS+dfs)
  18. 计算机win7如何加快开机速度,win7快速开机到八秒,怎么加快win7开机速度
  19. 软件加速访问GitHub(mac/windows/linux通用)
  20. GIS系列(三)几种互联网地图服务背后的解读(WMS,WFS,WMTS,TMS)

热门文章

  1. frp点对点udp方式内网穿透ssh,不走服务器流量
  2. 【VUE】二维码解析
  3. 微信小程序-总结心得
  4. win10无法连接到这个网络_网络打印提示:Windows无法连接到打印机,请检查打印机名并重试...
  5. Redis中地理位置GEO模块,非常便捷的来查找附近的人或物
  6. H2/H∞半车悬架控制仿真分析
  7. 让AURIX Development Studio变得更好用
  8. debussy和nlint常用快捷键
  9. 互联网时代,机遇与挑战并存,我们该如何应对?
  10. 智能车辆路径跟踪滑膜控制+单点预瞄