可以先直接使用go自帶的http server 框架,這個框架涵蓋了絕大多數(shù)的功能,比如request response 的基本封裝,簡單的路由管理,文件上傳處理。
創(chuàng)新互聯(lián)建站網(wǎng)絡公司擁有10年的成都網(wǎng)站開發(fā)建設經(jīng)驗,近1000家客戶的共同信賴。提供成都網(wǎng)站建設、網(wǎng)站設計、網(wǎng)站開發(fā)、網(wǎng)站定制、買友情鏈接、建網(wǎng)站、網(wǎng)站搭建、響應式網(wǎng)站設計、網(wǎng)頁設計師打造企業(yè)風格,提供周到的售前咨詢和貼心的售后服務
如果發(fā)現(xiàn)Go 自帶的框架解決不了問題,可以引入相應的第三方組件,比如ORM可以采用中國人寫的gorm 比如web 的session 管理可以使用gorilla/session
當然你也可以直接上大一統(tǒng)的框架比如你提到的beego 還有大名鼎鼎的martini 。不過不推薦,因為這樣的大框架和Go 語言本身的模塊設計有沖突。
實際開發(fā)建議用vscode 加Go 插件來做IDE,基本包含了其他成熟IDE的所有功能,而且還自帶強大的debug 功能。其他IDE debug 用起來非常麻煩比如idea 和liteIDE。題主也可以自己試下。
由于 golang 提供了完善的net/http標準庫,基于該標準庫實現(xiàn)一個web框架的難度相比其他語言低了不少,所以go web框架簡直就是百花齊放。從老牌的revel和 beego ,到新出的 gin ,和 iris 等,而且還有一些類似于 chi 這種router。個人一般小項目,尤其是中間件需要暴露一些http接口的,基本就使用chi即可。
本次測試主要是gin iris echo 這三個框架。側重在于高性能,從并發(fā)和json序列化和反序列化兩個方面來測評,畢竟后臺項目側重的也就是這兩個方面。
為了選擇符合重IO的框架,現(xiàn)設定如下場景的demo,demo的具體要求如下:
gin:
iris:
echo:
由于要測試5種body樣本,4種場景,4個框架,因此把重點數(shù)據(jù)篩選出來(吞吐量、錯誤率和99%Line,重要性依次遞減),結果都繪制了圖形,方便比對查看。
綜合以上各個測試結果可以看出,gin以及iris都是非常優(yōu)秀的框架,gin的優(yōu)勢比其他稍微大點,iris次之,而echo相應差一點。
本次測試只是簡單測試了一下3個框架的并發(fā)和json相關。對比結果,不包括生態(tài)和工具的完善度等等。如果測試有什么不完善的地方,歡迎交流。
另外歡迎大家試用和star另外一個web框架 baa ,為了避嫌我沒有貼出baa的數(shù)據(jù),性能測試處于gin之后和iris之間。
第一個:Beego框架
Beego框架是astaxie的GOWeb開發(fā)的開源框架。Beego框架最大的特點是由八個大的基礎模塊組成,八大基礎模塊的特點是可以根據(jù)自己的需要進行引入,模塊相互獨立,模塊之間耦合性低。
相應的Beego的缺點就是全部使用時比較臃腫,通過bee工具來構建項目時,直接生成項目目錄和耦合關系,從而會導致在項目開發(fā)過程中受制性較大。
第二個:Gin框架
Gin是一個GOlang的微框架,封裝比較優(yōu)雅,API友好,源碼注釋比較明確,已經(jīng)發(fā)布了1.0版本;具有快速靈活、容錯方便等特點,其實對于golang而言,web框架的依賴遠比Python、Java更小。
目前在很多使用golang的中小型公司中進行業(yè)務開發(fā),使用Gin框架的很多,大家如果想使用golang進行熟練Web開發(fā),可以多關注一下這個框架。
第三個:Iris框架
Iris框架在其官方網(wǎng)站上被描述為GO開發(fā)中最快的Web框架,并給出了多框架和多語言之前的性能對比。目前在github上,Iris框架已經(jīng)收獲了14433個star和1493個fork,可見是非常受歡迎的。
在實際開發(fā)中,Iris框架與Gin框架的學習曲線幾乎相同,所以掌握了Gin就可以輕松掌握Iris框架。
第四個:Echo框架
也是golang的微型Web框架,其具備快速HTTP路由器、支持擴展中間件,同時還支持靜態(tài)文件服務、Websocket以及支持制定綁定函數(shù),制定相應渲染函數(shù),并允許使用任意的HTML模版引擎。