中圖分類號:TP文獻標識碼:A 文章編號:1008-925X(2010)12-0115-02
1、引言
Flex技術可以在企業內部或在Web上創建并交付豐富Internet應用程序(RIA),堪稱最完整、最強大的RIA開發解決方案。它使企業能夠創建個性化的豐富多媒體應用程序,極大地提高用戶的體驗,徹底革新人與Web的交互關系。目前,已經有多家著名企業使用Flex技術實施應用開發,例如SONY、ebay、SAP、CISCO等,其所構建的應用范圍包括富媒體應用程序、電子商務、數據可視化、在線產品定制等。Flex 應用程序運行在客戶端環境中, 若干個這樣的應用程序連同服務器共同組成了一個完整的應用。這些程序需要服務器提供數據或其他服務,BlazeDS 為這種通信方式提供了穩定、高效的支持。本文主要探討了,在企業應用中整合Flex 和BlazeDS 技術。
2、Flex 技術
Flex 是Adobe 公司在其著名的Flash 平臺(Flash Player)上,用ActionScript 語言開發的一套RIA 軟件開發套件(SDK)及其集成開發環境。Flex SDK 由Flex 框架類庫、Flex 編譯器、調試器、MXML 和ActionScript 編程語言以及其他工具組成。開發者可以通過拖拽的方式開發人機界面,用ActionScript 語言編寫代碼,ActionScript 負責部分業務和數據服務的交互功能,調用Flash 及Flex SDK 所提供的API 進行RIA 開發,然后用Flash Builder 編譯器進行編譯,編譯后的產品可以運行在Flash 虛擬機中。標準的Flex 應用程序并不要求服務器端的Flex 服務,可以在本地編譯它們并直接部署在Web 服務器的HMTL 頁面上。Flex 應用程序還可以部署在應用服務器。
3、BlazeDS 框架技術
3.1 BlazeDS 簡介
BlazeDS 是一個基于服務器的 Java 遠程控制 (remoting) 和 Web 消息傳遞 (messaging) 技術,以LGPL(Lesser GNU Public License)公共許可證書發布。它能夠使得后端的 Java 應用程序和運行在瀏覽器上的Flex應用程序相互通信。BlazeDS 的遠程訪問技術使用調用-響應模型,并且提供在ActionScript 和Java 數據類型之間透明的數據轉換與傳輸服務。BlazeDS的消息服務支持建立在HTTP 協議之上的消息發布(Publish)及訂閱(Subscribe)。Flex 或Ajax 客戶端通過訂閱一個或多個主題(Topic)以接受服務器推送來的數據。使用此服務,開發者能夠創建實時協作或數據推送應用程序。完整的BlazeDS 應用一般包含前端Flex 應用程序和后端服務器應用,而BlazeDS 則是連接這兩者的紐帶。
3.2 BlazeDS 主要功能
1.遠程過程調用服務
遠程過程調用(Remote Procedure Call,RPC)服務通過調用-返回的形式訪問外部數據。它允許客戶端異步請求遠程程序,請求被處理后直接返回給客戶端。Flex 應用程序使用RPC 組件訪問BlazeDS 提供的RPC 服務。Flex 包含三種類型的RPC 組件:HTTPService、WebService 和RemoteObject。HTTPService 組件以標準的HTTP 請求(Get、Post) 訪問位于服務器的URL。在服務器端BlazeDS 使用HTTPProxyService、HTTPProxyDestination 和HTTPProxyAdapter 協助完成前端HTTPService 組件的RPC 請求。WebService 組件支持訪問發布的SOAP 兼容的WebService, 請求參數和返回結果都以SOAP 格式封裝。在服務器端BlazeDS 使用HTTPProxyService、HTTPProxyDestination 和SOAPAdapter 協助完成前端WebService 組件的RPC 請求。RemoteObject 組件允許Flex 應用程序訪問服務器端的Java 對象, 請求參數和返回結果會被BlazeDS 透明地轉換成Java 對象和ActionScirpt 對象, 它是企業應用中效率最高、最常用的RPC 組件。在服務器端BlazeDS 使用RemoteService、RemotingDestination 和JavaAdapter 協助完成前端RemoteObject 組件的RPC 請求。其組件的調用如下圖所示:
2.消息服務
消息(Messaging) 服務允許多個客戶端通過它發布、訂閱消息或進行點對點的消息通信。使用消息服務可以構建準實時通信或者多點數據同步的系統。Flex 應用程序使用客戶端消息API 發送消息到定義在BlazeDS 服務器中的Destination,并從它接收消息。消息在Channel 中傳輸, 在Endpoint 中處理。BlazeDS 亦可以將消息推送到連接至它的客戶端,此時BlazeDS 使用Destination 廣播消息,所有訂閱此Destination 的Flex 應用程序都可以收到消息。BlazeDS 的消息服務還可以借助一個JMSAdapter支持嵌入或外部的JMS服務, 使用JMS 服務的主題(Topic)和隊列(Queue)。
3.3 BlazeDS 體系結構
一個BlazeDS 應用通常包括客戶端Flex 應用程序和服務器端Java EE 應用。在客戶端,由Flex RPC 或Message 組件發起會話請求,由Channel 將參數或命令使用指定的網絡協議(HTTP 或HTTPS)與服務器端進行會話;在服務器端,由一個Servlet 統一接收所有Channel 的請求,然后根據Channel 請求的URL 將請求分發給相應的Endpoint, 最終將請求轉換成適配器(Adapter)的源-客戶組件能識別的命令,這些客戶組件可能是Java Object Web 頁面、Web Service 或JMS 組件等。通過自定義Adapter,可以支持更多的客戶組件。
BlazeDS 應用在客戶端架構在企業的開發中,將客戶端和服務器端連接起來, 整個BlazeDS 應用的架構呈啞鈴形。啞鈴的一端是Flex 組件, 另一端是各種Adapter 及其連接的后端組件, 而中間的Channel 和Endpoint 則構成了BlazeDS 的核心。這種結構使BlazeDS 在保證核心穩定收斂的情況下,靈活發散,具有很強的適應性。
4、結束
用Flex 技術在客戶端設計極具視覺體驗和動態人機交互的圖形用戶界面,用J2EE 技術在服務器端實現復雜的事務邏輯,再通過BlazeDS 客戶端豐富的數據服務組件與J2EE 服務器端應用進行數據交互和數據綁定,從而實現性能優越的RIA 應用系統,使Flex 在客戶端的優勢與J2EE 在服務器端的高效得到完美的結合。
參考文獻:
[1]楊占坡,楊銘,翁穎. Flex 3 RIA 開發詳解與精深實踐. 北京:清華大學出版社,2009.
[2]姜天格,《Flex 3 企業級web 應用系統設計與實現》[M]. 機械工業出版社,2008
[3]Larry Ullman, 《Effortless Flex 4 Development》[M].Publisher: New Riders,2010
[4]蘭天曲鵬東孫高飛姜建衛,《Flex 企業應用開發實戰》[M]. 機械工業出版社,2010