技術(shù)報(bào)告基于Tornado的課程管理系統(tǒng)_第1頁
技術(shù)報(bào)告基于Tornado的課程管理系統(tǒng)_第2頁
技術(shù)報(bào)告基于Tornado的課程管理系統(tǒng)_第3頁
技術(shù)報(bào)告基于Tornado的課程管理系統(tǒng)_第4頁
技術(shù)報(bào)告基于Tornado的課程管理系統(tǒng)_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、計(jì)劃類別 項(xiàng)目編號 項(xiàng)目技術(shù)報(bào)告課題名稱 項(xiàng)目主持人 承擔(dān)單位 題目:基于Tornado的課程管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)針對目前智能課堂的研究,關(guān)于課程的管理系統(tǒng)就提出來了。因此,開發(fā)了一種基于Tornado和React技術(shù)的課程管理系統(tǒng)。通過Tornado框架作為后端框架,實(shí)現(xiàn)數(shù)據(jù)庫中數(shù)據(jù)的增、刪、改、查操作,Tornado與現(xiàn)在主流的Web服務(wù)器框架相比有著明顯的優(yōu)勢:它是非阻塞式服務(wù)器,而且速度相當(dāng)快,這對于當(dāng)下的Web開發(fā)來說至關(guān)重要。前端部分采用React技術(shù)將前臺表單中輸入的數(shù)據(jù)傳輸?shù)胶蠖藬?shù)據(jù)庫中,并且對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行相應(yīng)的操作,React的一切都是組件化的,使得代碼更加的模塊化,重

2、用代碼將變得更加容易,可維護(hù)性極高。該系統(tǒng)的開發(fā)過程還徹底的實(shí)現(xiàn)了前后端分離,前后端的聯(lián)系僅靠API聯(lián)系起來,前端部分的開發(fā)引用了Mock-api這一虛擬的服務(wù)端接口完成前端部分開發(fā)。這一開發(fā)技術(shù)路線充分展現(xiàn)了Tornado和React對Web開發(fā)的優(yōu)勢所在,也可以提高這一系統(tǒng)的可維護(hù)性。關(guān)鍵詞:Tornado;React;Mock-api;管理系統(tǒng)Abstract:In view of the current researches on intelligent classroom,the curriculum management system has been put forward.Th

3、erefore,a curriculum management system based on Tornado and React has been developed where Tornado framework is used as the back-end framework to realize the operation of adding,deleting and checking data in the database.Compared with the current mainstream Web server frameworks,Tornado has obvious

4、advantages:it is a non-blocking server,and its speed is quite fast,which is very important for current Web development.The front-end part uses React technology to transfer the data input from the front-end forms to the back-end database,and carries on the corresponding operation of the data in the d

5、atabase.React is wholly component-based,which makes the codes more modularized,and makes the reuse of the codes easier and more maintainable.The development process of the system also completely realizes the separation of front and back ends.The connection between front and back ends only depends on

6、 API.The development of front-end part refers to Mock-api,a virtual server interface,to complete the separation of front and back ends.This development technology fully demonstrates the advantages of Tornado and React for Web development,and also improves the maintainability of this system.Keywords:

7、Tornado;React;Mock-api;management system1 引言(Introduction)如今,互聯(lián)網(wǎng)不僅大大方便了我們的日常生活,還提升了人與人之間的溝通效率,互聯(lián)網(wǎng)發(fā)展到現(xiàn)在,不得不與人工智能開始產(chǎn)生交集。人工智能平臺大多從互聯(lián)網(wǎng)企業(yè)轉(zhuǎn)型而來,因此可以說那互聯(lián)網(wǎng)AI化就是人工智能?;ヂ?lián)網(wǎng)的未來也一定是走向人工智能1。隨著教學(xué)改革的不斷進(jìn)行,各個(gè)高校對教育管理系統(tǒng)的自動化需求也越來越大。學(xué)校應(yīng)該充分利用計(jì)算機(jī)所帶來的技術(shù)來服務(wù)于高校,隨著最近幾年AI技術(shù)的快速進(jìn)步,算法、算力和數(shù)據(jù)之間的進(jìn)步,高校對教育管理系統(tǒng)對系統(tǒng)智能化的需要也越來越高?;赑ython的Torn

8、ado框架就很好的解決了C10K問題,大多數(shù)社交網(wǎng)絡(luò)會展示實(shí)時(shí)更新來提醒新消息、狀態(tài)變化和用戶通知,這要求客戶端始終有一個(gè)打開的連接等待來自服務(wù)器的任何響應(yīng)。這就使得Apache的最大線程池會迅速的飽和。一旦線程池的資源耗盡,服務(wù)器將無法再響應(yīng)新請求。異步服務(wù)器的應(yīng)用也就提出來了,Tornado正是被設(shè)計(jì)來減輕基于線程的服務(wù)器的限制的,也就是說,如果當(dāng)前請求正在等待來自其他資源的數(shù)據(jù),則異步服務(wù)器可以顯式控制暫停請求2。隨著學(xué)校規(guī)模的擴(kuò)大,學(xué)生人數(shù)逐漸增加;學(xué)校的課程也越來越多,課程管理也就變得尤為重要,因此智能課堂的完善需要這個(gè)課程管理系統(tǒng)來進(jìn)一步實(shí)現(xiàn)。2 Tornado技術(shù)介紹(Intro

9、duction of tornado technology)Web開發(fā)人員可用的工具已經(jīng)得到全面發(fā)展。隨著技術(shù)專家不斷突破極限并使Web應(yīng)用程序無處不在,我們還必須升級我們的工具并不斷創(chuàng)建更好的框架以確保更好的應(yīng)用程序。同時(shí),我們也希望能夠使用新工具,以便我們可以編寫更清晰、可維護(hù)的代碼,這些代碼在部署到全球用戶時(shí)具有高度可擴(kuò)展性。Tornado框架也就提出來了,Tornado是一個(gè)編寫易創(chuàng)建、擴(kuò)展和部署的強(qiáng)大Web應(yīng)用程序的絕佳選擇。它是一個(gè)用Python編寫的功能強(qiáng)大且可擴(kuò)展的Web服務(wù)器。Tornado是FriendFeed網(wǎng)站的基礎(chǔ),于2009年9月10日發(fā)布,目前不僅得到了許多社區(qū)的

10、支持,而且被應(yīng)用于各種不同的場合。除FriendFeed外,還有許多公司在生產(chǎn)上轉(zhuǎn)向Tornado,包括Quora、Turntable.fm、Bit.ly、Hipmunk和MyYearbook等。當(dāng)FriendFeed被FaceBook收購后得以開源。與那些只能達(dá)到10000個(gè)并發(fā)連接的傳統(tǒng)Web服務(wù)器不同,Tornado在設(shè)計(jì)時(shí)充分考慮了性能,該設(shè)計(jì)旨在解決C10K問題,使其成為一個(gè)非常高性能的框架。此外,它還具有處理安全性、用戶身份驗(yàn)證、社交網(wǎng)絡(luò)和外部服務(wù)(如數(shù)據(jù)庫和用于異步交互的網(wǎng)站API)的工具2。3 系統(tǒng)設(shè)計(jì)(System design)3.1 系統(tǒng)技術(shù)支持該系統(tǒng)的后端基于Torna

11、do技術(shù)開發(fā),Tornado本身是一個(gè)功能強(qiáng)大且可擴(kuò)展的Web服務(wù)器。不僅在處理高網(wǎng)絡(luò)流量時(shí)表現(xiàn)的足夠強(qiáng)大,而且在創(chuàng)建和編寫時(shí)表現(xiàn)得足夠的輕量級,還可以用于各種應(yīng)用程序和工具。我們這里用Anaconda來運(yùn)行基于python編寫的Tornado程序。Anaconda工具不僅在寫程序的時(shí)候?qū)ξ覀冇泻艽髱椭?,在調(diào)式程序的時(shí)候也能起到很大的幫助,跟蹤調(diào)試能夠幫我們第一時(shí)間找出程序問題所在,可以根據(jù)報(bào)錯(cuò)信息,對代碼就像修改。為了方便調(diào)試和使用,我們在測試的時(shí)候,服務(wù)器采用本機(jī)服務(wù)器,我們需要提前部署好服務(wù)器并指定端口號,也就http:localhost:8000,這里的8000指的是端口號,調(diào)試的時(shí)候

12、端口可能會被占用,這里我們可以根據(jù)情況改成8001或者8002。前臺采用React技術(shù)并通過最基礎(chǔ)的CSS技術(shù)來對靜態(tài)頁面進(jìn)行修飾。開發(fā)工具采用Sublime,能夠?qū)斎氲腞eact第一時(shí)間進(jìn)行糾錯(cuò)。同時(shí),為了提高數(shù)據(jù)庫對數(shù)據(jù)的處理能力和可擴(kuò)展性,數(shù)據(jù)庫我們選擇使用非關(guān)系型數(shù)據(jù)庫:MongoDB數(shù)據(jù)庫。3.2 系統(tǒng)功能設(shè)計(jì)課程管理系統(tǒng)整體結(jié)構(gòu)圖如圖1所示。該系統(tǒng)由數(shù)據(jù)庫模塊,后端模塊和前端模塊組成。后端模塊和前端模塊的主要功能是增加、刪除、更新和查詢課程管理系統(tǒng)中的課程?;赑ython的Toanado框架,使后端代碼足夠簡潔易懂,后端每完成一個(gè)方法的定義我們把這個(gè)方法封裝成一個(gè)API接口,然

13、后把這個(gè)API接口提供給前端就可以了;前端部分,我們主要應(yīng)用React技術(shù),為了不去等待后端提供的API,影響開發(fā)效率,我們選擇使用Mock-api來模擬后端API接口,首先我們在Mock-api中創(chuàng)建一個(gè)數(shù)據(jù)庫,添加一條記錄,我們通過React技術(shù)把這條技術(shù)顯示到經(jīng)過CSS修飾過的頁面當(dāng)中,然后我們在頁面上已經(jīng)創(chuàng)建好的輸入行中輸入相關(guān)課程信息,點(diǎn)擊“Create Course”即可將前臺輸入的數(shù)據(jù)存入后代數(shù)據(jù)庫中,并且在前臺頁面也能實(shí)時(shí)添加這條記錄,查看數(shù)據(jù)庫可以發(fā)現(xiàn),我們插入數(shù)據(jù)的時(shí)候,數(shù)據(jù)庫系統(tǒng)會自動為這條記錄添加一個(gè)ObjectId字段,這是這條記錄的主鍵,這個(gè)主鍵使唯一的,這個(gè)字段也

14、是索引和進(jìn)行修改刪除操作的依據(jù)。每條數(shù)據(jù)的后面都有“Edit”和“Delete”按鈕,點(diǎn)擊“Edit”使數(shù)據(jù)變成可編輯狀態(tài),這個(gè)時(shí)候可以對數(shù)據(jù)庫里的數(shù)據(jù)進(jìn)行修改,修改完成之后單擊“Update”以完成此數(shù)據(jù)的更新,此時(shí)后臺就是根據(jù)前臺提供的這個(gè)字段來進(jìn)行索引任何更新數(shù)據(jù)。點(diǎn)擊“Delete”也可以刪除這條數(shù)據(jù),根據(jù)前臺傳遞的ObjectID來索引,找到這條記錄然后刪除。另外還可以根據(jù)任一個(gè)字段的信息來查找這條課程記錄。課程列表頁面如圖2所示。3.3 數(shù)據(jù)庫設(shè)計(jì)目前關(guān)系型數(shù)據(jù)庫還是主流的數(shù)據(jù)庫,比如Mysql。根據(jù)快速發(fā)展的網(wǎng)站規(guī)模的要求,關(guān)系型數(shù)據(jù)庫需要滿足三個(gè)高要求:需要高度并發(fā)讀取和寫入數(shù)

15、據(jù)庫,需要對大量數(shù)據(jù)進(jìn)行高效存儲訪問,以及需要高度可擴(kuò)展的數(shù)據(jù)庫高可用性。為了滿足這些需求,關(guān)系型數(shù)據(jù)庫采用的技術(shù)有分區(qū)、分表和分庫,但這需要修改業(yè)務(wù)邏輯層,這改變起來代價(jià)相當(dāng)大。這個(gè)時(shí)候非關(guān)系型數(shù)據(jù)庫的優(yōu)勢就開始體現(xiàn)出來了,非關(guān)系型數(shù)據(jù)庫例如MongoDB就可以很好解決橫向擴(kuò)展問題.因?yàn)镸ongoDB中的Collection沒有模式,所以不存在模式變更,由于Collection相互之間沒有約束關(guān)系,也不能執(zhí)行復(fù)雜的連接操作,所以MongoDB很容易支持分布式部署3-6。該系統(tǒng)后臺數(shù)據(jù)庫部分使用MongoDB數(shù)據(jù)庫,數(shù)據(jù)庫名稱為Course,Collection名稱為courses。該數(shù)據(jù)庫中

16、有一個(gè)ObjectId字段是在插入數(shù)據(jù)的時(shí)候系統(tǒng)自動生成的,這個(gè)字段使唯一的。除了ObjectId,其余字段都可以為空。我們這里可以把任意一個(gè)字段作為索引依據(jù),方便我們在搜索的時(shí)候可以依據(jù)每一個(gè)字段進(jìn)行搜索,數(shù)據(jù)庫中的數(shù)據(jù)如圖3所示。3.4 系統(tǒng)安全設(shè)計(jì)Web應(yīng)用程序中訪問控制機(jī)制中的漏洞,允許攻擊者未經(jīng)授權(quán)能夠訪問其無權(quán)訪問的資源。Monshizadeh等人提出的MACR工具7基于多條路徑不一致的行為特征,能夠自動地檢測Web應(yīng)用程序中的越權(quán)漏洞。Pellegrino等人8提出了一種新型的黑盒測試的方法。通過從用戶和Web應(yīng)用程序交互的網(wǎng)絡(luò)記錄中識別Web軟件的行為模式,再加上一些常見的攻擊

17、場景,生成測試樣例。使用這種方法成功地在商用Web應(yīng)用程序中發(fā)現(xiàn)多個(gè)位置漏洞。Weissbacher等人9指出:瀏覽器中部分函數(shù)并不會受到同源策略(SOP)的限制,這就導(dǎo)致Web程序可能會因這些渠道而受到攻擊。在安全方面,Tornado Web服務(wù)器在設(shè)計(jì)的初期就著重考慮到了,這也使得其能夠更容易的防范那些常見的漏洞。安全cookies可以防止用戶的本地狀態(tài)被瀏覽器中的惡意代碼暗中修改。此外,瀏覽器cookies可以與HTTP請求參數(shù)作比較來抵御跨站請求偽造攻擊。事實(shí)上,有很多種方式可以攔截瀏覽器中的cookies。JavaScript和Flash對于它們所執(zhí)行的頁面的域有讀寫cookies的

18、權(quán)限。瀏覽器插件還可以用編程方法訪問這些數(shù)據(jù),跨站腳本攻擊可以有效利用這些訪問從而修改訪客瀏覽器中的cookies的值。Tornado的安全cookies使用加密簽名的方式來驗(yàn)證cookies的值是否已經(jīng)被服務(wù)器軟件以外的任何人修改。由于任何惡意腳本都不知道正確的安全密鑰,因此它不能在應(yīng)用完全不知情的情況下去任意修改cookies的值。然而,Tornado的安全cookies仍然容易被竊聽。惡意攻擊者可以通過腳本或?yàn)g覽器插件截獲cookies的值,或者干脆直接竊聽未加密的網(wǎng)絡(luò)數(shù)據(jù)。記住cookies值是簽名的而不是加密的。惡意程序可以讀取已存儲的cookies,并可以將數(shù)據(jù)傳輸?shù)饺魏我粋€(gè)服務(wù)器

19、,或者通過發(fā)送沒有修改的數(shù)據(jù)給應(yīng)用程序偽造一個(gè)請求。因此,避免將敏感的用戶數(shù)據(jù)存儲在瀏覽器cookies中非常重要。我們還需要注意是,用戶也有可能需要去修改他自己的cookies,在這個(gè)過程中也會導(dǎo)致遭受攻擊。例如,如果我們在cookies中存儲了用戶已付費(fèi)的文章剩余的瀏覽數(shù),我們希望阻止用戶自己去更新有關(guān)的數(shù)值來獲取免費(fèi)的內(nèi)容。Httponly和secure屬性就可以有效幫助我們防范這種攻擊。3.5 系統(tǒng)流程本系統(tǒng)以為智能課堂服務(wù)的目的,來設(shè)計(jì)滿足各種功能要求,使課程信息得以實(shí)時(shí)的更新,同時(shí)還保證了系統(tǒng)內(nèi)部數(shù)據(jù)的信息安全。首先我們利用React技術(shù)搭建好最基本的前臺頁面和實(shí)現(xiàn)與在Mock-a

20、pi中建立的數(shù)據(jù)庫的各種通信,對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行添加、刪除、修改和查詢等操作。在前后臺對接的時(shí)候,我們使用axios請求后臺API數(shù)據(jù),進(jìn)而對數(shù)據(jù)庫進(jìn)行操作,tornado通過路由的形式把API提供給前臺,前臺在實(shí)現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)進(jìn)行操作的同時(shí)也對頁面上顯示的數(shù)據(jù)進(jìn)行實(shí)時(shí)的更新。同時(shí)了為了保證系統(tǒng)的安全性,我們優(yōu)化了前后臺代碼。從前臺React基本功能的實(shí)現(xiàn),到使用axios請求后臺API數(shù)據(jù),到后臺Tornado處理前臺傳入的數(shù)據(jù),成功的實(shí)現(xiàn)了React和Tornado前后臺對接的課程管理系統(tǒng)。4 系統(tǒng)測試(System test)通過對該課程管理系統(tǒng)采用分步測試的方法,因?yàn)榍昂蠖耸雇耆?/p>

21、離式進(jìn)行開發(fā)的,我們在前臺進(jìn)行前臺開發(fā)測試的時(shí)候,只需要滿足對頁面數(shù)據(jù)的更新和操作,而不需要對數(shù)據(jù)庫中的數(shù)據(jù)去定義各種方法,所以測試起來更加的方便和簡介。后端部分定義好接口之后能夠?qū)崿F(xiàn)各個(gè)功能就夠了,在測試過程中分別對前后臺采取斷點(diǎn)跟蹤調(diào)試。對前臺進(jìn)行測試的時(shí)候,我們根據(jù)每一個(gè)功能采用斷點(diǎn)跟蹤調(diào)試的方法對從前臺頁面中輸入的數(shù)據(jù)實(shí)時(shí)跟蹤。在后臺部分,我們從前臺接收到數(shù)據(jù)然后與數(shù)據(jù)庫之間進(jìn)行交互也是一步步測試,通過多次測試,最終代碼完全沒有報(bào)錯(cuò),能夠成功實(shí)現(xiàn)前后臺對接的功能。保證了系統(tǒng)的正常使用需求。5 結(jié)論(Conclusion)通過這個(gè)課程管理系統(tǒng),使用Tornado和React框架滿足了系統(tǒng)

22、大部分需求;考慮到數(shù)據(jù)的安全性需求,使用Tornado作為后臺代碼并充分利用Tornado框架自帶的一些安全機(jī)制,不僅保證了信息的安全性,而且代碼還足夠的輕量化。在高性能Web技術(shù)基礎(chǔ)之上,摒棄了關(guān)系型數(shù)據(jù)庫的種種約束,引進(jìn)非關(guān)系型數(shù)據(jù)庫MongoDB集群和相適應(yīng)的開發(fā)模型以保證系統(tǒng)的高性能、高可用性和高安全性。React創(chuàng)建的用戶交互界面相當(dāng)友好且設(shè)計(jì)簡潔,當(dāng)數(shù)據(jù)發(fā)生變化時(shí),React可以做到高效地更新渲染界面,使得數(shù)據(jù)能夠?qū)崟r(shí)的更新同步。當(dāng)然對于MongoDB數(shù)據(jù)庫在這里的應(yīng)用也有不足之處,對于一些需要連接起來的數(shù)據(jù)表使用MongoDB就不行了,再就是Tornado常被用作大型站點(diǎn)的接口服

23、務(wù)框架,而不能像Django那樣著眼于建立完整的大型網(wǎng)站。關(guān)于根據(jù)任意字段進(jìn)行搜索的功能也還有待進(jìn)一步進(jìn)行開發(fā)。頁面的完整性和觀賞性也有待提高。參考文獻(xiàn)(References)1 時(shí)宗勝.人工智能技術(shù)在移動互聯(lián)網(wǎng)中的應(yīng)用研究J.數(shù)字通信世界,2017(10):164.2 Michale Dory,Adam parrish,Brendam Berg.Introduction to TornadoM.US, OReilly Media,2012.3 潘 凡.從 My SQL 到 Mongo DB視覺中國的NoSQL之路J.程序員,2010(6):78-80.4 盧冬海,何先波.淺析No SQL數(shù)據(jù)庫J.中國西部科技,2011(2)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論