Willson Chen

Stay Hungry, Stay Foolish.

Golang 应用框架

Golang 应用框架

web 框架

gin

Gin 是轻量级的 Web 框架,用于快速搭建 RESTful 风格的 Web 服务。
有以下特点:

  • 路由,既简单又丰富的路由解析功能。
  • 速度,业界测试 Gin 路由的性能极好。
  • 中间件,实现请求或响应拦截器。
  • 内置渲染,支持JSON/XML/HTML等格式进行响应渲染。
    原理:
  • 路由的解析采用基数树(压缩字典树)数据结构。
func MyMiddleware1() gin.HandlerFunc { //中间件 1
 return func(context *gin.Context) {
  fmt.Println("MyMiddleware1 begin")
  context.Next() //执行下一个中间件后再继续
  fmt.Println("MyMiddleware1 end")
 }
}
func MyMiddleware2() gin.HandlerFunc { //中间件 2
 return func(context *gin.Context) {
  fmt.Println("MyMiddleware2")
 }
}

func main() {

 r := gin.Default()                      //默认引擎注册了日志中间件和panic处理中间件
 r.Use(MyMiddleware1(), MyMiddleware2()) //注册两个自定义中间件

 r.GET("/hello", func(c *gin.Context) { //注册GET路由
  c.JSON(http.StatusOK, gin.H{
   "message": "Hello world",
  })
 })
 r.GET("/hello/:id", func(c *gin.Context) { //注册GET路由,支持URL参数
  id := c.Param("id")
  c.JSON(http.StatusOK, gin.H{
   "message": "Hello " + id,
  })
 })

 r.Run(":8080")
}

/* test.http
###
GET http://127.0.0.1:8080/hello HTTP/1.1

###
GET http://127.0.0.1:8080/hello/123 HTTP/1.1

*/

其他

  • Beego是一个全功能的Web开发框架,采用MVC架构,相对缺点是性能弱,代码结构复杂。
  • iris功能比gin丰富,支持MVC,基础功能与gin比较接近,比Beego新,比Beego性能好。

orm 框架

orm 框架有 gorm 和 xorm 等,其中社区活跃度是 gorm。

rpc 框架

net/rpc

net/rpc 是标准库自带rpc框架。使用标准库 encoding/gob 进行编解码,无法跨语言调用。

gRPC

gRPC 是谷歌开发的rpc框架,有以下特点:

  • 高性能,基于 HTTP/2协议,利用多路复用、头部压缩等特性,可以实现低延迟高吞吐量。
  • 支持 IDL,使用 protobuf 作为接口定义语言。
  • 支持跨语言,支持多种语言。
  • 支持双向流式RPC。