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 的一部分。