林 遠
(浙江工業(yè)大學信息工程學院,浙江杭州310032)
隨著無線移動應用的推廣和普及,移動終端也越來越呈現(xiàn)出多樣化的趨勢,不同廠家生產(chǎn)的終端型號各異,采用不同的操作系統(tǒng),具備不同的顯示能力和處理數(shù)據(jù)能力。為了擺脫操作系統(tǒng)和硬件環(huán)境的差異、實現(xiàn)一套代碼不用修改就可以適應不同的平臺,很多中間件廠商提出了跨平臺的概念。目前,REXSEE公司提出的使用HTML5+JavaScript+CSS3來實現(xiàn)的移動中間件產(chǎn)品EMS已經(jīng)開始投入市場[1]。本文提出了另一種使用中間件技術來實現(xiàn)軟件在跨平臺終端上的移動化應用的方法,實驗設計的基于腳本引擎、客戶端界面動態(tài)構建的跨平臺手機移動中間件,能適應iPhone、Android、WinPhone、Symbian、Linux等主流系統(tǒng)平臺。
系統(tǒng)整個運行環(huán)境由:中間件模塊和各個手機操作系統(tǒng)平臺移動客戶端組件組成:(1)中間件模塊使用主要由JAVA程序和相應的xml腳本兩個部分組分,程序啟動后,服務器端加載預先編寫的xml文件,解析xml文件,調用數(shù)據(jù)庫驅動、爬蟲模塊獲取變量數(shù)據(jù),組裝成Json字符串向手機客戶端傳送;(2)移動客戶端組件在各個手機操作系統(tǒng)平臺上各有一個,實現(xiàn)的功能都是:接收呈現(xiàn)數(shù)據(jù)塊并調用解析模塊,構建UI呈現(xiàn)數(shù)據(jù),在終端上實現(xiàn)對業(yè)務系統(tǒng)的呈現(xiàn)和操作[2、3]。系統(tǒng)實現(xiàn)框圖如圖1所示。
實驗目標是使用本中間件,實現(xiàn)業(yè)務系統(tǒng)的移動化部署。實驗所使用的業(yè)務系統(tǒng)是某大學學生工作信息系統(tǒng),業(yè)務系統(tǒng)啟動后界面如圖2所示。
實驗流程包括:運行中間件服務器、運行測試手機終端、手機終端向服務器發(fā)送數(shù)據(jù)請求、中間件服務器響應請求、中間件服務器抓取業(yè)務系統(tǒng)數(shù)據(jù)、組裝數(shù)據(jù)返回手機終端。
圖1 系統(tǒng)實現(xiàn)框圖
圖2 業(yè)務系統(tǒng)界面截圖
2.2.1 運行中間件服務器
根據(jù)需要實現(xiàn)的業(yè)務功能、數(shù)據(jù)需求和UI構建方式編寫xml腳本并存放在中間件服務器相應目錄下,運行由java編寫的中間件服務器端程序,服務器端加載預先編寫的xml文件,面向對象的實體類xml文件內容進行解析,工具類生成呈現(xiàn)數(shù)據(jù)塊向手機端發(fā)送。本系統(tǒng)采用jetty開源框架作為嵌入式WEB服務器向手機端提供可擴展的數(shù)據(jù)服務。
在作為開發(fā)環(huán)境的eclipse中運行中間件服務器,中間件服務器運行在Java虛擬機種,Java程序啟動之后,控制臺print出運行信息:
開啟9999端口,作為服務端口,本端口可以根據(jù)需要設定。
中間件服務器順利啟動,開始運行工作。
2.2.2 終端運行
啟動手機客戶端,J2ME終端顯示如圖3所示,手機客戶端可以由多個手機操作系統(tǒng)的組件組成,適應iPhone、Android、WinPhone、Symbian、Linux、JAVA等主流系統(tǒng)平臺。每一個手機平臺都有一個對應的移動組件,只要在該手機上運行移動組件,移動組件連接上相應的中間件服務器,就可以運行該中間件服務器移動化的業(yè)務系統(tǒng)。
圖3 手機客戶端界面截圖
2.2.3 手機端發(fā)送數(shù)據(jù)請求
點擊登陸,手機端就會發(fā)送一個http請求到中間件服務器,將表單中的用戶名和密碼作為request請求的參數(shù),中間件服務器調用login的xml腳本,解析之后交由爬蟲模塊(登陸的功能使用爬蟲方式完成請求)請求業(yè)務系統(tǒng)的數(shù)據(jù),業(yè)務系統(tǒng)處理該業(yè)務(判斷用戶名密碼是否正確),正確即保存登陸session,中間件返回success的json字符串到手機端。登陸的整個業(yè)務在手機上就完成了。
中間件模塊發(fā)送URL http請求之后,可以有3種方式可以獲取數(shù)據(jù)[4、5]:
(1)用爬蟲爬取頁面數(shù)據(jù),存在tmp目錄下的緩存中;
(2)JDBC讀取業(yè)務系統(tǒng)數(shù)據(jù)庫SQL;
(3)使用業(yè)務系統(tǒng)的WebService提供的API。
方式一可以完全不變動原系統(tǒng)的部署,但是能實現(xiàn)的業(yè)務有局限。
方式二可以重構系統(tǒng)業(yè)務,但是部署成本較高,xml腳本將承載較多業(yè)務。
方式三是最優(yōu)的解決方案,不過只有較新的業(yè)務系統(tǒng)才有WebService支持,對較老系統(tǒng)不支持。
2.2.4 實驗結果
在這個實驗中完成了一個登陸業(yè)務的移動化演示,在業(yè)務系統(tǒng)、中間件服務器和手機端運行之后,由手機端發(fā)送請求觸發(fā)整個過程,經(jīng)過:手機終端向服務器發(fā)送數(shù)據(jù)請求、中間件服務器響應請求、中間件服務器抓取業(yè)務系統(tǒng)數(shù)據(jù)、組裝數(shù)據(jù)返回手機終端,這4個步驟,業(yè)務移動化的實驗目標順利完成。
本實驗中,移動終端獲取的數(shù)據(jù)傳輸格式是Json,然后解析Json生成UI。選擇Json是考慮到Json是一種輕量級的數(shù)據(jù)交換格式。易于機器解析和生成,便于有效控制手機數(shù)據(jù)流量。
另一種方式是采用xml格式傳輸數(shù)據(jù),這種方式較之Json格式的數(shù)據(jù)冗余較大,但是便于人工閱讀。在服務器端和手機端交互中還是Json格式優(yōu)勢較為明顯。
第三種方式就是使用html5技術,html5技術的表現(xiàn)形式非常豐富,跨平臺支持非常好,手機端組件開發(fā)成本也較低,但是截止到目前國際標準未完全發(fā)布,故只做系統(tǒng)設計,未完全實現(xiàn)[6、7]。
實驗成功將原先的業(yè)務系統(tǒng)移動化,并使用預先設計的UI在終端上呈現(xiàn)出來,使用本系統(tǒng)只要編寫與原業(yè)務系統(tǒng)相對應的xml腳本,并部署本系統(tǒng),即可實現(xiàn)原業(yè)務系統(tǒng)的移動化,并能適應諸多的手機操作系統(tǒng)平臺,大大降低了開發(fā)成本和實施周期。但是由于xml腳本表現(xiàn)形式不夠豐富,導致系統(tǒng)目前只能移動化一些比較簡單的應用。實驗下一步可以嘗試使用html5技術,通過html5技術的豐富的表現(xiàn)形式,系統(tǒng)將可以進一步實現(xiàn)一些復雜的應用。
[1] 李華飚.Java中間件技術及其應用開發(fā)[M].北京:中國水利水電出版社,2007:17-22.
[2] Anders Berglund,Scott Boag.XML Path Language(xPath)2.0[EB/OL].http://www.w3.org/TR/xPath20/,2005 - 11-01.
[3] Tamer M zsu,Patrick Valduriez.分布式數(shù)據(jù)庫系統(tǒng)原理[M].北京:清華大學出版社,2002:57-64.
[4] 朱曉明,劉衛(wèi)東.數(shù)據(jù)庫連接中間件的研究[J].計算機工程與應用,2003,2(1):7-10.
[5] Fabio Arciniegas.XML 開發(fā)指南[M].北京:清華大學出版社,2002:22-26.
[6] 賈西諾斯基.蓋江南譯.Java,Xml和web服務寶典[M].北京:電子工業(yè)出版社,2002:79-85.
[7] 周英飚,許蔚.異構數(shù)據(jù)庫體系結構[EB/01].http://www.#edu.cn/yangdy/database/paperl.htm,2003 - 04-05.