• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      J2EE多層模型研究

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

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

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

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

      0 引言

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

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

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

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

      2 J2EE多層模型

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

      2.1 J2EE多層模型介紹

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

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

      2.2 J2EE核心技術(shù)

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

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

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

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

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

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

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

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

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

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

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

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

      4 結(jié)束語

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

      參考文獻(xiàn):

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

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

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

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

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

      武汉市| 界首市| 崇明县| 万州区| 来安县| 怀化市| 曲阳县| 昭平县| 鸡东县| 抚顺市| 余姚市| 樟树市| 厦门市| 海门市| 阳曲县| 格尔木市| 嘉义市| 玛纳斯县| 轮台县| 喜德县| 潮安县| 弥勒县| 濮阳市| 自治县| 宣武区| 甘谷县| 大足县| 安远县| 尼勒克县| 盐亭县| 霞浦县| 梓潼县| 永平县| 桐乡市| 赤水市| 来安县| 濮阳县| 赤壁市| 清新县| 阜南县| 公安县|