新聞中心
本篇文章給大家分享的是有關(guān)如何基于Go 語(yǔ)言編寫(xiě)在線論壇整體設(shè)計(jì)與數(shù)據(jù)模型,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
創(chuàng)新互聯(lián)建站是一家專注于成都做網(wǎng)站、網(wǎng)站建設(shè)與策劃設(shè)計(jì),龍馬潭網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:龍馬潭等地區(qū)。龍馬潭做網(wǎng)站價(jià)格咨詢:028-86922220
1、功能需求
話不多說(shuō),直奔主題,我們這個(gè)在線論壇項(xiàng)目仿照 Google 網(wǎng)上論壇進(jìn)行開(kāi)發(fā):
因此,這個(gè)在線論壇需要具備用戶認(rèn)證功能(注冊(cè)、登錄、退出等),認(rèn)證后的用戶才能創(chuàng)建新的群組、以及在群組中發(fā)表主題,訪客用戶訪問(wèn)論壇首頁(yè)可以查看群組列表,進(jìn)入指定群組頁(yè)面可以查看對(duì)應(yīng)的主題信息。
2、技術(shù)方案
整體功能很簡(jiǎn)單,接下來(lái),我們按照這個(gè)功能需求設(shè)計(jì)技術(shù)方案。
其實(shí)就是一個(gè)很典型的 MVC 架構(gòu),以群組詳情頁(yè)為例,假設(shè)對(duì)應(yīng)的 URL 是 http://chitchat.test/thread/read?id=123
,其中 chitchat.test
是請(qǐng)求域名,thread/read
是請(qǐng)求路由(查看群組),?id=123
是請(qǐng)求參數(shù)(群組ID),通過(guò)域名確定應(yīng)用所在的服務(wù)器 IP,通過(guò)端口號(hào)(此處沒(méi)有顯式展示,一般默認(rèn)是 80 端口)確定應(yīng)用進(jìn)程,應(yīng)用接收到請(qǐng)求后,通過(guò)路由將請(qǐng)求分發(fā)到指定處理器方法(之前介紹的路由器,或者叫做多路復(fù)用器做的就是這個(gè)工作,路由器是整個(gè)應(yīng)用請(qǐng)求分發(fā)的入口),通過(guò)請(qǐng)求參數(shù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢,再將視圖響應(yīng)發(fā)送給請(qǐng)求用戶,如果數(shù)據(jù)庫(kù)查詢沒(méi)有結(jié)果,則返回 404 響應(yīng)。這里,數(shù)據(jù)庫(kù)承擔(dān)的是 M 的角色(Model),視圖響應(yīng)承擔(dān)的是 V 的角色(View),處理器方法承擔(dān)的是 C 的角色(Controller):
上圖中 Client 代表客戶端發(fā)起請(qǐng)求的用戶,虛框內(nèi)是部署在服務(wù)器已啟動(dòng)的在線論壇應(yīng)用,Multiplexer 代表路由器(比如 gorilla/mux
),Handler 代碼處理器/處理器方法,數(shù)據(jù)庫(kù)操作位于處理器方法中,Templates 代表最終展示給用戶的經(jīng)過(guò)模板引擎編譯過(guò)的視圖模板。
其他頁(yè)面和操作的請(qǐng)求/響應(yīng)模型與此一致,不再重復(fù)介紹。
所以我們需要在本地按照這個(gè) MVC 架構(gòu)基于業(yè)務(wù)流程編寫(xiě)代碼,最后將測(cè)試過(guò)的應(yīng)用代碼編譯打包,部署到遠(yuǎn)程服務(wù)器(這樣才能被普通用戶訪問(wèn)),并啟動(dòng)該應(yīng)用,等待客戶端請(qǐng)求,這樣就完成了整個(gè)應(yīng)用開(kāi)發(fā)流程。之前有過(guò)完整 PHP 項(xiàng)目開(kāi)發(fā)部署經(jīng)驗(yàn)的同學(xué)應(yīng)該對(duì)整套流程非常熟悉了,Go Web 項(xiàng)目也是如此,只是因?yàn)殪o態(tài)語(yǔ)言和實(shí)現(xiàn)機(jī)制的緣故,一些細(xì)節(jié)上有所區(qū)別罷了,比如不需要借助類似 php-fpm、nginx 這種額外的HTTP 服務(wù)器、反向代理服務(wù)器,Go 應(yīng)用以單文件形式部署,靜態(tài)資源和視圖模板的部署與傳統(tǒng)動(dòng)態(tài)語(yǔ)言不一樣等。
3、數(shù)據(jù)模型
整體技術(shù)方案敲定后,接下來(lái),我們就要按照流程編寫(xiě)代碼了,在此之前,還需要確定好數(shù)據(jù)模型。
根據(jù)我們之前擬定的需求,至少需要三個(gè)模型:
用戶(User)
群組(Thread)
主題(Post)
另外,我們?cè)诒卷?xiàng)目開(kāi)發(fā)時(shí),會(huì)把用戶會(huì)話(Session)也存儲(chǔ)到數(shù)據(jù)庫(kù),所以需要一個(gè)額外的會(huì)話模型,此外,為了簡(jiǎn)化應(yīng)用,我們不會(huì)真的像 Google 網(wǎng)上論壇那樣對(duì)用戶做權(quán)限管理,整個(gè)應(yīng)用只包含一種用戶類型,并且具備所有操作權(quán)限:
以上就是如何基于Go 語(yǔ)言編寫(xiě)在線論壇整體設(shè)計(jì)與數(shù)據(jù)模型,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站欄目:如何基于Go語(yǔ)言編寫(xiě)在線論壇整體設(shè)計(jì)與數(shù)據(jù)模型
本文鏈接:http://www.ef60e0e.cn/article/gpogcj.html