何曉桃鄭文豐
(1.廣東工業(yè)大學(xué)計算機(jī)學(xué)院,廣東廣州510006;2.廣東省科普信息中心,廣東廣州510040)
傳統(tǒng)網(wǎng)絡(luò)程序的開發(fā)是基于頁面的、服務(wù)器端數(shù)據(jù)傳遞的模式,把網(wǎng)絡(luò)程序的表示層建立于HTML頁面之上,功能單一、人機(jī)交互性差、安全性不高。傳統(tǒng)的基于頁面的系統(tǒng)已經(jīng)漸漸不能滿足網(wǎng)絡(luò)瀏覽者的更高的、全方位的體驗要求。隨著Web技術(shù)的不斷發(fā)展,Web開發(fā)有了新的發(fā)展分支,即包含豐富用戶體驗的應(yīng)用,這就是富互聯(lián)網(wǎng)應(yīng)用(Rich Internet Applications,縮寫為RIA)。
Flex是RIA領(lǐng)域中的典型代表。Flex是一個針對企業(yè)級富互聯(lián)網(wǎng)應(yīng)用的表示層解決方案。具體地說,F(xiàn)les是一種應(yīng)用程序框架,主要用于客戶端程序的開發(fā)。一個完整的Flex程序由MXML代碼和ActionScript代碼組成。MXML是一種基于XML的標(biāo)記語言,在Flex技術(shù)中,MXML用于設(shè)計用戶界面,實現(xiàn)豐富的Flex表現(xiàn)層。從作用上來說,MXML和HTML的功能是基本一致的,都是設(shè)計用戶界面,但MXML提供了較HTML更為豐富的界面組件,并且在開發(fā)上更為結(jié)構(gòu)化,條理更加清晰。MXML的編寫同樣類似于HTML,它通過標(biāo)簽來定義和描述組件。ActionScript基于ECMAScript,是為Adobe Flash設(shè)計的面對對象的程序設(shè)計語言,在Flex開發(fā)中,ActionScript的基本作用類似于傳統(tǒng)網(wǎng)頁開發(fā)中的JavaScript,同時,ActionScript還要負(fù)責(zé)Flex程序的邏輯控制和業(yè)務(wù)建模。
XML是Extensible Markup Language的縮寫,稱之為可擴(kuò)展標(biāo)記語言。它具有開放性、簡單性、互操作性、自我描述性、可擴(kuò)展性、內(nèi)容和顯示分離、本地計算、個性化數(shù)據(jù)視圖、數(shù)據(jù)集成性等多種特點。其中數(shù)據(jù)集成性是指使用XML,可以描述和集成來自多種應(yīng)用程序的不同格式的數(shù)據(jù),使其能夠傳遞給其它應(yīng)用程序,做進(jìn)一步的處理。
本文正是利用XML的數(shù)據(jù)集成性,采用Flex作為表示層,J2EE作為后臺程序,以MySQL作為數(shù)據(jù)存儲,設(shè)計一套在線試題系統(tǒng)RIA。它改變傳統(tǒng)的在線試題管理系統(tǒng)的基于HMTL的表現(xiàn)層,提供了RIA應(yīng)用的良好用戶體驗。
Flex技術(shù)遵循業(yè)界標(biāo)準(zhǔn),采用XML(即可擴(kuò)展標(biāo)記語言)數(shù)據(jù)文檔綁定用戶界面組件,讓數(shù)據(jù)盡可能保持?jǐn)?shù)據(jù)庫中的模式傳送到客戶端。XML文檔成為用戶界面組件和服務(wù)器端數(shù)據(jù)傳送到客戶端數(shù)據(jù)庫中進(jìn)行通信的中介,即從數(shù)據(jù)庫獲得數(shù)據(jù)生成XML文檔傳送到用戶界面組件給用戶,或?qū)⒂脩舾膭由傻臄?shù)據(jù)生成XML文檔提供到服務(wù)器端解析后存入數(shù)據(jù)庫。Flex技術(shù)標(biāo)準(zhǔn)使得它很容易就跟外部XML文件進(jìn)行通信。而且XML文件簡單小巧、存儲方便、檢索快速,F(xiàn)lex加載外部XML文件的代碼簡單快捷。同時Flex提供了一系列獨特的功能,包括:豐富的表現(xiàn)力、高執(zhí)行效率、豐富媒體支持、脫機(jī)支持等。
通過Flex的HTTPService方式訪問服務(wù)器端數(shù)據(jù),使遠(yuǎn)程過程調(diào)用與服務(wù)器環(huán)境,如PHP、Adobe ColdFusion和Microsoft ASP.NET進(jìn)行交互。獲得服務(wù)器端數(shù)據(jù)之后,以XML格式返回,再經(jīng)過Flex解析后在頁面上顯示出來。
圖1 Flex與XML的集成應(yīng)用
在線試題的題型包括單選題、多選題、判斷題、填空題和問答題。題目通過一個獨立的XML文件來描述?;贔lex的表現(xiàn)層通過XML對象訪問數(shù)據(jù)文件XML,并將XML文件中的數(shù)據(jù)解析后在界面上顯示出來。
針對單選題、多選題、判斷題、填空題和問答題5中題型分別設(shè)計5個XML文件:Choice.xml、MultipleChoice:xml、Judgement.xml、Filling.xml和Answer.xml用來存儲五種題型的試題信息,如題干、各備選項、正確答案以及解析。其XML文件具體的內(nèi)容包括:題干、選項、答案和解析。單選題的XML文件描述如下所示:
其中<chapter>結(jié)點存放章節(jié)信息,<ti>存放的是一道題的試題信息,<title>存放的是題干信息,<body>存放的是各備選項信息,<answer>存放的是答案信息,<explain>存放的是試題解析。其它XML文件都是用相同的節(jié)點存放試題信息,這里就不列舉出來了。
RIA系統(tǒng)的后端,不限定何種服務(wù)端技術(shù),使用PHP、J2EE、ASP.NET都可以。本文中使用PHP作為服務(wù)器端應(yīng)用程序的開發(fā)語言,使用MySQL數(shù)據(jù)庫存儲所有的試題和相關(guān)信息。基于Flex技術(shù)的RIA系統(tǒng)通過Flex中內(nèi)置的HTTPService組件訪問服務(wù)器端數(shù)據(jù),采用POST方法調(diào)用一個PHP頁,關(guān)鍵代碼如下所示:
該PHP頁通過HTTP協(xié)議POST方式獲得提交的參數(shù),并查詢MySQL數(shù)據(jù)庫,獲得所需數(shù)據(jù),然后將結(jié)果數(shù)據(jù)以XML的結(jié)構(gòu)通過HTTP響應(yīng)形式返回給Flex頁面。
在RPC組件調(diào)用服務(wù)之后,服務(wù)返回的數(shù)據(jù)將放置在lastResult對象中。默認(rèn)情況下,HTTPService組件和Web-Service組件操作的resultFormat屬性值為object,而返回的數(shù)據(jù)以ActionScript對象的簡單樹形式來表示。Flex解釋W(xué)eb服務(wù)或HTTP服務(wù)返回的XML數(shù)據(jù),以便相應(yīng)地表示基本類型(如String、Number、Boolean和Date)。要使用強類型對象,您必須使用Flex所創(chuàng)建的對象樹來填充這些對象。
WebService和HTTPService組件均返回作為復(fù)雜類型的匿名Object和Array。如果makeObjectsBindable為true(默認(rèn)值),則Object將包裝在mx.utils.ObjectProxy實例中,而數(shù)組將包裝在mx.collections.ArrayCollection實例中。
在處理返回結(jié)果時,如果不確信服務(wù)調(diào)用的結(jié)果是包含數(shù)組還是單個對象,您可以使用mx.utils.ArrayUtil類的toArray()方法將其轉(zhuǎn)換為數(shù)組,如前所示。如果將toArray()方法傳遞給單個對象,則該方法會返回一個數(shù)組,而該對象是唯一的Array元素。如果向方法傳遞一個數(shù)組,則該方法將返回同一個數(shù)組。
RIA(富互聯(lián)網(wǎng)應(yīng)用程序)是將桌面應(yīng)用程序的交互式用戶體驗與傳統(tǒng)的Web應(yīng)用的部署靈活性和低成本相結(jié)合起來的下一代的網(wǎng)絡(luò)應(yīng)用程序。Flex是一個輕量級、跨平臺、跨設(shè)備的企業(yè)級RIA應(yīng)用程序的表示層解決方案,同時也是跨多個應(yīng)用程序服務(wù)器平臺(PHP、J2EE和.NET)和客戶端操作系統(tǒng)(Windows、Mac OS、Linux等)。XML可以描述和集成來自多種應(yīng)用程序的不同格式的數(shù)據(jù),通過XML的自描述性和集成性,可以作為Flex和應(yīng)用程序之間的數(shù)據(jù)傳遞的載體。Flex結(jié)合XML技術(shù)讓現(xiàn)有的Web技術(shù)得到了極大的保留,提高產(chǎn)品設(shè)計師和開發(fā)工程師的“開發(fā)體驗”,強化設(shè)計端和開發(fā)端的整合,使富互聯(lián)網(wǎng)應(yīng)用程序(RIA)帶給用戶前所未有的用戶體驗。
[1]戴侃,楊小虎.基于J2EE和FLEX技術(shù)構(gòu)建RIA系統(tǒng)的探索與實現(xiàn)[J].微電子學(xué)與計算機(jī),2003,23(5):22-23.
[2]Adobe System.Flex Documentation[EB/OL].http://solution.myadobe.com.cn/.
[3]陳顯軍,魏祖寬.基于Flex的XML數(shù)據(jù)通信與應(yīng)用研究[J].計算機(jī)與現(xiàn)代化,2008,03.
[4]楊占波等.Flex3RIA開發(fā)詳解與精深實踐一企業(yè)級Web應(yīng)用與AIR桌面應(yīng)用[M].北京:清華大學(xué)出版社,2009.
[5]陳燕等.基于XML和Flex的網(wǎng)絡(luò)考試系統(tǒng)的設(shè)計與實現(xiàn)[J].電子商務(wù),2010,06.