RCP介紹
RCP (Rich Client Platform)提供了一個通用的 Eclipse 工作檯,允許開發人員擴展和構造自己的應用程式。
發布
簡介
富網際網路應用程式(Rich Internet Applications,RIA)利用具有很強互動性的富客戶端技術來為用戶提供一個更高和更全方位的網路體驗。RIA集成了桌面套用的互動性和傳統Web套用的部署靈活性與成本分析,以創建單一而完整的用戶體驗。富客戶端技術使創建RIA成為可能,它提供一個運行時的環境以承載被編譯的客戶端應用程式,該客戶端應用程式是一個使用HTTP協定發布的檔案。客戶端應用程式使用異步的C/S結構連線到現有的套用伺服器,這是一種安全的、可升級的、具有良好適應性的面向服務模型,這種模型由當前所採用的Web服務驅動。
富客戶端技術正在不斷地完善中,但並不意味著會取代HTML。相反它將進一步擴展瀏覽器功能,使之提供更加高效和友好的用戶接口。許多RIA都在瀏覽器中運行,甚至它本身就是HTML的一部分,所以HTML將繼續保持其原有的角色。另外,由於富客戶端技術可以支持運動的圖像、視頻、音頻、雙向的數據通信和創建複雜的窗體,它為創建應用程式用戶接口提供了一個高效而完善的開發環境.
RIA開發必須具備三個要素:富客戶端技術、伺服器技術和開發工具。富客戶端技術充分利用本地機器的處理能力來處理數據,而不需要把某些數據傳送到伺服器處理,充分利用了本地機器的資源。伺服器技術提供了一種與富客戶端的連線機制,作為RIA的伺服器技術必須從現有的伺服器技術繼承,可以提供一個快速的腳本環境,支持資料庫套用開發、雙向數據通信、實時數據通信,甚至採用一種新的伺服器,例如:ColdFusion Server和Flash Communication Server等。RIA實現必須有一組簡單而高效的開發工具,如果沒有一組簡單而高效的開發工具,那么富客戶端技術與伺服器技術是毫無意義的。正是由於RIA的C/S結構,它需要一組開發工具協同工作才可以完成。
儘管目前有許多富客戶端技術,但是Macromedia Flash Player卻被廣泛採用,它已經逐漸成為富客戶端技術的網路標準。Flash Player 已經是一個無處不在的富媒體客戶端,它可以在不同的瀏覽器和作業系統上運行,所以它是一個跨平台、跨作業系統的網路客戶端。
“富”的概念包含兩方面,分別是指它具備豐富的用戶界面和豐富的數據模型。
典型的富客戶端模型
富客戶模型將界面分解成許多的既可以和用戶直接互動又可以和伺服器進行通信的小單元模組。
這種將應用程式的設計從以一個個相對獨立的頁面為中心轉移到以組件為中心的轉變將會使客戶層的設計提升到一個新的層次,並且會使客戶層變得更加靈活。富客戶層不再成為伺服器回響的最終端,這同時也使程式的性能得以提高,用戶使用的感覺就好像程式不需要和伺服器進行通信或者只是偶爾才需要進行通信。
不像傳統的模型那樣,伺服器收到請求後由上至下的創建客戶端界面,你不用預測事件的順序。既然每個組件都是獨立的,就沒有必要因為一個請求而做出影響整個視圖的反應。要使每個組件都具有向伺服器傳送信息的能力需要每個組件知道如何處理伺服器傳遞迴來的信息。在RIA中,客戶端和伺服器端互動數據是不同步的,這樣你就可以控制組件創建信息傳送給伺服器和處理伺服器的回響,可以為更零散的控制去耦和分離程式功能並且組建面向服務的程式結構。
Rich Client是一個相對的概念,主要是針對時下廣泛的基於WEB的套用,因為這種客戶端(也即現有的各種瀏覽器)的運行環境沒有提供一個很好的組件模型和互動模型致使這種套用的界面的同服務之間的互動變的很奇怪,每一次互動都需要重新組織出整個界面,而這個界面的組織基本在伺服器端完成,也所以致使表現層的邏輯居於伺服器端,所以稱這種為Thin Client,而相對的則是Rich Client,目前來說在技術上Rich Client還沒有一個甚或是兩個大一統而且又成熟的標準技術出來,所以Rich Client只能說是一種架構方式,其特點便是服務同表現完全的物理分離,表現邏輯完全由客戶端來負責,這是最關鍵的一點。但我認為一定要同時兼顧原有WEB套用的零部署等特點。
C/S架構下,客戶端程式發布與維護一直比較困難和繁瑣。在版本更新以後,需要對客戶的客戶端程式進行逐個下載安裝及配置更新,這是一個體力活,而這也一直是使用戶大量選擇WEB程式的因素之一。
在Rich Client時代,由於寬頻網路的便利,在客戶端僅僅需要從伺服器端下載已經更新好的程式運行,而不必理會繁瑣的下載、安裝和配置的過程。這裡不得不提Java的是技WebStart術。
WebStart
WebStart(Java Web Start)是讓用戶只需在網頁上點擊一個超級連結就能運行一個Java桌面套用的技術。對於一個擁有WebStart能力的Java套用來說,用戶使用它就和使用WEB套用一樣的簡單,但它所具有的界面能力和本地處理能力卻是WEB套用無法望其項背的。
通信機制
除了快捷方便的發布外,Rich Client還需要與伺服器端建立一種快速、可靠、強大、易用的通信互動機制。但我們開發WEB套用時,表現層和業務服務層常常只是同一個進程中的不同對象,它們之間的互動不過是Java的方法調用而已,當表現層邏輯被分發到世界各地的計算機上,客戶端和伺服器之間的互動就成了一個大問題——從前的B/S被淘汰,很大程度上歸咎於socket通信的複雜性。
現在,形形色色的RPC(遠程過程調用,Remote Procedure Call)技術以獨特的優勢扮演起了信使的角色。以下列舉幾種Rich Client可以採用的通信機制。
CORBA和RMI
CORBA(通用對象請求代理體系結構,Common Object Request Broker Architecture)曾經紅極一時,它能夠兼容各種作業系統平台的語言,強大的可擴展性所帶來的負面影響就是實現的複雜和繁瑣。如果伺服器端和客戶端都採用Java開發,那么CORBA所需要的語言無關的IDL就完全變成了畫蛇添足。當然,對於需要集成大量企業內遺留的系統的EAI(企業套用集成)項目中,它一直是首選的技術。
RMI可以是做CORBA的Java版本,但相比較而言這是一個輕量級的版本了,對於伺服器和客戶端兩邊都用Java來實現的前提下,這是一個非常好的選擇。
CORBA和RMI有一個共同的缺陷:通常不會在系統80連線埠提供服務,所以這在具備網路防火牆的情況下顯得非常被動。
XML-RPC
為了解決在系統的80連線埠提供RPC的服務,而又不影響正在執行的WEB服務,人們想出了用HTTP協定傳輸RPC包的辦法。對於幾乎是專門用於傳輸文本的HTTP協定,要在其上傳輸RPC封包,最方便的方法莫過於把RPC封包編碼成文本形式——例如XML檔案。
XML-RPC是由美國UserLand公司指定的一個RPC協定。它將RPC信息封包編碼為XML,然後通過HTTP傳輸封包;它是一個簡單的RPC協定,只支持一些基本數據類型,不支持對象模型,這勢必掣肘在客戶端和伺服器端之間傳輸複雜的對象。
SOAP
SOAP即Simple Object Access Protocol(簡單對象訪問協定)是在分散或分散式的環境中交換信息的簡單的協定,是一個基於XML的協定。它允許所有的操作在80連線埠上進行,從而也繞過了防火牆等問題。
SOAP規範中有三個基本組成部分:SOAP封裝,編碼規則,以及在請求和回響之間的互動方式。
目前已有的基於JAVA提供SOAP功能的產品有:Apache SOAP, IBM SOAP4J等
Hessian
Hessian是由Resin套用伺服器的開發商Caucho公司制定的一個RPC協定,雖然它也是通過HTTP協定傳輸RPC封包,但是它的RPC封包卻是以二進制形式編碼的,而且能夠表現對象模型和異常體系,這就使得Hessian比XML-RPC具有更高的效率。
開源開發平台
Rich Client開源開發平台Laszlo
Laszlo
是一個開源的Rich client開發環境。使用Laszlo平台時,開發者只需編寫名為LZX的描述語言(其中整合了XML和JavaScript),運行在J2EE套用伺服器上的Laszlo平台會將其編譯成FLASH檔案並傳輸給客戶端展示。單從運行原理來說,Laszlo與XUL(XML用戶接口語言, XML User interface Language)、XAML(“Longhorn”)標記語言很類似。但它的最大優勢在於:它把描述語言編譯成FLASH,而FLASH是任何瀏覽器都支持的展示形式,從而一舉解決了瀏覽器之間的移植問題。而且,在未來的計畫中,Laszlo還可以將LZX編譯成Java或.NET本地代碼,從而大大提高運行效率。
IBM AlphaWorks網站近日發布了用於開發Laszlo應用程式的集成開發環境(實際上是一個Eclipse外掛程式),使J2EE開發者能夠在他們熟悉的Eclipse環境中快速開發基於Laszlo的rich client應用程式。此外,AlphaWorks網站還提供了一個用Laszlo開發的示例套用,展示了在Eclispe環境下開發Laszlo套用的過程。
FLEX
Flex是Macromedia公司開發的,用於Rich client開發的環境,其原理是將MXML(the Macromedia Flex Markup Language)檔案,編譯成SWF檔案,然後顯示在瀏覽器中,並利用Web Service技術和伺服器通信。從而利用Flash的強大功能,帶來更豐富的用戶體驗。
Flex官方說法如下(摘自網路上相關文章):
原代號為“Royale”的MacromediaFlex軟體將把伺服器軟體、開發指南和其他工具組合在一起,使傳統的網路套用開發人員能夠用Macromedia公司的Flash格式創作軟體單元。如從前報導的那樣,該產品的重點是讓那些使用Sun微系統公司的Java2企業版(J2EE)的開發人員能夠創作出更有吸引力、更容易導航的J2EE套用軟體接口。
Flex將使J2EE開發人員使用標準的文本式開發工具來製作Flash應用程式,而不必使用Macromedia公司以前出售的複雜的設計工具。Macromedia公司從今年年初開始,努力擴大Flash格式對於主流開發商的吸引力,其目標是擴大Flash的用途,使其成為提供網際網路套用和建立互動式網站的基礎。
Macromedia公司計畫在2004年上半年推出Flex伺服器軟體,該軟體的價格目前還沒有確定。它的初級版本將運行於J2EE中,並計畫隨後推出支持微軟的.Net格式的版本。最初的支持者包括IBM公司,它將隨自己的WebSphere軟體一起推廣Flex的套用。