趙 鳴,張 旭,熊 靜
(上海工程技術(shù)大學(xué) 航空運輸學(xué)院民航運輸系,上海201620)
受技術(shù)局限和安全因素影響,中國民航的三大主機(jī)系統(tǒng) (訂座、離港和貨運)最初均被設(shè)計為緊耦合結(jié)構(gòu),運行在UNISYS大型主機(jī)上。但隨著民航客、貨運業(yè)務(wù)量的高速增長,一些問題也逐步表現(xiàn)出來:一方面是主機(jī)性能提升相對緩慢;另一方面是用戶對系統(tǒng)可用性和可靠性要求越來越高。雖然已有通過UNISYS的 “擴(kuò)展事務(wù)處理能力”(XTC)技術(shù)成功實現(xiàn)對民航主機(jī)系統(tǒng)的松耦合架構(gòu)改造,但系統(tǒng)維護(hù)復(fù)雜程度大大增加,系統(tǒng)之間報文交換更加頻繁,一些單主機(jī)模式下不存在的問題成為XTC架構(gòu)下的問題或性能瓶頸。
面對日益凸顯的資源需求矛盾,在新平臺技術(shù)支持下設(shè)計系統(tǒng)架構(gòu),建立一個統(tǒng)一、分布、異構(gòu)的信息系統(tǒng),合理高效的利用民航信息資源,有效服務(wù)于民航各類業(yè)務(wù),具有重要意義。WCF(Windows communication foundation)是微軟專門針對面向服務(wù) (service-oriented)應(yīng)用程序提供的.NET平臺下的分布式編程框架,將微軟所支持的各種分布式技術(shù)整合到一起,提供一致的開發(fā)框架,降低了系統(tǒng)開發(fā)周期,增強(qiáng)了系統(tǒng)的可伸縮性,解決了不同網(wǎng)絡(luò)和應(yīng)用環(huán)境下的數(shù)據(jù)和操作的共享以及異構(gòu)系統(tǒng)間跨平臺訪問與操作問題[1]。本文提出基于.NET平臺,結(jié)合WCF技術(shù)構(gòu)建新一代多主機(jī)、分布式民航信息系統(tǒng),并以訂座系統(tǒng)在局域網(wǎng)中的實現(xiàn)為例驗證方案的可行性。
中國民航信息網(wǎng)已形成了包括離港、訂座等8個業(yè)務(wù)主機(jī)群,承擔(dān)著民航訂座、客票銷售、機(jī)場值機(jī)、配載、貨運等業(yè)務(wù)。自1991年改造以來,主機(jī)群及前端處理機(jī)DCP通過雙備份共享式Ethernet互聯(lián),解決了信息流量均衡及方便獲取各主機(jī)群的服務(wù)和備份功能。但隨著業(yè)務(wù)量的劇增,如此復(fù)雜多主機(jī)系統(tǒng)結(jié)構(gòu)不具有擴(kuò)充和全局改造的靈活性,負(fù)載平衡和系統(tǒng)間大量報文交換處理成為系統(tǒng)優(yōu)化和維護(hù)的關(guān)鍵問題。
為應(yīng)對國外先進(jìn)航空旅游信息系統(tǒng)的激烈挑戰(zhàn),民航信息系統(tǒng)呈現(xiàn)出以下4個發(fā)展趨勢:①系統(tǒng)設(shè)計理念從“面向生產(chǎn)”轉(zhuǎn)向 “面向旅客服務(wù)”,著力建立核心旅客數(shù)據(jù)庫;②核心系統(tǒng)應(yīng)采用新技術(shù)、新架構(gòu),從 “集中式”轉(zhuǎn)向 “開放式”;③因開放平臺通用性強(qiáng),成本低,系統(tǒng)間的數(shù)據(jù)交換具備成熟的模式,在開放平臺上實現(xiàn)新技術(shù)和新業(yè)務(wù)功能成為首選方案;④對于存在的 “信息孤島”,提出構(gòu)建核心中間層,利用中間件技術(shù)進(jìn)行系統(tǒng)整合,實現(xiàn)資源共享。
此外,隨著國內(nèi)電子商務(wù)環(huán)境逐步改善,民航電子商務(wù)需求日益增強(qiáng),新一代的信息系統(tǒng)必須易于擴(kuò)展,有標(biāo)準(zhǔn)的系統(tǒng)接口和外部接入功能,任何一個新的功能或應(yīng)用系統(tǒng)都能方便的結(jié)合到其中,滿足民航電子商務(wù)的多種需求。
現(xiàn)行的旅客訂座系統(tǒng)作為民航信息系統(tǒng)的核心系統(tǒng)之一,包括代理人分銷系統(tǒng) (computer reservation system,CRS)和航空公司系統(tǒng) (inventory control system,ICS)。航空公司系統(tǒng)有國內(nèi)20多家航空公司的數(shù)據(jù),主要進(jìn)行航班方面的管理。代理人分銷系統(tǒng)為代理人提供航空產(chǎn)品和非航空產(chǎn)品的銷售。CRS如何銷售航空公司的座位由CRS與ICS的技術(shù)聯(lián)接方式及商務(wù)協(xié)議決定,系統(tǒng)間通過拍發(fā)報文實現(xiàn)信息共享和交換。
為保障安全和系統(tǒng)可靠性,傳統(tǒng)訂座系統(tǒng)采用了以UNISYS大型機(jī)為中心,集中式主機(jī)處理的緊耦合架構(gòu)。而隨著民航客運業(yè)務(wù)的發(fā)展,這種系統(tǒng)架構(gòu)的不足主要表現(xiàn)為:①緊耦合下的主機(jī)系統(tǒng)結(jié)構(gòu),使得線路、用戶標(biāo)識等有限資源共享率低;②系統(tǒng)事務(wù)處理能力缺乏彈性、擴(kuò)充性,不利于銷售規(guī)模的擴(kuò)張;③某些系統(tǒng)維護(hù)任務(wù)必須停止應(yīng)用業(yè)務(wù),將影響到用戶。
隨著計算機(jī)技術(shù)的發(fā)展,開放系統(tǒng)的處理能力逐步接近主機(jī)系統(tǒng),不但可以獲得擴(kuò)展的處理能力,還可以獲得較高的系統(tǒng)可用性和可靠性。中國民航的核心系統(tǒng)向開放平臺轉(zhuǎn)換已成為必然,目前采取的方法主要有兩種:一是核心系統(tǒng)的功能逐步被替換外移到開放平臺,優(yōu)點是轉(zhuǎn)移風(fēng)險小、新系統(tǒng)實施成本低,缺點是轉(zhuǎn)移進(jìn)程較長;二是重新開發(fā)開放應(yīng)用系統(tǒng),經(jīng)運行測試后一次性替換全部功能,但風(fēng)險較大。
座位管理和事務(wù)處理是民航信息系統(tǒng)的核心功能,其最終服務(wù)對象是旅客。通過分析以旅客服務(wù)為中心的訂座系統(tǒng)的業(yè)務(wù)流程,得出其具有的6大主要功能:①系統(tǒng)登錄。包括聯(lián)接民航主機(jī)系統(tǒng)、以工作號密碼登錄、顯示工作區(qū)狀態(tài)、臨時退出系統(tǒng)、恢復(fù)臨時退出系統(tǒng)、退出且釋放工作區(qū)資源等。②航班管理。涉及航班時刻、票價的制定、航班起飛時間、機(jī)型、各子艙位座位情況、聯(lián)接協(xié)議、經(jīng)停點、餐食服務(wù)等信息。在系統(tǒng)中建立相應(yīng)的航班信息并發(fā)布,用戶才可以查詢航班信息。③航班查詢。用戶在正常登錄系統(tǒng)后,能用AV等指令查詢目前執(zhí)行的航班信息。④旅客信息管理。保證旅客基本信息的準(zhǔn)確性、真實性、唯一性,能被其他信息系統(tǒng)實時共享,也為下一次服務(wù)提供基礎(chǔ)。⑤訂座與銷售。首先要為旅客創(chuàng)建預(yù)定航班艙位的各個組項,包括姓名組、航段組、聯(lián)系組、特殊服務(wù)組等;其次是進(jìn)行電子客票銷售,包括電子客票打票機(jī)的控制、電子客票的出票、重試、退票、作廢等事務(wù)處理。⑥系統(tǒng)用戶管理。主要分為兩類用戶:一般業(yè)務(wù)員和系統(tǒng)管理員。根據(jù)業(yè)務(wù)范圍的不同,業(yè)務(wù)員還被分為不同的工作級別,系統(tǒng)管理員承擔(dān)系統(tǒng)的數(shù)據(jù)維護(hù)。
根據(jù)業(yè)務(wù)分析得出訂座指令間的邏輯如圖1所示。
圖1 主要指令邏輯關(guān)系
以往的應(yīng)用實踐證明,.NET平臺的優(yōu)勢不僅僅在Web應(yīng)用中,在開發(fā)Windows應(yīng)用程序方面也有豐富的技術(shù)支持。
微軟.NET平臺是以一種類似于Java系統(tǒng)的虛擬機(jī)方式運行和管理的編程平臺,以公共語言運行時 (common language runtime,CLR)為基礎(chǔ),為基于其上的層次提供統(tǒng)一的底層進(jìn)程和線程管理、內(nèi)存管理、安全管理以及其他系統(tǒng)服務(wù)。.NET平臺提供一個包含許多高度可重用的接口、類型的類庫,是一個完全面向?qū)ο蟮念悗臁?/p>
Windows Forms(即 Windows應(yīng) 用)和 ASP.NET是.NET Framework的主要界面技術(shù)。Windows Forms是一項基于Windows平臺的應(yīng)用程序設(shè)計的新技術(shù),實質(zhì)是一套基于.NET平臺的Rich Windows Client Library。使用該項新技術(shù)可以充分利用.NET Class Library的面向?qū)ο筇卣鳌LR提供的各種服務(wù)等底層支持,來開發(fā)基于Windows的應(yīng)用程序,Windows Forms也可以用來開發(fā)多層結(jié)構(gòu)的分布式系統(tǒng)的本地界面。而ASP.NET是一個建立服務(wù)器端Web應(yīng)用程序的框架。
在Visual Studio早期版本中,使用Web服務(wù)能夠?qū)崿F(xiàn)從任何平臺訪問信息的方式來共享信息,使用.NET遠(yuǎn)程處理能夠?qū)崿F(xiàn)在客戶端和正在Windows操作系統(tǒng)上運行的服務(wù)器之間移動數(shù)據(jù),使用企業(yè)服務(wù) (DCOM)實現(xiàn)事務(wù)處理通信,使用消息隊列 (MSMQ)實現(xiàn)排隊模型。在.NET 3.0(CLR2.0)中增加了 WCF功能。WCF是一個統(tǒng)一框架,將所有這些技術(shù)的功能匯集到一個編程模型中,用于創(chuàng)建既安全可靠又可交互的分布式事務(wù)處理應(yīng)用程序,并簡化了開發(fā)分布式應(yīng)用程序的過程。
2.2.1 WCF主要特性
(1)平臺統(tǒng)一:在WCF發(fā)布之前,微軟支持6種主要的分布式技術(shù):RPC、WSE、ASMX、Remoting、COM+和MSMQ。不同的技術(shù)有不同的API、編程方式、操作要求和配置需求,應(yīng)用系統(tǒng)代碼緊密依賴于這些技術(shù)。當(dāng)有新需求時,或應(yīng)用系統(tǒng)與其他非.NET Framework應(yīng)用系統(tǒng)通信時,在WCF出現(xiàn)之前,沒有更好的選擇,只能放棄需求或者重新編寫通信程序。WCF集成舊的技術(shù)特性并統(tǒng)一為一個編程模型,提供比以前更多的連接特性。
(2)性能高效:對于兩個.NET Framework應(yīng)用系統(tǒng)來說,.NET Remoting是相對高效的通信方式,但它不能與非.NET Framework應(yīng)用系統(tǒng)交互。ASMX雖然沒有Remoting高效,但它可以與非.NET Framework應(yīng)用系統(tǒng)交互。從端對端的角度來說,MSMQ效率雖不高,但是隊列的特性可以彌補(bǔ)發(fā)送消息的應(yīng)用效率問題,缺點就是它不能與其他消息隊列系統(tǒng)交互。總體來看,分布式系統(tǒng)使用的分布式技術(shù)已經(jīng)影響到了系統(tǒng)的性能。WCF應(yīng)用系統(tǒng)可以提供不同層次的互操作性能。如與基于Java的Web服務(wù)通信相比,WCF應(yīng)用與其他WCF應(yīng)用通信是更高效。
(3)可靠性:過去,應(yīng)用的可靠需求指明了應(yīng)用中要使用的技術(shù)。如應(yīng)用需要可靠消息傳輸,則MSMQ是邏輯上的技術(shù)選擇。但在實現(xiàn)MSMQ時,必須了解MSMQ不能與其他技術(shù)互用的規(guī)范??梢?,這個發(fā)送可靠消息的需求影響了應(yīng)用程序的代碼和編寫程序時的知識準(zhǔn)備。WCF提供最多一次、最少一次、僅僅一次和有序傳遞的機(jī)制,即使通過傳統(tǒng)的非安全傳輸,也可以保證消息的傳遞[2]。
2.2.2 WCF通信模型
WCF包括兩個主要架構(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),通過消息訪問點 (endpoints)在客戶端與服務(wù)端之間進(jìn)行交互。Endpoints的內(nèi)容包含了地址、綁定、契約和行為。地址指定服務(wù)位于何處,綁定說明服務(wù)所能理解的通信協(xié)議 (即服務(wù)器端與客戶端進(jìn)行交互的方式),契約說明服務(wù)接口函數(shù)及數(shù)據(jù)交換格式。通過明確定義的契約,服務(wù)被用來表達(dá)一個特定業(yè)務(wù)功能的集合。行為主要用于定制Endpoint在運行時的一些必要的Behavior。
WCF定義了4種類型的契約:服務(wù)契約描述客戶端能夠執(zhí)行的服務(wù)操作;數(shù)據(jù)契約定義與服務(wù)交互的數(shù)據(jù)類型;錯誤契約定義服務(wù)拋出的錯誤,以及服務(wù)處理錯誤和傳遞錯誤到客戶端的方式;消息契約允許服務(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的一部分,任何公開或使用WCF服務(wù)的項目都必須引用系統(tǒng)的ServiceModel配件。
圖2 WCF上下文環(huán)境
基于WCF的多層服務(wù)模型可細(xì)分為:客戶層,WCF服務(wù)層,業(yè)務(wù)邏輯層與數(shù)據(jù)服務(wù)層??蛻魧影蛻舯硎緦雍涂蛻魳I(yè)務(wù)層,負(fù)責(zé)用戶與系統(tǒng)的交互。WCF服務(wù)層對客戶層提供服務(wù)接口,是對業(yè)務(wù)邏輯層的封裝與抽象,具體由下一層即業(yè)務(wù)邏輯層來實現(xiàn)。業(yè)務(wù)邏輯層可以是服務(wù)的實現(xiàn),也可以是對其他WCF服務(wù)的調(diào)用封裝。數(shù)據(jù)訪問層為業(yè)務(wù)邏輯層提供連接服務(wù),并提供數(shù)據(jù)庫操作的方法?;赪CF的多層服務(wù)模型可參考文獻(xiàn) [1,5]。
隨著新平臺技術(shù)的產(chǎn)生和應(yīng)用,實踐證明構(gòu)建多層、分布式系統(tǒng),應(yīng)用資源垂直分布,增強(qiáng)了分布式和協(xié)作處理能力,能較好地解決與其他異構(gòu)系統(tǒng)互聯(lián)和頻繁地數(shù)據(jù)交換問題。傳統(tǒng)訂座系統(tǒng)是一種典型的集中式主機(jī)處理系統(tǒng),雖進(jìn)行了松耦合方面的技術(shù)改造,仍跟不上行業(yè)發(fā)展步伐,系統(tǒng)維護(hù)任務(wù)越來越艱巨。
針對訂座系統(tǒng)的業(yè)務(wù)功能及特點,基于.NET平臺,結(jié)合WCF技術(shù)及ADO.NET技術(shù),設(shè)計了如圖3所示的多層分布式訂座系統(tǒng)體系結(jié)構(gòu)。整個系統(tǒng)主要由客戶端、應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器3部分組成,采用ADO.NET數(shù)據(jù)訪問方式。由圖3可以看出,應(yīng)用服務(wù)器運用了WCF的優(yōu)勢,使服務(wù)具有原子性 (atomicity),封裝了業(yè)務(wù)功能,也封裝了業(yè)務(wù)層中的其他依賴性,這些業(yè)務(wù)功能擁有自己的業(yè)務(wù)組件、數(shù)據(jù)訪問組件和可用的數(shù)據(jù)存儲,能夠獨立地行使其核心功能。應(yīng)用資源垂直分布,單個服務(wù)是可移動的或可替換的,這對于系統(tǒng)業(yè)務(wù)的擴(kuò)展或移植是很便利的。
圖3 多層分布式訂座系統(tǒng)
在多層Client/Server模式中,應(yīng)用服務(wù)器的設(shè)計是實現(xiàn)數(shù)據(jù)交換和關(guān)鍵資源共享的關(guān)鍵。
在WCF技術(shù)支持下,應(yīng)用服務(wù)器遵循以下原則:①服務(wù)封裝業(yè)務(wù)組件和數(shù)據(jù)訪問,能夠獨立行使其核心功能;②服務(wù)運行具有隔離性和容錯性,即服務(wù)拋出的異常不影響其他服務(wù);③服務(wù)間不可避免的數(shù)據(jù)共享在服務(wù)邊界以外,通過數(shù)據(jù)庫中的存儲過程實現(xiàn)關(guān)聯(lián)。
在一個WCF應(yīng)用中,客戶端和服務(wù)端是通過Endpoint進(jìn)行通信的,只有在客戶端具有一個與服務(wù)端完全匹配的Endpoint,才能調(diào)用這個Service。服務(wù)端可以為一個Service定義多個Endpoint。按照訂座系統(tǒng)的業(yè)務(wù)范圍,在應(yīng)用服務(wù)器上封裝業(yè)務(wù)組件和數(shù)據(jù)訪問,主要分為航班信息查詢服務(wù)、旅客訂座服務(wù) (涉及旅客訂座記錄的各個組項)、電子客票銷售服務(wù)、航班數(shù)據(jù)管理服務(wù)、打票機(jī)控制服務(wù)等。一個WCF服務(wù)由3個重要部分組成:服務(wù)類 (Service Class)、宿主 (Host)和終 結(jié) 點 (Endpoints)[3-4]。一般 由以下幾個類構(gòu)成:①WCF Iservice類,即契約層,對外提供接口;②WCF Server類,即WCF服務(wù)層,實現(xiàn)業(yè)務(wù)邏輯;③Data DAL類,即數(shù)據(jù)訪問類,提供訪問數(shù)據(jù)庫的方法。
ADO.NET是在.NET平臺中創(chuàng)建分布式和數(shù)據(jù)共享應(yīng)用程序的開發(fā)接口 (API)。完成數(shù)據(jù)訪問的是ADO.NET的兩個核心組件:DataSet和.NET數(shù)據(jù)提供程序。.NET Framework中常用的數(shù)據(jù)提供程序有兩個: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是專為SQL Server數(shù)據(jù)庫設(shè)計的,當(dāng)系統(tǒng)數(shù)據(jù)庫選擇為SQL Server 2005時,采用SQL Server.NET數(shù)據(jù)提供程序訪問數(shù)據(jù)庫在執(zhí)行效率方面有明顯優(yōu)勢。此外,SQL Server管理提供者使用表格式數(shù)據(jù)流的專用協(xié)議與SQL Server通信,并提供一整套完整的安全機(jī)制,包括:選擇認(rèn)證模式和認(rèn)證過程、登錄賬號管理、數(shù)據(jù)庫用戶賬號管理、角色管理以及用戶權(quán)限管理等。實際的民航訂座生產(chǎn)系統(tǒng)中的數(shù)據(jù)庫是支持所有訂座業(yè)務(wù)的數(shù)據(jù)基礎(chǔ),也是系統(tǒng)運行信息的存儲場所,是系統(tǒng)的重要組成部分,與民航離港系統(tǒng)、貨運系統(tǒng)主機(jī)都存在信息交換和共享。
為在研究中不涉及民航資源網(wǎng)絡(luò)通信費用,力求在脫離中國民航信息系統(tǒng)主機(jī)支持的情況下實現(xiàn)訂座系統(tǒng)的業(yè)務(wù)功能,將以上多層分布式訂座系統(tǒng)在局域網(wǎng)環(huán)境中模擬實現(xiàn),基于SQL Server 2005創(chuàng)建數(shù)據(jù)庫,負(fù)責(zé)數(shù)據(jù)服務(wù),保存旅客訂座信息、航班信息等。在模擬系統(tǒng)中,也不涉及與國外代理人分銷系統(tǒng)及航空公司的信息交換。在服務(wù)器端為管理員提供圖形用戶界面方式進(jìn)行航班信息管理及航班發(fā)放,客戶端才可以查詢航班信息,進(jìn)而實施訂座銷售。用近40個PC終端模擬民航訂座生產(chǎn)系統(tǒng)中的訂座終端,遵循實際訂座系統(tǒng)的習(xí)慣,客戶端采用命令行式操作界面,用Windows Forms模擬實現(xiàn)。應(yīng)用服務(wù)器作為所有訪問主機(jī)應(yīng)用的切入口,解決訂座系統(tǒng)中線路、用戶標(biāo)識等資源共享問題及指令解析。各層之間保持相對獨立,當(dāng)其中一層需要修改時,其他各層不受影響,應(yīng)用服務(wù)器的實現(xiàn)是問題解決的關(guān)鍵。
因此,下面按主要實現(xiàn)步驟給出一些WCF服務(wù)的代碼實現(xiàn)。
(1)創(chuàng)建服務(wù)契約。通過在接口上應(yīng)用ServiceContractAttribute特性將一個接口定義成服務(wù)契約。
在這里將契約名稱設(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)建后,需要通過實現(xiàn)服務(wù)契約來創(chuàng)建具體的WCF服務(wù)。
namespace GreenTerm.Services
{
[ServiceBehavior(UseSynchronizationContext=false,
ConcurrencyMode=ConcurrencyMode.Multiple,
InstanceContextMode = InstanceContextMode.Per-Call)]
public class GreenTermService:IGreenTermService-Contract
……
}
(3)通過自我寄宿 (Self-Hosting)方式寄宿服務(wù)。WCF的服務(wù)不能孤立地存在,需要寄宿于一個運行著的進(jìn)程中。承載WCF服務(wù)的進(jìn)程稱為宿主 (Host),為服務(wù)指定宿主的過程稱為服務(wù)寄宿 (Service Hosting)。在實現(xiàn)中,主要通過自我寄宿的方式創(chuàng)建一個控制臺應(yīng)用作為服務(wù)的宿主。直接使用Visual Studio提供的配置工具,在工具(Tools)菜單下選擇 “WCF Service Configuration Editor”子項,開啟配置編輯器。
namespace GreenTerm.Hosts.ConsoleHost
{
……
Console.WriteLine ("Starting GreenTerm Host...");
_svcHost= LoadGreenTermService();
Console.WriteLine("\nGreenTerm已經(jīng)啟動.按任意鍵終止服務(wù)\n\n");
Console.Read ();}
……
}
服務(wù)被成功寄宿后,服務(wù)端便開始了服務(wù)調(diào)用請求的監(jiān)聽工作。Visual Studio在內(nèi)部實現(xiàn)元數(shù)據(jù)的獲取,并借助這些元數(shù)據(jù)通過代碼生成工具 (SvcUtil.exe)自動生成用于服務(wù)調(diào)用的服務(wù)代理相關(guān)的代碼和相應(yīng)的配置。在一系列自動生成的類中,包含一個服務(wù)契約接口、一個服務(wù)代理對象和其他相關(guān)的類。被客戶端直接用于服務(wù)調(diào)用的是一個繼承自ClientBase<GreenTermService>并實現(xiàn)了GreenTermService接口的服務(wù)代理類。ClientBase<Green-TermServiceClient>的定義如下所示:
Public partial class GreenTermServiceClient:System.ServiceModel.ClientBase<
GreenTerm.UI.Process.GreenTermServiceReference.GreenTermService>,GreenTerm.UI.Process.GreenTerm-ServiceReference.GreenTermService{
……//其他類型成員
public GreenTermServiceClient(){
}
public GreenTermServiceClient (string endpointConfigurationName):base(endpointConfigurationName){
}
public GreenTermServiceClient (string endpointConfigurationName,stringremoteAddress):base (endpointConfigurationName,remoteAddress){
}
客戶端主界面如圖4所示。
圖4 客戶端主界面
與采用XTC技術(shù)對現(xiàn)有民航主機(jī)系統(tǒng)進(jìn)行松耦合改造相比,采用開放平臺技術(shù)構(gòu)建的新一代民航信息系統(tǒng)更易于擴(kuò)展、且資源共享度高、可靠性好。本文針對民航信息系統(tǒng)的核心系統(tǒng)——訂座系統(tǒng),結(jié)合.NET平臺和WCF技術(shù)提供的統(tǒng)一編程模型,創(chuàng)建了多層、分布式民航信息系統(tǒng)結(jié)構(gòu),并在局域網(wǎng)中模擬實現(xiàn)了基于.NET與WCF的民航訂座系統(tǒng),WCF服務(wù)封裝了業(yè)務(wù)組件和數(shù)據(jù)訪問,應(yīng)用資源垂直分布,使服務(wù)具有原子性,更易于移植和業(yè)務(wù)功能擴(kuò)展。實踐證明,采用.NET平臺和WCF技術(shù)構(gòu)建民航訂座系統(tǒng)的方案是可行的,進(jìn)而可以推廣到民航領(lǐng)域其他核心系統(tǒng)。
此外,在研究中為不涉及民航信息網(wǎng)絡(luò)的通信費用,在服務(wù)器端模擬了民航主機(jī)的航班數(shù)據(jù)管理功能,使得沒有民航主機(jī)的支持也能正常運行各種訂座業(yè)務(wù)指令。因而,此訂座模擬系統(tǒng)可用在民航客運代理人的業(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). [錢濤.基于WCF的機(jī)房管理系統(tǒng)的設(shè)計與實現(xiàn) [J].計算技術(shù)與自動化,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)用開發(fā)研究 [J].計算機(jī)時代,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) 松耦 合實現(xiàn) [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ī)工程與設(shè)計,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ù)庫集群系統(tǒng)中的應(yīng)用與實現(xiàn) [D].長沙:國防科技大學(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平臺的分布式數(shù)據(jù)庫管理信息系統(tǒng)的研究與設(shè)計[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ī)工程與設(shè)計,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ī)工程與設(shè)計,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ī)工程與設(shè)計,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ī)工程與設(shè)計,2008,29 (5):1049-1054.]
[15]Scott Klein.Professional WCF programming:.NET development with the Windows communication foundation [M].Wikipedia:Wrox,2008:200-210.