傳統(tǒng)的基于C/S的Windows應用程序總是讓客戶面臨著一些感覺很是不爽的問題,如:部署問題、升級困難、維護困難、安全問題,但是完全的WEB開發(fā)由于HTTP協(xié)議的無狀態(tài)特性——瀏覽器和服務器總是在不停地執(zhí)行Request和Response來營造一種有狀態(tài)、持續(xù)會話的假象,致使人們又開始懷戀具有更強運算能力、本地存儲能力和更穩(wěn)定的通訊能力的客戶端程序了。
不得不說的是,寬帶網(wǎng)絡的出現(xiàn)在某種意義促成了Rich Client的誕生。通過快捷的發(fā)布,特定的通訊協(xié)議標準,Rich Client正以不可阻擋的氣勢向人們重現(xiàn)著C/S模式下客戶端程序的優(yōu)勢。
Rich Client的發(fā)布
C/S架構下,客戶端程序發(fā)布與維護一直比較困難和繁瑣。在版本更新以后,需要對客戶的客戶端程序進行逐個下載安裝及配置更新,這是一個體力活,而這也一直是使用戶大量選擇WEB程序的因素之一。
在Rich Client時代,由于寬帶網(wǎng)絡的便利,在客戶端盡盡需要從服務器端下載已經(jīng)更新好的程序運行,而不必理會繁瑣的下載、安裝和配置的過程。
這里不得不提Java的是WebStart技術。
WebStart是讓用戶只需在網(wǎng)頁上點擊一個超級鏈接就能運行一個Java桌面應用的技術。對于一個擁有WebStart能力的Java應用來說,用戶使用它就和使用WEB應用一樣的簡單,但它所具有的界面能力和本地處理能力卻是WEB應用無法望其項背的。
具體的應用的技術知識可以從http://java.sun.com中尋找相關文檔,這里不一一贅述。
Rich Client的通信機制
除了快捷方便的發(fā)布外,Rich Client還需要與服務器端建立一種快速、可靠、強大、易用的通信交互機制。但我們開發(fā)WEB應用時,表現(xiàn)層和業(yè)務服務層常常只是同一個進程中的不同對象,它們之間的交互不過是Java的方法調用而已,當表現(xiàn)層邏輯被分發(fā)到世界各地的計算機上,客戶端和服務器之間的交互就成了一個大問題——從前的C/S被淘汰,很大程度上歸咎于socket通信的復雜性。
現(xiàn)在,形形色色的RPC(遠程過程調用,Remote Procedure Call)技術以獨特的優(yōu)勢扮演起了信使的角色。以下列舉幾種Rich Client可以采用的通信機制。
CORBA和RMI
CORBA(通用對象請求代理體系結構,Common Object Request Broker Architecture)曾經(jīng)紅極一時,它能夠兼容各種操作系統(tǒng)平臺的語言,強大的的可擴展性所帶來的負面影響就是實現(xiàn)的復雜和繁瑣。如果服務器端和客戶端都采用Java開發(fā),那么CORBA所需要的語言無關的IDL就完全變成了畫蛇添足。當然,對于需要集成大量企業(yè)內(nèi)遺留的系統(tǒng)的EAI(企業(yè)應用集成)項目中,它一直是首選的技術。