Revel Web開源框架
成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)的關(guān)注點(diǎn)不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒有做好網(wǎng)站,給成都創(chuàng)新互聯(lián)公司一個(gè)展示的機(jī)會(huì)來證明自己,這并不會(huì)花費(fèi)您太多時(shí)間,或許會(huì)給您帶來新的靈感和驚喜。面向用戶友好,注重用戶體驗(yàn),一切以用戶為中心。
個(gè)高效的Go語言Web開發(fā)框架,?其思路完全來自 Java 的?Play Framework。
特點(diǎn)
熱編譯,簡(jiǎn)單可選,同步(每個(gè)請(qǐng)求都創(chuàng)建自己的goroutine來處理。
Go語言Web框架:beego
一個(gè)用Go開發(fā)的應(yīng)用框架,思路來自于tornado,路由設(shè)計(jì)來源于sinatra。
支持特性
MVC;
REST;
智能路由;
日志調(diào)試;
配置管理;
模板自動(dòng)渲染;
layout設(shè)計(jì);
中間件插入邏輯;
方便的JSON/XML服務(wù);
由于 golang 提供了完善的net/http標(biāo)準(zhǔn)庫,基于該標(biāo)準(zhǔn)庫實(shí)現(xiàn)一個(gè)web框架的難度相比其他語言低了不少,所以go web框架簡(jiǎn)直就是百花齊放。從老牌的revel和 beego ,到新出的 gin ,和 iris 等,而且還有一些類似于 chi 這種router。個(gè)人一般小項(xiàng)目,尤其是中間件需要暴露一些http接口的,基本就使用chi即可。
本次測(cè)試主要是gin iris echo 這三個(gè)框架。側(cè)重在于高性能,從并發(fā)和json序列化和反序列化兩個(gè)方面來測(cè)評(píng),畢竟后臺(tái)項(xiàng)目側(cè)重的也就是這兩個(gè)方面。
為了選擇符合重IO的框架,現(xiàn)設(shè)定如下場(chǎng)景的demo,demo的具體要求如下:
gin:
iris:
echo:
由于要測(cè)試5種body樣本,4種場(chǎng)景,4個(gè)框架,因此把重點(diǎn)數(shù)據(jù)篩選出來(吞吐量、錯(cuò)誤率和99%Line,重要性依次遞減),結(jié)果都繪制了圖形,方便比對(duì)查看。
綜合以上各個(gè)測(cè)試結(jié)果可以看出,gin以及iris都是非常優(yōu)秀的框架,gin的優(yōu)勢(shì)比其他稍微大點(diǎn),iris次之,而echo相應(yīng)差一點(diǎn)。
本次測(cè)試只是簡(jiǎn)單測(cè)試了一下3個(gè)框架的并發(fā)和json相關(guān)。對(duì)比結(jié)果,不包括生態(tài)和工具的完善度等等。如果測(cè)試有什么不完善的地方,歡迎交流。
另外歡迎大家試用和star另外一個(gè)web框架 baa ,為了避嫌我沒有貼出baa的數(shù)據(jù),性能測(cè)試處于gin之后和iris之間。
go語言web框架beego安裝(go mod方式)_不忘初心,方得始終-CSDN博客
重要:將bee命令放到GOROOT/bin目錄下,這步很關(guān)鍵
cp bee /usr/local/go/bin/
注:或者可以將GOPATH/bin設(shè)置為環(huán)境變量
echo ’export PATH=" PATH"' ~/.bashrc
source ~/.bashrc
router路由下方法名要大寫,訪問權(quán)限
wq保存
生效環(huán)境變量: source /etc/profile
go build -o abc.exe可指定編譯后的文件名
Golang常用環(huán)境變量說明與設(shè)置詳解
環(huán)境變量GOBIN表示我們開發(fā)程序編譯后二進(jìn)制命令的安裝目錄。
當(dāng)我們使用go install命令編譯和打包應(yīng)用程序時(shí),該命令會(huì)將編譯后二進(jìn)制程序打包GOBIN目錄,一般我們將GOBIN設(shè)置為GOPATH/bin目錄。
export GOBIN=$GOPATH/bin
Go get包管理mod
windows下默認(rèn)項(xiàng)目路徑在go安裝目錄的src下(beego)
不會(huì)成為web主流
go是設(shè)計(jì)初衷來做系統(tǒng)應(yīng)用和取代C++的....
目前主要用傳統(tǒng)編譯型語言編譯成機(jī)器碼的形式...
和web開發(fā)的跨平臺(tái)標(biāo)準(zhǔn)化等特性有距離...
會(huì)成為很方便系統(tǒng)應(yīng)用開發(fā)、客戶端開發(fā)的語言...
適合??蚣茏銐虺墒炝?A Survey of 5 Go Web Frameworks
小型項(xiàng)目你甚至不用框架,用net/http http - The Go Programming Language
常用庫也成熟了 Top - Go Search
golang的web后端即使不concurrent也比php,ruby,python快很多很多
golang里用concurrent真的非常方便,非常非常快,超大web項(xiàng)目golang scale成本低
如果你想,golang的部署可以比php更方便,使用go get和http.ServeAndListen()可以不用nginx和apache
對(duì)于文件改動(dòng)重新編譯其實(shí)并不是大問題,看pilu/fresh · GitHub,其實(shí)你自己寫shell腳本(也可以直接用go寫,因?yàn)樗旧砭褪窍到y(tǒng)語言)監(jiān)控文件系統(tǒng)改動(dòng)然后自動(dòng)重新build,即使是C/C++的項(xiàng)目這也不是大問題,人們不用C/C++寫web是因?yàn)樗鼈儾皇菍憌eb app的最佳選擇
golang寫的代碼編譯通過后,要比scripting language魯棒,因?yàn)間o compiler強(qiáng)制一些最佳實(shí)踐