五、Go框架三件套
1.Gorm是一个功能强大的ORM框架:
GORM目前支持MySQL、SQLServer、PostgreSQL、SQLite,GORM是通过驱动来连接数据库的,如果需要连接其他类型的数据库,可以复用/自行开发驱动。
GORM还包括一些基本使用操作:创建数据、查询数据、更新数据、删除数据,还有一些事务。
性能提高方法:对于写操作(创建、更新、删除),为了保证数据的完整性,GORM会将它们封装在事务内运行。但是这有可能会降低性能,可以用SkipDefaultTransaction关闭默认事务。
Kitex是字节内部使用的Golang微服务框架:
如果要进行RPC,就需要知道对方的接口是什么,需要传什么参数,同时也需要知道返回值是什么样的,这时候就需要IDL来约定双方的协议。
Kitex的服务默认监听的是8888端口:
创建client:
import"example/kitex_gen/api/echo"
import"github.com/cloudwego/kitex/client"
...
c,err := echo.NewClient("example",client.WithHostPorts("0.0.0.0:8888"))
if err != nil{
log.Fatal(err)
}
发起请求:
import"example/kitex_gen/api"
...
req := &api.Request{Message:"my request"}
resp , err := c.Echo(context.Background(),req,callopt.WithRPCTimeout(3*time.secongd))
if err != nil{
log.Fatal(err)
}
log.Println(resp)
Hertz是字节内部的HTTP框架:
Hertz提供了GET、POST、PUT、DELETE、ANY等方法用于注册路由,还提供了路由组(Group)的能力,用于支持路由分组的功能。
Hertz还提供了参数路由和通配路由,路由的优先级为:静态路由 > 命名路由 > 通配路由
Hertz还提供了Bind、Validate、BindAndValidate函数用于进行参数绑定和校验。
思考:除了以上字节内部使用的以外,还有哪些常见的框架?
- net/http:这是Go语言的HTTP包,用于处理HTTP请求和响应。它允许构建HTTP服务器和客户端,并提供了处理HTTP请求、路由、处理表单数据等功能。
- html/template:这个包提供了用于创建和解析HTML模板的工具。它允许将数据填充到HTML模板中,从而生成动态的HTML内容。
- database/sql:这是Go语言的数据库SQL接口,提供了通用的数据库访问功能。它允许连接和操作各种类型的数据库,包括MySQL、PostgreSQL、SQLite等。