摘 要:J2EE為搭建分布式系統提供了良好的整套機制。典型的J2EE結構的應用程序包括四層:客戶層、表示邏輯層、業務邏輯層和企業信息系統層,每一層多有核心技術對其開發提供支持,比如Servlets、EJB、JDBC、JNDI、Java RMI等。MVC設計模式是目前最流行的J2EE開發模式,而Struts技術已經成為實現該模式的最流行框架方案。
關鍵詞:多層體系結構; J2EE; MVC; Struts
DOI:10.16640/j.cnki.37-1222/t.2017.04.184
0 引言
針對傳統的客戶機/服務器體系結構的種種缺點,計算機科學家提出了三層或多層分布式系統模型[1]。隨著不斷改進和發展,多層分布式系統逐漸形成了三種具有代表性的主流技術,即CORBA、COM/DCOM和J2EE(Java2 Platform Enterprise Edition)。J2EE為搭建具有可伸縮性、靈活性、易維護性的分布式系統提供了良好的整套機制。
1 多層體系結構模型
三層架構就是將整個系統業務應用劃分為三個層次,即:客戶層、業務邏輯層、數據訪問層。業務邏輯層又可由多個子層組成,具體要看系統的復雜程度。這樣就形成了多層分布式體系結構,分布性可以體現在軟件上,也可以是硬件,具體模型如圖1所示。
多層體系結構模型將表示和業務處理分開,縮減了客戶端的規模,又將相關業務和資源分開,降低了服務器的負載,避免了服務器的性能缺陷對整個系統性能的影響。這種在多個服務器上分布應用程序處理的多層可變結構比二層體系結構的伸縮性和擴展性有了很大加強。同時多層體系結構解決了客戶機/服務器結構的維護成本問題,改善客戶機/服務器結構延展性問題。客戶機/服務器結構支持的用戶人數有一定限額,這種結構限制了internet/intranet及電子商務的發展。
2 J2EE多層模型
為實現企業級分布式應用,J2EE定義了豐富的技術標準、符合標準的開發工具和API為開發企業級應用提供技術支持,這些技術涵蓋數據庫訪問、分布式通信和安全等。
2.1 J2EE多層模型介紹
J2EE是一個基于Java的適合服務器端的、結合了Java Enterprise API的完整的企業級應用系統開發平臺或中間件體系結構,它通過提供一組應用組件和運行時環境來構造可伸縮的企業應用。典型的J2EE結構的應用程序包括四層:客戶層、表示邏輯層、業務邏輯層和數據訪問層,如圖2所示[2]。
客戶端層用來實現企業級應用系統的操作界面和顯示層。表示邏輯層由web服務器和web組件組成。web組件包括JSP頁面和servlets。表示邏輯層也可以包括一些JavaBeans,這一層主要用來處理客戶請求,調用相應的邏輯模塊,并把結果以動態網頁的形式返回到客戶端。業務邏輯層也叫ejb層或應用層,由ejb服務器和ejb組件組成,用來實現企業級信息系統的業務邏輯,這是企業級應用的核心。ejb要運行在容器中,容器解決了底層的問題,如事務處理、狀態管理、多線程、安全管理、資源池等。表示邏輯層和業務邏輯層也可以合稱中間層。數據訪問層處理企業系統軟件,包括企業基礎系統、數據庫系統及其它遺留的系統。
2.2 J2EE核心技術
在J2EE中,開發者可以用來實現多層結構的核心技術應該包括Servlets、EJB、JDBC、JNDI、Java RMI等[3]。
Java Servlet是一項服務器端技術,它接收來自Web瀏覽器的HTTP請求并返回HTTP響應。首先,請求被提交給Servlet引擎,然后Servlet引擎執行適當的Servlet,訪問響應對象,并向客戶端返回一個響應。
ejb定義了如何編寫服務器端組件,并為服務器端組件和管理這些組件的應用服務器之間提供了標準協議,開發者可以利用這些組件象搭積木一樣建立自己的分布式應用程序。ejb并不是一個單獨的文件,它由一些類、接口、描述文件和其它一些資源文件組成。ejb組件有三種類型:會話Bean、實體Bean、消息驅動Bean。會話Bean用于管理實體Bean和其它會話Bean的交互、訪問資源,通常代表客戶機執行任務。實體Bean用于表示數據庫中的數據,向JDBC或其它一些后端API經常訪問的數據提供了一個面向對象的接口。消息驅動Bean響應JMS消息。
JDBC是Java程序與數據庫通信的標準API,使Java開發者能夠用純Java API編寫數據庫應用程序。和ODBC一樣,JDBC為開發人員隱藏了不同數據庫的不同特性。另外,由于JDBC建立在Java的基礎上,因此還提供了數據庫存取的平臺獨立性。
JNDI是Java對對象名字和目錄服務的“中央注冊表”,管理著對構建分布式應用程序所需的核心組件的引用。當創建訪問遠程對象的應用程序時,JNDI以查找返回該對象地址的方式提供對該對象的引用。應用程序首先在WebLogic Server部署中需要的對象,而WebLogic Server服務將返回應用程序訪問該對象時所需要的一切屬性。
遠程方法調用(Remote Method Invocation, RMI)大大增強了Java開發分布式應用的能力,支持存儲于不同地址空間的程序級對象之間彼此進行通信,實現遠程對象之間的無縫調用。RMI目前使用Java遠程消息交換協議JRMP進行通信,JRMP是專為Java調用遠程對象制定的協議。因此,Java RMI具有Java的“Write Once, Run Anywhere”的優點,用Java RMI開發的應用系統可以部署在任何支持Java運行環境的平臺上。但由于JRMP是專為Java對象制定的,因此,RMI對于用非Java語言開發的應用系統支持不足,不能與用非Java語言編寫的對象進行通信,其實也可以把它看作是RPC的Java版本。
3 MVC在J2EE中的應用
J2EE能使遵從這個規定的開發者得到行業的廣泛支持,使企業級應用的開發變得簡單、快速。然而在實際的開發過程中,設計者往往忽略了Java語言面向對象的特性,模糊了web系統三層之間的界限,從而使整個系統貌似神離,不能獲得預期地優越的性能。這就要對J2EE開發模式的理論進行探討,目前最流行的就是MVC(Model/View/Controller)設計模式,structs、spring、hibernate、JSF等則是實現MVC模式最流行的框架方案[4]。
設計模式就是軟件人員在面向對象軟件設計中經多次驗證的成功解的記錄與提煉,是在特定上下文情形下解決一般設計問題的類和相互通信對象的描述,是針對問題和解的抽象,是對一系列具有共性的問題的完整的解決方案。設計模式有效地避免了設計損害了系統的復用性,是可復用面向對象軟件的基礎。MVC是一個強大的模型,基于功能清楚地分開了代碼,修改在某一層上的應用程序不會影響到其它層。代碼分布到多個邏輯層和物理層執行,每一層對應于一個特定的應用程序功能,它們之間使用定義明確的、可判定的方式進行通信。通過響應用戶和程序輸入,在層與層之間傳遞信號和數據來完成應用程序的功能。
MVC設計模式具有設計清晰、易于擴展、運用可分布的特點,因此在構建Web應用中具有顯著的優勢。MVC可適用于多用戶的、可擴展的、可維護的、具有很高交互性的系統,如電子商務平臺、CRM系統和ERP系統等。MVC可以很好的表達用戶與系統的交互,可以很方便的用多個視圖來顯示多種數據,從而可以使系統能方便的支持其它新的客戶端類型,如PDA、WAP等。MVC的另一個好處就是將開發團隊依照專業技術方向分開。這樣,GUI設計專家可以在視圖層工作,負責具體功能開發的領域專家在控制層工作,數據庫專家在模型層工作。這種明確分工可有效提高開發團隊所有成員的效率,從而提高整個開發團隊的生產能力。
MVC在J2EE下開發已經成為了開發的主流模式。目前實現MVC模式比較好的框架有structs、spring、hibernate、JSF等。這些框架都提供了很好的層次分隔功能,其中Struts技術是構建J2EE分布式程序的最流行框架方案。
Struts的開發模型分model 1和model 2兩種。model 1模式在進行快速和小規模的應用開發時是具有非常大的優勢,但是從工程化的角度考慮,它也有一些不足之處,主要在于不方便應用擴展,以及不利于應用系統業務的復用。大型web應用必須采用不同的Model 2設計模式。Model 2是基于MVC模式的框架,"Model"代表的是應用的業務邏輯(通過JavaBean、ejb組件實現),"View"是應用的表示層(由JSP頁面產生),"Controller"是提供應用的處理過程控制(一般是Servlet)。這種設計模型把應用邏輯、處理過程和顯示邏輯分成不同的組件實現,這些組件可以進行交互和復用。Model 2具有組件化的優點,從而更有利于大規模系統的開發和管理。Struts是一組相互協作的類、Servlet和JSP標記,它們組成一個可復用的Model 2設計。這個定義表示Struts是一個框架,而不是一個庫。但Struts也包含了豐富的標記庫和獨立于該框架工作的實用程序類庫。Struts利用taglib獲得可重用代碼和抽象Java代碼,利用Action Servlet配合Struts-config.xml實現對整個系統的導航。Struts增強了開發人員對系統的整體把握,提高了系統的可維護性和可擴充性。
4 結束語
J2EE為搭建多層分布式系統提供了良好的整套機制,包括了J2EE的相關實現技術和應用開發的一般過程。通過多個具體項目的應用研究,開發者可以逐步完善該體系結構,逐步積累各層次的組件,直至最后建立J2EE業務組件庫,從而達到提高研發分布式系統的能力、效率和規范軟件的研發過程。
參考文獻:
[1]梁維海.三層體系結構無關性的研究及實現[D].四川:成都理工大學,2004:1-4.
[2]閆珅,郭燚.基于Eclipse開發環境的J2EE編程技術[J].河北:唐山職業技術學院學報,2008,6(04):45-46.
[3]王仕超.基于JAVA的MVC模型框架研究[D].江蘇:南京理工大學,2003:11-16.
[4]陸榮幸,郁洲,阮永良,王志強.J2EE平臺上MVC設計模式的研究與實現[J].四川:計算機應用研究,2003(03):144-146.
作者簡介:賈素來(1979-),男,江蘇泰州人,碩士研究生,講師,研究方向:軟件工程,信息系統設計。