天天看點

OFBIz

From: http://wenku.baidu.com/view/603672160b4e767f5acfce79.html###

基于Ofbiz的Web架構 

錄 

Web開發概述 .......................................................................................................................... 2 1.1 MVC設計模式 ......................................................................................................... 2 1.2 Struts的MVC實作 ................................................................................................. 2 1.3 Struts的優勢 ............................................................................................................ 4 1.4 Struts的不足 ............................................................................................................ 4 

Ofbiz的業務架構..................................................................................................................... 5 2.1 

Ofbiz概貌 ................................................................................................................. 5 2.1.1 什麼是Ofbiz ..................................................................................................... 5 2.1.2 Ofbiz  vs.  Struts ............................................................................................ 5 2.1.3 Ofbiz的好處 ..................................................................................................... 5 

2.2 

Ofbiz的MVC 模式實作 ......................................................................................... 6 2.2.1 資料層的控制器 (Entity Engine) .................................................................... 6 2.2.2 邏輯層的控制器 (Service Engine) .................................................................. 7 2.2.3 

Web層控制器 (Control Servlet, JPublish, etc) ............................................... 7 

2.3 Web請求執行流程................................................................................................. 11 

基于Ofbiz的Web架構 

2013-4-15 17:40:00 

第 2 頁 共 11 頁 

1 Web開發概述 

随着網際網路的廣泛普及,越來越多的企業應用采用了B/S的互動模式。在開發基于B/S的企業應用中,如何把表示邏輯與業務邏輯分離開來,一直都是人們關注的一個焦點問題。 在Web開發中引入MVC設計模式,是一個有效地解決辦法,目前看來是一個成功的辦法,也是人們仍然在做的事。MVC設計模式起源于Smalltalk語言,它由以下三個部分組成:模型(model),視圖(view),控制器(Controller)。 

1.1 MVC設計模式 

元件 

描述 

模型(model) 封裝資料對象。模型用來封裝和顯示資料對象。 

視圖(view) 作為模型的顯示,它表示資料對象的目前狀态。 

控制器(Controller) 定義對使用者的輸入執行相應操作的接口,它用來操作模型(model)和資料對象。 

使用MVC的好處如下: 

可靠性:表示層和業務層分離,這樣就允許你更改你的表示層代碼而不用重新編譯你的模型(model)和控制器(Controller)代碼。 

高重用和适應性: MVC模式允許你使用各種不同樣式的視圖來通路同一個伺服器端的代碼。它包括任何WEB(HTTP)浏覽器或則無線浏覽器(WAP)。 

快速的部署:開發時間會得到相當大的縮減,它使程式員(java開發人員)集中精力于業務邏輯,界面程式員(HTML和JSP開發人員)集中精力于表現形式上。  

可維護性: 分離表示層和業務邏輯層也使得基于MVC實作的Web應用更易于維護和修改。 

1.2 Struts的MVC實作 

Struts 的體系結構實作了Model-View-Controller設計模式的概念,它将這些概念映射到web應用程式的元件和概念中。 

基于Ofbiz的Web架構 

2013-4-15 17:40:00  第 3 頁 共 11 頁 

圖1 Struts的MVC實作圖 

下面是處理步驟的描述 : 

1. 由顯示視圖産生一個請求。 

2.  請求被ActionServlet(控制器)接收,它在struts-config.xml檔案中尋找請求的URI,找到對應的Action類後,Action類執行相應的業務邏輯。 

3.  Action類執行建立在模型元件基礎上的業務邏輯,模型元件是和應用程式關聯的。 

4.  一旦Action類處理完業務邏輯,它把控制權傳回給ActionServlet。,Action類提供一個鍵值作為傳回的一部分,它指明了處理的結果。ActionServlet使用這個鍵值來決定在什麼視圖中顯示Action的類處理結果。 

5.  當ActionServlet把Action類的處理結果傳送到指定的視圖中,請求的過程也就完成了。 

 模型(The Model) 

Struts架構沒有提供特定的模型元件。  

 視圖(The View) 

基于Ofbiz的Web架構 

2013-4-15 17:40:00  第 4 頁 共 11 頁 

Struts架構中視圖元件對應于一個簡單的JSP檔案,這個JSP檔案包含了Struts定義的标簽 。這些标簽在Struts架構中定義,它使struts應用項目和控制器之間實作松耦合。  

 控制器(The Controller) 

控制器是Struts架構中的中樞,它由org.apache.struts.action.ActionServlet這個servlet來貫徹和執行的。這個org.apache.struts.action.ActionServlet接收所有用戶端的請求,并把請求委派到指定的Action類(使用者擴充自org.apache.struts.action)。ActionServlet委派請求是基于用戶端傳入的URI。 一旦Action類完成處理,ActionServlet根據Action傳回的鍵值來決定在什麼視圖中顯示Action的類處理結果。 

1.3 Struts的優勢 

由于Struts出現的曆史比較早,目前,Struts是最流行的Web開發架構,得到了最多開發人員和供應商的支援,是MVC應用的主流。 

他的優勢很多,如開源、使用者群衆多、文檔豐富、支援好、穩定、輕量級等等,在此不再詳述,因為缺少合适的比較對象。 

1.4 Struts的不足 

然而,需要指出的是,Struts并不是唯一實作MVC模式的Web架構。盡管你可能已經習慣了Struts,感覺它很好、足夠用,但是,仔細想一想,再看一看别的Web架構,也許不難找出Struts的一些不足之處,這裡主要從宏觀的角度談談。 

1. 沒有提供特定的模型元件。這是最明顯的缺點,模型要自己去實作、封裝,用最

基本的java Bean可以想象當應用規模比較大時,設計和編碼的工作量有多大。當然,從某種意義上也可以說是個優點,因為你可以自由選用自己的模型實作如EJB和其他OR Mapping。 2. Struts隻是一個技術架構,也可以說僅僅是一個工具,因為它沒有包含任何業務

内容。是的,Struts不是一個業務架構,即使是一個登陸驗證這樣的基本服務你也需要從零開始編碼。 3. 難以勝任複雜的大規模級企業應用。實際上,在企業級應用中,Web層隻是很薄

的一層,并不是分出簡單的MVC就可以了。一個單純的技術架構是沒有多少實用價值的。用Struts做簡單的Web應用可以,對于複雜規模級應用,太多的東西要編碼,Struts顯得過于單薄。 

基于Ofbiz的Web架構 

2013-4-15 17:40:00 

第 5 頁 共 11 頁 

2 Ofbiz的業務架構 

2.1 Ofbiz概貌 

2.1.1 什麼是Ofbiz 

Ofbiz(Open for business)是一個開源的,基于J2EE和XML規範的,用于建構大型企業級、跨平台、跨資料庫、跨應用伺服器的多層、分布式電子商務類WEB應用系統的架構(Framework)。 Ofbiz幾乎實作了所有的J2EE核心設計模式,各個子產品之間的耦合比較松散,使用者能夠比較容易的根據自己的需要進行拆卸。 

Ofbiz内置了許多其它開源項目,如JBoss,PostgreSQL,MySQL,Apache,Jetty,JOTM,Jpublish,BeanShell,Ant,BSF,Log4J,等,提供了相對成本比較低的解決方案。同時,使用者也可以比容易的更換成其他元件,如将Jboss&&Tomcat換成Bea Weblogic或者IBM Websphere。 

2.1.2 Ofbiz  vs.  Struts  

嚴格說來,Ofbiz與Struts沒有可比性。Ofbiz做了很多人想做卻一直沒有做好的事,那就是把市面上的知名的開源項目整合起來,形成一個更有價值的業務架構。 

Ofbiz包括了幾乎所有的軟體界的主流技術,所有能被利用的開源項目都被納入其中。但是,令人吃驚的是,Ofbiz卻沒有把廣為應用的Struts包括進去,相反的采用了JPublish + FreeMaker + BeanShell這三個開源的東西來代替Struts。而要把Struts加進去取代這三者似乎不是一件容易的事。 

Ofbiz的總設計師David E. Jones,沒有對Struts發表太多的見解,對此有一個簡單的解釋是:Struts與Ofbiz的設計差别太大,沒有辦法無逢內建。以其能力寫一個MVC架構不是問題。 

如果真要比較的話,那就是技術架構與業務架構的差別。Ofbiz提供了一整套的開發基于Java的web應用程式的元件和工具;而Struts并沒有提供通路資料庫的元件,也沒有提供控制工作流的元件。實際上,Struts是一個架構工具,Ofbiz遠不止于此,它還包含了部分業務功能及其基礎設施。 

2.1.3 Ofbiz的好處 

 縮短開發周期,降低成本 

據稱,很多基于J2EE的失敗實踐,都可以歸結于拙劣的設計。J2EE規範并不複雜,但是如何遵照J2EE規範,根據自己的業務需求,做一個合适的、高效的、可擴充的設計,是需要實際經驗和智慧的。國外的大中型系統基于J2EE的早就很多了,國内近幾年也多了起來,但是優秀的設計人員不是很多。 

繼續閱讀