本文通過展開第 1 部分所介紹的設計模型并提供一個更加完整的解決方案對第 1 部分進行了詳細描述。第 2 部分對為門戶網站應用程序建模進行了深入討論,并介紹了另外一些關于門戶網站應用程序設計中為 portlet 服務、EJB 和其他緊密相關的對象建模的主題。開發人員希望通過門戶網站社區尋求在設計與構建門戶網站應用程序問題上的共識。因此,這篇文章探討以下問題:
本文與第 1 部分著重討論設計師或專業人員在設計和/或開發完整的應用程序中所要做的服務工作。所描述的方法源于幾個大型門戶網站項目的實際經驗;它是一個簡單的、標準的和可重用的方法,旨在讓所有的小組成員都可以遵循相同的指導原則。我的一位同事曾說過,“我們想讓 portlet 開發更像是裝配線而少一些藝術作品的味道。”門戶網站應用程序的設計與開發的現狀便是如此。即使是在小組內部,每一個人也都是在做他們自己的工作。由于 IBM ® WebSphere® Portal(以下稱為 Portal)是一個相對較新的產品,所以一直以來這種現象己經成為可以接受的現實。然而,既然門戶網站開發人員已獲得了更多的經驗,那他們就應該有更一致的設計實踐,并且現在應該充分利用框架。這包括加快開發速度、提高門戶網站應用程序的健壯性和改善正在進行的維護。
使用一個框架Web 和 portal 開發人員正在努力工作以符合新技術聲稱要提供的標準。不幸的是,沒有哪個框架可以解決所有的問題。要能夠簡化開發過程,很好地理解一種技術、API 和/或框架是有必要的。設計師和專業人員需權衡使用一種框架而舍棄另一種框架的利弊。
WebSphere Portal本文假設您正在使用 WebSphere Portal 構建一個門戶網站應用程序,并且您有一些關于應用程序的基本知識。WebSphere Portal 是在 WebSphere Application Server 之上開發的。它旨在幫助開發人員構建企業門戶網站應用程序。WebSphere Portal 為構建能夠產生高性能的、安全的、可擴展的、可伸縮的和健壯的應用程序的 portlet 提供了一個已被驗證的、完整的 API。本系列的第 1 部分和第 2 部分提供的示例都是以 WebSphere Portal 框架為基礎的。
Jade 和其他珍品Jade 是由 IBM 提供的作為用于 Java 的企業應用程序開發框架(Enterprise Application Development frameworks for Java(EAD4J))的一部分的框架。Jade 和其他幾個框架(Topaz、Ruby 和其他框架)一起提供了一個健壯的、可伸縮的和得到支持的方式來迅速開發 J2EE 應用程序。EAD4J 工具包帶有一整套體系結構文檔和藍圖,還有最佳實踐和示例。完整的源代碼也是可以獲得的。IBM 的客戶們也可以獲得這些 EAD4J 框架。
StrutsStruts 是一個由 Jakarta 項目提供支持的開放源代碼倡議,它為普通大眾提供商業級質量的開放源代碼軟件。它還提供了一個與 Jade 類似的 Web 應用程序框架并且基于 J2EE 標準。作為一個開放源代碼倡議,使用 Struts 的客戶嘗到了開放源代碼社區(open source community)的甜頭但卻得不到對產品的直接支持。
選擇正確的框架以上所述的框架旨在讓項目迅速地實現應用程序的業務邏輯而不用擔心應用程序的底層內容。所有這三個框架都提供了相似的功能,盡管它們在實現上有所不同。Jade 和 Struts 都是獨立于應用程序服務器的,而 WebSphere Portal 則僅支持 WebSphere Application Server。
幾個獨立的倡議正在進行,以將 Jade 和 Struts 集成到 WebSphere Portal 框架中。這種方法有利也有弊。當評估這個集成方案時,請將以下幾條牢記在心:
關于所有這三個框架的信息有很多,這些信息概括了每一個框架提供的功能和益處。盡管每一個框架都可能在特定的領域勝過其他框架,但所有這些框架在方法上是可比的。下表對每個框架的功能做了比較:
關于框架的最后一點意見
框架功能比較功能 WebSphere Portal Jade Struts 額外的評注 在生產中已被驗證 是 是 是 所有這三個框架都已被一些組織成功使用過。 MVC 體系結構 支持 支持 支持 JSP 標記庫 支持 支持 支持 國際化支持 有 有 有 操作處理 有 有 有 Web 服務 有 有 無 日志記錄支持 有 有 無 異常處理 有 有 無 持久性模型 有 有 無 可以通過一個已發布的 API 使用 WebSphere Portlet 持久性??梢酝ㄟ^另一個包(Topaz)來使對象持久性模型對 Jade 可用。 所提供的代碼 無 有 有 IBM 的客戶可以按成本價取得 Jade 源代碼。 文檔編制 有 有 有一些 Struts 文檔編制功能局限于開放源代碼社區和提供支持的用戶。 支持/培訓 有 有 無 IBM 提供有 WebSphere Portal 和 Jade 支持與培訓。
Jade 和 Struts 都為開發人員提供了優秀的功能和益處,而 WebSphere Portal 則提供了一個健壯的框架,它是為開發功能完備的應用程序而提供的。在有些情況下,因為某個具體功能的需要或客戶需要,可能需要在 WebSphere Portal 之上使用一個額外的框架。但請準備在評估這樣一種方法時要充分考慮成本與收益。
當在您的門戶網站應用程序中使用 Jade 或 Struts 對于您的項目來說可能不是合適的方法時,EAD4J 還提供有其他一些框架。例如,Topaz 便有可能被集成到 WebSphere Portal 應用程序中。開發人員也應當對這種可能性加以研究。
回到早先的 portlet 設計現在您將要完成在第 1 部分開始的 portlet 設計了;這將幫助設計師和開發人員明白如何最大程度地使用 portlet 框架。遵循這個設計,剛剛開始工作的 portlet 開發人員和小組還可以有一個共同的起點,在此起點上,他們可以構建他們自己的 portlet。
審查 UML 設計方法雖然 UML 需要一些時間來適應,但它卻是一種理解功能片段的設計的直觀方法。系統的可視化建模(visual modeling)提供了以下優點:
使用可視化建模外加其他工作產品讓開發人員可以創建一個易于理解的、他們可以立刻使用的設計。請別忘了 UML 和 Rational 統一過程(Rational Unified Process(RUP))之間的區別。RUP 是一個使用 UML 的軟件工程過程。但是,您可以與其他過程或方法一起獨立地使用 UML。
理解 doView()任何 portlet 的核心都是 doView() 方法。這個方法從 abstractportlet 與其他幾種模式類型的方法繼承而來。盡管本文只討論 doView() 方法,但所提供的技術也可應用于其他任意一種 doXXX 方法。下面的活動圖(activity diagram)描述了在 doView() 方法中正在發生的情況。
圖 1. doView() 活動圖
在這個實例中,這個方法完成了以下工作:
下面的下載 ZIP 文件包含了實現這一過程的代碼(doView() 方法)。請參閱這個 ZIP 文件中的 Listing1.txt。
如果您想為某個用戶存儲特定的 portlet 信息(例如,憑證或是私人信息),那么您將以一種相同的方式來實現 doEdit()。
映射操作設計人員常常被如何確定用戶與 portlet 之間的交互流所困擾。為了得到這個操作到界面的映射需要技術和實踐技能。第 1 部分討論了一個方案的操作處理序列:搜索。第 2 部分詳細討論了在 portlet 中處理所有操作的序列。使用狀態圖表(state chart diagram)(請參見圖 2)可以確定 portlet 的界面(JSP)轉換。圖中的箭頭說明了在用戶交互作用基礎上的頁面轉換流程。
圖 2. 操作處理程序狀態圖表
上圖映射到了 portlet 中的七個 JSP。對于這種類型的 portlet 來說這是一個相當簡單的例子。多數 portlet 將需要這個模型在所實現的業務邏輯的基礎上得到擴展。您可以使用這個圖表來直接為 portlet 的操作處理序列編碼(請參閱下面的下載 ZIP 文件中的 Listing2.txt)。
構建模型和實用程序類繼續這個設計,您可以將所有的業務邏輯和轉換映射放在一個實用程序類中,以供我們的控制器和 JSP 使用。這一方法讓您嚴格遵循 MVC 模式,并限定了放置在我們的 portlet 控制器中的業務邏輯的數目。請參閱下面的下載 ZIP 文件中的 Listing3.txt。
這個類還包含了為功能所需的每個元素處理業務邏輯的方法。請參閱下面的下載 ZIP 文件中的 Listing4.txt。
設計用戶界面這個設計不提供有關 portlet 的品牌標識(觀感)信息。設計一個合適的 UI 需要非常特殊的技能集,并且正確理解與構建一個有效的用戶界面相關的創造性和實踐性問題,理解這一點很重要。這里和樣本 portlet 中所呈現的界面僅僅是一個說明樣本 portlet 的圖樣而已。
圖 3. 用戶界面
您應在過程中早些設計 UI,當您將需求匯集在一起不久以后就應著手。應用程序中所有的 portlet 都應遵循一個相同的 UI 設計。創建一組線框模板在設計和開發過程中起了幫助作用,并能在做調試和系統更改時節省時間。
使用所提供的樣品下面的下載 ZIP 文件提供了一個基于這里討論的設計方法的 portlet 模板。這個模板是一個有效的 portlet(它沒有業務邏輯)。它使用了 portlet 所有方面的內容,包括日志記錄、操作、異常處理以及 portlet 名稱空間約定。下載包具體包含以下文件:
樣本代碼是如何遵循編碼標準和文檔編制的良好示例。隨著工作量的增大及變得更加復雜,在一個小組環境中遵守標準就變得更加重要。盡管對于簡單的項目來說這可能看起來好像過分了,但是當另一位開發人員需要重新設計或維護這些代碼時,這項工作還是很值得做的。
結束語第 1 部分與第 2 部分所討論的這個設計和相關的模型提供了一個完整的 portlet 設計景像。使用所提供的模板,您會順利地踏上一個完整的門戶網站設計之路。多數應用程序將需要幾種不同類型的 portlet,如遵循視圖-控制器(View-Controller)模式的 XSLT portlet 和遵循其他模式(如虛包模式)的 portlet 服務。
原文轉自:http://www.anti-gravitydesign.com