国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

J2EE多層模型研究

2017-03-28 15:33:03賈素來(lái)
山東工業(yè)技術(shù) 2017年4期

摘 要:J2EE為搭建分布式系統(tǒng)提供了良好的整套機(jī)制。典型的J2EE結(jié)構(gòu)的應(yīng)用程序包括四層:客戶(hù)層、表示邏輯層、業(yè)務(wù)邏輯層和企業(yè)信息系統(tǒng)層,每一層多有核心技術(shù)對(duì)其開(kāi)發(fā)提供支持,比如Servlets、EJB、JDBC、JNDI、Java RMI等。MVC設(shè)計(jì)模式是目前最流行的J2EE開(kāi)發(fā)模式,而Struts技術(shù)已經(jīng)成為實(shí)現(xiàn)該模式的最流行框架方案。

關(guān)鍵詞:多層體系結(jié)構(gòu); J2EE; MVC; Struts

DOI:10.16640/j.cnki.37-1222/t.2017.04.184

0 引言

針對(duì)傳統(tǒng)的客戶(hù)機(jī)/服務(wù)器體系結(jié)構(gòu)的種種缺點(diǎn),計(jì)算機(jī)科學(xué)家提出了三層或多層分布式系統(tǒng)模型[1]。隨著不斷改進(jìn)和發(fā)展,多層分布式系統(tǒng)逐漸形成了三種具有代表性的主流技術(shù),即CORBA、COM/DCOM和J2EE(Java2 Platform Enterprise Edition)。J2EE為搭建具有可伸縮性、靈活性、易維護(hù)性的分布式系統(tǒng)提供了良好的整套機(jī)制。

1 多層體系結(jié)構(gòu)模型

三層架構(gòu)就是將整個(gè)系統(tǒng)業(yè)務(wù)應(yīng)用劃分為三個(gè)層次,即:客戶(hù)層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪(fǎng)問(wèn)層。業(yè)務(wù)邏輯層又可由多個(gè)子層組成,具體要看系統(tǒng)的復(fù)雜程度。這樣就形成了多層分布式體系結(jié)構(gòu),分布性可以體現(xiàn)在軟件上,也可以是硬件,具體模型如圖1所示。

多層體系結(jié)構(gòu)模型將表示和業(yè)務(wù)處理分開(kāi),縮減了客戶(hù)端的規(guī)模,又將相關(guān)業(yè)務(wù)和資源分開(kāi),降低了服務(wù)器的負(fù)載,避免了服務(wù)器的性能缺陷對(duì)整個(gè)系統(tǒng)性能的影響。這種在多個(gè)服務(wù)器上分布應(yīng)用程序處理的多層可變結(jié)構(gòu)比二層體系結(jié)構(gòu)的伸縮性和擴(kuò)展性有了很大加強(qiáng)。同時(shí)多層體系結(jié)構(gòu)解決了客戶(hù)機(jī)/服務(wù)器結(jié)構(gòu)的維護(hù)成本問(wèn)題,改善客戶(hù)機(jī)/服務(wù)器結(jié)構(gòu)延展性問(wèn)題??蛻?hù)機(jī)/服務(wù)器結(jié)構(gòu)支持的用戶(hù)人數(shù)有一定限額,這種結(jié)構(gòu)限制了internet/intranet及電子商務(wù)的發(fā)展。

2 J2EE多層模型

為實(shí)現(xiàn)企業(yè)級(jí)分布式應(yīng)用,J2EE定義了豐富的技術(shù)標(biāo)準(zhǔn)、符合標(biāo)準(zhǔn)的開(kāi)發(fā)工具和API為開(kāi)發(fā)企業(yè)級(jí)應(yīng)用提供技術(shù)支持,這些技術(shù)涵蓋數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)、分布式通信和安全等。

2.1 J2EE多層模型介紹

J2EE是一個(gè)基于Java的適合服務(wù)器端的、結(jié)合了Java Enterprise API的完整的企業(yè)級(jí)應(yīng)用系統(tǒng)開(kāi)發(fā)平臺(tái)或中間件體系結(jié)構(gòu),它通過(guò)提供一組應(yīng)用組件和運(yùn)行時(shí)環(huán)境來(lái)構(gòu)造可伸縮的企業(yè)應(yīng)用。典型的J2EE結(jié)構(gòu)的應(yīng)用程序包括四層:客戶(hù)層、表示邏輯層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪(fǎng)問(wèn)層,如圖2所示[2]。

客戶(hù)端層用來(lái)實(shí)現(xiàn)企業(yè)級(jí)應(yīng)用系統(tǒng)的操作界面和顯示層。表示邏輯層由web服務(wù)器和web組件組成。web組件包括JSP頁(yè)面和servlets。表示邏輯層也可以包括一些JavaBeans,這一層主要用來(lái)處理客戶(hù)請(qǐng)求,調(diào)用相應(yīng)的邏輯模塊,并把結(jié)果以動(dòng)態(tài)網(wǎng)頁(yè)的形式返回到客戶(hù)端。業(yè)務(wù)邏輯層也叫ejb層或應(yīng)用層,由ejb服務(wù)器和ejb組件組成,用來(lái)實(shí)現(xiàn)企業(yè)級(jí)信息系統(tǒng)的業(yè)務(wù)邏輯,這是企業(yè)級(jí)應(yīng)用的核心。ejb要運(yùn)行在容器中,容器解決了底層的問(wèn)題,如事務(wù)處理、狀態(tài)管理、多線(xiàn)程、安全管理、資源池等。表示邏輯層和業(yè)務(wù)邏輯層也可以合稱(chēng)中間層。數(shù)據(jù)訪(fǎng)問(wèn)層處理企業(yè)系統(tǒng)軟件,包括企業(yè)基礎(chǔ)系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)及其它遺留的系統(tǒng)。

2.2 J2EE核心技術(shù)

在J2EE中,開(kāi)發(fā)者可以用來(lái)實(shí)現(xiàn)多層結(jié)構(gòu)的核心技術(shù)應(yīng)該包括Servlets、EJB、JDBC、JNDI、Java RMI等[3]。

Java Servlet是一項(xiàng)服務(wù)器端技術(shù),它接收來(lái)自Web瀏覽器的HTTP請(qǐng)求并返回HTTP響應(yīng)。首先,請(qǐng)求被提交給Servlet引擎,然后Servlet引擎執(zhí)行適當(dāng)?shù)腟ervlet,訪(fǎng)問(wèn)響應(yīng)對(duì)象,并向客戶(hù)端返回一個(gè)響應(yīng)。

ejb定義了如何編寫(xiě)服務(wù)器端組件,并為服務(wù)器端組件和管理這些組件的應(yīng)用服務(wù)器之間提供了標(biāo)準(zhǔn)協(xié)議,開(kāi)發(fā)者可以利用這些組件象搭積木一樣建立自己的分布式應(yīng)用程序。ejb并不是一個(gè)單獨(dú)的文件,它由一些類(lèi)、接口、描述文件和其它一些資源文件組成。ejb組件有三種類(lèi)型:會(huì)話(huà)Bean、實(shí)體Bean、消息驅(qū)動(dòng)Bean。會(huì)話(huà)Bean用于管理實(shí)體Bean和其它會(huì)話(huà)Bean的交互、訪(fǎng)問(wèn)資源,通常代表客戶(hù)機(jī)執(zhí)行任務(wù)。實(shí)體Bean用于表示數(shù)據(jù)庫(kù)中的數(shù)據(jù),向JDBC或其它一些后端API經(jīng)常訪(fǎng)問(wèn)的數(shù)據(jù)提供了一個(gè)面向?qū)ο蟮慕涌凇OⅡ?qū)動(dòng)Bean響應(yīng)JMS消息。

JDBC是Java程序與數(shù)據(jù)庫(kù)通信的標(biāo)準(zhǔn)API,使Java開(kāi)發(fā)者能夠用純Java API編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序。和ODBC一樣,JDBC為開(kāi)發(fā)人員隱藏了不同數(shù)據(jù)庫(kù)的不同特性。另外,由于JDBC建立在Java的基礎(chǔ)上,因此還提供了數(shù)據(jù)庫(kù)存取的平臺(tái)獨(dú)立性。

JNDI是Java對(duì)對(duì)象名字和目錄服務(wù)的“中央注冊(cè)表”,管理著對(duì)構(gòu)建分布式應(yīng)用程序所需的核心組件的引用。當(dāng)創(chuàng)建訪(fǎng)問(wèn)遠(yuǎn)程對(duì)象的應(yīng)用程序時(shí),JNDI以查找返回該對(duì)象地址的方式提供對(duì)該對(duì)象的引用。應(yīng)用程序首先在WebLogic Server部署中需要的對(duì)象,而WebLogic Server服務(wù)將返回應(yīng)用程序訪(fǎng)問(wèn)該對(duì)象時(shí)所需要的一切屬性。

遠(yuǎn)程方法調(diào)用(Remote Method Invocation, RMI)大大增強(qiáng)了Java開(kāi)發(fā)分布式應(yīng)用的能力,支持存儲(chǔ)于不同地址空間的程序級(jí)對(duì)象之間彼此進(jìn)行通信,實(shí)現(xiàn)遠(yuǎn)程對(duì)象之間的無(wú)縫調(diào)用。RMI目前使用Java遠(yuǎn)程消息交換協(xié)議JRMP進(jìn)行通信,JRMP是專(zhuān)為Java調(diào)用遠(yuǎn)程對(duì)象制定的協(xié)議。因此,Java RMI具有Java的“Write Once, Run Anywhere”的優(yōu)點(diǎn),用Java RMI開(kāi)發(fā)的應(yīng)用系統(tǒng)可以部署在任何支持Java運(yùn)行環(huán)境的平臺(tái)上。但由于JRMP是專(zhuān)為Java對(duì)象制定的,因此,RMI對(duì)于用非Java語(yǔ)言開(kāi)發(fā)的應(yīng)用系統(tǒng)支持不足,不能與用非Java語(yǔ)言編寫(xiě)的對(duì)象進(jìn)行通信,其實(shí)也可以把它看作是RPC的Java版本。

3 MVC在J2EE中的應(yīng)用

J2EE能使遵從這個(gè)規(guī)定的開(kāi)發(fā)者得到行業(yè)的廣泛支持,使企業(yè)級(jí)應(yīng)用的開(kāi)發(fā)變得簡(jiǎn)單、快速。然而在實(shí)際的開(kāi)發(fā)過(guò)程中,設(shè)計(jì)者往往忽略了Java語(yǔ)言面向?qū)ο蟮奶匦?,模糊了web系統(tǒng)三層之間的界限,從而使整個(gè)系統(tǒng)貌似神離,不能獲得預(yù)期地優(yōu)越的性能。這就要對(duì)J2EE開(kāi)發(fā)模式的理論進(jìn)行探討,目前最流行的就是MVC(Model/View/Controller)設(shè)計(jì)模式,structs、spring、hibernate、JSF等則是實(shí)現(xiàn)MVC模式最流行的框架方案[4]。

設(shè)計(jì)模式就是軟件人員在面向?qū)ο筌浖O(shè)計(jì)中經(jīng)多次驗(yàn)證的成功解的記錄與提煉,是在特定上下文情形下解決一般設(shè)計(jì)問(wèn)題的類(lèi)和相互通信對(duì)象的描述,是針對(duì)問(wèn)題和解的抽象,是對(duì)一系列具有共性的問(wèn)題的完整的解決方案。設(shè)計(jì)模式有效地避免了設(shè)計(jì)損害了系統(tǒng)的復(fù)用性,是可復(fù)用面向?qū)ο筌浖幕A(chǔ)。MVC是一個(gè)強(qiáng)大的模型,基于功能清楚地分開(kāi)了代碼,修改在某一層上的應(yīng)用程序不會(huì)影響到其它層。代碼分布到多個(gè)邏輯層和物理層執(zhí)行,每一層對(duì)應(yīng)于一個(gè)特定的應(yīng)用程序功能,它們之間使用定義明確的、可判定的方式進(jìn)行通信。通過(guò)響應(yīng)用戶(hù)和程序輸入,在層與層之間傳遞信號(hào)和數(shù)據(jù)來(lái)完成應(yīng)用程序的功能。

MVC設(shè)計(jì)模式具有設(shè)計(jì)清晰、易于擴(kuò)展、運(yùn)用可分布的特點(diǎn),因此在構(gòu)建Web應(yīng)用中具有顯著的優(yōu)勢(shì)。MVC可適用于多用戶(hù)的、可擴(kuò)展的、可維護(hù)的、具有很高交互性的系統(tǒng),如電子商務(wù)平臺(tái)、CRM系統(tǒng)和ERP系統(tǒng)等。MVC可以很好的表達(dá)用戶(hù)與系統(tǒng)的交互,可以很方便的用多個(gè)視圖來(lái)顯示多種數(shù)據(jù),從而可以使系統(tǒng)能方便的支持其它新的客戶(hù)端類(lèi)型,如PDA、WAP等。MVC的另一個(gè)好處就是將開(kāi)發(fā)團(tuán)隊(duì)依照專(zhuān)業(yè)技術(shù)方向分開(kāi)。這樣,GUI設(shè)計(jì)專(zhuān)家可以在視圖層工作,負(fù)責(zé)具體功能開(kāi)發(fā)的領(lǐng)域?qū)<以诳刂茖庸ぷ?,?shù)據(jù)庫(kù)專(zhuān)家在模型層工作。這種明確分工可有效提高開(kāi)發(fā)團(tuán)隊(duì)所有成員的效率,從而提高整個(gè)開(kāi)發(fā)團(tuán)隊(duì)的生產(chǎn)能力。

MVC在J2EE下開(kāi)發(fā)已經(jīng)成為了開(kāi)發(fā)的主流模式。目前實(shí)現(xiàn)MVC模式比較好的框架有structs、spring、hibernate、JSF等。這些框架都提供了很好的層次分隔功能,其中Struts技術(shù)是構(gòu)建J2EE分布式程序的最流行框架方案。

Struts的開(kāi)發(fā)模型分model 1和model 2兩種。model 1模式在進(jìn)行快速和小規(guī)模的應(yīng)用開(kāi)發(fā)時(shí)是具有非常大的優(yōu)勢(shì),但是從工程化的角度考慮,它也有一些不足之處,主要在于不方便應(yīng)用擴(kuò)展,以及不利于應(yīng)用系統(tǒng)業(yè)務(wù)的復(fù)用。大型web應(yīng)用必須采用不同的Model 2設(shè)計(jì)模式。Model 2是基于MVC模式的框架,"Model"代表的是應(yīng)用的業(yè)務(wù)邏輯(通過(guò)JavaBean、ejb組件實(shí)現(xiàn)),"View"是應(yīng)用的表示層(由JSP頁(yè)面產(chǎn)生),"Controller"是提供應(yīng)用的處理過(guò)程控制(一般是Servlet)。這種設(shè)計(jì)模型把應(yīng)用邏輯、處理過(guò)程和顯示邏輯分成不同的組件實(shí)現(xiàn),這些組件可以進(jìn)行交互和復(fù)用。Model 2具有組件化的優(yōu)點(diǎn),從而更有利于大規(guī)模系統(tǒng)的開(kāi)發(fā)和管理。Struts是一組相互協(xié)作的類(lèi)、Servlet和JSP標(biāo)記,它們組成一個(gè)可復(fù)用的Model 2設(shè)計(jì)。這個(gè)定義表示Struts是一個(gè)框架,而不是一個(gè)庫(kù)。但Struts也包含了豐富的標(biāo)記庫(kù)和獨(dú)立于該框架工作的實(shí)用程序類(lèi)庫(kù)。Struts利用taglib獲得可重用代碼和抽象Java代碼,利用Action Servlet配合Struts-config.xml實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)的導(dǎo)航。Struts增強(qiáng)了開(kāi)發(fā)人員對(duì)系統(tǒng)的整體把握,提高了系統(tǒng)的可維護(hù)性和可擴(kuò)充性。

4 結(jié)束語(yǔ)

J2EE為搭建多層分布式系統(tǒng)提供了良好的整套機(jī)制,包括了J2EE的相關(guān)實(shí)現(xiàn)技術(shù)和應(yīng)用開(kāi)發(fā)的一般過(guò)程。通過(guò)多個(gè)具體項(xiàng)目的應(yīng)用研究,開(kāi)發(fā)者可以逐步完善該體系結(jié)構(gòu),逐步積累各層次的組件,直至最后建立J2EE業(yè)務(wù)組件庫(kù),從而達(dá)到提高研發(fā)分布式系統(tǒng)的能力、效率和規(guī)范軟件的研發(fā)過(guò)程。

參考文獻(xiàn):

[1]梁維海.三層體系結(jié)構(gòu)無(wú)關(guān)性的研究及實(shí)現(xiàn)[D].四川:成都理工大學(xué),2004:1-4.

[2]閆珅,郭燚.基于Eclipse開(kāi)發(fā)環(huán)境的J2EE編程技術(shù)[J].河北:唐山職業(yè)技術(shù)學(xué)院學(xué)報(bào),2008,6(04):45-46.

[3]王仕超.基于JAVA的MVC模型框架研究[D].江蘇:南京理工大學(xué),2003:11-16.

[4]陸榮幸,郁洲,阮永良,王志強(qiáng).J2EE平臺(tái)上MVC設(shè)計(jì)模式的研究與實(shí)現(xiàn)[J].四川:計(jì)算機(jī)應(yīng)用研究,2003(03):144-146.

作者簡(jiǎn)介:賈素來(lái)(1979-),男,江蘇泰州人,碩士研究生,講師,研究方向:軟件工程,信息系統(tǒng)設(shè)計(jì)。

漯河市| 阜平县| 高邮市| 招远市| 平谷区| 柯坪县| 防城港市| 横峰县| 西乡县| 东辽县| 邵武市| 宜兰市| 沙洋县| 庄浪县| 介休市| 农安县| 邳州市| 安达市| 沅陵县| 米林县| 湘乡市| 泉州市| 海宁市| 共和县| 仁怀市| 临桂县| 西丰县| 皋兰县| 荣成市| 浦江县| 高清| 柘荣县| 正宁县| 瓦房店市| 莫力| 安徽省| 渭南市| 久治县| 班戈县| 工布江达县| 务川|