技術存在著一定的周期性。在經歷了一段由瘦客戶端統治的時期后,富客戶端技術開始了它的回歸。大量的組織正在將它們的應用程序構建成富客戶端,其中許多組織將其應用程序建立在RCP(Eclipse Rich Client Platform)的基礎上。術語富客戶端首先表明此應用程序為用戶提供豐富的體驗;其次,它還表明此應用程序是某臺服務器的客戶端。雖然富客戶端并不必須具有對應的服務器組件,但是它們通常會有對應的服務器組件。
富客戶端在很多方面與胖客戶端類似。它們兩者都能為用戶帶來本地桌面體驗,并提供那些通過瘦客戶端技術很難、不方便或不可能交付的信息和功能。然而,富客戶端可提供更多好的特性。胖客戶端通常是一個難以部署和更新的大型單體應用程序,而富客戶端在體積上更為輕巧,并且是基于部署和更新相對容易的組件模型的。從歷史上來看,胖客戶端是特定于平臺的;而當今的富客戶端技術發揮了底層平臺的強大功能,同時隱藏了底層平臺的細節,從而允許開發人員將精力集中于任務而不是各種特殊平臺的特殊細節。
相對于胖客戶端,富客戶端還具有更好的可伸縮性。傳統上,胖客戶端直接與數據庫相連接。這樣就限制了胖客戶端的運行環境(防火墻可能會限制胖客戶端與數據庫之間的連接),同時應用程序的可伸縮性(客戶端與服務器之間的連接總數)也可能會受到數據庫的限制。富客戶端通常利用應用服務器,后者負責建立到數據庫的連接。這種配置非常靈活(防火墻友好的)并且具有高度的可伸縮性。當然,技術中并沒有必然限制胖客戶端與應用服務器進行通信的東西,只不過在胖客戶端技術流行的時候,應用服務器還沒出現罷了。
沒有規則規定富客戶端應用程序必須是某臺對應服務器的客戶端。許多利用富客戶端技術的組織正在構建健壯、可擴展、可更新、本地化的獨立應用程序。同樣,雖然富客戶端通常利用應用服務器,但是并不存在要求必須這么做的規則或技術限制。沒有理由說富客戶端應用程序不能直接訪問數據庫。
富客戶端技術代表了胖客戶端與瘦客戶端二者優勢的結合:豐富的用戶體驗、高可伸縮性、平臺獨立,以及非常易于部署和更新。
Eclipse RCP是一項位于Eclipse平臺核心的功能。大多數人想到Eclipse時,他們會想到Java集成開發環境(IDE)。如果您將Eclipse中關于IDE的內容剝去,剩下的就是一個提供基本工作臺功能的核心,這些功能包括對可移動和可疊加的窗口組件(編輯器和視圖)、菜單、工具欄、按鈕、表格、樹形結構等等的支持。這個核心功能就是Eclipse RCP。
Eclipse RCP為應用程序開發人員提供了:
·應用程序和特性的一致且本地的外觀
·公共應用程序服務,例如窗口管理、更新管理、幫助和選擇管理
·本地的外觀,利用Windows、Mac OS X、Linux、Solaris、HP-UX、AIX和嵌入式設備上的實際平臺窗口部件
·標準化的組件模型
·普及的可擴展性
·整合的更新機制
·頂級開發工具(Eclipse 軟件開發包(SDK)是世界級的軟件開發環境)
盡管使用這個術語事實上是不合適的,但Eclipse RCP仍可以被視為構建富客戶端應用程序的中間件。它提供應用程序所需的基礎設施,從而允許開發人員將精力集中于核心應用程序功能而不是細節。別再浪費時間了:立即使用Eclipse RCP吧。
組件
Eclipse RCP由許多組件構成,每個組件負責整個環境中相應部分的功能。事實上,Eclipse RCP幾乎所有的部分都是由組件構成的;除了少量的引導代碼,RCP的每一部分都是一個組件。在Eclipse世界中,組件更多時候是被稱為插件(或者在OSGI詞匯中被稱為包裹)。術語“插件”表明了這項組件功能在某種程度上屬于二級功能,或者它只是內置功能的一個附加物。但事實并非如此;Eclipse RCP對待所有的插件都是平等的,內置和定制插件之間并沒有明確的概念界限。您創建的用于實現應用程序行為的插件可與構成Eclipse RCP的插件一起運行。
通常,富客戶端應用程序的開發都是從單一插件開始的。在一個單獨的插件中,您可以為您的應用程序定義整個用戶界面、業務邏輯和對象模型。創建一個新的Eclipse RCP應用程序非常容易,您只需選擇菜單項File>New>Project...、選擇創建新的Plug-in Project(插件項目)、然后遵循出現的向導中的步驟。在向導的Content(內容)頁面上,對于問題“Would you like to create a rich client application?(您是否希望建立一個富客戶端應用程序?)”,記得選擇“Yes(是)”。圖1中顯示的是向導的Templates(模板)頁面;在這里我們選擇創建“RCP application with a view(帶有視圖的RCP應用程序)”。
圖1. New Plug-in Project向導的Templates頁面
這將創建一個包含RCP應用程序所需部分的新插件,其中包括工作臺(菜單欄和工具欄)設置和包含一個表格的單一視圖(參見圖2)。
圖2. 向導創建了一個具有全部功能的RCP應用程序
向導生成了以下類:
Application.java
生成的Application類包含一個單一方法,run(Object args),此方法負責運行應用程序(真奇怪)。這個方法引導并打開工作臺窗口,當它退出時,應用程序將關閉。
ApplicationActionBarAdvisor.java
ApplicationActionBarAdvisor類負責構建菜單欄、工具欄和狀態行。這一生成的類會創建一個帶有單一File菜單(其中包含Exit項)的菜單欄。您可以利用fillCoolBar(ICoolBarManager coolBar)方法為您的工作臺窗口添加一個工具欄。類似地,您也可以用fillStatusLine(IStatusLineManager statusLine)來為工作臺窗口添加一個狀態行。
ApplicationWorkbenchAdvisor.java
ApplicationWorkbenchAdvisor類提供大量到應用程序生命周期的鉤子。例如,您可以添加程序啟動或關閉時調用的方法。生成的實現只是指定呈現給用戶的初始視圖。
ApplicationWorkbenchWindowAdvisor.java
和ApplicationWorkbenchAdvisor類似,ApplicationWorkbenchWindowAdvisor類提供到工作臺生命周期的鉤子。您可以添加創建、打開、還原或關閉工作臺窗口時調用的方法。生成的實現提供一個preWindowOpen()方法,此方法設置窗口的初始大小和標題,以及是否隱藏工具欄和狀態行(二者都是隱藏的)。
Perspective.java
Eclipse SDK提供了大量的視圖。生成的應用程序包括一個視圖;您可以根據要求指定額外的視圖。生成的視圖隱藏了編輯器區(即,編輯器在視圖中是隱藏的)并且會添加由向導生成的視圖。這種視圖被設置為固定的:它的視圖沒有熟悉的標題欄,而且不能移動。用戶可以通過將設置從false修改成true(和為應用程序添加一些新的視圖)來隨意調整視圖的位置。
View.java
生成的View類包含了一個帶有少量硬編碼條目的表格。您可以利用它來制定您的應用程序外觀。如果表格是您所需的,您可以通過將其與您的對象模型相連接來定制它,或者使用一個或多個窗口組件徹底替換掉它。
下一步我們將根據要求,通過更改或增加菜單、菜單項、工具欄、視圖,以及編輯器來修改生成的代碼。