趙 鳴,張 旭,熊 靜
(上海工程技術(shù)大學(xué) 航空運(yùn)輸學(xué)院民航運(yùn)輸系,上海201620)
受技術(shù)局限和安全因素影響,中國(guó)民航的三大主機(jī)系統(tǒng) (訂座、離港和貨運(yùn))最初均被設(shè)計(jì)為緊耦合結(jié)構(gòu),運(yùn)行在UNISYS大型主機(jī)上。但隨著民航客、貨運(yùn)業(yè)務(wù)量的高速增長(zhǎng),一些問(wèn)題也逐步表現(xiàn)出來(lái):一方面是主機(jī)性能提升相對(duì)緩慢;另一方面是用戶對(duì)系統(tǒng)可用性和可靠性要求越來(lái)越高。雖然已有通過(guò)UNISYS的 “擴(kuò)展事務(wù)處理能力”(XTC)技術(shù)成功實(shí)現(xiàn)對(duì)民航主機(jī)系統(tǒng)的松耦合架構(gòu)改造,但系統(tǒng)維護(hù)復(fù)雜程度大大增加,系統(tǒng)之間報(bào)文交換更加頻繁,一些單主機(jī)模式下不存在的問(wèn)題成為XTC架構(gòu)下的問(wèn)題或性能瓶頸。
面對(duì)日益凸顯的資源需求矛盾,在新平臺(tái)技術(shù)支持下設(shè)計(jì)系統(tǒng)架構(gòu),建立一個(gè)統(tǒng)一、分布、異構(gòu)的信息系統(tǒng),合理高效的利用民航信息資源,有效服務(wù)于民航各類(lèi)業(yè)務(wù),具有重要意義。WCF(Windows communication foundation)是微軟專(zhuān)門(mén)針對(duì)面向服務(wù) (service-oriented)應(yīng)用程序提供的.NET平臺(tái)下的分布式編程框架,將微軟所支持的各種分布式技術(shù)整合到一起,提供一致的開(kāi)發(fā)框架,降低了系統(tǒng)開(kāi)發(fā)周期,增強(qiáng)了系統(tǒng)的可伸縮性,解決了不同網(wǎng)絡(luò)和應(yīng)用環(huán)境下的數(shù)據(jù)和操作的共享以及異構(gòu)系統(tǒng)間跨平臺(tái)訪問(wèn)與操作問(wèn)題[1]。本文提出基于.NET平臺(tái),結(jié)合WCF技術(shù)構(gòu)建新一代多主機(jī)、分布式民航信息系統(tǒng),并以訂座系統(tǒng)在局域網(wǎng)中的實(shí)現(xiàn)為例驗(yàn)證方案的可行性。
中國(guó)民航信息網(wǎng)已形成了包括離港、訂座等8個(gè)業(yè)務(wù)主機(jī)群,承擔(dān)著民航訂座、客票銷(xiāo)售、機(jī)場(chǎng)值機(jī)、配載、貨運(yùn)等業(yè)務(wù)。自1991年改造以來(lái),主機(jī)群及前端處理機(jī)DCP通過(guò)雙備份共享式Ethernet互聯(lián),解決了信息流量均衡及方便獲取各主機(jī)群的服務(wù)和備份功能。但隨著業(yè)務(wù)量的劇增,如此復(fù)雜多主機(jī)系統(tǒng)結(jié)構(gòu)不具有擴(kuò)充和全局改造的靈活性,負(fù)載平衡和系統(tǒng)間大量報(bào)文交換處理成為系統(tǒng)優(yōu)化和維護(hù)的關(guān)鍵問(wèn)題。
為應(yīng)對(duì)國(guó)外先進(jìn)航空旅游信息系統(tǒng)的激烈挑戰(zhàn),民航信息系統(tǒng)呈現(xiàn)出以下4個(gè)發(fā)展趨勢(shì):①系統(tǒng)設(shè)計(jì)理念從“面向生產(chǎn)”轉(zhuǎn)向 “面向旅客服務(wù)”,著力建立核心旅客數(shù)據(jù)庫(kù);②核心系統(tǒng)應(yīng)采用新技術(shù)、新架構(gòu),從 “集中式”轉(zhuǎn)向 “開(kāi)放式”;③因開(kāi)放平臺(tái)通用性強(qiáng),成本低,系統(tǒng)間的數(shù)據(jù)交換具備成熟的模式,在開(kāi)放平臺(tái)上實(shí)現(xiàn)新技術(shù)和新業(yè)務(wù)功能成為首選方案;④對(duì)于存在的 “信息孤島”,提出構(gòu)建核心中間層,利用中間件技術(shù)進(jìn)行系統(tǒng)整合,實(shí)現(xiàn)資源共享。
此外,隨著國(guó)內(nèi)電子商務(wù)環(huán)境逐步改善,民航電子商務(wù)需求日益增強(qiáng),新一代的信息系統(tǒng)必須易于擴(kuò)展,有標(biāo)準(zhǔn)的系統(tǒng)接口和外部接入功能,任何一個(gè)新的功能或應(yīng)用系統(tǒng)都能方便的結(jié)合到其中,滿足民航電子商務(wù)的多種需求。
現(xiàn)行的旅客訂座系統(tǒng)作為民航信息系統(tǒng)的核心系統(tǒng)之一,包括代理人分銷(xiāo)系統(tǒng) (computer reservation system,CRS)和航空公司系統(tǒng) (inventory control system,ICS)。航空公司系統(tǒng)有國(guó)內(nèi)20多家航空公司的數(shù)據(jù),主要進(jìn)行航班方面的管理。代理人分銷(xiāo)系統(tǒng)為代理人提供航空產(chǎn)品和非航空產(chǎn)品的銷(xiāo)售。CRS如何銷(xiāo)售航空公司的座位由CRS與ICS的技術(shù)聯(lián)接方式及商務(wù)協(xié)議決定,系統(tǒng)間通過(guò)拍發(fā)報(bào)文實(shí)現(xiàn)信息共享和交換。
為保障安全和系統(tǒng)可靠性,傳統(tǒng)訂座系統(tǒng)采用了以UNISYS大型機(jī)為中心,集中式主機(jī)處理的緊耦合架構(gòu)。而隨著民航客運(yùn)業(yè)務(wù)的發(fā)展,這種系統(tǒng)架構(gòu)的不足主要表現(xiàn)為:①緊耦合下的主機(jī)系統(tǒng)結(jié)構(gòu),使得線路、用戶標(biāo)識(shí)等有限資源共享率低;②系統(tǒng)事務(wù)處理能力缺乏彈性、擴(kuò)充性,不利于銷(xiāo)售規(guī)模的擴(kuò)張;③某些系統(tǒng)維護(hù)任務(wù)必須停止應(yīng)用業(yè)務(wù),將影響到用戶。
隨著計(jì)算機(jī)技術(shù)的發(fā)展,開(kāi)放系統(tǒng)的處理能力逐步接近主機(jī)系統(tǒng),不但可以獲得擴(kuò)展的處理能力,還可以獲得較高的系統(tǒng)可用性和可靠性。中國(guó)民航的核心系統(tǒng)向開(kāi)放平臺(tái)轉(zhuǎn)換已成為必然,目前采取的方法主要有兩種:一是核心系統(tǒng)的功能逐步被替換外移到開(kāi)放平臺(tái),優(yōu)點(diǎn)是轉(zhuǎn)移風(fēng)險(xiǎn)小、新系統(tǒng)實(shí)施成本低,缺點(diǎn)是轉(zhuǎn)移進(jìn)程較長(zhǎng);二是重新開(kāi)發(fā)開(kāi)放應(yīng)用系統(tǒng),經(jīng)運(yùn)行測(cè)試后一次性替換全部功能,但風(fēng)險(xiǎn)較大。
座位管理和事務(wù)處理是民航信息系統(tǒng)的核心功能,其最終服務(wù)對(duì)象是旅客。通過(guò)分析以旅客服務(wù)為中心的訂座系統(tǒng)的業(yè)務(wù)流程,得出其具有的6大主要功能:①系統(tǒng)登錄。包括聯(lián)接民航主機(jī)系統(tǒng)、以工作號(hào)密碼登錄、顯示工作區(qū)狀態(tài)、臨時(shí)退出系統(tǒng)、恢復(fù)臨時(shí)退出系統(tǒng)、退出且釋放工作區(qū)資源等。②航班管理。涉及航班時(shí)刻、票價(jià)的制定、航班起飛時(shí)間、機(jī)型、各子艙位座位情況、聯(lián)接協(xié)議、經(jīng)停點(diǎn)、餐食服務(wù)等信息。在系統(tǒng)中建立相應(yīng)的航班信息并發(fā)布,用戶才可以查詢(xún)航班信息。③航班查詢(xún)。用戶在正常登錄系統(tǒng)后,能用AV等指令查詢(xún)目前執(zhí)行的航班信息。④旅客信息管理。保證旅客基本信息的準(zhǔn)確性、真實(shí)性、唯一性,能被其他信息系統(tǒng)實(shí)時(shí)共享,也為下一次服務(wù)提供基礎(chǔ)。⑤訂座與銷(xiāo)售。首先要為旅客創(chuàng)建預(yù)定航班艙位的各個(gè)組項(xiàng),包括姓名組、航段組、聯(lián)系組、特殊服務(wù)組等;其次是進(jìn)行電子客票銷(xiāo)售,包括電子客票打票機(jī)的控制、電子客票的出票、重試、退票、作廢等事務(wù)處理。⑥系統(tǒng)用戶管理。主要分為兩類(lèi)用戶:一般業(yè)務(wù)員和系統(tǒng)管理員。根據(jù)業(yè)務(wù)范圍的不同,業(yè)務(wù)員還被分為不同的工作級(jí)別,系統(tǒng)管理員承擔(dān)系統(tǒng)的數(shù)據(jù)維護(hù)。
根據(jù)業(yè)務(wù)分析得出訂座指令間的邏輯如圖1所示。
圖1 主要指令邏輯關(guān)系
以往的應(yīng)用實(shí)踐證明,.NET平臺(tái)的優(yōu)勢(shì)不僅僅在Web應(yīng)用中,在開(kāi)發(fā)Windows應(yīng)用程序方面也有豐富的技術(shù)支持。
微軟.NET平臺(tái)是以一種類(lèi)似于Java系統(tǒng)的虛擬機(jī)方式運(yùn)行和管理的編程平臺(tái),以公共語(yǔ)言運(yùn)行時(shí) (common language runtime,CLR)為基礎(chǔ),為基于其上的層次提供統(tǒng)一的底層進(jìn)程和線程管理、內(nèi)存管理、安全管理以及其他系統(tǒng)服務(wù)。.NET平臺(tái)提供一個(gè)包含許多高度可重用的接口、類(lèi)型的類(lèi)庫(kù),是一個(gè)完全面向?qū)ο蟮念?lèi)庫(kù)。
Windows Forms(即 Windows應(yīng) 用)和 ASP.NET是.NET Framework的主要界面技術(shù)。Windows Forms是一項(xiàng)基于Windows平臺(tái)的應(yīng)用程序設(shè)計(jì)的新技術(shù),實(shí)質(zhì)是一套基于.NET平臺(tái)的Rich Windows Client Library。使用該項(xiàng)新技術(shù)可以充分利用.NET Class Library的面向?qū)ο筇卣?、CLR提供的各種服務(wù)等底層支持,來(lái)開(kāi)發(fā)基于Windows的應(yīng)用程序,Windows Forms也可以用來(lái)開(kāi)發(fā)多層結(jié)構(gòu)的分布式系統(tǒng)的本地界面。而ASP.NET是一個(gè)建立服務(wù)器端Web應(yīng)用程序的框架。
在Visual Studio早期版本中,使用Web服務(wù)能夠?qū)崿F(xiàn)從任何平臺(tái)訪問(wèn)信息的方式來(lái)共享信息,使用.NET遠(yuǎn)程處理能夠?qū)崿F(xiàn)在客戶端和正在Windows操作系統(tǒng)上運(yùn)行的服務(wù)器之間移動(dòng)數(shù)據(jù),使用企業(yè)服務(wù) (DCOM)實(shí)現(xiàn)事務(wù)處理通信,使用消息隊(duì)列 (MSMQ)實(shí)現(xiàn)排隊(duì)模型。在.NET 3.0(CLR2.0)中增加了 WCF功能。WCF是一個(gè)統(tǒng)一框架,將所有這些技術(shù)的功能匯集到一個(gè)編程模型中,用于創(chuàng)建既安全可靠又可交互的分布式事務(wù)處理應(yīng)用程序,并簡(jiǎn)化了開(kāi)發(fā)分布式應(yīng)用程序的過(guò)程。
2.2.1 WCF主要特性
(1)平臺(tái)統(tǒng)一:在WCF發(fā)布之前,微軟支持6種主要的分布式技術(shù):RPC、WSE、ASMX、Remoting、COM+和MSMQ。不同的技術(shù)有不同的API、編程方式、操作要求和配置需求,應(yīng)用系統(tǒng)代碼緊密依賴(lài)于這些技術(shù)。當(dāng)有新需求時(shí),或應(yīng)用系統(tǒng)與其他非.NET Framework應(yīng)用系統(tǒng)通信時(shí),在WCF出現(xiàn)之前,沒(méi)有更好的選擇,只能放棄需求或者重新編寫(xiě)通信程序。WCF集成舊的技術(shù)特性并統(tǒng)一為一個(gè)編程模型,提供比以前更多的連接特性。
(2)性能高效:對(duì)于兩個(gè).NET Framework應(yīng)用系統(tǒng)來(lái)說(shuō),.NET Remoting是相對(duì)高效的通信方式,但它不能與非.NET Framework應(yīng)用系統(tǒng)交互。ASMX雖然沒(méi)有Remoting高效,但它可以與非.NET Framework應(yīng)用系統(tǒng)交互。從端對(duì)端的角度來(lái)說(shuō),MSMQ效率雖不高,但是隊(duì)列的特性可以彌補(bǔ)發(fā)送消息的應(yīng)用效率問(wèn)題,缺點(diǎn)就是它不能與其他消息隊(duì)列系統(tǒng)交互??傮w來(lái)看,分布式系統(tǒng)使用的分布式技術(shù)已經(jīng)影響到了系統(tǒng)的性能。WCF應(yīng)用系統(tǒng)可以提供不同層次的互操作性能。如與基于Java的Web服務(wù)通信相比,WCF應(yīng)用與其他WCF應(yīng)用通信是更高效。
(3)可靠性:過(guò)去,應(yīng)用的可靠需求指明了應(yīng)用中要使用的技術(shù)。如應(yīng)用需要可靠消息傳輸,則MSMQ是邏輯上的技術(shù)選擇。但在實(shí)現(xiàn)MSMQ時(shí),必須了解MSMQ不能與其他技術(shù)互用的規(guī)范。可見(jiàn),這個(gè)發(fā)送可靠消息的需求影響了應(yīng)用程序的代碼和編寫(xiě)程序時(shí)的知識(shí)準(zhǔn)備。WCF提供最多一次、最少一次、僅僅一次和有序傳遞的機(jī)制,即使通過(guò)傳統(tǒng)的非安全傳輸,也可以保證消息的傳遞[2]。
2.2.2 WCF通信模型
WCF包括兩個(gè)主要架構(gòu)層:服務(wù)模型層 (ServiceModel layer)和通道層 (channel layer)。服務(wù)模型層是用戶代碼和通道層之間的橋梁,是標(biāo)準(zhǔn)API的一部分。通道層負(fù)責(zé)消息通信,屬于底層基礎(chǔ)結(jié)構(gòu)。
在面向服務(wù)的應(yīng)用中,消息是通信的基本單位。WCF繼承面向服務(wù)的體系結(jié)構(gòu) (SOA),通過(guò)消息訪問(wèn)點(diǎn) (endpoints)在客戶端與服務(wù)端之間進(jìn)行交互。Endpoints的內(nèi)容包含了地址、綁定、契約和行為。地址指定服務(wù)位于何處,綁定說(shuō)明服務(wù)所能理解的通信協(xié)議 (即服務(wù)器端與客戶端進(jìn)行交互的方式),契約說(shuō)明服務(wù)接口函數(shù)及數(shù)據(jù)交換格式。通過(guò)明確定義的契約,服務(wù)被用來(lái)表達(dá)一個(gè)特定業(yè)務(wù)功能的集合。行為主要用于定制Endpoint在運(yùn)行時(shí)的一些必要的Behavior。
WCF定義了4種類(lèi)型的契約:服務(wù)契約描述客戶端能夠執(zhí)行的服務(wù)操作;數(shù)據(jù)契約定義與服務(wù)交互的數(shù)據(jù)類(lèi)型;錯(cuò)誤契約定義服務(wù)拋出的錯(cuò)誤,以及服務(wù)處理錯(cuò)誤和傳遞錯(cuò)誤到客戶端的方式;消息契約允許服務(wù)直接與消息交互。WCF通信模型可參考文獻(xiàn) [3]。
2.2.3 基于WCF的業(yè)務(wù)模型
Windows、.NET Framework、WCF和WCF應(yīng)用系統(tǒng)之間的聯(lián)系如圖2所示[4]。WCF是 .NET Framework 3.0的一部分,任何公開(kāi)或使用WCF服務(wù)的項(xiàng)目都必須引用系統(tǒng)的ServiceModel配件。
圖2 WCF上下文環(huán)境
基于WCF的多層服務(wù)模型可細(xì)分為:客戶層,WCF服務(wù)層,業(yè)務(wù)邏輯層與數(shù)據(jù)服務(wù)層。客戶層包括客戶表示層和客戶業(yè)務(wù)層,負(fù)責(zé)用戶與系統(tǒng)的交互。WCF服務(wù)層對(duì)客戶層提供服務(wù)接口,是對(duì)業(yè)務(wù)邏輯層的封裝與抽象,具體由下一層即業(yè)務(wù)邏輯層來(lái)實(shí)現(xiàn)。業(yè)務(wù)邏輯層可以是服務(wù)的實(shí)現(xiàn),也可以是對(duì)其他WCF服務(wù)的調(diào)用封裝。數(shù)據(jù)訪問(wèn)層為業(yè)務(wù)邏輯層提供連接服務(wù),并提供數(shù)據(jù)庫(kù)操作的方法。基于WCF的多層服務(wù)模型可參考文獻(xiàn) [1,5]。
隨著新平臺(tái)技術(shù)的產(chǎn)生和應(yīng)用,實(shí)踐證明構(gòu)建多層、分布式系統(tǒng),應(yīng)用資源垂直分布,增強(qiáng)了分布式和協(xié)作處理能力,能較好地解決與其他異構(gòu)系統(tǒng)互聯(lián)和頻繁地?cái)?shù)據(jù)交換問(wèn)題。傳統(tǒng)訂座系統(tǒng)是一種典型的集中式主機(jī)處理系統(tǒng),雖進(jìn)行了松耦合方面的技術(shù)改造,仍跟不上行業(yè)發(fā)展步伐,系統(tǒng)維護(hù)任務(wù)越來(lái)越艱巨。
針對(duì)訂座系統(tǒng)的業(yè)務(wù)功能及特點(diǎn),基于.NET平臺(tái),結(jié)合WCF技術(shù)及ADO.NET技術(shù),設(shè)計(jì)了如圖3所示的多層分布式訂座系統(tǒng)體系結(jié)構(gòu)。整個(gè)系統(tǒng)主要由客戶端、應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器3部分組成,采用ADO.NET數(shù)據(jù)訪問(wèn)方式。由圖3可以看出,應(yīng)用服務(wù)器運(yùn)用了WCF的優(yōu)勢(shì),使服務(wù)具有原子性 (atomicity),封裝了業(yè)務(wù)功能,也封裝了業(yè)務(wù)層中的其他依賴(lài)性,這些業(yè)務(wù)功能擁有自己的業(yè)務(wù)組件、數(shù)據(jù)訪問(wèn)組件和可用的數(shù)據(jù)存儲(chǔ),能夠獨(dú)立地行使其核心功能。應(yīng)用資源垂直分布,單個(gè)服務(wù)是可移動(dòng)的或可替換的,這對(duì)于系統(tǒng)業(yè)務(wù)的擴(kuò)展或移植是很便利的。
圖3 多層分布式訂座系統(tǒng)
在多層Client/Server模式中,應(yīng)用服務(wù)器的設(shè)計(jì)是實(shí)現(xiàn)數(shù)據(jù)交換和關(guān)鍵資源共享的關(guān)鍵。
在WCF技術(shù)支持下,應(yīng)用服務(wù)器遵循以下原則:①服務(wù)封裝業(yè)務(wù)組件和數(shù)據(jù)訪問(wèn),能夠獨(dú)立行使其核心功能;②服務(wù)運(yùn)行具有隔離性和容錯(cuò)性,即服務(wù)拋出的異常不影響其他服務(wù);③服務(wù)間不可避免的數(shù)據(jù)共享在服務(wù)邊界以外,通過(guò)數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程實(shí)現(xiàn)關(guān)聯(lián)。
在一個(gè)WCF應(yīng)用中,客戶端和服務(wù)端是通過(guò)Endpoint進(jìn)行通信的,只有在客戶端具有一個(gè)與服務(wù)端完全匹配的Endpoint,才能調(diào)用這個(gè)Service。服務(wù)端可以為一個(gè)Service定義多個(gè)Endpoint。按照訂座系統(tǒng)的業(yè)務(wù)范圍,在應(yīng)用服務(wù)器上封裝業(yè)務(wù)組件和數(shù)據(jù)訪問(wèn),主要分為航班信息查詢(xún)服務(wù)、旅客訂座服務(wù) (涉及旅客訂座記錄的各個(gè)組項(xiàng))、電子客票銷(xiāo)售服務(wù)、航班數(shù)據(jù)管理服務(wù)、打票機(jī)控制服務(wù)等。一個(gè)WCF服務(wù)由3個(gè)重要部分組成:服務(wù)類(lèi) (Service Class)、宿主 (Host)和終 結(jié) 點(diǎn) (Endpoints)[3-4]。一般 由以下幾個(gè)類(lèi)構(gòu)成:①WCF Iservice類(lèi),即契約層,對(duì)外提供接口;②WCF Server類(lèi),即WCF服務(wù)層,實(shí)現(xiàn)業(yè)務(wù)邏輯;③Data DAL類(lèi),即數(shù)據(jù)訪問(wèn)類(lèi),提供訪問(wèn)數(shù)據(jù)庫(kù)的方法。
ADO.NET是在.NET平臺(tái)中創(chuàng)建分布式和數(shù)據(jù)共享應(yīng)用程序的開(kāi)發(fā)接口 (API)。完成數(shù)據(jù)訪問(wèn)的是ADO.NET的兩個(gè)核心組件:DataSet和.NET數(shù)據(jù)提供程序。.NET Framework中常用的數(shù)據(jù)提供程序有兩個(gè):SQL Server.NET數(shù)據(jù)提供程序和OLE DB.NET數(shù)據(jù)提供程序。SQL Server.NET數(shù)據(jù)提供程序用于使用 Microsoft SQL Server 7.0或更高版本的中間層應(yīng)用程序,OLE DB.NET數(shù)據(jù)提供程序用于使用Microsoft SQL Server 6.5或較早版本的中間層應(yīng)用程序,或任何支持OLE DB.NET數(shù)據(jù)提供程序所使用的OLE DB接口中所列OLE DB接口的OLE DB提供程序。
根據(jù)比較分析得出,由于SQL Server.NET是專(zhuān)為SQL Server數(shù)據(jù)庫(kù)設(shè)計(jì)的,當(dāng)系統(tǒng)數(shù)據(jù)庫(kù)選擇為SQL Server 2005時(shí),采用SQL Server.NET數(shù)據(jù)提供程序訪問(wèn)數(shù)據(jù)庫(kù)在執(zhí)行效率方面有明顯優(yōu)勢(shì)。此外,SQL Server管理提供者使用表格式數(shù)據(jù)流的專(zhuān)用協(xié)議與SQL Server通信,并提供一整套完整的安全機(jī)制,包括:選擇認(rèn)證模式和認(rèn)證過(guò)程、登錄賬號(hào)管理、數(shù)據(jù)庫(kù)用戶賬號(hào)管理、角色管理以及用戶權(quán)限管理等。實(shí)際的民航訂座生產(chǎn)系統(tǒng)中的數(shù)據(jù)庫(kù)是支持所有訂座業(yè)務(wù)的數(shù)據(jù)基礎(chǔ),也是系統(tǒng)運(yùn)行信息的存儲(chǔ)場(chǎng)所,是系統(tǒng)的重要組成部分,與民航離港系統(tǒng)、貨運(yùn)系統(tǒng)主機(jī)都存在信息交換和共享。
為在研究中不涉及民航資源網(wǎng)絡(luò)通信費(fèi)用,力求在脫離中國(guó)民航信息系統(tǒng)主機(jī)支持的情況下實(shí)現(xiàn)訂座系統(tǒng)的業(yè)務(wù)功能,將以上多層分布式訂座系統(tǒng)在局域網(wǎng)環(huán)境中模擬實(shí)現(xiàn),基于SQL Server 2005創(chuàng)建數(shù)據(jù)庫(kù),負(fù)責(zé)數(shù)據(jù)服務(wù),保存旅客訂座信息、航班信息等。在模擬系統(tǒng)中,也不涉及與國(guó)外代理人分銷(xiāo)系統(tǒng)及航空公司的信息交換。在服務(wù)器端為管理員提供圖形用戶界面方式進(jìn)行航班信息管理及航班發(fā)放,客戶端才可以查詢(xún)航班信息,進(jìn)而實(shí)施訂座銷(xiāo)售。用近40個(gè)PC終端模擬民航訂座生產(chǎn)系統(tǒng)中的訂座終端,遵循實(shí)際訂座系統(tǒng)的習(xí)慣,客戶端采用命令行式操作界面,用Windows Forms模擬實(shí)現(xiàn)。應(yīng)用服務(wù)器作為所有訪問(wèn)主機(jī)應(yīng)用的切入口,解決訂座系統(tǒng)中線路、用戶標(biāo)識(shí)等資源共享問(wèn)題及指令解析。各層之間保持相對(duì)獨(dú)立,當(dāng)其中一層需要修改時(shí),其他各層不受影響,應(yīng)用服務(wù)器的實(shí)現(xiàn)是問(wèn)題解決的關(guān)鍵。
因此,下面按主要實(shí)現(xiàn)步驟給出一些WCF服務(wù)的代碼實(shí)現(xiàn)。
(1)創(chuàng)建服務(wù)契約。通過(guò)在接口上應(yīng)用ServiceContractAttribute特性將一個(gè)接口定義成服務(wù)契約。
在這里將契約名稱(chēng)設(shè)置為 “GreenTermService”,命名空間設(shè)置成 “http://www.greenterm.com/v3.5”。
namespace GreenTerm.Services.Contracts
{[ServiceContract (Name="GreenTermService",Namespace="
http://www.greenterm.com/v3.5",SessionMode=SessionMode.Allowed)]
public interface IGreenTermServiceContract
……
(2)創(chuàng)建WCF服務(wù)。當(dāng)服務(wù)契約成功創(chuàng)建后,需要通過(guò)實(shí)現(xiàn)服務(wù)契約來(lái)創(chuàng)建具體的WCF服務(wù)。
namespace GreenTerm.Services
{
[ServiceBehavior(UseSynchronizationContext=false,
ConcurrencyMode=ConcurrencyMode.Multiple,
InstanceContextMode = InstanceContextMode.Per-Call)]
public class GreenTermService:IGreenTermService-Contract
……
}
(3)通過(guò)自我寄宿 (Self-Hosting)方式寄宿服務(wù)。WCF的服務(wù)不能孤立地存在,需要寄宿于一個(gè)運(yùn)行著的進(jìn)程中。承載WCF服務(wù)的進(jìn)程稱(chēng)為宿主 (Host),為服務(wù)指定宿主的過(guò)程稱(chēng)為服務(wù)寄宿 (Service Hosting)。在實(shí)現(xiàn)中,主要通過(guò)自我寄宿的方式創(chuàng)建一個(gè)控制臺(tái)應(yīng)用作為服務(wù)的宿主。直接使用Visual Studio提供的配置工具,在工具(Tools)菜單下選擇 “WCF Service Configuration Editor”子項(xiàng),開(kāi)啟配置編輯器。
namespace GreenTerm.Hosts.ConsoleHost
{
……
Console.WriteLine ("Starting GreenTerm Host...");
_svcHost= LoadGreenTermService();
Console.WriteLine("\nGreenTerm已經(jīng)啟動(dòng).按任意鍵終止服務(wù)\n\n");
Console.Read ();}
……
}
服務(wù)被成功寄宿后,服務(wù)端便開(kāi)始了服務(wù)調(diào)用請(qǐng)求的監(jiān)聽(tīng)工作。Visual Studio在內(nèi)部實(shí)現(xiàn)元數(shù)據(jù)的獲取,并借助這些元數(shù)據(jù)通過(guò)代碼生成工具 (SvcUtil.exe)自動(dòng)生成用于服務(wù)調(diào)用的服務(wù)代理相關(guān)的代碼和相應(yīng)的配置。在一系列自動(dòng)生成的類(lèi)中,包含一個(gè)服務(wù)契約接口、一個(gè)服務(wù)代理對(duì)象和其他相關(guān)的類(lèi)。被客戶端直接用于服務(wù)調(diào)用的是一個(gè)繼承自ClientBase<GreenTermService>并實(shí)現(xiàn)了GreenTermService接口的服務(wù)代理類(lèi)。ClientBase<Green-TermServiceClient>的定義如下所示:
Public partial class GreenTermServiceClient:System.ServiceModel.ClientBase<
GreenTerm.UI.Process.GreenTermServiceReference.GreenTermService>,GreenTerm.UI.Process.GreenTerm-ServiceReference.GreenTermService{
……//其他類(lèi)型成員
public GreenTermServiceClient(){
}
public GreenTermServiceClient (string endpointConfigurationName):base(endpointConfigurationName){
}
public GreenTermServiceClient (string endpointConfigurationName,stringremoteAddress):base (endpointConfigurationName,remoteAddress){
}
客戶端主界面如圖4所示。
圖4 客戶端主界面
與采用XTC技術(shù)對(duì)現(xiàn)有民航主機(jī)系統(tǒng)進(jìn)行松耦合改造相比,采用開(kāi)放平臺(tái)技術(shù)構(gòu)建的新一代民航信息系統(tǒng)更易于擴(kuò)展、且資源共享度高、可靠性好。本文針對(duì)民航信息系統(tǒng)的核心系統(tǒng)——訂座系統(tǒng),結(jié)合.NET平臺(tái)和WCF技術(shù)提供的統(tǒng)一編程模型,創(chuàng)建了多層、分布式民航信息系統(tǒng)結(jié)構(gòu),并在局域網(wǎng)中模擬實(shí)現(xiàn)了基于.NET與WCF的民航訂座系統(tǒng),WCF服務(wù)封裝了業(yè)務(wù)組件和數(shù)據(jù)訪問(wèn),應(yīng)用資源垂直分布,使服務(wù)具有原子性,更易于移植和業(yè)務(wù)功能擴(kuò)展。實(shí)踐證明,采用.NET平臺(tái)和WCF技術(shù)構(gòu)建民航訂座系統(tǒng)的方案是可行的,進(jìn)而可以推廣到民航領(lǐng)域其他核心系統(tǒng)。
此外,在研究中為不涉及民航信息網(wǎng)絡(luò)的通信費(fèi)用,在服務(wù)器端模擬了民航主機(jī)的航班數(shù)據(jù)管理功能,使得沒(méi)有民航主機(jī)的支持也能正常運(yùn)行各種訂座業(yè)務(wù)指令。因而,此訂座模擬系統(tǒng)可用在民航客運(yùn)代理人的業(yè)務(wù)培訓(xùn)中,降低培訓(xùn)成本。
[1] QIAN Tao.Design and implementation of computer lab management system based on WCF [J].Computing Technology and Automation,2010,29 (4):135-137 (in Chinese). [錢(qián)濤.基于WCF的機(jī)房管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [J].計(jì)算技術(shù)與自動(dòng)化,2010,29 (4):135-137.]
[2]Juval L wy.Programming of WCF [M].ZHANG Yi,XU Ning,transl.Beijing:China Machine Press,2009:78-97(in Chinese). [Juval L wy.WCF編程 [M].張逸,徐寧,譯.北京:機(jī)械工業(yè)出版社,2009:78-97.]
[3]Michle Leroux Bustamante.Learning WCF (English facsimile)[M].Nanjing:SouthEast University Press,2007:160-166(in Chinese).[Michle Leroux Bustamante.學(xué)習(xí) WCF (英文影印版)[M].南京:東南大學(xué)出版社,2007:160-166.]
[4]Justin Smith.Insides Windows communication foundation[M].XU Lei,transl. Wuhan: Huazhong University of Science & Technology Press,2010:89-92 (in Chinese).[Justin Smith.WCF技術(shù)內(nèi)幕 [M].徐雷,譯.武漢:華中科技大學(xué)出版社,2010:89-92.]
[5]LI Wentao.Research of application development based on WCF framework [J].Computer Era,2011,29 (2):19-21 (in Chinese).[李文滔.基于 WCF架構(gòu)的應(yīng)用開(kāi)發(fā)研究 [J].計(jì)算機(jī)時(shí)代,2011,29 (2):19-21.]
[6]JIANG Jinnan.My trip to WCF [EB/OL].http://www.cnblogs.com/artech/archive/2007/09/15/893838.html,2007(in Chinese).[蔣 金 楠.我 的 WCF 之 旅 [EB/OL].http://www.cnblogs.com/artech/archive/2007/09/15/893838.html,2007.]
[7]GONG Wen.Implementation of Unisys mainframes cluster using XTC technology [J].Computer Engineering,2005,31(S1):241-243 (in Chinese).[龔文.使用XTC技術(shù)的優(yōu)利主機(jī)系統(tǒng) 松耦 合實(shí)現(xiàn) [J].計(jì) 算機(jī)工程,2005,31 (S1):241-243.]
[8]ZHAO Qingxia,SUN Jianling.Design and research of service caching based on WCF [J].Computer Engineering and Design,2010,31 (14):3151-3153 (in Chinese). [趙慶霞,孫建伶.基于WCF的服務(wù)緩存設(shè)計(jì)與研究 [J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31 (14):3151-3153.]
[9]LIU Tong.The application and implement of load Banlancing technology in database cluster system [D].Changsha:National University of Defense Technology,2009:22-29 (in Chinese).[劉同.負(fù)載均衡技術(shù)在數(shù)據(jù)庫(kù)集群系統(tǒng)中的應(yīng)用與實(shí)現(xiàn) [D].長(zhǎng)沙:國(guó)防科技大學(xué),2009:22-29.]
[10]LIU Xinbing.Research and design of distributed database information system based on.NET [D].Shanghai:Shanghai Jiaotong University,2008:30-41 (in Chinese). [劉新兵.基于.NET平臺(tái)的分布式數(shù)據(jù)庫(kù)管理信息系統(tǒng)的研究與設(shè)計(jì)[D].上海:上海交通大學(xué),2008:30-41.]
[11]ZHANG Pu,TAO Lina.Wrapping and integration of MFC framework based application in .NET environment [J].Computer Engineering and Design,2010,31 (6):1250-1254(in Chinese).[張璞,陶麗娜..NET環(huán)境下 MFC框架應(yīng)用的包裝集成技術(shù)研究 [J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31 (6):1250-1254.]
[12]SUN Renpeng.Research application of ADO.NET in multi-mode[J].Computer Engineering and Design,2010,31 (16):3621-3624(in Chinese).[孫仁鵬.ADO.NET在多層模式下應(yīng)用的研究 [J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31 (16):3621-3624.]
[13]WANG Wenfa,MA Yan,LI Hongda.Four-tier structure based on.NET and its application in integrated information system [J].Computer Engineering and Design,2009,30(4):912-917 (in Chinese). [王文 發(fā),馬 燕,李紅達(dá).基于.NET的四層結(jié)構(gòu)及其在綜合信息系統(tǒng)中的應(yīng)用 [J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30 (4):912-917.]
[14]GE Yao,LI Xiaofeng,WANG Hui.Research of patterns based on.NET distributed system [J].Computer Engineering and Design,2008,29 (5):1049-1054 (in Chinese). [葛瑤,李曉風(fēng),王輝.基于.NET分布式系統(tǒng)的模式研究 [J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29 (5):1049-1054.]
[15]Scott Klein.Professional WCF programming:.NET development with the Windows communication foundation [M].Wikipedia:Wrox,2008:200-210.