基于 Go 的 Web 框架调研

概述

调研总体目标

找出适合企业应用后台研发的 Go Web 框架

调研考察方向

  • 项目完善程度:

    • 功能完善: 路由, 模板, 插件/扩展, ORM, 命令行工具, 日志, 国际化支持, 测试集成功能
    • 扩展机制是否便捷, 扩展相关生态是否活跃(可选扩展模块)
    • 是否有独有的功能/特性
    • 文档是否完善 (判断标准: 是否与版本相关? 最近更新时间? 中文文档?)
    • 测试完善度 (测试覆盖率等)
  • 项目活跃度:

    • 近期发布版本: 是否半年内, 至少是一年内? 最近一年是否有 2+ 次正式版本?
    • 社区活跃度:
      • 代码贡献人数
      • issue 情况, 提问质量及解决情况
      • 中文社区, 或者中文使用者
  • 项目发展情况:

    • 人员支持稳定性: 主要贡献人是否有独立公司/稳定技术人员, 是否大公司支持
    • 是否有稳定/明确的版本计划和路线图
    • 总应用实例数-参考

Go Web 框架情况对比

候选框架

项目完善程度

功能对比
考察方向 功能/特性 Gin Echo Martini Go Buffalo Revel Beego GoFrame
功能 url路由配置 Yes Yes Yes Yes Yes Yes Yes
功能 cookie/session Yes Yes Yes(3rd) Yes Yes Yes Yes
功能 请求-绑定(data binding) Yes Yes Yes(3rd) Yes Yes Yes Yes
功能 请求-校验(validator) Yes Yes Yes(3rd) Yes Yes Yes Yes
功能 数据库-orm No No No Yes No Yes Yes
功能 日志组件 Yes Yes Yes(3rd) Yes Yes Yes Yes
功能 静态文件访问 Yes Yes Yes Yes Yes Yes Yes
功能 模板 Yes Yes Yes(3rd) Yes Yes Yes Yes
功能 测试组件 Yes Yes No Yes Yes No(有文档参考) Yes
功能 支持中间件 Yes Yes Yes Yes Yes Yes Yes
功能 组件自定义/替换? Yes Yes Yes Yes Yes Yes(部分) Yes(部分)
功能 命令行工具 No No No Yes Yes Yes Yes
功能 支持 HTTP2 Yes Yes No Yes No No No
功能 特色功能 / / / 热加载, 后台任务, 命令扩展-插件 热加载 自带监控工具 /
项目测试情况 覆盖率 98% 84% / / / / 72%
项目支持 是否有官方网站 Yes Yes No Yes Yes Yes Yes
项目支持 文档-是否有官方文档 Yes Yes Yes Yes Yes Yes Yes
项目支持 文档-是否有中文文档 Yes No Yes No No Yes Yes
项目支持 是否有专门社区 No Yes Yes No (stackoverflow) No Yes No
项目支持 是否有官方群、聊天社区 gitter.im Twitter/gitter.im No slack gitter.im 多种 Yes(QQ,微信,Github Issue)
项目支持 是否有中文社区 No No No No No Yes No
项目许可 许可协议类型 MIT MIT MIT MIT MIT Apache 2.0 MIT
项目活跃度 最近版本 v1.4.0 (2019-05-08) v4.1.11 (2019-10-07) v1.0 (2014-05-20) v0.15.1 (2019-11-21) v0.21.0(2018-10-30) v1.10.0(2018-07-21) v1.9.10(2019-10-24)
项目活跃度 近半年版本数(含非 release 版本) 0 6 0 19 0 0 17
项目活跃度 issue closed 1095 893 210 694 831 1894 231
项目活跃度 issue open 179 27 4 54 80 731 82
项目活跃度 fork 数目 3.8 k 1.4 k 1.1 k 411 1.4 k 4.6 k 287
项目活跃度 过去1月 merged pr 7 4 0 14 0 1 1
项目活跃度 过去1月 proposed pr 7 9 0 3 0 4 1
项目活跃度 过去1月 new issue 16 6 0 7 3 19 21
项目活跃度 过去1月 closed issue 20 14 0 12 1 3 10
项目发展情况 业界应用数 7.2k+ 2.9k+ / / / 有较多名企(华为/360/有道/微博/京东/腾讯 等) /
项目发展情况 是否有发展规划/Roadmap No No No No No No No
项目发展情况 人员构成-主力开发 4 2人 (其中1人是咨询) 1 (gin作者) 10 7 4 1
项目发展情况 contributor 数目 240 149 94 135 125 304 22
项目发展情况 是否有公司赞助/支持 No No No Yes (3) No No No

基于 Go 的 Web 框架调研的更多相关文章

  1. 实现基于netty的web框架,了解一下

    上一篇写了,基于netty实现的rpc的微框架,其中详细介绍netty的原理及组件,这篇就不过多介绍 这篇实现基于netty的web框架,你说netty强不强,文中有不对的地方,欢迎大牛指正 先普及几 ...

  2. 基于 CSS 的 Web 框架 CJSS

    CJSS 是一个基于 CSS 的 Web 框架,所有效果都在 CSS 文件中生效,可以在 CSS 中使用它添加更多功能,或者构建一个完整的页面. 使用方法: HTML 想要使用某个组件,在 CSS 文 ...

  3. Django视频教程 - 基于Python的Web框架(全13集)

    Django是由Python驱动的开源模型-视图-控制器(MVC)风格的Web应用程序框架,使用Django可以在即可分钟内快速开发一个高品质易维护数据库驱动的应用程序.下面是一大坨关于Django应 ...

  4. 自定义mvc或mtv框架:基于wsgiref的web框架

    把mvc或mtv框架的model数据库,view:html,control逻辑处理,url判别,wsgiref集中在一个文件 代码如下 #!/usr/bin/env python #-*- codin ...

  5. python_基于反射模拟Web框架路由系统

    根据用户输入的内容,导入模块 #根据用户输入的内容,导入模块 inp = input("请输入模块名: ") print(inp,type(inp)) dd = __import_ ...

  6. 初识Flask——基于python的web框架

    参考教程链接: https://dormousehole.readthedocs.io/en/latest/ (主要)https://www.w3cschool.cn/flask/ 目录: 1.写了一 ...

  7. 基于servlet实现一个web框架

    servlet作为一个web规范.其本身就算做一个web开发框架,可是其web action (响应某个URI的实现)的实现都是基于类的,不是非常方便,而且3.0之前的版本号还必须通过web.xml配 ...

  8. [Python笔记]第十六篇:web框架之Tornado

    Tornado是一个基于python的web框架,xxxxx 安装 python -m pip install tornado 第一个Tornado程序 安装完毕我们就可以新建一个app.py文件,放 ...

  9. python学习之路web框架

    WEB框架的本质 python的WEB框架分为两大类: 1.自己写socket,自己处理请求 2.基于wsgi(Web Server Gateway Interface WEB服务网关接口),自己处理 ...

  10. ServiceFramework作为Java Web框架都有哪些不错的设计

    前言 最近需要开发一个纯API的项目,mlsql-cluster,从无到有,到最后完整的proxy功能开发完毕,只花了四个小时不到,自己不尽小感叹了一把 ServiceFramework的高效. 关于 ...

随机推荐

  1. MogDB-opengauss中的聚集与分组操作

    MogDB/opengauss 中的聚集与分组操作 COUNT:对结果集中的元组数量进行计数,如果是 COUNT(*),那么会统计所有元组(包括 NULL 值)的数量,如果是 COUNT(colnam ...

  2. spring cloud 学习笔记 客户端(本地)均衡负载(三)

    前言 在微服务中,一个服务可能即是服务端也是客户端,当别的服务调用该服务的时候这个服务就是服务端,当这个服务主动调用另外一个服务的时候,那么就是服务端. 作为客户端通过服务注册与发现获取某个服务的注册 ...

  3. 力扣388(java)-文件的最长绝对路径(中等)

    题目: 假设有一个同时存储文件和目录的文件系统.下图展示了文件系统的一个示例: 这里将 dir 作为根目录中的唯一目录.dir 包含两个子目录 subdir1 和 subdir2 .subdir1 包 ...

  4. 利器解读!Linux 内核调测中最最让开发者头疼的 bug 有解了|龙蜥技术

    ​简介:通过在Anolis 5.10 内核中增强 kfence 的功能,实现了一个线上的.精准的.可定制的内存调试解决方案. 编者按:一直持续存在内核内存调测领域两大行业难题: "内存被改& ...

  5. 直播回顾:准确性提升到 5 秒级,ssar 独创的 load5s 指标有多硬核?| 龙蜥技术

    ​简介: 你还在为分析机器负载高而苦恼?这款 ssar 工具独创 load5s 指标精准定位超硬核. 编者按:本文整理自龙蜥SIG技术周会,作者闻茂泉,阿里云计算平台事业部SRE运维专家,是龙蜥社区跟 ...

  6. Cloudera Manager 术语和架构

    ​简介: 本文介绍了Cloudera Manager 的常见术语和架构 Cloudera Manager 术语 为了有效地使用Cloudera Manager,您应该首先了解其术语. 术语之间的关系如 ...

  7. EMR on ACK 全新发布,助力企业高效构建大数据平台

    ​简介: 阿里云 EMR on ACK 为用户提供了全新的构建大数据平台的方式,用户可以将开源大数据服务部署在阿里云容器服务(ACK)上.利用 ACK 在服务部署和对高性能可伸缩的容器应用管理的能力优 ...

  8. [GPT] Vue 的 methods 中使用了 addEventListener,如何在 addEventListener 的匿名函数参数中访问 Vue data 变量

      在 Vue 的 methods 方法中使用 addEventListener时,你可以使用 箭头函数 来访问 Vue 实例的数据. 箭头函数不会创建自己的作用域,而是继承父级作用域的上下文.以下是 ...

  9. [FE] Quasar BEX 预览版指南

    BEX(Browser Extension)是 Quasar 基于同一套代码允许编译成浏览器扩展来运行,支持 Firefox & Chrome. 截止目前(2019/12/25), bex 模 ...

  10. 快速部署 微软开源的 Garnet 键值数据库

    快速部署 微软开源的 Garnet 键值数据库 Garnet 是 Microsoft Research 推出的一种新型远程缓存存储,其设计速度极快.可扩展且延迟低. Garnet 在单个节点内是线程可 ...