From: http://wenku.baidu.com/view/603672160b4e767f5acfce79.html###
基于Ofbiz的Web架構
目
錄
1
Web開發概述 .......................................................................................................................... 2 1.1 MVC設計模式 ......................................................................................................... 2 1.2 Struts的MVC實作 ................................................................................................. 2 1.3 Struts的優勢 ............................................................................................................ 4 1.4 Struts的不足 ............................................................................................................ 4
2
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的早就很多了,國内近幾年也多了起來,但是優秀的設計人員不是很多。