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

        ?

        MVC模式在J2EE和.NET中的對比研究

        2011-10-27 03:54:18楊慧北京北大方正軟件技術(shù)學(xué)院
        中國科技信息 2011年24期
        關(guān)鍵詞:頁面數(shù)據(jù)庫模型

        楊慧 北京北大方正軟件技術(shù)學(xué)院

        MVC模式在J2EE和.NET中的對比研究

        楊慧 北京北大方正軟件技術(shù)學(xué)院

        本文針對在多層分布式計(jì)算中,通過對MVC設(shè)計(jì)模式、J2EE及.NET的研究,系統(tǒng)探討了開發(fā)基于網(wǎng)絡(luò)的分布式計(jì)算工程(如企業(yè)級應(yīng)用系統(tǒng))的方法。

        MODEL1;MODEL2;MVC設(shè)計(jì)模式;J2EE;.NET;EJB

        引言

        本文以統(tǒng)計(jì)系統(tǒng)為例,針對統(tǒng)計(jì)系統(tǒng)高效靈活性、可維護(hù)性、可擴(kuò)展性、可復(fù)用性、易用性等需求,通過對多層分布式計(jì)算、MVC模式、J2EE及.NET的研究,系統(tǒng)探討了開發(fā)基于網(wǎng)絡(luò)的分布式計(jì)算工程(如企業(yè)級應(yīng)用系統(tǒng))的方法。

        1、MVC模式思想介紹

        1.1 由傳統(tǒng)的MODEL1發(fā)展到MODEL2

        JAVA WEB應(yīng)用的結(jié)構(gòu)經(jīng)歷了兩個階段,也就是從傳統(tǒng)的M O D E L 1發(fā)展到MODEL2。在MODEL1模式下,整個WEB應(yīng)用全部由JSP頁面組成,JSP頁面接收處理客戶端請求,對請求進(jìn)行處理后可以直接做出響應(yīng),還可以用少量的JAVABEAN來處理數(shù)據(jù)庫連接、數(shù)據(jù)庫訪問等操作,在這種模式里JSP頁面身兼VIEW和CONTROLLER兩種角色,容易將控制邏輯和表現(xiàn)邏輯混雜在一起,使代碼的重用性降低,增加了應(yīng)用的擴(kuò)展性和維護(hù)的難度。由于這種模式的實(shí)現(xiàn)比較簡單、局限性強(qiáng),適合開發(fā)小規(guī)模項(xiàng)目。

        M O D E L 2也就是我們說的M V C(MODEL_VIEW_CONTROL)架構(gòu)的設(shè)計(jì)模式是軟件設(shè)計(jì)的典型模式,它強(qiáng)制性的使應(yīng)用程序的輸入、處理和輸出分開。使用MVC應(yīng)用程序被分成三個核心部件:模型、視圖、控制器。在這種設(shè)計(jì)模式下,MODEL、VIEW和CONTROL三個部分各負(fù)責(zé)不同的功能,并將其劃分成不同功能的邏輯模塊,使模塊間的關(guān)聯(lián)最小化,因此,特別適用于基于網(wǎng)絡(luò)的分布式計(jì)算工程,如企業(yè)級應(yīng)用系統(tǒng)。下面我們來詳細(xì)認(rèn)識一下MVC模式的組成。

        MODEL:模型,在MVC的三個部件中,模型擁有最多的處理任務(wù)。代表應(yīng)用數(shù)據(jù)和控制這些數(shù)據(jù)的商業(yè)邏輯,負(fù)責(zé)處理由控制器傳遞過來的對數(shù)據(jù)的訪問請求,為視圖提供最終用以展現(xiàn)的數(shù)據(jù),為控制部分提供方便的接口。通過模型,視圖可以訪問數(shù)據(jù),并根據(jù)客戶端的要求來顯示數(shù)據(jù)。被模型返回的數(shù)據(jù)是中立的,也就是說模型與數(shù)據(jù)格式無關(guān),這樣一個模型能為多個視圖提供數(shù)據(jù)。由于應(yīng)用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復(fù)性。

        VIEW:視圖,視圖是用戶看到并與之交互的界面,負(fù)責(zé)如何具體的展現(xiàn)模型的內(nèi)容。當(dāng)模型發(fā)生變化時,視圖將負(fù)責(zé)保持界面的一致性,并同時改變顯示的數(shù)據(jù)。對老式的Web應(yīng)用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應(yīng)用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術(shù)已層出不窮。如何處理應(yīng)用程序的界面變得越來越有挑戰(zhàn)性。MVC的好處之一是它能為你的應(yīng)用程序處理很多不同的視圖。視圖也負(fù)責(zé)將用戶的交互信息傳遞給控制部分。在視圖中其實(shí)沒有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機(jī)存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。

        CONTROL:控制部分,處在視圖和模型之間,接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。負(fù)責(zé)處理用戶請求和數(shù)據(jù)同步,是一系列接收用戶動作(比如鼠標(biāo)和鍵盤的事件)的對象。結(jié)合模型和視圖,把客戶端的請求轉(zhuǎn)換成模型能夠理解并執(zhí)行的請求,并且根據(jù)請求以及執(zhí)行結(jié)果決定其后所要顯示的視圖。在傳統(tǒng)的圖形用戶界面,控制部分包括按鈕,菜單等等。在WEB應(yīng)用程序中,可以是對HTTP請求的GET或者POST方法?;谟脩舻恼埱蠛湍P偷男枰刂撇糠重?fù)責(zé)選擇相應(yīng)的視圖將數(shù)據(jù)展現(xiàn)給用戶。

        以上三者的關(guān)系在應(yīng)用中我們說是相互關(guān)聯(lián)和控制的,程序利用三種模型的關(guān)系來更好的實(shí)現(xiàn)模塊的耦合。

        圖1 M V C應(yīng)用程序中模型、視、控制器三部分的關(guān)系

        綜上所述,在M O D E L 2架構(gòu)中,SERVLET作為前端控制器,負(fù)責(zé)接收客戶端發(fā)送的請求,在SERVLET中只包含控制邏輯和簡單的前端處理;然后調(diào)用后端JAVABEAN來完成實(shí)際的邏輯處理;最后,轉(zhuǎn)發(fā)到相應(yīng)的JSP頁面處理顯示邏輯。我們從圖中可以看到,在MODEL2下JSP不再承擔(dān)控制器的責(zé)任,它僅僅是表現(xiàn)層角色,僅僅將結(jié)果呈現(xiàn)給用戶,JSP頁面的請求與SERVLET交互,而SERVLET負(fù)責(zé)與后臺的JAVABEAN通信,也就是說MODEL由JAVABEAN充當(dāng),VIEW由JSP頁面充當(dāng),而CONTROL由SERVLET充當(dāng)。所以MVC更適合大規(guī)模軟件的開發(fā),但出增加了應(yīng)用開發(fā)的復(fù)雜程度。

        1.2 MVC設(shè)計(jì)模式在軟件開發(fā)中的優(yōu)勢

        MVC并不是JAVA語言所特有的設(shè)計(jì)思想,也并不是WEB應(yīng)用所特有的思想,它是所有面向?qū)ο蟪绦蛟O(shè)計(jì)語言都應(yīng)該遵守的規(guī)范。

        MVC給出了一個耦合松散的架構(gòu)。對于MVC分別對應(yīng)的三部分功能來講,用戶界面發(fā)生變動的可能性最大,控制部分變動次之,而業(yè)務(wù)邏輯相對是比較穩(wěn)定的。通過使視圖完全獨(dú)立于控制部分和模型,可以輕松替換前端客戶程序。將控制部分和模型分開可以在不影響模型的情況下改變控制器,也可以在不影響控制部分的情況下改變模型。所以采用這種設(shè)計(jì)模式,不論在哪一部分發(fā)生改變,都能夠以最小的代價使系統(tǒng)能夠平穩(wěn)過渡,不至于造成全局功能實(shí)現(xiàn)上的混亂,而且程序整體上結(jié)構(gòu)清晰,性能穩(wěn)定可靠,更易維護(hù),伸縮性好,易于擴(kuò)展、維護(hù)和代碼重用,更有利于在項(xiàng)目組內(nèi)按照成員各自的擅長進(jìn)行分工,使三個部分可以并行開發(fā),加快項(xiàng)目進(jìn)度,簡言之,以更快的速度開發(fā)更好的軟件。

        從設(shè)計(jì)模式的角度來看,MVC思想非常類似于觀察者模式,但與觀察者模式存在少許差別:觀察者模式下觀察者和被觀察者可以是兩個互相對等的對象,但對于MVC思想而言,被觀察者往往只是單純數(shù)據(jù)體,而觀察者則是單純的視圖頁面。

        2、J2EE體系結(jié)構(gòu)中的MVC

        基于組件的J2EE平臺提供了支持MVC設(shè)計(jì)模式很好的開發(fā)環(huán)境。模型可以通過EJB實(shí)現(xiàn);視圖可以通過HTML頁面、JSP頁面及功能強(qiáng)大的applet展示給用戶; 控制部分則是 servlet、Java Bean 或 session bean 類。其模塊間的通信協(xié)議采用RMI/IIOP,數(shù)據(jù)庫連接部分是JDBC,運(yùn)行環(huán)境是Java虛擬機(jī)(Java Virtual Machine),其中間語言是Java Byte Code。

        模型部分,編寫業(yè)務(wù)邏輯時,可以將完成這些功能的業(yè)務(wù)邏輯放置在EJB中,這樣,我們就可以將精力集中在解決關(guān)鍵的業(yè)務(wù)邏輯問題上,而利用enterprise bean容器來支持低層服務(wù),如安全,線程管理,事務(wù)管理,狀態(tài)管理,遠(yuǎn)程數(shù)據(jù)訪問等。將業(yè)務(wù)邏輯與低層系統(tǒng)邏輯分開使容器可以在運(yùn)行時創(chuàng)建和管理enterprise bean,而按照規(guī)范編寫的任何enterprise bean,都可以根據(jù)其在特定J2EE應(yīng)用程序中的使用情況來對其事務(wù)管理或安全屬性進(jìn)行配置,并可以輕松的部署到任何一個符合規(guī)范的容器中,也就是說,不必改變代碼,也不必重新編譯enterprise bean,即可實(shí)現(xiàn)組件重用。Enterprise bean 由接口和類組成。客戶端程序通過enterprise bean的home接口和遠(yuǎn)程接口來訪問enterprise bean的方法。Home 接口提供了創(chuàng)建、刪除和定位enterprise bean 的方法,而遠(yuǎn)程接口則提供了實(shí)現(xiàn)業(yè)務(wù)邏輯的方法。在部署時,容器由這些接口來創(chuàng)建類,使客戶能夠創(chuàng)建、刪除、定位或調(diào)用位于enterprise bean 上的業(yè)務(wù)邏輯方法。Enterprise beans有兩種:session bean和entity bean。前者代表與客戶程序的一個短暫的會話,也可執(zhí)行數(shù)據(jù)庫讀寫操作,其內(nèi)容包含會話狀態(tài),而且是短暫的。如果服務(wù)器或者客戶程序崩潰,該session bean 就會丟失。Session beans 可以是有狀態(tài)的,也可以是無狀態(tài)的。一個有狀態(tài)的session b e a n包含客戶程序的會話狀態(tài)。有狀態(tài)session bean并不代表在一個持久數(shù)據(jù)存儲中的數(shù)據(jù),但是它可以代表客戶程序訪問和更新數(shù)據(jù)。無狀態(tài)session bean沒有用于某個特定客戶程序的任何狀態(tài)信息,因此通常用于提供不保持任何特定狀態(tài)的服務(wù)器端行為。entity bean代表一個數(shù)據(jù)庫中的數(shù)據(jù)及作用于該數(shù)據(jù)的方法。在關(guān)系型數(shù)據(jù)庫中,每行數(shù)據(jù)都由一個bean 來代表。entity beans 是事務(wù)性的,并且是長壽命的,只要數(shù)據(jù)留在數(shù)據(jù)庫中,entity bean 就存在,因此可以被很容易地用于關(guān)系型數(shù)據(jù)庫,而不僅限于對象數(shù)據(jù)庫。

        視圖部分,如果應(yīng)用的是HTML頁面,略懂計(jì)算機(jī)的人就可以更新它。如果使用的是JSP 頁面,將控制器的代碼放到一個Java Bean 或session bean類中,或使用動作標(biāo)記(action tags),這樣,JSP 頁面就可以僅包含JSP 代碼。視圖部分也包括applet和各種腳本語言,功能強(qiáng)大而且界面友好易用。

        控制部分,通常是在servlet中實(shí)現(xiàn)的。Servlet是一種獨(dú)立于平臺和協(xié)議的服務(wù)器端的Java應(yīng)用程序,可以生成動態(tài)的Web頁面。與傳統(tǒng)的從命令行啟動的Java應(yīng)用程序不同,Servlet由Web服務(wù)器進(jìn)行加載,該Web服務(wù)器必須包含支持Servlet的Java虛擬機(jī)。盡管JSP文件最終也將編譯成servlet,但從整個系統(tǒng)的角度來講,用servlet實(shí)現(xiàn)控制部分將使系統(tǒng)結(jié)構(gòu)清晰,各個部分銜接會更好。

        綜合我們對J2EE應(yīng)用的了解,我們知道對于大型軟件系統(tǒng)開發(fā),采用J2EE應(yīng)用架構(gòu)則有很大的優(yōu)勢。

        3、.NET平臺體系結(jié)構(gòu)中的MVC

        .NET同樣提供了出色的實(shí)現(xiàn)這種設(shè)計(jì)模式的規(guī)范和集成開發(fā)環(huán)境,以asp.net為例,我們可以在.ASPX文件中開發(fā)用戶接口來實(shí)現(xiàn)視圖,控制部分在邏輯功能代碼(code-behind)文件(如*.aspx.vb或者*.aspx.cs)中實(shí)現(xiàn),模型可以通過程序代碼實(shí)現(xiàn)(如*.cs),程序代碼最終都打包成COM+組件,相比原來的ASP解釋執(zhí)行,大大提升了性能。其模塊間的通信協(xié)議通常是DCOM或者SOAP,數(shù)據(jù)庫連接部分采用ADO.NET,運(yùn)行環(huán)境是Common Language Runtime,其中間語言是MSIL。

        將數(shù)據(jù)展現(xiàn)從控制部分中分離出來提高了代碼的重用性,而將模型從對其操作的控制部分分離出來可以設(shè)計(jì)一個與后臺存儲數(shù)據(jù)無關(guān)的系統(tǒng),也就是說,提供給模型的數(shù)據(jù)是存儲在SQL Server或是Oracle數(shù)據(jù)庫中,還是存儲在一組XML文檔中,對于基于MVC設(shè)計(jì)模式的系統(tǒng)將是透明的。

        性能方面,盡管從控制部分和視圖中訪問模型是獨(dú)立于具體數(shù)據(jù)庫的,但并不意味著模型不能被優(yōu)化。因?yàn)锳DO Data Set不關(guān)心數(shù)據(jù)源,通過采用數(shù)據(jù)庫專有的優(yōu)點(diǎn)不用打破這種模式就可以提高系統(tǒng)性能。例如,相比在控制部分代碼文件中使用嵌入的SQL Select語句,我們可以使用存儲過程根據(jù)其參數(shù)返回?cái)?shù)值,效果會好很多,因?yàn)榇鎯^程不僅僅是被數(shù)據(jù)庫中預(yù)編譯好的,它們還有一個預(yù)先確定的執(zhí)行路徑,所以其執(zhí)行得更快,效率更高。

        模型在數(shù)據(jù)訪問時,我們可將所有的代碼合并在一個單獨(dú)的數(shù)據(jù)訪問對象中,由它來完成該系統(tǒng)所有的數(shù)據(jù)訪問。集中的數(shù)據(jù)訪問提升了代碼重用性,更重要的是,通過使用實(shí)際容量設(shè)置連接可以保證應(yīng)用程序使用連接池,從而提高效率。

        控制器部分,.NET通常直接地請求服務(wù)。取代身為子控制器的一個服務(wù),它是進(jìn)入ASP.NET應(yīng)用程序的主要切入點(diǎn)。

        4、結(jié)論

        以MVC設(shè)計(jì)模式為出發(fā)點(diǎn),結(jié)合J2EE和.NET的相應(yīng)特點(diǎn),我們總結(jié)出如表1所示:

        表1 MVC在J2EE和.NET中的實(shí)現(xiàn)方法

        綜上所述,可以得出結(jié)論:

        通過對多層分布式計(jì)算,結(jié)合MVC的設(shè)計(jì)思想,充分利用J2EE架構(gòu)的優(yōu)勢,使統(tǒng)計(jì)系統(tǒng)結(jié)構(gòu)清晰,穩(wěn)定高效,易維護(hù),易擴(kuò)展;滿足了統(tǒng)計(jì)系統(tǒng)高效靈活性、可維護(hù)性、可擴(kuò)展性、可復(fù)用性、易用性等需求。在開發(fā)基于網(wǎng)絡(luò)的分布式計(jì)算工程(如企業(yè)級應(yīng)用系統(tǒng))的時候,充分考慮到了系統(tǒng)將來的可擴(kuò)充性以及可移植性,以便系統(tǒng)的進(jìn)一步完善。

        10.3969/j.issn.1001-8972.2011.24.041

        楊慧,女,副教授,清華大學(xué)在職研究生,現(xiàn)在北京北大方正軟件技術(shù)學(xué)院擔(dān)任教師。

        猜你喜歡
        頁面數(shù)據(jù)庫模型
        大狗熊在睡覺
        一半模型
        刷新生活的頁面
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
        數(shù)據(jù)庫
        3D打印中的模型分割與打包
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        日本精品女优一区二区三区| 国产精品一区二区无线| 免费观看又污又黄的网站| 欧美白人最猛性xxxxx| 三级全黄的视频在线观看| 青青草视频免费在线播放| 成人免费播放视频777777| 俄罗斯老熟妇色xxxx| 国产亚洲av人片在线观看| 另类亚洲欧美精品久久不卡| 国产精品一区二区久久毛片| 女同同志熟女人妻二区| 亚洲精品国偷拍自产在线| 丁字裤少妇露黑毛| 激情婷婷六月| 亚洲高清国产拍精品熟女| 国产一区二区视频在线免费观看| 夜鲁很鲁在线视频| 99精品成人片免费毛片无码| 久久久久久AV无码成人| av手机天堂在线观看| 亚洲国产中文字幕视频| 性生交大全免费看| 波多野结衣国产一区二区三区| 亚洲九九夜夜| 一区二区午夜视频在线观看| 亚洲av成人精品一区二区三区| 制服丝袜中文字幕在线| 国产草草视频| 日本久久一级二级三级| 精品日本一区二区三区| 肥老熟妇伦子伦456视频| 狠狠色丁香久久婷婷综合蜜芽五月 | 日本韩国一区二区高清| 中国人在线观看免费的视频播放| 爽爽精品dvd蜜桃成熟时电影院| 国产片AV在线永久免费观看| 天堂精品人妻一卡二卡| 亚洲av成人无码一区二区三区在线观看| 内射后入在线观看一区| 人妻av一区二区三区av免费 |