APP下载

基于.NET与WCF的民航订座系统研究

2012-11-30鸣,张旭,熊

计算机工程与设计 2012年4期
关键词:客户端分布式服务

赵 鸣,张 旭,熊 静

(上海工程技术大学 航空运输学院民航运输系,上海201620)

0 引 言

受技术局限和安全因素影响,中国民航的三大主机系统 (订座、离港和货运)最初均被设计为紧耦合结构,运行在UNISYS大型主机上。但随着民航客、货运业务量的高速增长,一些问题也逐步表现出来:一方面是主机性能提升相对缓慢;另一方面是用户对系统可用性和可靠性要求越来越高。虽然已有通过UNISYS的 “扩展事务处理能力”(XTC)技术成功实现对民航主机系统的松耦合架构改造,但系统维护复杂程度大大增加,系统之间报文交换更加频繁,一些单主机模式下不存在的问题成为XTC架构下的问题或性能瓶颈。

面对日益凸显的资源需求矛盾,在新平台技术支持下设计系统架构,建立一个统一、分布、异构的信息系统,合理高效的利用民航信息资源,有效服务于民航各类业务,具有重要意义。WCF(Windows communication foundation)是微软专门针对面向服务 (service-oriented)应用程序提供的.NET平台下的分布式编程框架,将微软所支持的各种分布式技术整合到一起,提供一致的开发框架,降低了系统开发周期,增强了系统的可伸缩性,解决了不同网络和应用环境下的数据和操作的共享以及异构系统间跨平台访问与操作问题[1]。本文提出基于.NET平台,结合WCF技术构建新一代多主机、分布式民航信息系统,并以订座系统在局域网中的实现为例验证方案的可行性。

1 系统分析

1.1 民航信息网发展趋势

中国民航信息网已形成了包括离港、订座等8个业务主机群,承担着民航订座、客票销售、机场值机、配载、货运等业务。自1991年改造以来,主机群及前端处理机DCP通过双备份共享式Ethernet互联,解决了信息流量均衡及方便获取各主机群的服务和备份功能。但随着业务量的剧增,如此复杂多主机系统结构不具有扩充和全局改造的灵活性,负载平衡和系统间大量报文交换处理成为系统优化和维护的关键问题。

为应对国外先进航空旅游信息系统的激烈挑战,民航信息系统呈现出以下4个发展趋势:①系统设计理念从“面向生产”转向 “面向旅客服务”,着力建立核心旅客数据库;②核心系统应采用新技术、新架构,从 “集中式”转向 “开放式”;③因开放平台通用性强,成本低,系统间的数据交换具备成熟的模式,在开放平台上实现新技术和新业务功能成为首选方案;④对于存在的 “信息孤岛”,提出构建核心中间层,利用中间件技术进行系统整合,实现资源共享。

此外,随着国内电子商务环境逐步改善,民航电子商务需求日益增强,新一代的信息系统必须易于扩展,有标准的系统接口和外部接入功能,任何一个新的功能或应用系统都能方便的结合到其中,满足民航电子商务的多种需求。

1.2 订座系统现状分析

现行的旅客订座系统作为民航信息系统的核心系统之一,包括代理人分销系统 (computer reservation system,CRS)和航空公司系统 (inventory control system,ICS)。航空公司系统有国内20多家航空公司的数据,主要进行航班方面的管理。代理人分销系统为代理人提供航空产品和非航空产品的销售。CRS如何销售航空公司的座位由CRS与ICS的技术联接方式及商务协议决定,系统间通过拍发报文实现信息共享和交换。

为保障安全和系统可靠性,传统订座系统采用了以UNISYS大型机为中心,集中式主机处理的紧耦合架构。而随着民航客运业务的发展,这种系统架构的不足主要表现为:①紧耦合下的主机系统结构,使得线路、用户标识等有限资源共享率低;②系统事务处理能力缺乏弹性、扩充性,不利于销售规模的扩张;③某些系统维护任务必须停止应用业务,将影响到用户。

随着计算机技术的发展,开放系统的处理能力逐步接近主机系统,不但可以获得扩展的处理能力,还可以获得较高的系统可用性和可靠性。中国民航的核心系统向开放平台转换已成为必然,目前采取的方法主要有两种:一是核心系统的功能逐步被替换外移到开放平台,优点是转移风险小、新系统实施成本低,缺点是转移进程较长;二是重新开发开放应用系统,经运行测试后一次性替换全部功能,但风险较大。

1.3 订座系统功能分析

座位管理和事务处理是民航信息系统的核心功能,其最终服务对象是旅客。通过分析以旅客服务为中心的订座系统的业务流程,得出其具有的6大主要功能:①系统登录。包括联接民航主机系统、以工作号密码登录、显示工作区状态、临时退出系统、恢复临时退出系统、退出且释放工作区资源等。②航班管理。涉及航班时刻、票价的制定、航班起飞时间、机型、各子舱位座位情况、联接协议、经停点、餐食服务等信息。在系统中建立相应的航班信息并发布,用户才可以查询航班信息。③航班查询。用户在正常登录系统后,能用AV等指令查询目前执行的航班信息。④旅客信息管理。保证旅客基本信息的准确性、真实性、唯一性,能被其他信息系统实时共享,也为下一次服务提供基础。⑤订座与销售。首先要为旅客创建预定航班舱位的各个组项,包括姓名组、航段组、联系组、特殊服务组等;其次是进行电子客票销售,包括电子客票打票机的控制、电子客票的出票、重试、退票、作废等事务处理。⑥系统用户管理。主要分为两类用户:一般业务员和系统管理员。根据业务范围的不同,业务员还被分为不同的工作级别,系统管理员承担系统的数据维护。

根据业务分析得出订座指令间的逻辑如图1所示。

图1 主要指令逻辑关系

2 相关技术

以往的应用实践证明,.NET平台的优势不仅仅在Web应用中,在开发Windows应用程序方面也有丰富的技术支持。

2.1 .NET平台

微软.NET平台是以一种类似于Java系统的虚拟机方式运行和管理的编程平台,以公共语言运行时 (common language runtime,CLR)为基础,为基于其上的层次提供统一的底层进程和线程管理、内存管理、安全管理以及其他系统服务。.NET平台提供一个包含许多高度可重用的接口、类型的类库,是一个完全面向对象的类库。

Windows Forms(即 Windows应 用)和 ASP.NET是.NET Framework的主要界面技术。Windows Forms是一项基于Windows平台的应用程序设计的新技术,实质是一套基于.NET平台的Rich Windows Client Library。使用该项新技术可以充分利用.NET Class Library的面向对象特征、CLR提供的各种服务等底层支持,来开发基于Windows的应用程序,Windows Forms也可以用来开发多层结构的分布式系统的本地界面。而ASP.NET是一个建立服务器端Web应用程序的框架。

2.2 WCF及 WCF服务

在Visual Studio早期版本中,使用Web服务能够实现从任何平台访问信息的方式来共享信息,使用.NET远程处理能够实现在客户端和正在Windows操作系统上运行的服务器之间移动数据,使用企业服务 (DCOM)实现事务处理通信,使用消息队列 (MSMQ)实现排队模型。在.NET 3.0(CLR2.0)中增加了 WCF功能。WCF是一个统一框架,将所有这些技术的功能汇集到一个编程模型中,用于创建既安全可靠又可交互的分布式事务处理应用程序,并简化了开发分布式应用程序的过程。

2.2.1 WCF主要特性

(1)平台统一:在WCF发布之前,微软支持6种主要的分布式技术:RPC、WSE、ASMX、Remoting、COM+和MSMQ。不同的技术有不同的API、编程方式、操作要求和配置需求,应用系统代码紧密依赖于这些技术。当有新需求时,或应用系统与其他非.NET Framework应用系统通信时,在WCF出现之前,没有更好的选择,只能放弃需求或者重新编写通信程序。WCF集成旧的技术特性并统一为一个编程模型,提供比以前更多的连接特性。

(2)性能高效:对于两个.NET Framework应用系统来说,.NET Remoting是相对高效的通信方式,但它不能与非.NET Framework应用系统交互。ASMX虽然没有Remoting高效,但它可以与非.NET Framework应用系统交互。从端对端的角度来说,MSMQ效率虽不高,但是队列的特性可以弥补发送消息的应用效率问题,缺点就是它不能与其他消息队列系统交互。总体来看,分布式系统使用的分布式技术已经影响到了系统的性能。WCF应用系统可以提供不同层次的互操作性能。如与基于Java的Web服务通信相比,WCF应用与其他WCF应用通信是更高效。

(3)可靠性:过去,应用的可靠需求指明了应用中要使用的技术。如应用需要可靠消息传输,则MSMQ是逻辑上的技术选择。但在实现MSMQ时,必须了解MSMQ不能与其他技术互用的规范。可见,这个发送可靠消息的需求影响了应用程序的代码和编写程序时的知识准备。WCF提供最多一次、最少一次、仅仅一次和有序传递的机制,即使通过传统的非安全传输,也可以保证消息的传递[2]。

2.2.2 WCF通信模型

WCF包括两个主要架构层:服务模型层 (ServiceModel layer)和通道层 (channel layer)。服务模型层是用户代码和通道层之间的桥梁,是标准API的一部分。通道层负责消息通信,属于底层基础结构。

在面向服务的应用中,消息是通信的基本单位。WCF继承面向服务的体系结构 (SOA),通过消息访问点 (endpoints)在客户端与服务端之间进行交互。Endpoints的内容包含了地址、绑定、契约和行为。地址指定服务位于何处,绑定说明服务所能理解的通信协议 (即服务器端与客户端进行交互的方式),契约说明服务接口函数及数据交换格式。通过明确定义的契约,服务被用来表达一个特定业务功能的集合。行为主要用于定制Endpoint在运行时的一些必要的Behavior。

WCF定义了4种类型的契约:服务契约描述客户端能够执行的服务操作;数据契约定义与服务交互的数据类型;错误契约定义服务抛出的错误,以及服务处理错误和传递错误到客户端的方式;消息契约允许服务直接与消息交互。WCF通信模型可参考文献 [3]。

2.2.3 基于WCF的业务模型

Windows、.NET Framework、WCF和WCF应用系统之间的联系如图2所示[4]。WCF是 .NET Framework 3.0的一部分,任何公开或使用WCF服务的项目都必须引用系统的ServiceModel配件。

图2 WCF上下文环境

基于WCF的多层服务模型可细分为:客户层,WCF服务层,业务逻辑层与数据服务层。客户层包括客户表示层和客户业务层,负责用户与系统的交互。WCF服务层对客户层提供服务接口,是对业务逻辑层的封装与抽象,具体由下一层即业务逻辑层来实现。业务逻辑层可以是服务的实现,也可以是对其他WCF服务的调用封装。数据访问层为业务逻辑层提供连接服务,并提供数据库操作的方法。基于WCF的多层服务模型可参考文献 [1,5]。

3 系统设计

3.1 多层分布式系统结构设计

随着新平台技术的产生和应用,实践证明构建多层、分布式系统,应用资源垂直分布,增强了分布式和协作处理能力,能较好地解决与其他异构系统互联和频繁地数据交换问题。传统订座系统是一种典型的集中式主机处理系统,虽进行了松耦合方面的技术改造,仍跟不上行业发展步伐,系统维护任务越来越艰巨。

针对订座系统的业务功能及特点,基于.NET平台,结合WCF技术及ADO.NET技术,设计了如图3所示的多层分布式订座系统体系结构。整个系统主要由客户端、应用服务器和数据库服务器3部分组成,采用ADO.NET数据访问方式。由图3可以看出,应用服务器运用了WCF的优势,使服务具有原子性 (atomicity),封装了业务功能,也封装了业务层中的其他依赖性,这些业务功能拥有自己的业务组件、数据访问组件和可用的数据存储,能够独立地行使其核心功能。应用资源垂直分布,单个服务是可移动的或可替换的,这对于系统业务的扩展或移植是很便利的。

图3 多层分布式订座系统

3.2 应用服务器设计

在多层Client/Server模式中,应用服务器的设计是实现数据交换和关键资源共享的关键。

在WCF技术支持下,应用服务器遵循以下原则:①服务封装业务组件和数据访问,能够独立行使其核心功能;②服务运行具有隔离性和容错性,即服务抛出的异常不影响其他服务;③服务间不可避免的数据共享在服务边界以外,通过数据库中的存储过程实现关联。

在一个WCF应用中,客户端和服务端是通过Endpoint进行通信的,只有在客户端具有一个与服务端完全匹配的Endpoint,才能调用这个Service。服务端可以为一个Service定义多个Endpoint。按照订座系统的业务范围,在应用服务器上封装业务组件和数据访问,主要分为航班信息查询服务、旅客订座服务 (涉及旅客订座记录的各个组项)、电子客票销售服务、航班数据管理服务、打票机控制服务等。一个WCF服务由3个重要部分组成:服务类 (Service Class)、宿主 (Host)和终 结 点 (Endpoints)[3-4]。一般 由以下几个类构成:①WCF Iservice类,即契约层,对外提供接口;②WCF Server类,即WCF服务层,实现业务逻辑;③Data DAL类,即数据访问类,提供访问数据库的方法。

3.3 ADO.NET数据存取

ADO.NET是在.NET平台中创建分布式和数据共享应用程序的开发接口 (API)。完成数据访问的是ADO.NET的两个核心组件:DataSet和.NET数据提供程序。.NET Framework中常用的数据提供程序有两个:SQL Server.NET数据提供程序和OLE DB.NET数据提供程序。SQL Server.NET数据提供程序用于使用 Microsoft SQL Server 7.0或更高版本的中间层应用程序,OLE DB.NET数据提供程序用于使用Microsoft SQL Server 6.5或较早版本的中间层应用程序,或任何支持OLE DB.NET数据提供程序所使用的OLE DB接口中所列OLE DB接口的OLE DB提供程序。

根据比较分析得出,由于SQL Server.NET是专为SQL Server数据库设计的,当系统数据库选择为SQL Server 2005时,采用SQL Server.NET数据提供程序访问数据库在执行效率方面有明显优势。此外,SQL Server管理提供者使用表格式数据流的专用协议与SQL Server通信,并提供一整套完整的安全机制,包括:选择认证模式和认证过程、登录账号管理、数据库用户账号管理、角色管理以及用户权限管理等。实际的民航订座生产系统中的数据库是支持所有订座业务的数据基础,也是系统运行信息的存储场所,是系统的重要组成部分,与民航离港系统、货运系统主机都存在信息交换和共享。

4 WCF服务的实现

为在研究中不涉及民航资源网络通信费用,力求在脱离中国民航信息系统主机支持的情况下实现订座系统的业务功能,将以上多层分布式订座系统在局域网环境中模拟实现,基于SQL Server 2005创建数据库,负责数据服务,保存旅客订座信息、航班信息等。在模拟系统中,也不涉及与国外代理人分销系统及航空公司的信息交换。在服务器端为管理员提供图形用户界面方式进行航班信息管理及航班发放,客户端才可以查询航班信息,进而实施订座销售。用近40个PC终端模拟民航订座生产系统中的订座终端,遵循实际订座系统的习惯,客户端采用命令行式操作界面,用Windows Forms模拟实现。应用服务器作为所有访问主机应用的切入口,解决订座系统中线路、用户标识等资源共享问题及指令解析。各层之间保持相对独立,当其中一层需要修改时,其他各层不受影响,应用服务器的实现是问题解决的关键。

因此,下面按主要实现步骤给出一些WCF服务的代码实现。

4.1 服务端的实现

(1)创建服务契约。通过在接口上应用ServiceContractAttribute特性将一个接口定义成服务契约。

在这里将契约名称设置为 “GreenTermService”,命名空间设置成 “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)创建WCF服务。当服务契约成功创建后,需要通过实现服务契约来创建具体的WCF服务。

namespace GreenTerm.Services

[ServiceBehavior(UseSynchronizationContext=false,

ConcurrencyMode=ConcurrencyMode.Multiple,

InstanceContextMode = InstanceContextMode.Per-Call)]

public class GreenTermService:IGreenTermService-Contract

……

(3)通过自我寄宿 (Self-Hosting)方式寄宿服务。WCF的服务不能孤立地存在,需要寄宿于一个运行着的进程中。承载WCF服务的进程称为宿主 (Host),为服务指定宿主的过程称为服务寄宿 (Service Hosting)。在实现中,主要通过自我寄宿的方式创建一个控制台应用作为服务的宿主。直接使用Visual Studio提供的配置工具,在工具(Tools)菜单下选择 “WCF Service Configuration Editor”子项,开启配置编辑器。

namespace GreenTerm.Hosts.ConsoleHost

……

Console.WriteLine ("Starting GreenTerm Host...");

_svcHost= LoadGreenTermService();

Console.WriteLine("\nGreenTerm已经启动.按任意键终止服务\n\n");

Console.Read ();}

……

4.2 客户端的配置

服务被成功寄宿后,服务端便开始了服务调用请求的监听工作。Visual Studio在内部实现元数据的获取,并借助这些元数据通过代码生成工具 (SvcUtil.exe)自动生成用于服务调用的服务代理相关的代码和相应的配置。在一系列自动生成的类中,包含一个服务契约接口、一个服务代理对象和其他相关的类。被客户端直接用于服务调用的是一个继承自ClientBase<GreenTermService>并实现了GreenTermService接口的服务代理类。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 客户端主界面

5 结束语

与采用XTC技术对现有民航主机系统进行松耦合改造相比,采用开放平台技术构建的新一代民航信息系统更易于扩展、且资源共享度高、可靠性好。本文针对民航信息系统的核心系统——订座系统,结合.NET平台和WCF技术提供的统一编程模型,创建了多层、分布式民航信息系统结构,并在局域网中模拟实现了基于.NET与WCF的民航订座系统,WCF服务封装了业务组件和数据访问,应用资源垂直分布,使服务具有原子性,更易于移植和业务功能扩展。实践证明,采用.NET平台和WCF技术构建民航订座系统的方案是可行的,进而可以推广到民航领域其他核心系统。

此外,在研究中为不涉及民航信息网络的通信费用,在服务器端模拟了民航主机的航班数据管理功能,使得没有民航主机的支持也能正常运行各种订座业务指令。因而,此订座模拟系统可用在民航客运代理人的业务培训中,降低培训成本。

[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].计算技术与自动化,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].张逸,徐宁,译.北京:机械工业出版社,2009:78-97.]

[3]Michle Leroux Bustamante.Learning WCF (English facsimile)[M].Nanjing:SouthEast University Press,2007:160-166(in Chinese).[Michle Leroux Bustamante.学习 WCF (英文影印版)[M].南京:东南大学出版社,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技术内幕 [M].徐雷,译.武汉:华中科技大学出版社,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架构的应用开发研究 [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技术的优利主机系统 松耦 合实现 [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的服务缓存设计与研究 [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).[刘同.负载均衡技术在数据库集群系统中的应用与实现 [D].长沙:国防科技大学,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平台的分布式数据库管理信息系统的研究与设计[D].上海:上海交通大学,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环境下 MFC框架应用的包装集成技术研究 [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在多层模式下应用的研究 [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). [王文 发,马 燕,李红达.基于.NET的四层结构及其在综合信息系统中的应用 [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). [葛瑶,李晓风,王辉.基于.NET分布式系统的模式研究 [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.

猜你喜欢

客户端分布式服务
服务在身边 健康每一天
服务在身边 健康每一天
服务在身边 健康每一天
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
分布式光伏热钱汹涌
招行30年:从“满意服务”到“感动服务”
分布式光伏:爆发还是徘徊
基于DDS的分布式三维协同仿真研究