版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 中文6200字,3500單詞,1.8萬(wàn)英文字符</p><p> 出處:Pop D P, Altar A. Designing an MVC Model for Rapid Web Application Development ☆[J]. Procedia Engineering, 2014, 69(1):1172-1179.</p><p> 為快速開(kāi)發(fā)web
2、應(yīng)用設(shè)計(jì)一個(gè)MVC模型</p><p> Dragos-Paul Pop*, Adam Altar</p><p> Procedia Engineering 69 ( 2014 ) 1172 – 1179</p><p> 羅馬尼亞美國(guó)大學(xué),1B expozitiei大道,布加勒斯特,012101,羅馬尼亞</p><p>
3、<b> 摘要</b></p><p> 在本文中,我們提出了一個(gè)快速開(kāi)發(fā)Web應(yīng)用的模型。該模型是基于模型-視圖-控制器架構(gòu)(MVC)和其他一些有用的組件,比如安全,表單生成和驗(yàn)證,訪問(wèn)數(shù)據(jù)庫(kù)和路由。這個(gè)模型是使用PHP編程語(yǔ)言實(shí)現(xiàn)的,但它可以使用同一設(shè)想在其他的開(kāi)發(fā)語(yǔ)言和環(huán)境上實(shí)現(xiàn)。本研究的主要目標(biāo)是使用正確的可維護(hù)的代碼提高開(kāi)發(fā)和維護(hù)效率。</p><p>
4、 在DAAAM International Vienna的職責(zé)下選擇并且同行評(píng)審。</p><p> 關(guān)鍵詞:模型;視圖;控制器;MVC;Web應(yīng)用;設(shè)計(jì)模式</p><p><b> 介紹</b></p><p> 自從萬(wàn)維網(wǎng)的開(kāi)始,web應(yīng)用程序的發(fā)展已經(jīng)走過(guò)了一段很長(zhǎng)的歷程。各種各樣的技術(shù)和程序語(yǔ)言正在被用來(lái)開(kāi)發(fā)web應(yīng)用程序,但
5、是因?yàn)檫@些技術(shù)并沒(méi)有足夠的時(shí)間去隨著萬(wàn)維網(wǎng)的進(jìn)化而及時(shí)進(jìn)化,無(wú)法應(yīng)對(duì)萬(wàn)維網(wǎng)的步伐。很多使用者嘗試提出不同的奇異的技術(shù)來(lái)提高用戶的體驗(yàn),并且?guī)椭_(kāi)發(fā)者開(kāi)發(fā)更快更強(qiáng)大的web應(yīng)用程序。這些技術(shù)在web發(fā)展中扮演了一個(gè)重要的角色,但是在過(guò)去幾年里,他們的地位有了相當(dāng)程度的下降,就像Java Applets和Microsoft Silverlight一樣。另一方面,許多技術(shù)已經(jīng)從簡(jiǎn)單的工具演變成了今天web生態(tài)系統(tǒng)強(qiáng)大的重要的一部分,比如,Ja
6、vascript,F(xiàn)lash和XML。</p><p> *通訊作者。電話:+ 40-724-261-805;</p><p> 電子郵件地址:pop.dragos.paul@profesor.rau.ro</p><p> 1877-7058©2014 The Authors。 由Elsevier公司出版。在CC BY-NC-N
7、D license許可下開(kāi)放存取。</p><p> 在DAAAM International Vienna的職責(zé)下選擇并且同行評(píng)審。</p><p> doi: 10.1016/j.proeng.2014.03.106</p><p> 今天的web環(huán)境使用HTML和CSS將數(shù)據(jù)展現(xiàn)給用戶看,使用JavaScript來(lái)實(shí)現(xiàn)交互。這些技術(shù)被稱(chēng)為“前端”或“客戶
8、端”技術(shù)。相反的,“后端”或者“服務(wù)端”技術(shù)是指數(shù)據(jù)存儲(chǔ)和處理技術(shù)。</p><p><b> 問(wèn)題公式化</b></p><p> 一起使用前端技術(shù)和后端技術(shù)來(lái)開(kāi)發(fā)web應(yīng)用程序,但由于萬(wàn)維網(wǎng)發(fā)展速度很快,由于開(kāi)發(fā)人員需要使用很多技術(shù)來(lái)開(kāi)發(fā)的卻僅僅是一個(gè)很簡(jiǎn)單的web應(yīng)用程序,這樣的結(jié)果就是,他們的程序經(jīng)常是難以維護(hù)的。</p><p>
9、 開(kāi)發(fā)者將HTML代碼和服務(wù)端程序語(yǔ)言結(jié)合起來(lái)創(chuàng)造一個(gè)動(dòng)態(tài)的web頁(yè)面和應(yīng)用程序,這會(huì)導(dǎo)致代碼高度耦合而難以維護(hù)。</p><p> 另一個(gè)已經(jīng)產(chǎn)生的問(wèn)題是,web技術(shù)正在越來(lái)越多地地被用來(lái)開(kāi)發(fā)各種各樣的復(fù)雜的應(yīng)用程序。Microsoft embraces web技術(shù)鼓勵(lì)開(kāi)發(fā)者使用最新的操作系統(tǒng)Windows 8來(lái)開(kāi)發(fā)應(yīng)用程序。同時(shí),很多現(xiàn)有的框架幫助開(kāi)發(fā)者為移動(dòng)設(shè)備開(kāi)發(fā)應(yīng)用程序,比如PhoneGap和App
10、celerator Titanium。甚至,一個(gè)手機(jī)操作系統(tǒng)正在被使用中,還有一個(gè)完全為了開(kāi)發(fā)者提供API(火狐操作系統(tǒng))的使用web技術(shù)的設(shè)備即將在今年晚些時(shí)候出現(xiàn)。因?yàn)檫@些原因,一個(gè)web應(yīng)用程序通常是由一整個(gè)團(tuán)隊(duì)開(kāi)發(fā)的,這個(gè)團(tuán)隊(duì)里有各種開(kāi)發(fā)者,每項(xiàng)工作使用的都是他們各自喜歡的技術(shù),比如表現(xiàn)層的HTML和CSS,客戶端交互的JavaScript,服務(wù)器邏輯的PHP (或者ASP, Java, Python, Pearl, Ruby等
11、等)和數(shù)據(jù)存儲(chǔ)和管理的MySQL (或者Oracle Database, Microsoft SQL Server,等等)。</p><p> 每一個(gè)職能負(fù)責(zé)的開(kāi)發(fā)人員,需要和他的同時(shí)協(xié)同合作,使用一種方式使得他們的代碼塊和整個(gè)應(yīng)用程序的設(shè)計(jì)相融合。舉個(gè)例子,客戶端(數(shù)據(jù)顯示)開(kāi)發(fā)人員需要使用一種方式,保證在修改HTML和CSS代碼的時(shí)候,不會(huì)破壞在同一文件中的服務(wù)端開(kāi)發(fā)人員的代碼。同時(shí),當(dāng)數(shù)據(jù)庫(kù)開(kāi)發(fā)人員修改應(yīng)
12、用程序的數(shù)據(jù)時(shí),服務(wù)端開(kāi)發(fā)人員很可能需要修改很多代碼才能使得應(yīng)用程序正常工作。</p><p> 需要注意的重要的事,在一個(gè)應(yīng)用程序中,把表現(xiàn)層從邏輯和數(shù)據(jù)存儲(chǔ)當(dāng)作分離出來(lái)是迫切需要的。</p><p> 很多應(yīng)用程序設(shè)計(jì)了一些模式來(lái)解決這個(gè)問(wèn)題,但最好的是當(dāng)今的MVC模式。</p><p> 在這個(gè)研究過(guò)程中,我們使用各種系統(tǒng)和框架開(kāi)發(fā)web應(yīng)用程序來(lái)獲取經(jīng)
13、驗(yàn),試圖去識(shí)別這些系統(tǒng)的優(yōu)點(diǎn)和缺點(diǎn),同時(shí)對(duì)于如何提高這些系統(tǒng)的實(shí)際應(yīng)用效率提出我們自己的看法。研究的框架和系統(tǒng)包括:Symfony, CakePHP, CodeIgniter Zend Framework, Laravel, Fuel PHP, Ruby on Rails and ASP.NET MVC。</p><p> MVC模式和文學(xué)概述</p><p> 在這一節(jié)中,我們將回顧
14、當(dāng)前在這一領(lǐng)域的研究狀態(tài),并且,看看與MVC模式有關(guān)的描述了模式的主要功能組件的文獻(xiàn)資料。</p><p> MVC設(shè)計(jì)模式是由Trygve Reenskaug在1970年代在施樂(lè)帕洛阿爾托研究中心第一次提出的。根據(jù)他所說(shuō)的,“MVC的基本目的是在用戶的心里模型和存在于計(jì)算機(jī)中的數(shù)據(jù)模型之間搭起一座橋梁[1]”。</p><p> 后來(lái),1988年,在Krasner和Pope的文章《A
15、 cookbook for using the model-view controller user interface paradigm in Smalltalk-80》里,對(duì)MVC模式進(jìn)行了更詳細(xì)的描述,該文章被發(fā)表在雜志《Object-Oriented Programming》上。</p><p> 他們強(qiáng)調(diào),如果在頭腦里使用模塊化構(gòu)建一個(gè)應(yīng)用程序,那么將會(huì)有很大的益處?!氨M可能把各個(gè)功能模塊分離出來(lái),使
16、應(yīng)用程序設(shè)計(jì)人員更容易在不需要了解其他模塊的情況下,對(duì)自己的模塊進(jìn)行理解和修改。[2]”</p><p> 一個(gè)應(yīng)用程序被分為三大部分:主程序的模型,模型的數(shù)據(jù)顯示和用戶交互[2]。</p><p> MVC模式將職責(zé)分給三個(gè)主要角色,從而擁有更有效的協(xié)同合作[3]。這些主要的角色是開(kāi)發(fā),設(shè)計(jì)和集成。</p><p> 開(kāi)發(fā)的角色是由富有經(jīng)驗(yàn)的程序員擔(dān)任的,他
17、們的職責(zé)是應(yīng)用程序的邏輯問(wèn)題。他們關(guān)心數(shù)據(jù)查詢,驗(yàn)證,處理以及其他更多的邏輯。</p><p> 設(shè)計(jì)的角色的的開(kāi)發(fā)者的職責(zé)是負(fù)責(zé)應(yīng)用程序的外觀和感覺(jué)。他們提供數(shù)據(jù)顯示給第一角色的開(kāi)發(fā)人員。</p><p> 集成角色的職責(zé)是收集由擔(dān)任前兩種角色的開(kāi)發(fā)人員的工作[3]。</p><p> MVC設(shè)計(jì)模式適合web應(yīng)用程序開(kāi)發(fā),因?yàn)樗麄兺ㄟ^(guò)結(jié)合多種技術(shù)將程序分層
18、開(kāi)發(fā)。同時(shí),MVC特定的行為可以在不同類(lèi)型的用戶代理之間發(fā)送特定的視圖[13]。</p><p> “一個(gè)MVC應(yīng)用程序的用戶交互遵循著一個(gè)自然周期:用戶發(fā)生動(dòng)作,應(yīng)用程序改變它的數(shù)據(jù)模型,然后返回一個(gè)更新視圖給用戶[4]?!?lt;/p><p> 圖1. MVC模式.</p><p> Source: http://stackoverflow.com/quest
19、ions/5966905/which-mvc-diagram-is-correct-web-app</p><p><b> 模型</b></p><p> 模型是系統(tǒng)的一部分,它會(huì)管理所以相關(guān)任務(wù)的數(shù)據(jù):驗(yàn)證,會(huì)話狀態(tài)和控制,數(shù)據(jù)源結(jié)構(gòu)(數(shù)據(jù)庫(kù))。模型大大減少了開(kāi)發(fā)人員需要編寫(xiě)的代碼的復(fù)雜性[5]。</p><p> 模型層負(fù)責(zé)應(yīng)用程序
20、的業(yè)務(wù)邏輯。它通過(guò)封裝的方法來(lái)訪問(wèn)數(shù)據(jù)(數(shù)據(jù)庫(kù),文件,等等),并提供一個(gè)可重用的類(lèi)庫(kù)。通常,模型是基于抽象、驗(yàn)證和認(rèn)證的抽象數(shù)據(jù)建立的[4]。</p><p> 另外,模型是由類(lèi)組成的,這些類(lèi)定義了受關(guān)注的域[6]。</p><p> 結(jié)論就是,模型主要處理數(shù)據(jù)訪問(wèn)的抽象和驗(yàn)證。模型提供一些方法用于支持不同數(shù)據(jù)源之間的交互。</p><p> 我們相信,在瘦模
21、型方法中所說(shuō)的,一個(gè)模型應(yīng)該盡可能地簡(jiǎn)單,只包含數(shù)據(jù)處理,那些完全與現(xiàn)實(shí)生活有關(guān)的模塊化的數(shù)據(jù)。瘦模型與胖控制器相聯(lián)系,其中存有應(yīng)用程序所需的大部分的數(shù)據(jù)處理。通過(guò)這種方式,在應(yīng)用程序和大部分在控制器上開(kāi)發(fā)的程序員之間,模型保持了高度的可重用性。</p><p> 新奇的是,我們的模型系統(tǒng)帶給MVC世界的是一個(gè)用于版本控制的系統(tǒng),一個(gè)基于數(shù)據(jù)傳送的想法,除了數(shù)據(jù)本身,它不會(huì)持續(xù)關(guān)注數(shù)據(jù)的結(jié)構(gòu)。這個(gè)系統(tǒng)使用XML
22、文件在數(shù)據(jù)傳送之間存儲(chǔ)數(shù)據(jù),這使得數(shù)據(jù)庫(kù)的版本控制過(guò)程成了一件容易完成的事。</p><p><b> 視圖</b></p><p> 視圖負(fù)責(zé)用戶的圖形界面管理。這包括了所有在應(yīng)用程序中的表單、按鈕、圖形元素和其他HTML元素。視圖也可以被用來(lái)生成RSS內(nèi)容聚合器或者Flash演示。通過(guò)將應(yīng)用程序設(shè)計(jì)從應(yīng)用程序的邏輯中分離出來(lái),當(dāng)設(shè)計(jì)人員決定更改應(yīng)用程序的界面的
23、logo或者表格時(shí),我們可以大大降低出錯(cuò)的風(fēng)險(xiǎn)。與此同時(shí),開(kāi)發(fā)人員的工作量也大大減少了,因?yàn)樗麄儾辉傩枰リP(guān)注HTML代碼元素,不需要去設(shè)計(jì)元素和圖形元素[5]。</p><p> 視圖層通常也被稱(chēng)為web設(shè)計(jì)或模版。它控制著數(shù)據(jù)被顯示的方式以及和用戶進(jìn)行交互的方式。它還提供了從用戶處收集數(shù)據(jù)的方法。視圖中使用的技術(shù)主要有HTML,CSS和JavaScript[4]。</p><p>
24、 作為一般規(guī)則,一個(gè)視圖不能包含屬于應(yīng)用程序邏輯部分的元素,以此來(lái)使得設(shè)計(jì)人員更容易來(lái)使用它工作。這意味著邏輯塊應(yīng)該保持在最低限度。</p><p> 今天大多數(shù)web應(yīng)用程序框架使用各種模版引擎,這些模版利用生成器元素可以保證HTML代碼的數(shù)量在最少,同時(shí)降低拼寫(xiě)錯(cuò)誤的風(fēng)險(xiǎn)。這些生成器通常用來(lái)制作一些復(fù)雜的web模版,比如表單,表格,列表,菜單等等。在這種情況下,我們確認(rèn)的問(wèn)題是,所有想法的實(shí)現(xiàn)都需要用到對(duì)開(kāi)
25、發(fā)人員來(lái)說(shuō)不透明的生成器模版。通過(guò)這種方式,一個(gè)前端開(kāi)發(fā)人員只能看到在代碼被生成之后執(zhí)行的結(jié)果,而沒(méi)有任何方法去修改模版。我們的系統(tǒng)采用特殊的HTML注釋來(lái)插入和生成基于模版的部分HTML文件。預(yù)處理系統(tǒng)采用注釋來(lái)解釋特殊的命令,用來(lái)把數(shù)據(jù)插入模版。這使得整個(gè)對(duì)于前端開(kāi)發(fā)人員來(lái)說(shuō)都是很透明的,他們可以在繪制視圖之前看到整個(gè)標(biāo)記。</p><p><b> 控制器</b></p>
26、<p> 控制器負(fù)責(zé)事件處理。這些由用戶觸發(fā)的事件,能夠和應(yīng)用程序或者系統(tǒng)進(jìn)程進(jìn)行交互??刂破骺梢越邮苷?qǐng)求,可以準(zhǔn)備數(shù)據(jù)來(lái)進(jìn)行響應(yīng)。它也負(fù)責(zé)建立響應(yīng)的格式??刂破髋c模型進(jìn)行交互,以此來(lái)檢索所需要的數(shù)據(jù)并且生成視圖。這個(gè)過(guò)程也被稱(chēng)為一個(gè)動(dòng)作或動(dòng)詞[5]。當(dāng)一個(gè)請(qǐng)到到達(dá)服務(wù)器,MVC框架會(huì)根據(jù)URL給它分配一個(gè)控制器中的方法[14]。</p><p> 控制器捆綁所有的應(yīng)用程序邏輯,將視圖的顯示和模
27、型的函數(shù)相結(jié)合。它負(fù)責(zé)從視圖中檢索數(shù)據(jù),建立應(yīng)用程序的執(zhí)行路徑。控制器能夠訪問(wèn)模型的函數(shù),并且它能夠接收數(shù)據(jù)使得在視圖中顯示。它也負(fù)責(zé)錯(cuò)誤處理[4]。</p><p> 控制器管理視圖和模型之間的關(guān)系。它響應(yīng)用戶的請(qǐng)求,與模型進(jìn)行交互,并且決定哪個(gè)視圖應(yīng)該被生成并顯示[6]。</p><p> 如上所述,我們接受胖控制器方法,相信所有特定的應(yīng)用程序的數(shù)據(jù)處理應(yīng)該在控制器層處理。<
28、/p><p> 為了請(qǐng)求和響應(yīng),我們的控制器系統(tǒng)會(huì)是一個(gè)架構(gòu)樣式的網(wǎng)絡(luò)系統(tǒng),并且支持JSON(P),text和XML數(shù)據(jù)格式。</p><p><b> 數(shù)據(jù)庫(kù)抽象化</b></p><p> 使用對(duì)象來(lái)開(kāi)發(fā)面向?qū)ο缶幊痰膽?yīng)用程序。這些對(duì)象反映了現(xiàn)實(shí)生活中的對(duì)象,包含了對(duì)象的數(shù)據(jù)和行為。關(guān)系模型被廣泛應(yīng)用于應(yīng)用程序中的數(shù)據(jù)存儲(chǔ),這些應(yīng)用程序使
29、用表來(lái)存儲(chǔ)數(shù)據(jù),并且使用數(shù)據(jù)操縱語(yǔ)言來(lái)進(jìn)行數(shù)據(jù)交互。一些數(shù)據(jù)庫(kù)管理系統(tǒng)擁有面向?qū)ο蟮奶匦裕鼈儾⒉皇峭耆嫒莸?。很明顯的是,在從現(xiàn)在開(kāi)始的很長(zhǎng)一段時(shí)間里,這兩個(gè)架構(gòu)會(huì)一直被廣泛地使用。此外,大部分時(shí)間,關(guān)系模型和面向?qū)ο缶幊淌潜挥脕?lái)一起開(kāi)發(fā)應(yīng)用程序。但這兩種技術(shù)的結(jié)合遠(yuǎn)非完美。“object-relational impedance mismatch”這個(gè)術(shù)語(yǔ)被用來(lái)說(shuō)明上面所說(shuō)的不匹配[7]。</p><p>
30、 在不匹配的背后存在的原因是,這兩種技術(shù)依賴于不同的思想。面向?qū)ο缶幊桃蕾囉诰幊趟枷?,而關(guān)系模型遵循的是數(shù)學(xué)原理。</p><p> 為了完全解決這個(gè)問(wèn)題,對(duì)象-關(guān)系映射系統(tǒng)應(yīng)運(yùn)而生。</p><p> 圖2. ORM系統(tǒng).</p><p> Source:http://danhartshorn.com/2011/12/object-relational-m
31、apping-wikipedia-the-free-encyclopedia</p><p> 一個(gè)對(duì)象關(guān)系映射系統(tǒng)(ORM)被定義為一種工具,它提供一個(gè)面向?qū)ο蟮姆椒ê蜋C(jī)制以安全的方式來(lái)存儲(chǔ)數(shù)據(jù),并且在數(shù)據(jù)庫(kù)中的很長(zhǎng)一段時(shí)間里,能夠通過(guò)事務(wù)控制它們,但需要說(shuō)明的是,如果需要,它也可以作為應(yīng)用程序內(nèi)部中的對(duì)象[8]。</p><p> ORM系統(tǒng)減少了開(kāi)發(fā)人員對(duì)了解數(shù)據(jù)庫(kù)結(jié)構(gòu)或數(shù)據(jù)庫(kù)模
32、式的擔(dān)心[9]。</p><p> 總之,我們可以說(shuō),對(duì)象關(guān)系-映射系統(tǒng)是一種把編程語(yǔ)言中的類(lèi)和關(guān)系系統(tǒng)中的數(shù)據(jù)相關(guān)聯(lián)的方式,它允許開(kāi)發(fā)人員使用眾所周知的思想來(lái)進(jìn)行開(kāi)發(fā),即從面向?qū)ο缶幊虂?lái)管理關(guān)系系統(tǒng)中的數(shù)據(jù)。</p><p> MVC平臺(tái)必須為開(kāi)發(fā)人員提供一個(gè)方法與數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行數(shù)據(jù)交互,進(jìn)行數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)檢索。大多數(shù)時(shí)候,這是一個(gè)集成的ORM系統(tǒng)。</p><
33、;p> 因?yàn)樵贛VC架構(gòu)中,模型是與數(shù)據(jù)交互的一層,ORM系統(tǒng)隱藏在其之后?;旧希總€(gè)模型連接到ORM系統(tǒng)后,它都會(huì)使用該系統(tǒng)進(jìn)行數(shù)據(jù)交互。但是開(kāi)發(fā)人員可能不需要通過(guò)模型來(lái)訪問(wèn)ORM系統(tǒng)的資源。</p><p> 我們的ORM系統(tǒng)支持在對(duì)象和最長(zhǎng)的對(duì)象鏈之間的多對(duì)多關(guān)系。</p><p> 同時(shí),我們提供一個(gè)選項(xiàng)來(lái)確保內(nèi)存中保存有確定的數(shù)據(jù)集,并且,跳過(guò)數(shù)據(jù)查詢步驟,以此將響
34、應(yīng)時(shí)間減少到最低限度。</p><p> 目前,NoSQL數(shù)據(jù)存儲(chǔ)是被重視的,我們支持一個(gè)接口來(lái)訪問(wèn)這些系統(tǒng)。這個(gè)接口是ORM系統(tǒng)的一部分。</p><p><b> 安全</b></p><p> Web應(yīng)用程序漏洞是用戶的業(yè)務(wù)環(huán)境會(huì)受到攻擊的主要原因[10]。</p><p> 開(kāi)發(fā)人員在開(kāi)發(fā)web應(yīng)用程序的
35、時(shí)候需要注意很多地方。</p><p> 安全風(fēng)險(xiǎn)可以分為幾類(lèi)[11]:</p><p> 用戶輸入驗(yàn)證:緩沖區(qū)溢出,跨站腳本,SQL注入,規(guī)范化;</p><p> 認(rèn)證:網(wǎng)絡(luò)監(jiān)聽(tīng),暴力攻擊,字典攻擊,cookie偽裝,身份盜用;</p><p> 授權(quán):訪問(wèn)特權(quán)擾亂,私人數(shù)據(jù)顯示,數(shù)據(jù)修改,跟蹤攻擊;</p><
36、;p> 配置管理:對(duì)管理界面未經(jīng)授權(quán)的訪問(wèn),對(duì)配置空間未經(jīng)授權(quán)的訪問(wèn),對(duì)存儲(chǔ)為文本的控制數(shù)據(jù)的訪問(wèn),操作日志的缺少;</p><p> 信息:訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù),網(wǎng)絡(luò)監(jiān)聽(tīng),數(shù)據(jù)修改;</p><p> 會(huì)話管理:會(huì)話盜竊,會(huì)話改變,中間人攻擊;</p><p> 加密:薄弱的安全密鑰,薄弱的加密;</p><p> 參數(shù)處理:
37、查詢字符串,表單字段,cookie和HTTP頭處理;</p><p> 異常管理:DOS攻擊;</p><p> 開(kāi)發(fā)人員需要抵御這些各種類(lèi)型的攻擊,并且保證MVC架構(gòu)的每一層的安全性。</p><p> 我們的系統(tǒng)提議建立在CSRF攻擊預(yù)防之上,一個(gè)簡(jiǎn)單的身份驗(yàn)證模式,一個(gè)復(fù)雜的基于安全系統(tǒng)和對(duì)資源高度可定制的訪問(wèn)控制表的角色。</p><
38、;p><b> 路由</b></p><p> HTTP協(xié)議處理URL書(shū)寫(xiě)的方式與Unix環(huán)境中資源路徑被書(shū)寫(xiě)的方式很相似[12]。</p><p> Web服務(wù)器支撐在分層文件系統(tǒng)中隱式地查詢數(shù)據(jù)。</p><p> 通過(guò)這種方式訪問(wèn)資源是相對(duì)容易的、直觀的,但是隨著web應(yīng)用程序變得更復(fù)雜,我們需要更好的系統(tǒng)的產(chǎn)生。為了解決這
39、個(gè)問(wèn)題,我們可以用一種方法來(lái)配置web服務(wù)器和開(kāi)發(fā)框架,這種方法使用獨(dú)一無(wú)二的方式來(lái)說(shuō)明結(jié)果、訪問(wèn)資源。</p><p> 這些系統(tǒng)被稱(chēng)為URL映射或URL路由系統(tǒng)。這項(xiàng)技術(shù)也被稱(chēng)為URL美化,它幫助開(kāi)發(fā)人員開(kāi)發(fā)命令和精密的URLs數(shù)據(jù),使得用戶和搜索引擎能夠更好地處理它們。</p><p> 我們的系統(tǒng)是基于“控制器/動(dòng)作/參數(shù)”范式建立的,但是它也允許開(kāi)發(fā)人員配置他們自己的靜態(tài)路由
40、。</p><p> 訪問(wèn)控制在路由層,這是為了減少不必要的處理時(shí)間。</p><p><b> 快速原型</b></p><p> 在web應(yīng)用程序開(kāi)發(fā)的世界里,很多應(yīng)用程序似乎被多次使用。舉個(gè)例子,web表單就是個(gè)經(jīng)常被使用的工具,表格和列表也同樣如此。但總是從零開(kāi)始開(kāi)發(fā)它們是很困難的,因?yàn)樗膶?shí)現(xiàn)需要編寫(xiě)很多復(fù)雜的代碼。</p
41、><p> 每個(gè)系統(tǒng)都能受益于快速原型組件,快速原型組件不僅可以快速生成這些工具,還能為表單的數(shù)據(jù)驗(yàn)證提供方法。</p><p> 當(dāng)這些工具和ORM系統(tǒng)相結(jié)合,用很少的幾行代碼為基礎(chǔ)開(kāi)發(fā)一個(gè)CRUD系統(tǒng),這確實(shí)是很有用的。</p><p> 如上所述的觀點(diǎn),我們的系統(tǒng)是基于一個(gè)靈活的完全透明的模版引擎,這使得前端和后端開(kāi)發(fā)人員共同受益。</p>&
42、lt;p><b> 系統(tǒng)方案概述</b></p><p> 我們的平臺(tái)方案用一個(gè)簡(jiǎn)單的包將以上所述的所有方面統(tǒng)一了起來(lái),這個(gè)包是強(qiáng)大且易于使用和維護(hù)的。</p><p> 上述結(jié)構(gòu)描述如下。數(shù)據(jù)源可以是任何類(lèi)型的數(shù)據(jù)庫(kù)。ORM系統(tǒng)是一個(gè)專(zhuān)門(mén)為最著名的數(shù)據(jù)庫(kù)管理系統(tǒng)開(kāi)發(fā)的類(lèi)的集合。一個(gè)主要的類(lèi)為被使用的DBMS中一般類(lèi)型的表提供基本的映射,關(guān)系和管理。關(guān)系應(yīng)
43、該被映射成一種允許使用面向?qū)ο蟮姆绞絹?lái)獲取相關(guān)的數(shù)據(jù),而不是由開(kāi)發(fā)人員編寫(xiě)復(fù)雜的查詢代碼。預(yù)先加載和延遲加載都應(yīng)該被考慮到。</p><p> 模型被構(gòu)建成一個(gè)ORM主類(lèi)的子類(lèi),這個(gè)類(lèi)繼承自主類(lèi)。此外,模型有很多獨(dú)一無(wú)二的功能,這些功能將現(xiàn)實(shí)生活中的對(duì)象模型化。</p><p> 控制器是一個(gè)用于處理模型查詢,訪問(wèn)安全以及路由解析的基類(lèi)??刂破鞅粯?gòu)建成基礎(chǔ)控制器的子類(lèi),繼承它的功能函數(shù)
44、,并且有與應(yīng)用程序邏輯相關(guān)的所使用到的行為。</p><p> 快速原型系統(tǒng)是一組類(lèi)的集合,這些類(lèi)允許開(kāi)發(fā)人員去開(kāi)發(fā)復(fù)雜的HTML對(duì)象,比如表單,表格,而不需要編寫(xiě)HTML代碼。表達(dá)應(yīng)該提供數(shù)據(jù)驗(yàn)證功能,表格則應(yīng)該實(shí)現(xiàn)排序和嵌套。快速原型系統(tǒng)應(yīng)該提供類(lèi)DOM操作功能來(lái)訪問(wèn)數(shù)據(jù)。</p><p> 圖 3. MVC結(jié)構(gòu)概述.</p><p> 視圖是一個(gè)包含所有
45、顯示邏輯的基類(lèi)。視圖被構(gòu)建成主類(lèi)的子類(lèi),應(yīng)該跟特殊的行為和控制器綁定。為了性能原因,視圖應(yīng)該被預(yù)渲染,應(yīng)該支持緩存。為了代碼重用,視圖系統(tǒng)依賴于模版系統(tǒng)和局部模版系統(tǒng)。</p><p><b> 結(jié)論</b></p><p> 基于上述的概述,我們建立一個(gè)堅(jiān)實(shí)的框架,能夠大幅減少web應(yīng)用程序開(kāi)發(fā)所用的時(shí)間,能夠讓開(kāi)發(fā)人員專(zhuān)注于應(yīng)用程序特定功能的開(kāi)發(fā),而不是浪費(fèi)時(shí)
46、間在嘗試實(shí)現(xiàn)眾所周知的模式和實(shí)踐上。</p><p> Web技術(shù)在很短的時(shí)間里走過(guò)了相當(dāng)長(zhǎng)的路程,web應(yīng)用程序的市場(chǎng)也在不斷壯大。我們的系統(tǒng)能夠幫助開(kāi)發(fā)人員提高他們的工作速度和質(zhì)量,為初學(xué)者和有經(jīng)驗(yàn)的用戶提供一個(gè)不錯(cuò)的工作框架和平臺(tái)。</p><p> 我們已經(jīng)開(kāi)發(fā)了很多使用平臺(tái)提供的表單組件的應(yīng)用程序,這些應(yīng)用程序顯示出我們正在開(kāi)發(fā)的系統(tǒng)正處于正確的軌道,同時(shí),告訴我們一個(gè)有價(jià)值
47、的信息就是,仍然有待提高。</p><p><b> 深入研究</b></p><p> 在這一領(lǐng)域,我們未來(lái)研究的重點(diǎn)是,提高對(duì)各種NoSQL系統(tǒng)的可用的支持,因?yàn)槲覀冋J(rèn)為這個(gè)領(lǐng)域?qū)?huì)是未來(lái)IT界最有前景的領(lǐng)域。同時(shí),我們的目標(biāo)是通過(guò)合并數(shù)據(jù)和視圖的緩存技術(shù)來(lái)提高渲染引擎的速度。</p><p> 另外重要的一步,就是創(chuàng)建開(kāi)源社區(qū)項(xiàng)目,
48、以此來(lái)開(kāi)發(fā)更多的測(cè)試用例的應(yīng)用程序,來(lái)生成有效的結(jié)果。這些結(jié)果將被用來(lái)進(jìn)一步優(yōu)化平臺(tái)。同時(shí),我們的目標(biāo)是通過(guò)開(kāi)源社區(qū)支持包的開(kāi)發(fā),以此來(lái)進(jìn)一步擴(kuò)展平臺(tái)。</p><p><b> 致謝</b></p><p> 這份資料是由the European Social Fund通過(guò)Sectorial Operational Program Human Resources
49、 Development 2007-2013資助的,項(xiàng)目POSDRU/107/1.5/S/77213和POSDRU/88/1.2/S/55287,從事于基于歐洲標(biāo)準(zhǔn)的跨領(lǐng)域的經(jīng)濟(jì)研究的博士。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] Trygve Reenska, http:// heim.ifi.uio.no / ~trygver/t
50、hemes/mvc/mvc-index.html.</p><p> [2] Glenn E. Krasner, Stephen T. Pope, “A cookbook for using the model-view controller user interface paradigm in Smalltalk-80”, Journal of</p><p> Object-Ori
51、ented Programming, vol. 1, no. 3, 1988, pp. 26-49.</p><p> [3] Kevin McArthur, Pro PHP: Patterns, Frameworks, Testing and More, Apress, 2008.</p><p> [4] A Freeman, S Sanderson, Pro ASP.NET MV
52、C 3 Framework, Apress, 2011.</p><p> [5] W. J. Gilmore, Easy PHP Websites, Columbus, Ohio: W.J. Gilmore, LLC, 2009.</p><p> [6] J. Galloway, P. Haack, B. Wilson ?i K. S. Allen, Professional AS
53、P.NET MVC 3, John Wiley & Sons, Inc., 2011.</p><p> [7] http://www.agiledata.org/essays/impedanceMismatch.html</p><p> [8] E. J. O'Neil, Object/relational mapping 2008: hibernate and t
54、he entity data model (edm), Proceedings of the 2008 ACM SIGMOD</p><p> international conference on Management of data</p><p> [9] J. Lerman, Programming Entity Framework, O’Reilly, 2010.</p
55、><p> [10] http://www.rapid7.com/solutions/technology/web-application-security.jsp</p><p> [11] J.D. Meier, Alex Mackman, Michael Dunner, Srinath Vasireddy, Ray Escamilla and Anandha Murukan, Imp
56、roving Web Application</p><p> Security: Threats and Countermeasures, Microsoft Press, Iunie 2003.</p><p> [12] http://www.w3.org/People/Berners-Lee/FAQ.html#etc</p><p> [13] Bad
57、urowicz, M, “Mvc Architectural Pattern In Mobile Web-Applications”, Actual Problems Of Economics, 2011, pp.305-309.</p><p> [14] Stratmann, E., & Ousterhout, J.,“Integrating Long Polling with an MVC Web
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2014年--軟件工程外文翻譯--為快速開(kāi)發(fā)web應(yīng)用設(shè)計(jì)一個(gè)MVC模型(譯文).doc
- 2014年--軟件工程外文翻譯--為快速開(kāi)發(fā)web應(yīng)用設(shè)計(jì)一個(gè)MVC模型(譯文).doc
- 2014年--軟件工程外文翻譯--為快速開(kāi)發(fā)web應(yīng)用設(shè)計(jì)一個(gè)mvc模型
- 2014年--軟件工程外文翻譯--為快速開(kāi)發(fā)web應(yīng)用設(shè)計(jì)一個(gè)mvc模型(原文)
- 2014年--軟件工程外文翻譯--為快速開(kāi)發(fā)web應(yīng)用設(shè)計(jì)一個(gè)MVC模型(原文).pdf
- 2014年--軟件工程外文翻譯--為快速開(kāi)發(fā)web應(yīng)用設(shè)計(jì)一個(gè)MVC模型(原文).pdf
- [雙語(yǔ)翻譯]--軟件工程外文翻譯--為快速開(kāi)發(fā)web應(yīng)用設(shè)計(jì)一個(gè)mvc模型
- 2014年--計(jì)算機(jī)軟件工程外文翻譯--為快速開(kāi)發(fā)web應(yīng)用設(shè)計(jì)一個(gè)mvc模型
- [雙語(yǔ)翻譯]--計(jì)算機(jī)軟件工程外文翻譯--為快速開(kāi)發(fā)web應(yīng)用設(shè)計(jì)一個(gè)mvc模型
- 2011年--軟件工程外文翻譯--一個(gè)實(shí)用的日歷系統(tǒng)結(jié)合反復(fù)任務(wù)的模糊模式(譯文)
- (節(jié)選)2014年--外文翻譯--電池模型設(shè)計(jì)一個(gè)高級(jí)多功能的電池管理系統(tǒng)(譯文)
- 開(kāi)源框架spring快速開(kāi)發(fā)j2ee web應(yīng)用一個(gè)案例研究-外文翻譯
- 2015年--軟件工程外文翻譯--使用數(shù)據(jù)服務(wù)來(lái)構(gòu)建一個(gè)開(kāi)放數(shù)據(jù)的可視化網(wǎng)絡(luò)應(yīng)用(譯文).doc
- 2011年--軟件工程外文翻譯--一個(gè)實(shí)用的日歷系統(tǒng)結(jié)合反復(fù)任務(wù)的模糊模式(譯文).docx
- 2011年--軟件工程外文翻譯--一個(gè)實(shí)用的日歷系統(tǒng)結(jié)合反復(fù)任務(wù)的模糊模式(譯文).docx
- (節(jié)選)2014年--外文翻譯--電池模型:設(shè)計(jì)一個(gè)高級(jí)多功能的電池管理系統(tǒng)(譯文).docx
- 軟件工程外文翻譯--python一個(gè)免費(fèi)的開(kāi)源軟件生態(tài)系統(tǒng)的特征識(shí)別
- 外文翻譯-軟件工程
- 軟件工程外文翻譯--python一個(gè)免費(fèi)的開(kāi)源軟件生態(tài)系統(tǒng)的特征識(shí)別
- 軟件工程外文翻譯--python一個(gè)免費(fèi)的開(kāi)源軟件生態(tài)系統(tǒng)的特征識(shí)別
評(píng)論
0/150
提交評(píng)論