亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Tornado的課程管理系統(tǒng)的設(shè)計與實現(xiàn)

        2018-01-17 09:09:38劉濤孫茜易善凱
        軟件工程 2018年12期

        劉濤 孫茜 易善凱

        摘 要:針對目前智能課堂的研究,關(guān)于課程的管理系統(tǒng)就提出來了。因此,開發(fā)了一種基于Tornado和React技術(shù)的課程管理系統(tǒng)。通過Tornado框架作為后端框架,實現(xiàn)數(shù)據(jù)庫中數(shù)據(jù)的增、刪、改、查操作,Tornado與現(xiàn)在主流的Web服務(wù)器框架相比有著明顯的優(yōu)勢:它是非阻塞式服務(wù)器,而且速度相當快,這對于當下的Web開發(fā)來說至關(guān)重要。前端部分采用React技術(shù)將前臺表單中輸入的數(shù)據(jù)傳輸?shù)胶蠖藬?shù)據(jù)庫中,并且對數(shù)據(jù)庫中的數(shù)據(jù)進行相應(yīng)的操作,React的一切都是組件化的,使得代碼更加的模塊化,重用代碼將變得更加容易,可維護性極高。該系統(tǒng)的開發(fā)過程還徹底的實現(xiàn)了前后端分離,前后端的聯(lián)系僅靠API聯(lián)系起來,前端部分的開發(fā)引用了Mock-api這一虛擬的服務(wù)端接口完成前端部分開發(fā)。這一開發(fā)技術(shù)路線充分展現(xiàn)了Tornado和React對Web開發(fā)的優(yōu)勢所在,也可以提高這一系統(tǒng)的可維護性。

        關(guān)鍵詞:Tornado;React;Mock-api;管理系統(tǒng)

        中圖分類號:TP315 文獻標識碼:A

        Abstract:In view of the current researches on intelligent classroom,the curriculum management system has been put forward.Therefore,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 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 database.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 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:Tornado;React;Mock-api;management system

        1 引言(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é)改革的不斷進行,各個高校對教育管理系統(tǒng)的自動化需求也越來越大。學(xué)校應(yīng)該充分利用計算機所帶來的技術(shù)來服務(wù)于高校,隨著最近幾年AI技術(shù)的快速進步,算法、算力和數(shù)據(jù)之間的進步,高校對教育管理系統(tǒng)對系統(tǒng)智能化的需要也越來越高?;赑ython的Tornado框架就很好的解決了C10K問題,大多數(shù)社交網(wǎng)絡(luò)會展示實時更新來提醒新消息、狀態(tài)變化和用戶通知,這要求客戶端始終有一個打開的連接等待來自服務(wù)器的任何響應(yīng)。這就使得Apache的最大線程池會迅速的飽和。一旦線程池的資源耗盡,服務(wù)器將無法再響應(yīng)新請求。異步服務(wù)器的應(yīng)用也就提出來了,Tornado正是被設(shè)計來減輕基于線程的服務(wù)器的限制的,也就是說,如果當前請求正在等待來自其他資源的數(shù)據(jù),則異步服務(wù)器可以顯式控制暫停請求[2]。隨著學(xué)校規(guī)模的擴大,學(xué)生人數(shù)逐漸增加;學(xué)校的課程也越來越多,課程管理也就變得尤為重要,因此智能課堂的完善需要這個課程管理系統(tǒng)來進一步實現(xiàn)。

        2 Tornado技術(shù)介紹(Introduction of tornado technology)

        Web開發(fā)人員可用的工具已經(jīng)得到全面發(fā)展。隨著技術(shù)專家不斷突破極限并使Web應(yīng)用程序無處不在,我們還必須升級我們的工具并不斷創(chuàng)建更好的框架以確保更好的應(yīng)用程序。同時,我們也希望能夠使用新工具,以便我們可以編寫更清晰、可維護的代碼,這些代碼在部署到全球用戶時具有高度可擴展性。Tornado框架也就提出來了,Tornado是一個編寫易創(chuàng)建、擴展和部署的強大Web應(yīng)用程序的絕佳選擇。它是一個用Python編寫的功能強大且可擴展的Web服務(wù)器。Tornado是FriendFeed網(wǎng)站的基礎(chǔ),于2009年9月10日發(fā)布,目前不僅得到了許多社區(qū)的支持,而且被應(yīng)用于各種不同的場合。除FriendFeed外,還有許多公司在生產(chǎn)上轉(zhuǎn)向Tornado,包括Quora、Turntable.fm、Bit.ly、Hipmunk和MyYearbook等。

        當FriendFeed被FaceBook收購后得以開源。與那些只能達到10000個并發(fā)連接的傳統(tǒng)Web服務(wù)器不同,Tornado在設(shè)計時充分考慮了性能,該設(shè)計旨在解決C10K問題,使其成為一個非常高性能的框架。此外,它還具有處理安全性、用戶身份驗證、社交網(wǎng)絡(luò)和外部服務(wù)(如數(shù)據(jù)庫和用于異步交互的網(wǎng)站API)的工具[2]。

        3 系統(tǒng)設(shè)計(System design)

        3.1 系統(tǒng)技術(shù)支持

        該系統(tǒng)的后端基于Tornado技術(shù)開發(fā),Tornado本身是一個功能強大且可擴展的Web服務(wù)器。不僅在處理高網(wǎng)絡(luò)流量時表現(xiàn)的足夠強大,而且在創(chuàng)建和編寫時表現(xiàn)得足夠的輕量級,還可以用于各種應(yīng)用程序和工具。我們這里用Anaconda來運行基于python編寫的Tornado程序。Anaconda工具不僅在寫程序的時候?qū)ξ覀冇泻艽髱椭谡{(diào)式程序的時候也能起到很大的幫助,跟蹤調(diào)試能夠幫我們第一時間找出程序問題所在,可以根據(jù)報錯信息,對代碼就像修改。為了方便調(diào)試和使用,我們在測試的時候,服務(wù)器采用本機服務(wù)器,我們需要提前部署好服務(wù)器并指定端口號,也就http:localhost:8000,這里的8000指的是端口號,調(diào)試的時候端口可能會被占用,這里我們可以根據(jù)情況改成8001或者8002。前臺采用React技術(shù)并通過最基礎(chǔ)的CSS技術(shù)來對靜態(tài)頁面進行修飾。開發(fā)工具采用Sublime,能夠?qū)斎氲腞eact第一時間進行糾錯。同時,為了提高數(shù)據(jù)庫對數(shù)據(jù)的處理能力和可擴展性,數(shù)據(jù)庫我們選擇使用非關(guān)系型數(shù)據(jù)庫:MongoDB數(shù)據(jù)庫。

        3.2 系統(tǒng)功能設(shè)計

        課程管理系統(tǒng)整體結(jié)構(gòu)圖如圖1所示。該系統(tǒng)由數(shù)據(jù)庫模塊,后端模塊和前端模塊組成。

        后端模塊和前端模塊的主要功能是增加、刪除、更新和查詢課程管理系統(tǒng)中的課程?;赑ython的Toanado框架,使后端代碼足夠簡潔易懂,后端每完成一個方法的定義我們把這個方法封裝成一個API接口,然后把這個API接口提供給前端就可以了;前端部分,我們主要應(yīng)用React技術(shù),為了不去等待后端提供的API,影響開發(fā)效率,我們選擇使用Mock-api來模擬后端API接口,首先我們在Mock-api中創(chuàng)建一個數(shù)據(jù)庫,添加一條記錄,我們通過React技術(shù)把這條技術(shù)顯示到經(jīng)過CSS修飾過的頁面當中,然后我們在頁面上已經(jīng)創(chuàng)建好的輸入行中輸入相關(guān)課程信息,點擊“Create Course”即可將前臺輸入的數(shù)據(jù)存入后代數(shù)據(jù)庫中,并且在前臺頁面也能實時添加這條記錄,查看數(shù)據(jù)庫可以發(fā)現(xiàn),我們插入數(shù)據(jù)的時候,數(shù)據(jù)庫系統(tǒng)會自動為這條記錄添加一個ObjectId字段,這是這條記錄的主鍵,這個主鍵使唯一的,這個字段也是索引和進行修改刪除操作的依據(jù)。每條數(shù)據(jù)的后面都有“Edit”和“Delete”按鈕,點擊“Edit”使數(shù)據(jù)變成可編輯狀態(tài),這個時候可以對數(shù)據(jù)庫里的數(shù)據(jù)進行修改,修改完成之后單擊“Update”以完成此數(shù)據(jù)的更新,此時后臺就是根據(jù)前臺提供的這個字段來進行索引任何更新數(shù)據(jù)。點擊“Delete”也可以刪除這條數(shù)據(jù),根據(jù)前臺傳遞的ObjectID來索引,找到這條記錄然后刪除。另外還可以根據(jù)任一個字段的信息來查找這條課程記錄。課程列表頁面如圖2所示。

        3.3 數(shù)據(jù)庫設(shè)計

        目前關(guān)系型數(shù)據(jù)庫還是主流的數(shù)據(jù)庫,比如Mysql。根據(jù)快速發(fā)展的網(wǎng)站規(guī)模的要求,關(guān)系型數(shù)據(jù)庫需要滿足三個高要求:需要高度并發(fā)讀取和寫入數(shù)據(jù)庫,需要對大量數(shù)據(jù)進行高效存儲訪問,以及需要高度可擴展的數(shù)據(jù)庫高可用性。為了滿足這些需求,關(guān)系型數(shù)據(jù)庫采用的技術(shù)有分區(qū)、分表和分庫,但這需要修改業(yè)務(wù)邏輯層,這改變起來代價相當大。這個時候非關(guān)系型數(shù)據(jù)庫的優(yōu)勢就開始體現(xiàn)出來了,非關(guān)系型數(shù)據(jù)庫例如MongoDB就可以很好解決橫向擴展問題.因為MongoDB中的Collection沒有模式,所以不存在模式變更,由于Collection相互之間沒有約束關(guān)系,也不能執(zhí)行復(fù)雜的連接操作,所以MongoDB很容易支持分布式部署[3-6]。該系統(tǒng)后臺數(shù)據(jù)庫部分使用MongoDB數(shù)據(jù)庫,數(shù)據(jù)庫名稱為Course,Collection名稱為courses。該數(shù)據(jù)庫中有一個ObjectId字段是在插入數(shù)據(jù)的時候系統(tǒng)自動生成的,這個字段使唯一的。除了ObjectId,其余字段都可以為空。我們這里可以把任意一個字段作為索引依據(jù),方便我們在搜索的時候可以依據(jù)每一個字段進行搜索,數(shù)據(jù)庫中的數(shù)據(jù)如圖3所示。

        3.4 系統(tǒng)安全設(shè)計

        Web應(yīng)用程序中訪問控制機制中的漏洞,允許攻擊者未經(jīng)授權(quán)能夠訪問其無權(quán)訪問的資源。Monshizadeh等人提出的MACR工具[7]基于多條路徑不一致的行為特征,能夠自動地檢測Web應(yīng)用程序中的越權(quán)漏洞。Pellegrino等人[8]提出了一種新型的黑盒測試的方法。通過從用戶和Web應(yīng)用程序交互的網(wǎng)絡(luò)記錄中識別Web軟件的行為模式,再加上一些常見的攻擊場景,生成測試樣例。使用這種方法成功地在商用Web應(yīng)用程序中發(fā)現(xiàn)多個位置漏洞。Weissbacher等人[9]指出:瀏覽器中部分函數(shù)并不會受到同源策略(SOP)的限制,這就導(dǎo)致Web程序可能會因這些渠道而受到攻擊。

        在安全方面,Tornado Web服務(wù)器在設(shè)計的初期就著重考慮到了,這也使得其能夠更容易的防范那些常見的漏洞。安全cookies可以防止用戶的本地狀態(tài)被瀏覽器中的惡意代碼暗中修改。此外,瀏覽器cookies可以與HTTP請求參數(shù)作比較來抵御跨站請求偽造攻擊。事實上,有很多種方式可以攔截瀏覽器中的cookies。JavaScript和Flash對于它們所執(zhí)行的頁面的域有讀寫cookies的權(quán)限。瀏覽器插件還可以用編程方法訪問這些數(shù)據(jù),跨站腳本攻擊可以有效利用這些訪問從而修改訪客瀏覽器中的cookies的值。Tornado的安全cookies使用加密簽名的方式來驗證cookies的值是否已經(jīng)被服務(wù)器軟件以外的任何人修改。由于任何惡意腳本都不知道正確的安全密鑰,因此它不能在應(yīng)用完全不知情的情況下去任意修改cookies的值。然而,Tornado的安全cookies仍然容易被竊聽。惡意攻擊者可以通過腳本或瀏覽器插件截獲cookies的值,或者干脆直接竊聽未加密的網(wǎng)絡(luò)數(shù)據(jù)。記住cookies值是簽名的而不是加密的。惡意程序可以讀取已存儲的cookies,并可以將數(shù)據(jù)傳輸?shù)饺魏我粋€服務(wù)器,或者通過發(fā)送沒有修改的數(shù)據(jù)給應(yīng)用程序偽造一個請求。因此,避免將敏感的用戶數(shù)據(jù)存儲在瀏覽器cookies中非常重要。我們還需要注意是,用戶也有可能需要去修改他自己的cookies,在這個過程中也會導(dǎo)致遭受攻擊。例如,如果我們在cookies中存儲了用戶已付費的文章剩余的瀏覽數(shù),我們希望阻止用戶自己去更新有關(guān)的數(shù)值來獲取免費的內(nèi)容。Httponly和secure屬性就可以有效幫助我們防范這種攻擊。

        3.5 系統(tǒng)流程

        本系統(tǒng)以為智能課堂服務(wù)的目的,來設(shè)計滿足各種功能要求,使課程信息得以實時的更新,同時還保證了系統(tǒng)內(nèi)部數(shù)據(jù)的信息安全。首先我們利用React技術(shù)搭建好最基本的前臺頁面和實現(xiàn)與在Mock-api中建立的數(shù)據(jù)庫的各種通信,對數(shù)據(jù)庫中的數(shù)據(jù)進行添加、刪除、修改和查詢等操作。在前后臺對接的時候,我們使用axios請求后臺API數(shù)據(jù),進而對數(shù)據(jù)庫進行操作,tornado通過路由的形式把API提供給前臺,前臺在實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)進行操作的同時也對頁面上顯示的數(shù)據(jù)進行實時的更新。同時了為了保證系統(tǒng)的安全性,我們優(yōu)化了前后臺代碼。從前臺React基本功能的實現(xiàn),到使用axios請求后臺API數(shù)據(jù),到后臺Tornado處理前臺傳入的數(shù)據(jù),成功的實現(xiàn)了React和Tornado前后臺對接的課程管理系統(tǒng)。

        4 系統(tǒng)測試(System test)

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

        5 結(jié)論(Conclusion)

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

        參考文獻(References)

        [1] 時宗勝.人工智能技術(shù)在移動互聯(lián)網(wǎng)中的應(yīng)用研究[J].數(shù)字通信世界,2017(10):164.

        [2] Michale Dory,Adam parrish,Brendam Berg.Introduction to Tornado[M].US, O'Reilly Media,2012.

        [3] 潘 凡.從 My SQL 到 Mongo DB—視覺中國的NoSQL之路[J].程序員,2010(6):78-80.

        [4] 盧冬海,何先波.淺析No SQL數(shù)據(jù)庫[J].中國西部科技,2011(2):14-16.

        [5] 黃賢立.NoSQL非關(guān)系型數(shù)據(jù)庫的發(fā)展及應(yīng)用初探[J].福建電腦,2010(7):30-32.

        [6] 王光磊.MongoDB數(shù)據(jù)庫的應(yīng)用研究和方案優(yōu)化[J].中國科技信息,2011(20):93-96.

        [7] Monshizadeh M,Naldurg P,Venkatakrishnan VN.MACE:Detecting privilege escalation vulnerabilities in Web applications.In:Proc.of the 2014 ACM SIGSAC Conf.on Computer and Communications Security.ACM Press,2014:690-701.

        [8] Pellegrino G,Balzarotti D.Toward black-box detection of logic flaws in Web applications.In:Bauer L,ed.Proc.of the 21st Annual Network and Distributed System Security Symp(NDSS 2014).San Diego:Internet Society,2014.

        [9] Weissbacher M,Robertson W,Kirda E,et al.Zigzag:Automatically hardening Web applications against client-side validation vulnerabilities.In:Jung J,ed.Proc.of the 24th USENIX Security Symp.San Antonio:USENIX Association,2015:737-752.

        作者簡介:

        劉 濤(1995-),男,碩士生.研究領(lǐng)域:智能制造,人工智能.

        孫 茜(1995-),男,碩士生.研究領(lǐng)域:智能制造,人工智能.

        易善凱(1994-),男,碩士生.研究領(lǐng)域:智能制造,人工智能.

        亚洲中文字幕乱码一二三区| 国产一级一片内射视频在线| 男女打扑克视频在线看| 91精品国产九色综合久久香蕉| 亚洲s色大片在线观看| 久久夜色精品国产噜噜av| 欧美日本道免费二区三区| 午夜一区二区三区在线观看| 婷婷久久国产综合精品| 中文字幕免费不卡二区| 欧美韩日亚洲影视在线视频| 日韩一区二区,亚洲一区二区视频| 最新国产熟女资源自拍| 亚洲国产一二三精品无码| 久久精品国产亚洲av高清漫画| 91精品啪在线看国产网站| 亚洲国产综合性感三级自拍| 一区二区三区激情免费视频| 丰满熟女高潮毛茸茸欧洲视频| 骚片av蜜桃精品一区| 囯产精品无码va一区二区| 日韩av综合色区人妻| 强奸乱伦影音先锋| 久久久精品欧美一区二区免费| 最新无码国产在线播放| av在线男人的免费天堂| 精品亚洲一区二区三区四区五区 | 亚洲黄色一插一抽动态图在线看| 日本伦理精品一区二区三区| 无码不卡av东京热毛片| 国产农村三片免费网站| 网红尤物泛滥白浆正在播放| 呦系列视频一区二区三区| 性生交大全免费看| 在线精品国产一区二区| 国产高跟丝袜在线诱惑| 成人性生交大全免费看| 亚洲va久久久噜噜噜久久男同| 亚洲欧洲日产国码无码AV一| 日韩精品人妻一区二区三区蜜桃臀| 综合亚洲伊人午夜网|