Go BeeGo VS Gin
2019-07-16
[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请求