1. 程式人生 > >J2EE架構的優點和缺點有哪些

J2EE架構的優點和缺點有哪些

首先是UI層很難由美工和系統設計師來總體設計,由於即使是Delphi之類的視覺化開發工具,介面問題還是要程式設計師自己調整。解決這個問題可以走兩條路:用自己的面板系統和美工本來就會IDE。
  
  其次是服務層的標準缺少,雖然Corba之類早已出現,但是昂貴的費用和實施的難度太大了。事實上這樣的服務層確實有象BEA的Tuxedo,IBM的CICS等,但伸縮性小,使用範圍小,不算是老少咸宜。
  
  最後是資料層一般是直接存取資料庫,高階一點的是通用性強一點,能多訪問幾個資料庫。但遠沒有到物件持久化這種程度。
   
  

  傳統三層架構B/S
  J2EE架構的推出帶來了很大的進步,先前推出的PHP、ASP等嵌入式指令碼語言只限於一種模板指令碼語言而已,真正的架構還是從J2EE開始起的。
  
  早期J2EE還未成熟,這張圖應該是J2EE1.2以後的,至少是EJB2.0以後的。
  
  在UI層與其他指令碼嵌入語言類似,模板+指令碼,仍然沒有較好的Action功能,這直到Struts之類的出現才開始改觀。
  
  SeesionBean的出現加速了服務層的建立,讓業務邏輯真正可以獨立出現,儘管現實沒有這麼理想。
  
  Entity Bean的出現,非凡是CMP的出現,建立了物件持久層,資料庫再也不需要了解細節了,甚至物件資料存在哪裡都沒人想知道了,雖然有這樣那樣的困難和問題。
   
 

  現代多層架構
  多層架構是從開源開始的。
  
  Struts是聞名的MVC2,儘管現在看來問題還是不少,但是不可否認,它的功勞是顯著的。
  
  AspectJ帶來了AOP,讓開發換個思路。
  
  Spring讓這些看上去很簡單,重新發掘Bean的力量。
  
  WebWork、JSTL、Tapestry、JSF、PIO、Hibernate、Castor等等一系列的開源計劃層出不窮,我可以列到你開始嘔吐為止。
  
  有很多顯著的特點:
  
  注重UI層的簡化開發,強化模板引擎和元件開發,使Action或Lisnter成為標準配備。
  
  服務層強調弱耦合,可以與多個輪子一起工作,方便更換合適的框架,甚至考慮相容傳統系統。
  
  物件持久大行其道,都是針對EJB的軟肋去的,但3.0的釋出會彌補EJB的問題。
  
  各大廠商爭相搶奪市場,工具和伺服器和版本飛漲,跳得比計價器還快。
  
  XML大行其道,已經成為標準格式,至少是配置檔案和轉換模板的標準。
   

  現代架構簡介
  View 展示層。顯示內容、接受使用者人工資訊。
  
  Template Engine 模板引擎層。使用模板的方式產生最終View展示層的內容。
  
  Action或Listener 動作或監視層。接受使用者人工動作、根據動作反饋。
  
  Control 控制UI層。控制UI的動作反饋、頁面流程。
  
  Service 服務層。除業務邏輯以外的系統邏輯、訪問域邏輯的介面、轉發訪問域邏輯的請求。
  
  Domain Logic 域邏輯層。業務邏輯、與傳統遺留系統的業務邏輯介面。
  
  Domain Model 域模型層。業務模型,與業務有關的物件模型樹,包括物件屬性和之間的關係。
  
  XML Model。用XML定義的域模型。鑑於XML的重要性,單獨列出。
  
  Object Model。用Object物件來定義的域模型。
  
  Object Persistent 物件持久層。將域模型物件持久化。
  
  Database System 資料庫系統。關係型或物件型資料庫系統,代表了儲存系統。
  
  應用級架構
  可能應該稱為實用架構,因為以下這些架構與現代架構不衝突,是建立在現代架構基礎上的應用級架構。
  
  光有現代架構當然對開發來說並沒有省心,反而是更增加溝通和培訓成本,因此應用級架構,或可稱為中介軟體,非常重要。
  
  應用級架構是用來解決各種業務問題的高層次架構。
  
  Workflow 工作流。解決一切依靠流程的業務系統中的流程部分的問題。工作流只管流程。
  
  E-Form 電子表單。解決一切業務系統中需要頻繁變動介面。包括電子表單設計器和編譯器。
  
  Protal 門戶。解決多個業務系統的高階整合。多業務系統不僅是展示層上的整合,更深入到互動地整合,將可能產生相互影響。
  
  Data Exchange 資料交換。資料傳輸和格式轉換。解決多個業務系統的資料交換問題。
  
  Message 訊息中介軟體。解決非同步訊息傳輸問題。
  
  Instance Message 即時訊息。解決即時溝通交流問題,並且答應與業務系統互動。
  
  Real-Time 實時系統。對時間和高可靠性的要求。
  
  Embedded 嵌入式系統。開發各種其它裝置上的應用系統。