摘 要:航班信息發(fā)布系統(tǒng)是航空公司、機(jī)場等航空服務(wù)部門用來掌握航班實(shí)時(shí)動(dòng)態(tài)信息的重要系統(tǒng)。Flex技術(shù)既有桌面軟件豐富的表現(xiàn)力,又具有Web應(yīng)用系統(tǒng)易部署、易維護(hù)的特點(diǎn)。本文講解了基于Flex技術(shù)的航班信息發(fā)布平臺(tái)的總體框架,并詳細(xì)介紹了該平臺(tái)的主要功能,對系統(tǒng)建設(shè)的關(guān)鍵技術(shù)進(jìn)行了詳細(xì)分析。
關(guān)鍵詞:富互聯(lián)網(wǎng)應(yīng)用程序;RIA;Flex技術(shù);航班信息發(fā)布
中圖分類號(hào):TP311.13
為了將空中交通管制部門掌握的航班信息與航空公司、機(jī)場、航空油料公司等部門之間實(shí)現(xiàn)共享,研制開發(fā)一套航班信息發(fā)布系統(tǒng),為這些航空地面保障單位提供多方位的信息服務(wù),就顯得相當(dāng)重要了。
系統(tǒng)的總體架構(gòu)采用的是客戶端/服務(wù)器(C/S)架構(gòu),這就引發(fā)了一個(gè)問題,軟件分發(fā)不方便。如果客戶端應(yīng)用程序發(fā)生變化,維護(hù)部門不得不對每一個(gè)終端軟件進(jìn)行重裝和升級。近些年來,隨著Web技術(shù)的迅猛發(fā)展和富互聯(lián)網(wǎng)應(yīng)用(RIA)技術(shù)的興起,使得Web應(yīng)用程序能夠?qū)崿F(xiàn)類似于客戶端應(yīng)用程序的豐富的功能和快速的響應(yīng)效果。同時(shí)Web應(yīng)用程序維護(hù)方便,升級軟件時(shí)只需要更新服務(wù)器端的Web應(yīng)用,解決了多年來客戶端應(yīng)用難維護(hù)的問題。Flex是Adobe公司推出的新一代的開發(fā)工具,允許開發(fā)者構(gòu)建和部署Flash平臺(tái)上的RIA應(yīng)用,其具備優(yōu)秀的動(dòng)畫效果,不僅具有快速顯示柵格圖片的能力,也有強(qiáng)大的矢量數(shù)據(jù)繪制與交互能力[1]。本文探討運(yùn)用Flex技術(shù)將航班信息的動(dòng)態(tài)效果顯示在網(wǎng)頁上,運(yùn)用FLEX技術(shù)實(shí)現(xiàn)航班信息發(fā)布系統(tǒng)。
1 系統(tǒng)目標(biāo)與設(shè)計(jì)
航班的飛行計(jì)劃以及實(shí)時(shí)動(dòng)態(tài)信息存儲(chǔ)在空管部門的飛行信息處理系統(tǒng)、雷達(dá)數(shù)據(jù)處理系統(tǒng)中,因此我們可以基于瀏覽器的方式,采用FLEX設(shè)計(jì)框架以及Web Service技術(shù),建立一套綜合的航班信息發(fā)布系統(tǒng),為機(jī)場管理部門、航空公司、航空配餐等民航單位提供一個(gè)獲取和應(yīng)用飛行計(jì)劃動(dòng)態(tài)信息的統(tǒng)一信息集成平臺(tái)。
從安全方面、層次化方面和統(tǒng)一服務(wù)三個(gè)方面考慮,本系統(tǒng)采用三層體系架構(gòu):數(shù)據(jù)訪問層,業(yè)務(wù)邏輯層,表現(xiàn)層。數(shù)據(jù)訪問層的數(shù)據(jù)來源于空中交通管制部門的業(yè)務(wù)系統(tǒng),包括航班動(dòng)態(tài)信息、航班計(jì)劃信息、飛行航線信息、航班停機(jī)位、用戶信息等數(shù)據(jù),存儲(chǔ)于多個(gè)關(guān)系型數(shù)據(jù)庫SQL SERVER 2010中。業(yè)務(wù)邏輯層采用基于.NET平臺(tái)的Web Service服務(wù)實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)的提取、分析、集成以及用戶認(rèn)證等功能。表現(xiàn)層采用Flex技術(shù),實(shí)現(xiàn)體驗(yàn)豐富的、互動(dòng)性強(qiáng)的網(wǎng)頁效果。中間服務(wù)層通過把應(yīng)用和數(shù)據(jù)隔離,所有的應(yīng)用通過調(diào)用統(tǒng)一的Web Service服務(wù)獲取數(shù)據(jù),來構(gòu)建靈活的系統(tǒng),使得系統(tǒng)不會(huì)受到數(shù)據(jù)的物理位置的影響,也不會(huì)受到需要存取數(shù)據(jù)信息的應(yīng)用個(gè)數(shù)的影響,這樣就實(shí)現(xiàn)了系統(tǒng)之間的信息的集成。整個(gè)系統(tǒng)通過后臺(tái)服務(wù)程序?qū)崟r(shí)獲取航班動(dòng)態(tài)信息、航班計(jì)劃信息、飛行航線信息、航班停機(jī)位、開車時(shí)間等業(yè)務(wù)信息,通過Flex技術(shù)開發(fā)的界面實(shí)現(xiàn)航班動(dòng)態(tài)變化的信息顯示,快捷的界面響應(yīng),提供通用的用戶界面特性,如拖放,以及在線和離線操作能力。系統(tǒng)的總體架構(gòu)如圖1所示。
2 系統(tǒng)功能與實(shí)現(xiàn)
2.1 系統(tǒng)功能。本系統(tǒng)發(fā)布中南地區(qū)航班動(dòng)態(tài)、航班計(jì)劃,航班信息查詢、提供關(guān)注的航班設(shè)置窗口,提供到港航班和變更航班的提示功能,提供航班加油提示功能。航班計(jì)劃指航空公司向空管單位申請執(zhí)行的航班計(jì)劃,包括次日航班計(jì)劃和航班時(shí)刻表。航班計(jì)劃包括航班號(hào)、起飛降落機(jī)場、預(yù)計(jì)起飛降落時(shí)間、機(jī)型、機(jī)號(hào)等。航班動(dòng)態(tài)指飛行計(jì)劃在實(shí)際執(zhí)行過程中的全程動(dòng)態(tài)變化信息。航班動(dòng)態(tài)包括航班變更信息、航班號(hào)、機(jī)號(hào)、機(jī)型、任務(wù)、起站、落站、預(yù)計(jì)起飛時(shí)間、預(yù)計(jì)到達(dá)時(shí)間、實(shí)際起飛時(shí)間、實(shí)際到達(dá)時(shí)間、停機(jī)位、是否延誤,是否取消。
基于Flex的航班信息發(fā)布網(wǎng)站調(diào)用遠(yuǎn)程Web Service服務(wù),向服務(wù)端發(fā)送數(shù)據(jù)調(diào)用請求,Web Service服務(wù)根據(jù)請求類型,對數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行提取、分析、融合等處理,將處理后的數(shù)據(jù)包括航班動(dòng)態(tài)、航班計(jì)劃、航班歷史、停機(jī)位信息、查詢結(jié)果等數(shù)據(jù)發(fā)送到航班信息發(fā)布網(wǎng)站。當(dāng)數(shù)據(jù)庫中的航班信息有更新時(shí),Web Service將最新更新的數(shù)據(jù)推送到航班信息發(fā)布網(wǎng)站,信息發(fā)布網(wǎng)站實(shí)時(shí)刷新數(shù)據(jù)顯示,并提供航班的變更告、到達(dá)告警、加油告警等功能。用戶可以選擇所關(guān)注的航空公司,應(yīng)用程序在提示窗口中根據(jù)用戶的選擇只提示用戶所關(guān)注的航空公司的航班。
2.2 航班數(shù)據(jù)的獲取和顯示。Flex程序客戶端代碼通常由MXML和Action Script兩部分組成。MXML是一種XML格式的標(biāo)記語言,其作用是進(jìn)行界面的描述;Action Script是一種面向?qū)ο缶幊陶Z言[2]。航班數(shù)據(jù)通過調(diào)用遠(yuǎn)程Web Service服務(wù)獲取得到。Flex有兩種方式可以調(diào)用Web服務(wù)。一種是基于標(biāo)簽。在標(biāo)記語言MXML中,F(xiàn)lex提供了
為了更好地實(shí)現(xiàn)Flex應(yīng)用與基于.NET的Web服務(wù)的交互,Web服務(wù)返回的數(shù)據(jù)集合采用的是泛型集合類型List,而未采用DataTable。雖然Flex是可以綁定到DataTable類型的數(shù)據(jù)并通過數(shù)據(jù)顯示控件顯示出來的,但是不足有二點(diǎn),一是速度比較慢,因?yàn)橐?jīng)過復(fù)雜的序列化和反序列化處理,二是返回的數(shù)據(jù)的可操作性差,在客戶端獲取數(shù)據(jù)后,還需要對數(shù)據(jù)進(jìn)行更改、排序、過濾等操作。DataTable是個(gè).NET自有的對象類型,在Flex中沒有對應(yīng)的數(shù)據(jù)類型,無法實(shí)現(xiàn)進(jìn)一步的操作。在Flex中數(shù)據(jù)保存在數(shù)組集合ArrayCollection中可以實(shí)現(xiàn)更改、排序等操作,而ArrayCollection正好可以與.NET中的泛性集合List對應(yīng),在接收數(shù)據(jù)時(shí)可轉(zhuǎn)換為ArrayCollection數(shù)據(jù)集合,這樣就能夠順利獲取數(shù)據(jù)并進(jìn)行進(jìn)一步的操作了。ArrayCollection作為數(shù)據(jù)提供者有多個(gè)優(yōu)勢:第一,可以提供數(shù)據(jù)的排序、過濾、查找等功能;第二,當(dāng)數(shù)據(jù)內(nèi)容發(fā)生更改時(shí),更改會(huì)立刻反映到所有綁定到它的控件中;第三,作為顯示控件的數(shù)據(jù)源,數(shù)據(jù)保存在本地的內(nèi)存中,刷新和排序的速度非???,比普通頁面需要連到Web服務(wù)器刷新要快很多。在數(shù)據(jù)顯示前,對航班數(shù)據(jù)先按照預(yù)計(jì)到達(dá)時(shí)間排序,作為數(shù)據(jù)網(wǎng)格組件的數(shù)據(jù)源,并且聲明為可動(dòng)態(tài)綁定的,用[Bindable]聲明。當(dāng)數(shù)據(jù)源的數(shù)據(jù)變化了,網(wǎng)格組件顯示的數(shù)據(jù)也會(huì)動(dòng)態(tài)實(shí)時(shí)刷新了。程序的顯示界面如圖2:
構(gòu)建共享對象保存用戶的個(gè)性化設(shè)置。航班信息發(fā)布的應(yīng)用中,程序需要永久保存用戶設(shè)置的個(gè)性化數(shù)據(jù),例如用戶關(guān)注的航班公司,用戶關(guān)注的航班,在航班變更提示窗口中需要根據(jù)關(guān)注的航班進(jìn)行提示。Adobe Flash提供了共享對象SharedObject類來保存客戶端的數(shù)據(jù),共享對象與Cookie類似,但是功能更強(qiáng)大,數(shù)據(jù)不僅可以永久保存,還能保存更加復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。正好滿足了航班信息發(fā)布網(wǎng)站保存用戶的特定設(shè)置的需求,以實(shí)現(xiàn)更豐富更個(gè)性化的用戶體驗(yàn)。
Flash的本地共享對象是一些可由用戶訪問的站點(diǎn)在計(jì)算機(jī)上創(chuàng)建的數(shù)據(jù)文件。通過ActionScript腳本來編寫代碼,網(wǎng)站可以將數(shù)據(jù)作為共享對象保存在用戶的機(jī)器上,用戶退出瀏覽器時(shí),共享對象的值就會(huì)保存在本地文件中。當(dāng)用戶下次訪問該網(wǎng)站時(shí),它將加載該信息,從而使終端用戶擁有一種更加個(gè)性化的體驗(yàn)。用戶在選擇界面選擇關(guān)注的航空公司集合,隨后航空公司名稱和航空公司的二字碼數(shù)據(jù)集保存在類型為ArrayCollection的復(fù)合型數(shù)組中。構(gòu)建一個(gè)遍歷數(shù)組的for循環(huán),在循環(huán)里,用數(shù)組的元素來填寫共享對象數(shù)組,這樣就實(shí)現(xiàn)了將復(fù)雜的二維數(shù)據(jù)集保存到共享對象中了。當(dāng)用戶退出網(wǎng)站時(shí),F(xiàn)lash Player自動(dòng)將共享對象寫入磁盤默認(rèn)路徑上一個(gè)后綴名為.sol文件中。也可以通過調(diào)用共享對象的fulsh()方法,立即將數(shù)據(jù)寫入磁盤。在用戶下一次運(yùn)行信息服務(wù)網(wǎng)站時(shí),通過調(diào)用SharedObject類的getLocal()方法來讀取已經(jīng)保存的后綴名為.sol的文件。最后,構(gòu)建一個(gè)for循環(huán)來遍歷保存在共享對象中的數(shù)據(jù),將結(jié)果保存到類型為ArrayCollection的數(shù)組中,網(wǎng)頁上的表格顯示控件綁定數(shù)組,將航空公司的信息顯示出來,便完成了個(gè)性化設(shè)置的數(shù)據(jù)加載的功能。
3 結(jié)束語
信息技術(shù)的迅猛發(fā)展為基于Web方式的應(yīng)用注入了活力。Flex技術(shù)與傳統(tǒng)Web技術(shù)相比,具有完整的瀏覽器可移植性,豐富的界面體驗(yàn)、更少的網(wǎng)絡(luò)流量、更快捷的操作響應(yīng)等優(yōu)勢。在我國民航事業(yè)的飛速發(fā)展形勢下,航班信息的發(fā)布是民航信息化不可缺少的重要組成部分,基于Flex技術(shù)的航班信息發(fā)布系統(tǒng)提供實(shí)時(shí)準(zhǔn)確的信息,豐富的功能和用戶體驗(yàn),具有易部署、易維護(hù)、跨平臺(tái)的特定,符合民航建立高效信息服務(wù)平臺(tái)的需求。目前該系統(tǒng)已在中南地區(qū)空管系統(tǒng)內(nèi)運(yùn)行,為航班信息服務(wù)提供了穩(wěn)定高效的平臺(tái)。
參考文獻(xiàn):
[1](美)Jeff Tapper,Micael Labriola,Matthew Boles,James Talbot.楊博,杜宏,譯.Flex 3權(quán)威指南[M].北京:人民郵電出版社,2009.
[2]彭新,劉永偉,葉長春.基于Flex和.NET開發(fā)RIA[D].武漢:中國地質(zhì)大學(xué),2010.
作者簡介:李娟(1976-),女,浙江蒼南人,工程師,本科,研究方向:航班信息系統(tǒng)應(yīng)用與開發(fā)。
作者單位:民航中南空管局,廣州 510405