Golang(或 Go)是一种开源编译编程语言,用于构建简单、系统和安全的软件。它由 Google 于 2007 年设计,由于其内存安全、结构类型、垃圾收集和与 C 语言的相似性等特性,已被世界各地的开发人员轻松采用。
Golang Web 框架用于直接编写应用程序编程接口 (API) 和 Web 服务。在构建小型应用程序期间,框架不是必需的,但在生产级软件中是必需的。即使知道功能和知识,编码调试生产级程序也需要大量时间。由于这个原因,经常使用框架。框架提供了额外的功能和服务,其他开发人员可以使用这些功能和服务,他们希望在他们的软件中添加类似的功能,而不是自己编写成熟的软件。
Golang 中流行度排名前 5 的 Web 框架(根据 GitHub 上的 Star 数)如下:
Name |
Stars |
Forks |
Open Issues |
gin |
40.2k |
4.6k |
238 |
beego |
24.5k |
4.9k |
746 |
echo |
17.7k |
1.6k |
37 |
kit |
17.5k |
1.8k |
59 |
fasthttp |
13k |
1.1k |
34 |
让我们详细看看这些框架,并根据它们的功能和易用性来比较它们:
1. 杜松子酒
由于其极简的框架和性能, gin框架在流行度方面名列前茅。如果程序员想使用前端框架开发单页应用程序,它主要用于为后端构建 REST API。该框架利用 HTTP 路由器来处理 Golang 流量,非常适合初学者以及 GitHub 上提供的丰富文档。它支持最重要的库和功能,使其成为最适合开发高性能 REST API 的 Golang 框架。
这个 Web 框架的 API 将类似于 martini 的 API,但比它快近 40 倍!庞大的 gin 用户社区制作了大量经过良好测试的中间件,使使用 gin 变得更加容易和可靠。
最大的缺点是虽然适用于较小的应用程序,但不适合开发大型后端应用程序或企业级服务器复杂功能。
2. 比戈
beego框架用于在Golang 中快速开发 REST API、Web 应用程序和后端服务。它通常被视为类似于Python的 Django Web 框架,并且包含 Golang 的特定功能,例如接口和结构嵌入。它不需要任何第三方安装。它是一个成熟的模型-视图-控制器 (MVC) 框架,具有自己的库和一个内置工具,可帮助查找代码更改,称为Bee 工具。
此外,它分为八个模块,可以根据需要忽略或使用。它集成了对象关系映射 (ORM),有助于组织应用程序的数据库以及会话处理工具和日志记录系统。不仅如此,它还包含用于操作 HTTP 元素的缓存处理程序和库。另一个很棒的特性是它可以很好地与命令行工具配合使用,类似于 Django 使用命令行的方式。
con beego 唯一的缺点是,由于它的高功能和广泛的特性,它不太适合初学者。
3.回声
echo框架是 Golang 中另一个高性能、可扩展且极简的 Web 框架。它有一个高度优化的 HTTP 路由器,具有零动态内存分配,可以智能地对路由进行优先级排序。它用于构建健壮且可扩展的 REST API,可以轻松地将其组织成组。它会自动安装来自Let’s Encrypt 的TLS 证书并提供 HTTP/2 支持,从而提高速度并提供更好的用户体验。它还包含许多要使用的内置中间件,开发人员甚至可以定义自己的中间件,这些中间件可以设置在根、组或路由级别。
它支持 HTTP 请求负载的数据绑定,包括 JSON、XML 或表单数据。对于数据渲染,它包含一个 API 来发送各种 HTTP 响应,包括 JSON、XML、HTML、文件和附件。模板可以使用任何模板引擎呈现,并具有自定义的中央 HTTP 错误处理。
使用 echo 框架的缺点是它只由一个开发人员维护,并且代码很少更新。
4.套件
Kit框架是一个编程工具包,用于在 Golang 中构建健壮、可靠和可维护的微服务。它是一组包和最佳实践,为任何规模的组织构建微服务提供了一种全面、健壮和可信赖的方式。 Go 是一种很棒的通用语言,但微服务需要一定的专业支持。
因此,套件框架提供了远程过程调用 (RPC) 安全性、系统可观察性和基础设施集成。它由多个相互关联的包组成,共同构成了构建大型面向服务的架构 (SOA) 的自以为是的框架,并使 Golang 成为在任何组织中编写微服务的一流语言。它旨在实现互操作性,开发人员可以自由选择最适合他们的数据库、组件、平台和架构。
使用go-kit的缺点是由于大量使用接口,给服务添加API的开销非常高。
5.快速http
fasthttp框架提供了一个快速的 HTTP 服务器和客户端 API,由于其优化机会的限制,它被用作 net/http 的替代品。它针对速度进行了优化,可以在现代硬件上轻松处理超过 100K qps 和超过 1M 的并发保持活动连接。它还针对低内存使用进行了优化,并通过RequestCtx.Hijack提供了简单的连接升级支持。
Fasthttp API 旨在扩展现有客户端和服务器实现或从头开始编写自定义客户端和服务器实现。许多额外的有用信息会暴露给请求处理程序,例如服务器和客户端地址、每个请求的记录器、唯一的请求 ID 等。
由于 net/http 拥有更广泛的受众,因此更可靠且经过测试。另外,由于net/http 和fasthttp 不兼容,开发者经常发现从net/http 迁移到fasthttp 很困难。
这些是根据 GitHub 上的流行度编制的 2020 年最常用的 5 个 Golang Web 框架。此处列出的每个框架都有一组不同的功能可供试验,在实现这些框架中的任何一个之前,请确保您清楚地了解相同的要求。不仅限于这些,Golang 还提供了许多其他框架,如 Buffalo、Martini、Goji、net/http、Revel 等,请随时查看。