現代Java Web開發架構分析
來源:互聯網
上載者:User
web|架構 當主StreamCompute機應用軟體開始遷移到客戶/伺服器體繫結構時,程式員們開始尋找方法以簡化使用類似技術並且在結構也類似的工程的開發。這就為現代軟體開發架構打好了基礎。
隨著基於全球資訊網的應用程式伺服器的發展及其相關的應用軟體的膨脹,支援這些技術的開發架構也隨著蓬勃發展。當前,在企業開發領域中出現了許多特別適合於Java J2EE平台的軟體開發架構。
在本文中,我將集中討論現代的Java開發架構,分析它們的特徵和各自的使用優點。另外,我還想比較目前流行的生產品質架構,例如Struts,Spring和Hibernate,並詳細討論其基本相似性及有關基本概念。
我將簡短分析被用於支援這些架構的企業開發環境或工具箱,例如Borland JBuilder,Eclipse以及BEA Workbench。請記住,市場上有許多有關這些開發架構的圖書;然而,在任何一篇文章中,要對它們進行深入描述是不可能的。不過,我將儘力討論最廣泛地使用的概念。
1. 共同點
幾乎所有現代的網路開發架構都遵循了模型-視圖-控制(MVC)設計模式--商業邏輯和描述被分開,由一個邏輯流量控制器來協調來自用戶端的請求和伺服器上將採取的行動。這條途徑成為了網路開發的事實上的標準。每個架構的內在的機制當然是不同的,但是開發人員們使用來設計和實現他們的Web應用軟體的API是很類似的。差別還存在於每個架構提供的擴充方面,例如標籤庫,JavaServer Faces或JavaBean封裝器等。
所有的架構使用不同的技術來協調在Web應用程式之內的導航,例如XML配製檔案,java屬性檔案或定製屬性。所有的架構在控制器模組實現的方法方面也存在明顯的不同。例如,EJB可能執行個體化在每個請求中需要的類或使用Java反射動態地調用一個適當的行動(Action)類。另外,不同架構在各自引入的概念上也有所不同。例如,一個架構可能定義使用者請求和反應(以及錯誤)場所,而另外一個架構可能僅僅定義一個完整的流--從一個請求到多個響答和隨後的再請求……
各種Java架構在它們組織資料流的方法方面是很類似的。在請求發出後,在應用程式伺服器上產生一些行動;而作為響應,一些可能包含對象集的資料總是被發送到JSP層。然後,從那些對象--可能是有setter和getter方法的簡單類,javabeans,值對象,或者一些集合對象--中提取資料。現代的Java架構還想方設法簡化開發人員的開發工作單位,如通過使用簡易的API,資料庫連接池,甚至資料庫調用包等提供自動化的追蹤方式來實現。一些架構或者能夠鉤進(hooked into)另外的J2EE技術中,例如JMS(JavaMessage Service)或JMX,或把這些技術整合到一起。伺服器資料持久性和日誌也有可能成為架構的一部分。
2. 企業開發環境
一些架構在Web開發人員社區和企業發展領域變得相當流行。隨著這些架構的日漸成熟並開始發行穩定的版本,商業的IDE(整合發展環境)開始為這些架構提供支援並把他們納入到自己的產品中。一些IDE甚至基於架構的概念開發出整個的產品,例如,BEA WebLogic Workshop就是基於Struts架構建立起來的。
Borland Jbuilder為Struts提供了內建的支援,也支援JSF和JSTL。
Eclipse平台已成為一個很流行的開發工具,部分因為它是基於外掛程式的,部分因為它對於Web架構的支援。現在,出現了眾多的Eclipse外掛程式,甚至完整的基於Eclipse的IDE。許多外掛程式被設計適合於Struts架構開發,例如MyEclipse(www.myeclipse.org)或M7(www.m7.com)。
大多數IDE都具有圖形化的流程和可視化對象(類代理)。例如,下面是一個JBuilder的行動(Action)設計器,用於規劃Web應用程式的頁面順序。
WebLogic Workshop引入Java頁面流程技術,它擴充了Struts架構而提供了一個簡化的開發模型並增加了另外一些特性。Workshop使用頁面流(Page Flows),實現輕易地把使用者介面與導航和商業邏輯分離開來。頁面流由JSP頁組成,這些頁麵包含使用者介面元素和一個控制器檔案(JPF)--它包含由使用者提供的資料將怎樣被處理的指令以及下一步什麼頁面將被返回到使用者的資訊。頁面流動提供給開發人員一個可視化的Web應用程式總體輪廓,它讓開發人員能夠看到直觀地分析不同的JSP頁彼此相關聯,並實現Web應用程式整體結構的快速建立。
MyEclipse提供類似的特徵,並帶有更多迷人的代價標籤。
3. Apache Struts架構
Struts架構是一開源產品,基於模型-視圖-控制器(MVC)設計範例來開發Web應用軟體。它使用並且擴充了Java Servlet API,最初由Craig McClanahan建立。在2000年5月,它被捐贈到Apache Foundation。Struts架構展示了一個強有力的定製標籤庫,平鋪顯示,表單檢驗和I18N(國際化)。另外,Struts支援許多描述層,包括JSP,XML/XSLT,JavaServerFaces(JSF)和Velocity;還支援一些模型層,包括JavaBeans和EJB。
4. Spring架構
Spring架構是一個分層的Java/J2EE應用程式架構,基於Expert One-on-One J2EE設計和發行的代碼。Spring架構提供一種簡單的開發技術,用於自動化處理工程中大量的屬性檔案和助理類。
Spring架構套件括的主要特色有:
·強有力的基於JavaBeans的組態管理,使用Inversion-of-Control(IoC)原則。
·一個核心bean工廠,可用在任何環境,從applets到J2EE容器程式。
·通用的抽象層適合於資料庫交易管理,允許可插入的交易管理員,並且不需要處理低層次的問題就可容易地劃分各事務的界限。
·一個很有意義的異常處理的JDBC抽象層。
·與Hibernate整合到一起,DAO實現支援以及事務策略。
5. Hibernate架構
Hibernate是一適合於Java語言的對象-關係映射(ORM)解決方案。它也是開源軟體,類似Struts,並且在LGPL保護下發布。Hibernate被一群來自世界各地的Java軟體開發人員所共同開發。它提供一個易用的架構來實現把一個物件導向的領域模型映射到一傳統的關聯式資料庫。它不僅負責從Java類到資料庫表格(以及來自Java資料類型的SQL資料類型)的映射,而且還提供資料查詢和檢索能力,並能大大減少花在SQL和JDBC手工資料處理上的開發時間。
Hibernate的目標是減輕開發人員的與大量普通的資料持久性相聯絡的編程任務。Hibernate還能夠適應開發進程,無論它是剛開始設計還是來自一現成的資料庫。Hibernate可以自動產生SQL,使開發人員擺脫了手工處理結果集和進行對象轉化的繁瑣任務,並能使應用程式移植到所有的SQL資料庫。它還能提供透明的持久性,對持久性類的唯一的要求的是實現一個無參數的構造器。
這個架構典型地使用在JavaSwing應用軟體、基於Servlet的Java應用軟體和使用EJBsession beans的J2EE應用軟體中。
6. 結論
本文概述了現代最流行的Java Web開發架構。當然,還有更多架構尚未描述,開源和商業化的都有,例如WebWork(http://www.opensymphony.com/webwork/)或Tapestry(http://jakarta.apache.org/tapestry/);而許多架構通過擴充另外的MVC架構在內部被成功開發。當前,最流行的架構是Apache Struts。當Web開發競技場繼續演變它的工具和編程方法時,Java應用程式架構也將繼續成長下去。Java Web開發架構的未來一片明亮!