国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Web 應(yīng)用程序模型及其Java實現(xiàn)之第三部分

2019-11-18 11:27:47
字體:
供稿:網(wǎng)友

  第三部分:MVCD模型

  在上一節(jié)中,從一般的原則上介紹了兩種Web應(yīng)用模型,但是如何理解和把握這樣的模型,將不同的Web技術(shù)正確應(yīng)用到Web程序不同的功能模塊中是一個非常實際的話題。下面就在實際編程中如何去把握Web編程模型做一些分析。

  1、兩層客戶/服務(wù)器模型

  Web應(yīng)用程序天生是一種客戶/服務(wù)器應(yīng)用程序,在asp(application Service PRovider)逐漸成為Internet應(yīng)用發(fā)展的一個重要方向的時候,使用哪一種編程模型來實現(xiàn)Web應(yīng)用程序還處于探索之中。上面介紹的微軟的DNA結(jié)構(gòu)和java編程結(jié)構(gòu)就是人們在ASP(Application Service Provider)編程模型上進(jìn)行探索的結(jié)果,但是由于這些技術(shù)出現(xiàn)比較新、把握起來也有一些難度,所以許多編程人員采用了使用ASP或是jsp中嵌入“SQL”來實現(xiàn)數(shù)據(jù)存取和一些相關(guān)邏輯,如圖11所示。

  這樣的編程模型有對一些小型系統(tǒng)比較合適,因為不需要太復(fù)雜的技術(shù),技術(shù)人員比較好找,實現(xiàn)起來也比較快。但是,這種編程模型缺點還是比較明顯的:維護(hù)困難、重用困難、大型系統(tǒng)中難以治理。

  要解決該模型問題的要害是,將邏輯層抽象出來。但是,在以數(shù)據(jù)中心編程中,數(shù)據(jù)庫不但提供基本的數(shù)據(jù)存取功能,而且與SQL豐富的表達(dá)能力一起提供強(qiáng)大的邏輯表達(dá)能力;再上節(jié)介紹的圖9、圖10所示兩種模型把握起來有一些難度,所以出現(xiàn)了該模型的一個改良版本。


  組成在該改良的模型中,為數(shù)據(jù)庫中的主要的表都建立了一個類,JSP/ASP通過該類實現(xiàn)對數(shù)據(jù)庫表的操作。這個模型一個方面實現(xiàn)了SQL語句封裝,方便了程序的維護(hù);另一個方面也提高了系統(tǒng)的重用性,即對Table類的重用。

  但是,由于大多數(shù)數(shù)據(jù)庫操作都是針對多數(shù)據(jù)表的操作,假如采用單表的方式來完成邏輯,未免有些浪費數(shù)據(jù)庫與SQL的邏輯功能。另外,由于系統(tǒng)沒有實現(xiàn)邏輯層的抽象,不能解決上面提高要害問題。

  2、MVC模型的介紹

  在傳統(tǒng)的面向?qū)ο缶幊讨校覀冊?jīng)接觸過MVC模型。

  在該模型中,應(yīng)用程序分為三個組成部分:

  View: 這是用戶界面部分,與Web應(yīng)用程序一樣,主管應(yīng)用程序與人之間的接口:一個方面它為用戶提供了輸入手段,并觸發(fā)應(yīng)用邏輯運行;另一個方面,它又將邏輯運行的結(jié)果以某種形式顯示給用戶。

  Controller: 該部分是用戶界面與Model的接口;一個方面它解釋來自于view的輸入,將其解釋成立系統(tǒng)能夠理解的對象,同時它也識別用戶動作,并將其解釋對Model特定方法的調(diào)用;另一個方面,它也處理來自于Model的事件和Model邏輯執(zhí)行的結(jié)果,調(diào)用適當(dāng)View為用戶提供反饋。

  Model: 這是整個模型的核心,它表示的是解決方案空間的真正的邏輯。它采用面向?qū)ο蟮姆椒ǎ瑢栴}領(lǐng)域中的對象抽象為應(yīng)用程序?qū)ο蟆T谶@些抽象的對象中封裝了對象的屬性和這些對象所隱含的邏輯。

  上面所示的編程模型中,在應(yīng)用程序執(zhí)行過程中,數(shù)據(jù)就保存在Model的實例中,也就是保存在內(nèi)存中。當(dāng)用戶需要保存執(zhí)行的結(jié)果時,將模型中的數(shù)據(jù)保存為特定格式的文件。在用Java實現(xiàn)模型時,可以直接使用Java對象的Serializable特性來保存對象。這種模型適合一些工具軟件的開發(fā),如Case工具或是CAD工具。這些工具軟件所具有一個共同特征是模型本身比較復(fù)雜、數(shù)據(jù)量不大而且是單用戶單模型實例操作。

  Web應(yīng)用程序有著與工具類應(yīng)用程序不同的特點:數(shù)據(jù)量大、多用戶并行操著。假如象上面一樣采用面向?qū)ο竽P停瑒t往往是多模型實例同時存在,上面的模型不再適合于這樣的Web應(yīng)用程序。

  雖然MVC模型不適用于Web應(yīng)用,但是它為Web應(yīng)用程序的開發(fā)提供了一些借鑒意義。再該模型中提供了對模型的抽象,也就是邏輯的抽象。假如改良該模型,在內(nèi)存中不保留對象的屬性值,并且增加一個數(shù)據(jù)層,將模型與數(shù)據(jù)庫連接起來,可能是一個好辦法。

  如何用Java實現(xiàn)圖14所示的MVCD模型

  3、WCS、MPE模型介紹

  圖15所示的是在WCS和MPE中所采用的編程模型。該編程模型將JSP、Servlet、JavaBean和JDBC技術(shù)有機(jī)的結(jié)合在一起,基本上實現(xiàn)了圖14所示的MVCD模型。

  JSP:JSP在本模型中主要起著用戶界面的功能,掌管所有的輸入和輸出。在該部分中所使用的技術(shù)包括。

  Html:用戶從瀏覽器上所看見的內(nèi)容主要是以HTML的形式提供的,只是有一些內(nèi)容是靜態(tài)的,而有一些內(nèi)容是由JSP動態(tài)產(chǎn)生的。

  Applet:這是一種客戶端程序技術(shù),它作為一種可以獨立運行的程序模塊嵌入到HTML中。

  Java Script:這里的Java Script指的是客戶端腳本技術(shù),主要在客戶端提供一些動態(tài)功能和實現(xiàn)輸入格式的檢查。

  JSP:這是一種在服務(wù)器端執(zhí)行的腳本技術(shù),它的主要功能是接受服務(wù)器端邏輯運算的結(jié)果,動態(tài)的生成HTML作為對瀏覽器端請求的響應(yīng)。

  IC (Interaction Controller):IC是以Servlet技術(shù)實現(xiàn)的。IC是介于事務(wù)邏輯和用戶界面之間的一個層次,該層主要起用戶界面和事務(wù)邏輯之間的樞紐作用。從JSP上接受的用戶輸入,因為是以HTTP請求的形式發(fā)送到服務(wù)器端,該HTTP請求的具體內(nèi)容是什么、它提供了哪些參數(shù)需要在服務(wù)器端進(jìn)行解析,然后才能決定為了響應(yīng)該請求要執(zhí)行什么事務(wù)邏輯;事務(wù)邏輯在執(zhí)行完成之后,作為對某個用戶請求的響應(yīng),它需要將執(zhí)行的結(jié)果以HTTP響應(yīng)的形式發(fā)送到客戶端。IC正是起著上面所示的兩種作用的程序單元,它一個方面響應(yīng)來自于JSP的請求,并將其解釋為制定的Command調(diào)用;另一個方面它將Command執(zhí)行的結(jié)果傳遞給特定的JSP并調(diào)用該JSP作為給用戶的響應(yīng)。

  Command:Command是以JavaBeans技術(shù)實現(xiàn)的。在一個應(yīng)用程序中,比較穩(wěn)定且起著核心作用的是事務(wù)邏輯,而Command就是用來實現(xiàn)事務(wù)邏輯的。在這樣的Web應(yīng)用程序中,將系統(tǒng)的事務(wù)邏輯封裝成許多獨立的 Command,這些Command一個方面作為對IC的響應(yīng),另一個方面它完成了邏輯與數(shù)據(jù)庫對象PO的結(jié)合。

  PO:這是一個非凡的Java Class,它在該模型中起著應(yīng)用與數(shù)據(jù)庫之間的橋梁作用。Web應(yīng)用程序大多都有豐富的數(shù)據(jù),都需要與數(shù)據(jù)庫進(jìn)行連接。Command對數(shù)據(jù)庫進(jìn)行調(diào)用所需的基本功能都封裝在PO中。

  DataBean:如圖所示,JSP、IC、Command與PO之間是一種功能提供者與調(diào)用者之間的關(guān)系,那么如何傳遞參數(shù)呢。DataBean便是這樣的一個解決方案,它將這些功能模塊間傳遞的參數(shù)抽象成對象。

  4、對JICPD模型的改進(jìn)(JIMPD)

  在圖15所示的模型中,系統(tǒng)抽象出了邏輯層,即Command層。但是,系統(tǒng)并沒有將其所有的Command和DataBean有機(jī)的整合起來,即開發(fā)者看不見一個完整的對象模型,我認(rèn)為這對面向?qū)ο蟮拈_發(fā)是一個損失。因為,假如一個好的面向?qū)ο竽P停坏珵閿?shù)據(jù)庫的設(shè)計提供依據(jù),而其也為Command的設(shè)計和組織提供了一個依據(jù),并且也將數(shù)據(jù)庫與Command的關(guān)系完整的表達(dá)出來。所以提高該模型性能的要害就是增加一個模型層,將Command與Databean封裝在模型中。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 修武县| 蕉岭县| 崇义县| 伊宁县| 梅河口市| 中西区| 栖霞市| 甘肃省| 历史| 沭阳县| 鹤庆县| 三台县| 绥宁县| 广饶县| 乌海市| 焉耆| 庄河市| 吴旗县| 武汉市| 唐山市| 锡林浩特市| 定安县| 五常市| 郎溪县| 隆昌县| 即墨市| 武山县| 林西县| 西峡县| 石楼县| 奈曼旗| 教育| 游戏| 商水县| 台东县| 张家川| 丰城市| 富蕴县| 唐山市| 安平县| 克山县|