[TOC]

beego和gin是现在用的最多的两个go框架,所以这里选择比较这两个。

框架选择原则:永远站在大多数人这边。招人,公司,成本,问题解决时间成本都要考虑。

特性 BeeGo Bin
MVC 不支持 不完全支持
路由 RESTful Controller 正则支持的非常完整 RESTful router.Get() 组路由
Session 支持,也支持session持久化 不支持,使用三方包 github.com/astaxie/session

性能

从问正确的问题开始。。。

  • _高性能_本身是不是我们的目标?

  • 我们的目标是什么?

  • 创造价值,获得竞争优势

机器成本 vs 开发人员成本

影响访问速度的因素有很多

例如系统中间层和数据层的耦合情况,数据层本身的能力,服务器所在机房的网络拓扑结构,负载均衡的配置情况,等等。

数据层速度,表设计不合理,网络io,图片的加载速度很慢

正确做性能优化的姿势

  • 确定性能目标,并保证这个目标是出于实际需要
  • 建立性能环境,staging环境,并与线上环境隔离
  • 性能环境和staging环境应该与线上环境类似架构
  • 压测,并获得性能瓶颈的真正证据
  • 最后,持续改进,永远只对瓶颈改进。

只有改的是瓶颈的点才有用

适用场景

Beego在业务方面比gin支持的更多
  • 在业务更复杂的项目中,使用beego
  • 在需要快速开发的项目中,适用beego
  • 在1.0项目中,适用beego。
Gin在性能方面比Beego更好
  • 当某个接口性能遭到较大的挑战的时候,考虑使用Gin重写接口
  • 如果项目的规模不大,业务相对简单,使用Gin。

你会发现大部分时候这两个框架差不多。

关于MVC

Beego是典型的MVC框架

  • V: View,体现为模板,Beego通过处理模板和渲染模板展示视图

特性

  • 静态文件处理
  • 模板处理
  • 模板分页处理
  • C: Controller ,体现为各种功能

特性

  • 路由功能
  • 控制器函数
  • CSRF(Cross-Site request forgery) 过滤器
  • Session
  • 错误处理 & 日志功能

项目使用MVC架构,推荐用Beego。

如果选择Gin的话,可以让浏览器做MVC,Gin让返回数据都是json,浏览器做ajax请求