摘 要 隨著網絡技術的飛速發(fā)展,網絡瀏覽器單調的功能導致B/S架構的缺點逐漸暴露,RIA開發(fā)技術融合了B/S和C/S開發(fā)架構的優(yōu)點于一身,具有優(yōu)秀的網絡交互能力和優(yōu)美的頁面表現效果,其中Flex技術伴隨著自身的發(fā)展成為RIA領域的排頭兵。本文探討了在MVC框架Struts中應用Flex技術的方法和特點,說明了Flex技術強大的富客戶端能力以及將Flex技術與傳統(tǒng)Struts框架集成的可行性。除此之外,簡單論述了Flex技術當前面臨的一些挑戰(zhàn)
關鍵詞 flex RIA Web程序開發(fā)
當前, 互聯(lián)網已經成為應用程序開發(fā)的首選平臺。但是, 用戶對應用程序復雜性的要求與日俱增, 而現在的互聯(lián)網應用程序在完成復雜應用方面卻始終不能跟上步伐。結果導致許多公司必須面對營業(yè)額損失,極為不滿的客戶以及成本的增加。Web 模型是基于頁面的模型, 缺少客戶端智能功能的機制。而且, 它幾乎沒辦法完成復雜的用戶交互。這樣的技術使得Web 應用程序使用起來非常困難, 支持成本也比較高, 并且在很多方面無法發(fā)揮Web程序的效應。為了解決以上這些問題, 出現了一種新類型的Internet 應用程序, 即富互聯(lián)網應用程序(Rich Internet Applications,RIA)。這些應用程序從誕生開始就結合了桌面應用程序的反應快、交互性強的優(yōu)點以及Web 應用程序方面?zhèn)鞑シ秶容^廣和容易傳播的特性。RIA程序簡化并改進了Web 應用程序的用戶交互方面的特性。這樣, 用戶開發(fā)的應用程序可以提供更豐富、更具有交互性的效果和功能。
RIA的概念最初由Macromedia公司(后來被Adobe收購)提出,RIA是Rich Internet Application的簡稱,它將傳統(tǒng)桌面應用程序在用戶界面功能性方面的特長與Web應用程序的普遍采納、低成本布署以及互動多媒體通信的長處集于一身,從而形成了一種可以提供更直觀、更好用戶體驗的應用程序。
Macromedia Flex是目前最流行的開發(fā)RIA應用程序的技術之一。作為一種編程技術和語言,Flex可以在企業(yè)級應用中與J2EE技術實現完美的結合,從而使它在開發(fā)中可以完全取代JSP這種在MVC架構中用于維護視圖的技術。Flex 技術包括兩個主要功能領域,客戶端應用程序框架以及服務器端運行時服務??蛻舳藨贸绦蚩蚣苡扇矫娼M成,分別是:擁有豐富的用戶界面的各種組件,用于排布這些組件的基于XML的標記語言MXML,以及可以處理用戶交互的面向對象編程語言ActionScript和Flex類庫。程序開發(fā)人員可以利用MXML及ActionScript編寫Flex應用程序,MXML用來定義應用程序用戶界面元素,ActionScript用來定義客戶邏輯與程序控制,Flex類庫中包括Flex組件、管理器及行為等各種部分。利用基于Flex組件的許多開發(fā)模型,開發(fā)人員可以在程序中加入預建的組件,創(chuàng)建新組件或者是將預建的組件加入復合組件中。Macromedia Flash播放器可以把Flex內置的界面顯示在客戶端。Flex運行時服務是一個可以在J2EE應用服務器或者Servlet容器內安裝的展現服務器,并最終作為標準的.WAR文件部署,提供用于Flex應用程序的數據管理和安全集成。
盡管Struts這樣的MVC框架很大的方便了開發(fā)人員的工作,但是在改善用戶體驗這點上并沒有達到革命性的突破:使用的仍舊是比較傳統(tǒng)的“請求---響應”的處理機制,每當客戶端發(fā)出一個請求,服務器端會根據客戶端發(fā)出的請求進行計算并產生結果,重新生成HTML頁面并且發(fā)回客戶端。相比較而言,Flex中的文件會最終編譯成為一個二進制的SWF文件,并且將其發(fā)送到客戶端,當客戶端發(fā)送請求到服務器的時候,服務器僅僅傳送所需的數據回客戶端,并不會重新編譯SWF文件,也不會重新刷新頁面。由此可見,將Struts技術和Flex技術結合成為必然而又自然的選擇。
為了讓Flex頁面組件與服務器端更好的通信,我們需要借助一種技術:Flex Data Service(FDS)。FDS是Flex的數據服務,是用Java技術開發(fā)的服務器運行時,就是開發(fā)人員所謂的“容器”,它本身也是作為一個應用部署在諸如WebSphere,Tomcat等服務器上的。FDS本質是一個“中間件”,并不處理具體的業(yè)務邏輯,而是提供諸如安全性,跨域訪問,數據格式交換等服務,所以FDS并不是Flex開發(fā)所必需的。經過很長時間的發(fā)展和改進,Adobe公司推出了兩種FDS框架,一種是Blazeds,另外一種是LiveCycle。其中第一種是開源的,功能比較單一。第二種是一個商業(yè)項目,第二種的功能比第一種功能更強。但是第一種也在迅速的發(fā)展與完善之中。在項目開發(fā)中只需將LiveCycle安裝之后的包含有Jar包和配置文件的文件夾復制到tomcat服務器上的特定位置即可使用。正確的配置完畢后Struts和FDS可以協(xié)同來完成服務器端的數據和事務處理任務。而處理之后的數據送給Flex的客戶端組件顯示。
在系統(tǒng)開發(fā)具體操作中后臺可以采用了Struts這樣的MVC框架,前臺頁面則可以使用Flex,如果將一個Flex項目直接部署到Tomcat服務器上,用URL訪問MXML文件,你只能看到響應的源代碼(XML格式),MXML并不會被編譯成SWF格式的文件。因為Tomcat會把MXML格式的文件當作普通的XML文件,從而拒絕對其進行處理,此時我們需要一種映射機制,將訪問MXML的請求交給專門的Servlet進行處理,這個專門的Servlet存在于之前提到的LiveCycle Data Service運行時中。
LiveCycle中主要包含了三種數據服務技術,分別是:數據管理服務、Flex消息服務、RPC(遠程過程調用)服務。這三種數據服務技術各有利弊,在不同類型的數據交互中能夠各顯神通,結合他們自己的的特點,我們介紹一種常用的RPC服務技術。
RPC這種遠程過程調用服務又可以劃分三種遠程服務類型,分別是:HTTP服務、Web服務和遠程對象服務。其中HTTP服務主要依賴于HTTPService組件,Web服務依賴于WebServices組件,而遠程對象服務借助于RemoteObject組件。而最為常用的還是借助于HTTPService組件實現前端Flex組件與后臺服務器的通信。
HTTPService服務是一個HTTP URI,它可以接收HTTP請求和發(fā)送響應信息。比如可以使用HTTPService組件與jsp,servlet,asp這些對象進行交互。在具體系統(tǒng)應用中,HTTPService組件通常將其請求發(fā)送給后臺Struts的Action,Action組件則負責處理業(yè)務邏輯并且將數據以XML的格式返回,當HTTP請求返回的時候將觸發(fā)一個事件。此事件處理函數能夠獲取返回的XML數據,將這些數據作為前臺Flex組件的數據源。LiveCycle和Struts在系統(tǒng)中充當了Flex應用和數據庫之間的橋梁,Flex應用通過向應用服務器發(fā)送HTTP請求的方式調用該橋梁,而Struts則調用數據庫中的存儲過程,將獲得的結果集以XML格式返回。
作為一項專注于交互技術和界面效果的RIA技術,Flex并沒有忽視企業(yè)級應用開發(fā)的重要性。通過一些中間件技術可以使Flex直接與傳統(tǒng)的MVC框架Struts完美結合。在很多系統(tǒng)開發(fā)的實踐中,證明了Flex技術能讓網絡應用程序功能更加強大,界面更加友好,尤其是對于那些界面需要大量的報表來展示復雜數據的業(yè)務系統(tǒng)。但是, Flex 技術在某些方面也暴露出自身的不足。例如在調用遠程對象時, Flex 客戶端獲取到數據后將其載入用戶界面并將其顯示出來這個過程所需時間略長于傳統(tǒng)基于HTML 的網絡應用程序。當然Flex 技術以及其他RIA技術都還在飛速發(fā)展中, 毫無疑問它們會對網絡應用程序的開發(fā)起到越來越大的作用。
參考文獻:
[1]李安琪.HTML5標準實施與未來發(fā)展[J].html5技術標準與產業(yè)專題.
[2]嚴琦,朱治國.Html5對移動應用的影響[J].研究與開發(fā).
[3]易昌華.Html5發(fā)展趨勢的研究和探索[J].價值工程.
[4]龔永明.淺議web開發(fā)的新標準html5[J].信息技術.