您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)如何基于Go 語言編寫在線論壇整體設(shè)計(jì)與數(shù)據(jù)模型,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
話不多說,直奔主題,我們這個(gè)在線論壇項(xiàng)目仿照 Google 網(wǎng)上論壇進(jìn)行開發(fā):
因此,這個(gè)在線論壇需要具備用戶認(rèn)證功能(注冊(cè)、登錄、退出等),認(rèn)證后的用戶才能創(chuàng)建新的群組、以及在群組中發(fā)表主題,訪客用戶訪問論壇首頁可以查看群組列表,進(jìn)入指定群組頁面可以查看對(duì)應(yīng)的主題信息。
整體功能很簡單,接下來,我們按照這個(gè)功能需求設(shè)計(jì)技術(shù)方案。
其實(shí)就是一個(gè)很典型的 MVC 架構(gòu),以群組詳情頁為例,假設(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),通過域名確定應(yīng)用所在的服務(wù)器 IP,通過端口號(hào)(此處沒有顯式展示,一般默認(rèn)是 80 端口)確定應(yīng)用進(jìn)程,應(yīng)用接收到請(qǐng)求后,通過路由將請(qǐng)求分發(fā)到指定處理器方法(之前介紹的路由器,或者叫做多路復(fù)用器做的就是這個(gè)工作,路由器是整個(gè)應(yīng)用請(qǐng)求分發(fā)的入口),通過請(qǐng)求參數(shù)對(duì)數(shù)據(jù)庫進(jìn)行查詢,再將視圖響應(yīng)發(fā)送給請(qǐng)求用戶,如果數(shù)據(jù)庫查詢沒有結(jié)果,則返回 404 響應(yīng)。這里,數(shù)據(jù)庫承擔(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ù)庫操作位于處理器方法中,Templates 代表最終展示給用戶的經(jīng)過模板引擎編譯過的視圖模板。
其他頁面和操作的請(qǐng)求/響應(yīng)模型與此一致,不再重復(fù)介紹。
所以我們需要在本地按照這個(gè) MVC 架構(gòu)基于業(yè)務(wù)流程編寫代碼,最后將測試過的應(yīng)用代碼編譯打包,部署到遠(yuǎn)程服務(wù)器(這樣才能被普通用戶訪問),并啟動(dòng)該應(yīng)用,等待客戶端請(qǐng)求,這樣就完成了整個(gè)應(yīng)用開發(fā)流程。之前有過完整 PHP 項(xiàng)目開發(fā)部署經(jīng)驗(yàn)的同學(xué)應(yīng)該對(duì)整套流程非常熟悉了,Go Web 項(xiàng)目也是如此,只是因?yàn)殪o態(tài)語言和實(shí)現(xiàn)機(jī)制的緣故,一些細(xì)節(jié)上有所區(qū)別罷了,比如不需要借助類似 php-fpm、nginx 這種額外的HTTP 服務(wù)器、反向代理服務(wù)器,Go 應(yīng)用以單文件形式部署,靜態(tài)資源和視圖模板的部署與傳統(tǒng)動(dòng)態(tài)語言不一樣等。
整體技術(shù)方案敲定后,接下來,我們就要按照流程編寫代碼了,在此之前,還需要確定好數(shù)據(jù)模型。
根據(jù)我們之前擬定的需求,至少需要三個(gè)模型:
用戶(User)
群組(Thread)
主題(Post)
另外,我們?cè)诒卷?xiàng)目開發(fā)時(shí),會(huì)把用戶會(huì)話(Session)也存儲(chǔ)到數(shù)據(jù)庫,所以需要一個(gè)額外的會(huì)話模型,此外,為了簡化應(yīng)用,我們不會(huì)真的像 Google 網(wǎng)上論壇那樣對(duì)用戶做權(quán)限管理,整個(gè)應(yīng)用只包含一種用戶類型,并且具備所有操作權(quán)限:
以上就是如何基于Go 語言編寫在線論壇整體設(shè)計(jì)與數(shù)據(jù)模型,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。