引言
本文向您介紹將 Ajax 整合到門戶應用程式的方法。因為已經有了幾篇對 Ajax 進行一般性介紹的文章,所以我們假設您瞭解 Ajax 的基礎知識;也就是說,您已經知道了什麼是 Ajax、它的名稱的由來、它並不是一項新的技術這一事實,以及 Google 如何將此技術帶入全球每個經理和技術專家的思維模式。我們的目的是向您提供有用的資訊,這些資訊與在門戶應用程式中使用 Ajax 相關,所以當 CTO 的辦公室裡的人員詢問您的門戶應用程式是否啟用了 Ajax 時,您可以理直氣壯地說:“當然!”。
所以,如果您已決定將 Ajax 引入門戶,則本文所討論的內容非常值得您關注。儘管本文側重介紹的是門戶應用程式,但是這些技巧通常適用於大多數複雜應用程式。本文還為您準備了後續教程,在此教程中,我們將詳細介紹 Ajax Portlet 應用程式的建立。
在我們回到即將開始討論的主題之前,先簡要說明以下內容:您看到或讀到的有關 Ajax 的內容所介紹的大部分不是真正的 Ajax;而是 Dynamic HTML 或 DHTML。正確意義的 Ajax 由稱為 XMLHttpRequest 的單個 JavaScript 對象組成。該類為伺服器和產生的響應提供後台通訊通道。承擔所有其他任務(包括拖放、DOM 更新、建立樣式和各人喜歡做的所有其他事情)的是 DHTML。
為什麼 Ajax 和 WebSphere Portal 可以很好地配合?
門戶環境中開銷最大的操作之一是重新整理頁面。當使用者在頁面上單擊連結或進行一些其他動作時,門戶會處理頁面上目標 Portlet 的 actionPerformed() 方法和每個 Portlet 的 doView() 方法。然後,彙總結果,並將整個 HTML 文檔向下發送到瀏覽器。
儘管緩衝可以減少大量的開銷,但是仍有許多其他問題。您可以使用 Ajax 在幕後處理許多使用者互動事件,然後更新頁面的各個部分,而無需完整的門戶重新整理周期。此技術通過增加對單個操作的響應大大改進了終端使用者體驗,同時也顯著提高了應用程式的總體效能。在某些環境中,使用 Ajax 可以使應用程式的總體體繫結構更清晰。使用二級 Ajax 控制器(如 Servlet 或 Web 服務)可以進行更強大的模型代碼分離。
將整個 Ajax 控制器設計應用於應用程式時,您應該使用 Ajax 控制器處理所有基本使用者輸入操作和分段顯示更新。而僅將門戶 actionPerformed() 方法用於頁面級轉換或處理主要狀態更改。
為什麼 Ajax 和 WebSphere Portal 不能很好地配合?
那麼,為什麼您不希望在您的富 Internet 應用程式中使用這一新穎的範例呢?所有的技術周刊都認為這是一個好方法,此外,您的上司也通知您使用它,因為它是“營運目標之一”。當然,我們不會叫您不要使用它,但是,我的確想讓您知道一些潛在缺陷:
使用多個控制器(例如 Portlet、Servlet 和 Web 服務)會增加應用程式的複雜性。
使用 Ajax 強制用戶端處理許多邏輯。
JavaScript 很難調試,特別是在跨瀏覽器環境中更是如此。
可訪問性問題和行動裝置會產生冗餘代碼。因為許多螢幕助讀程式和其他輔助裝置不支援 JavaScript/Ajax,所以您需要提供備選功能。
您的應用程式可能不需要在頁面切換之間進行額外的資料更新。
綜上所述,您可能確定 Ajax 不適合您,需要改讀其他文章。稍等,這隻是一個玩笑。朋友,請繼續閱讀!Ajax 太酷了,如果您不將其添加到自己的應用程式中,您肯定會感到遺憾。
至少您應該慢慢接受它。找到一個可以使用小技巧的應用程式,並將 Ajax 的妙處添加到使用者表單或嚮導中。一旦您入門並瞭解到做一點努力就可以獲得一些有效使用者增強功能,您肯定會準備將一些奇妙的方法實際添加到自己的門戶應用程式中。
設計注意事項
將 Ajax 添加到門戶應用程式後,您就可以有效地將多個控制器添加到經典 MVC 模式。此決定對強制執行模型邏輯的清晰分離有潛在的好處。不足之處是增加了複雜性,並且不可避免地將控制器分成以下三個部分:
Portlet
Servlet 或 Web 服務