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

這將創(chuàng )建一個(gè)包含RCP應用程序所需部分的新插件,其中包括工作臺(菜單欄和工具欄)設置和包含一個(gè)表格的單一視圖(參見(jiàn)圖2)。

向導生成了以下類(lèi):
Application.java
生成的Application類(lèi)包含一個(gè)單一方法,run(Object args),此方法負責運行應用程序(真奇怪)。這個(gè)方法引導并打開(kāi)工作臺窗口,當它退出時(shí),應用程序將關(guān)閉。
ApplicationActionBarAdvisor.java
ApplicationActionBarAdvisor類(lèi)負責構建菜單欄、工具欄和狀態(tài)行。這一生成的類(lèi)會(huì )創(chuàng )建一個(gè)帶有單一File菜單(其中包含Exit項)的菜單欄。您可以利用fillCoolBar(ICoolBarManager coolBar)方法為您的工作臺窗口添加一個(gè)工具欄。類(lèi)似地,您也可以用fillStatusLine(IStatusLineManager statusLine)來(lái)為工作臺窗口添加一個(gè)狀態(tài)行。
ApplicationWorkbenchAdvisor.java
ApplicationWorkbenchAdvisor類(lèi)提供大量到應用程序生命周期的鉤子。例如,您可以添加程序啟動(dòng)或關(guān)閉時(shí)調用的方法。生成的實(shí)現只是指定呈現給用戶(hù)的初始視圖。
ApplicationWorkbenchWindowAdvisor.java
和ApplicationWorkbenchAdvisor類(lèi)似,ApplicationWorkbenchWindowAdvisor類(lèi)提供到工作臺生命周期的鉤子。您可以添加創(chuàng )建、打開(kāi)、還原或關(guān)閉工作臺窗口時(shí)調用的方法。生成的實(shí)現提供一個(gè)preWindowOpen()方法,此方法設置窗口的初始大小和標題,以及是否隱藏工具欄和狀態(tài)行(二者都是隱藏的)。
Perspective.java
Eclipse SDK提供了大量的視圖。生成的應用程序包括一個(gè)視圖;您可以根據要求指定額外的視圖。生成的視圖隱藏了編輯器區(即,編輯器在視圖中是隱藏的)并且會(huì )添加由向導生成的視圖。這種視圖被設置為固定的:它的視圖沒(méi)有熟悉的標題欄,而且不能移動(dòng)。用戶(hù)可以通過(guò)將設置從false修改成true(和為應用程序添加一些新的視圖)來(lái)隨意調整視圖的位置。
View.java
生成的View類(lèi)包含了一個(gè)帶有少量硬編碼條目的表格。您可以利用它來(lái)制定您的應用程序外觀(guān)。如果表格是您所需的,您可以通過(guò)將其與您的對象模型相連接來(lái)定制它,或者使用一個(gè)或多個(gè)窗口組件徹底替換掉它。
下一步我們將根據要求,通過(guò)更改或增加菜單、菜單項、工具欄、視圖,以及編輯器來(lái)修改生成的代碼。
聯(lián)系客服