程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> J2EE架構分析

J2EE架構分析

編輯:關於JAVA

J2EE架構是當前主流的架構之一,目前大多數企業采用J2EE技術的結構設計與解決方案。J2EE體系結構提供中間層集成框架用來滿足無需太多費用而又需要高可用性、高可靠性以及可擴展性的應用的需求。通過提供統一的開發平台,J2EE降低了開發多層應用的費用和復雜性,同時提供對現有應用程序集成強有力支持,完全支持Enterprise JavaBeans,有良好的向導支持打包和部署應用,添加目錄支持,增強了安全機制,提高了性能。

高效的開發: J2EE允許公司把一些通用的、很繁瑣的服務端任務交給中間件供應商去完成。這樣開發人員可以集中精力在如何創建商業邏輯上,相應地縮短了開發時間。高級中間件供應商提供以下這些復雜的中間件服務:

狀態管理服務 -- 讓開發人員寫更少的代碼,不用關心如何管理狀態,這樣能夠更快地完成程序開發。

持續性服務 -- 讓開發人員不用對數據訪問邏輯進行編碼就能編寫應用程序,能生成更輕巧,與數據庫無關的應用程序,這種應用程序更易於開發與維護。

分布式共享數據對象CACHE服務 -- 讓開發人員編制高性能的系統,極大提高整體部署的伸縮性。

支持異構環境: J2EE能夠開發部署在異構環境中的可移植程序。基於J2EE的應用程序不依賴任何特定操作系統、中間件、硬件。因此設計合理的基於J2EE的程序只需開發一次就可部署到各種平台。這在典型的異構企業計算環境中是十分關鍵的。J2EE標准也允許客戶訂購與J2EE兼容的第三方的現成的組件,把他們部署到異構環境中,節省了由自己制訂整個方案所需的費用。

可伸縮性: 企業必須要選擇一種服務器端平台,這種平台應能提供極佳的可伸縮性去滿足那些在他們系統上進行商業運作的大批新客戶。基於J2EE平台的應用程序可被部署到各種操作系統上。例如可被部署到高端UNIX與大型機系統,這種系統單機可支持64至256個處理器。J2EE領域的供應商提供了更為廣泛的負載平衡策略。能消除系統中的瓶頸,允許多台服務器集成部署。這種部署可達數千個處理器,實現可高度伸縮的系統,滿足未來商業應用的需要。

J2EE使用多層的分布式應用模型,應用邏輯按功能劃分為組件,各個應用組件根據他們所在的層分布在不同的機器上。傳統的J2EE多層企業級應用模型將兩層化模型中的不同層面切分成許多層。一個多層化應用能夠為不同的每種服務提供一個獨立的層,以下是 J2EE 典型的四層結構:

運行在客戶端機器上的客戶層組件

運行在J2EE服務器上的Web層組件

運行在J2EE服務器上的業務邏輯層組件

運行在EIS服務器上的企業信息系統(Enterprise information system)層軟件

通常認為,J2EE平台就廣泛的認為是這個架構,運行在J2EE服務器上的EJB容器可以認為是此結構的核心,EJB容器管理著所有EJB的執行,以及EJB的生命周期,並且為EJB提供所有系統級的服務。EJB組件則負責接受,處理WEB容器的客戶請求和連接提供整個企業使用的數據,服務的EIS層。

此“經典”架構中,所有的數據訪問都要通過entity bean,業務對象都是帶遠程接口的無狀態session bean,運行在EJB容器中。EJB中包含了各種服務(比如聲明式的事務管理),而且提供了一個共享的中間層,可支持可支持各種類型的J2EE客戶端。但結構中應用性能和開發開銷的負擔很重,一些負載來在於EJB,而很大還是與分布式架構的特性有關。此外為了分布化,犧牲了OO原則,並且難以測試,因為業務邏輯通常編寫在EJB的實現類中,而這些類完全依賴於EJB容器的。

此“經典”架構的一種改進,便是把遠程EJB替換為本地EJB,實現了架構的重用,解決了分布化的種種問題。但架構還是相當的復雜。EJB的很多負擔還是存在,從EJB中獲得益處反而不多。

所以隨著企業級應用開發的不斷復雜,對架構設計的要求也會提出新的要求:

架構簡單,但功能強大。

架構可以通過配置WEB容器集群來達到橫向擴展。

在不同的應用服務器之間具有高移植性。

便於在應用服務器之外進行業務對象的單元測試,而且,一些集成測試甚至可以讓一些輕量級容器(如Junit)來完成。

為了解決經典架構中有EJB引起的一系列問題以及滿足不斷發展的企業應用,提出了非EJB架構的“輕量級容器”。輕量級容器與EJB架構都是有容器管理業務服務對象,然後再圍繞著這個服務層組織整個架構。但是業務對象不是運行在EJB容器中,而是運行在“輕量級容器”中。輕量級容器並沒有和J2EE綁定,所以它既可以運行在WEB容器裡,也可以在一個標准應用程序中運行,如必要也可以運行在EJB容器中。這個容器也沒有和servlet API綁定?D?D這一點與MVC結構的WEB框架不同。輕量級容器的啟動開銷很小,而且無需EJB的部署。

輕量級容器提供了一種管理、定位業務對象的辦法。用不著JNDI尋址、定制服務器之類的額外輔助;輕量級容器為應用對象提供注冊服務。其較之EJB容器而言,不僅功能強大,而且避免了容器強制業務對象采用特定的接口,最低程度的降低了侵入性,實現了效果極佳的架構重用。

輕量級容器中所有的Java類都運行在同一個虛擬機中。

WEB層是由MVC框架提供的(Struts或WebWork,或Spring架構的MVC結構)

業務對象是POJO,運行在輕量級容器裡。AOP的攔截機制能夠增強業務對象,從而實現企業級服務。與EJB容器不同,業務對象不依賴於容器的API,所以這些對象在容器外也可以使用,更利於單元測試。業務對象僅僅通過接口來訪問,當更改具體業務對象的實現類後,業務對象無需修改。實現了面向接口編程。

數據訪問機制可以通過輕量級的O/R Mapping,該層能提供透明的持久化,該持久層實現了對數據訪問方式JDBC的輕量級封裝。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved