Go Wiki: LearnServerProgramming
此页面链接到学习 Go 中服务器编程的资源 - 包括 Web 服务和移动后端。项目按主题分为几个部分。
入门
- 阅读 使用 Go 标准库编写 Web 应用程序
- 阅读 使用 Go 构建 Web 应用程序,来自 BeeGo Web 框架 的作者
- 阅读 Go 中的 Webapps:反教科书
- 阅读 在 Go 中构建 Web 应用程序,来自 Negroni 和 Martini Web 服务器工具包的作者。首先学习绝对的基础知识,然后再去看这本书。
- 阅读 用 Go 构建你自己的 Web 框架,这是一个 5 部分的系列。
- 观看 Go:优雅地成长的代码
- 从 Sourcegraph 团队下载一个 功能齐全的 3 层应用程序示例。
中间件
你会经常看到讨论的话题是“中间件”。如果你不熟悉这个术语,我们建议你先阅读以下几篇文章。
- Go 中的中间件:最佳实践和示例 2014-11-13
- 自定义 Handlers 第一部分 - 避免全局变量,第二部分 - 错误处理 2014-07-16
- 制作和使用 HTTP 中间件 2014-10-21
- 在 Go 中编写 HTTP 中间件 2013-10-09
工具包和框架
在你决定采用第三方 Web 框架或工具包之前,请记住 Go 标准库提供了构建复杂、现代 Web 应用程序所需的所有工具。遵循 Go 偏爱简洁和可组合性的原则,而不是复杂性和魔术,我们建议你看看标准库能带你走多远。
如果你认为你需要更多的基础设施,请先看看一些可用的工具包和库。
工具包、库和微框架
- Gorilla Toolkit
- Negroni Toolkit - Go 的惯用 HTTP 中间件
- Echo Framework - 快速且朴实无华
- Goji Web Microframework
- Go Craft Middleware
- Go RESTful - RESTful 服务 API 的工具包
- limiter - Go 的简单速率限制中间件
- Kite 微服务框架
- Alice - Go 的无痛中间件链
- YAM - Yet Another Mux (另一个多路复用器)
- Bone - 快速 HTTP 路由器
框架
- BeeGo Framework
- Frodo - 受 Laravel(php)、Slim(php) 和 ExpressJS(node.js) 启发的 Go 小型 Web 框架
- GinGonic
- Macaron - Go 中高效、模块化的 Web 框架。
- Revel Web Framework
- Ringo - 受 Rails、Gin 启发的轻量级 MVC Web 框架。
- Utron - Web 应用程序的轻量级 MVC 框架。
- Iris - Web 应用程序的快速 MVC 框架。
通信
- net/http 包 提供 HTTP 客户端和服务器实现。
- encoding/json 包 实现 RFC 4627 中定义的 JSON 对象的编码和解码。
- net/rpc 包 提供通过网络或其他 I/O 连接访问对象导出方法的接口。
- os/exec 包 运行外部命令。
展示
- text/template 包 实现用于生成文本输出的数据驱动模板。
- html/template 包 实现用于生成可防止代码注入的 HTML 输出的数据驱动模板。
性能分析和性能
- 阅读 Go 程序性能分析
- 阅读 数组、切片(和字符串):append 的机制
- 阅读 常见问题解答 (FAQ),尤其是
- bufio 包 实现缓冲 I/O。
- runtime/pprof 包 以 pprof 可视化工具的期望格式写入运行时性能分析数据。
- net/http/pprof 包 通过其 HTTP 服务器提供 pprof 可视化工具所期望格式的运行时性能分析数据。
追踪、监控、日志记录和配置
- expvar 包 提供对公共变量的标准接口,例如服务器中的操作计数器。
- flag 包 实现命令行标志解析。
- log 包 实现了一个简单的日志记录包。
- glog 包 实现类似于 Google 内部 C++ INFO/ERROR/V 设置的日志记录。
存储
- os 包 提供独立于平台的操作系统功能接口。
- path/filepath 包 实现用于处理文件名路径的实用例程,其方式与目标操作系统定义的 istorage 路径兼容。
- database/sql 包 为 SQL(或类 SQL)数据库提供了一个通用接口。
平台
Google Cloud Platform
- 阅读 Go、Cloud Endpoints 和 App Engine,第一部分,第二部分
- 阅读 Google Cloud Platform: Go 运行时环境
- 观看 Go 和 Google Cloud Platform
- 阅读 App Engine 上的 Go:工具、测试和并发
- 获取 Google Cloud Platform Go 库
- 阅读 使用 Docker 部署 Go 服务器
- 搜索 Google Cloud 或 gcloud 的软件包
- 搜索 App Engine 或 GAE 的软件包
Amazon Web Services
- 在 aws-sdk-go 存储库中提供了自动生成的 Go 版 AWS 客户端。它得到了亚马逊的官方支持。
- goamz 包 使 Go 程序能够与 Amazon Web Services 进行交互。
- 搜索 AWS 或 Amazon services 的软件包
Microsoft Azure
- Microsoft OpenTech 的 azure-sdk-for-go 提供了一个 Golang 包,可以方便地使用和管理 Microsoft Azure 服务。
- 搜索 Azure 的软件包
Openstack / Rackspace
- Gophercloud 是一个用于处理 OpenStack 云的 Golang SDK。
- 搜索 Openstack 或 Rackspace 的软件包
IBM BlueMix
此内容是 Go Wiki 的一部分。