APP下载

基于MEF的机场安检系统外部接口平台的设计与实现

2017-12-21罗桂林李伟张勇

数字技术与应用 2017年10期

罗桂林++李伟++张勇

摘要:针对安检系统各子系统与外部系统交互信息的接口方式不同,但其交互的消息格式均遵循一定的消息规范协议,且安检各子系统处理消息逻辑也基本相同的特点,本文提出了机场安检系统外部接口平台的设计与实现,该平台实现了基于.NET 2.0的轻量级MEF的编程框架,支持动态拓展和装载不同接口访问器,实现不同接口方式下的消息交互,解决安检系统与外部系统有多种接口方式维护不同接口程序问题。实践表明,该平台能够兼容Socket、MQ、Web Services等不同接口方式,实现安检各子系统同外部系统信息交互。

关键词:机场安检系统;统一接口平台;MEF;消息类型中间件;开放式编程

中图分类号:TP315 文献标识码:A 文章编号:1007-9416(2017)10-0138-03

1 引言

安检系统包括机场柜台式分层管理系统、机场主带式分层管理系统、机场管理信息系统等子系统,为机场安检提供全线解决方案,是民航机场关键系统之一。它的主要功能是对旅客托运行李和随身行李进行安全检查,以保障民用航空器及其所载人员、财产的安全。安检各子系统不是单独孤立地运行,它与离港系统(DCS)、信息管理系统(SMIS)、行李处理系统(BHS)等外部系统交互必要的信息,如旅客信息、行李信息、行李安检信息[1]等。

安检各子系统与外部系统均有接口,每种接口方式均有相应的接口网关程序,以完成必要消息的交互。随着计算机技术的发展与升级,安检各子系统与外部系统接口出现不同的技术形态,使得安检系统接口程序版本得不到有效控制,而多种接口模式给系统的维护也带来了复杂性[1]。

如图1所示,以DCS为例,DCS可通过Socket、MQ、Web Services等方式向安检各子系统提供离港旅客信息、行李信息。一方面,一旦DCS系统出现新的接口技术形态,这将使得研发人员重新开发新的接口软件,延长了系统开发生命周期;另一方面,程序版本未得到有效控制,也会增加安检系统运维的工作量。

分析发现,安检各子系统虽然与外部系統交互信息的接口方式不同,但其交互的消息格式均遵循一定的消息规范协议,处理消息逻辑也基本相同。为此,本文研究与设计的安检系统外部接口消息平台目标之一就是构建一个与接口方式无关的消息处理平台。

2 MEF框架概述

接口平台保持相对独立,避免直接依赖外部系统具体接口方式。微软可拓展MEF框架,即Managed Extensibility Framework,为解决接口平台与具体接口方式之间的直接依赖提供了技术方案。

MEF是用于创建轻量、可扩展应用程序的库,是.NET 4.0的组成部分。MEF不仅让应用程序在无需配置的前提下发现和扩展协定组件,还可以让开发人员得以轻松地封装代码并避免脆弱的紧密依赖性。MEF核心概念如下[2,5]:

(1)Export(导出)组件、模块、服务、插件,它向容器中的其它部件提供的功能和服务等。(2)Import(导入)是组件、服务、插件等接入系统的窗口,MEF支持若干导入类型,其中包括动态导入、延迟导入、必备导入和可选导入。(3)Contract(协定)是Export和Import的一种约定,只有Contract相匹配的Import和Export部件才能组装成功。

3 接口平台研究与设计

针对安检各子系统与外部系统之间处理的消息遵循一定消息规范以及处理消息逻辑也基本相同的特点,接口平台规范了各子系统消息处理流程;针对安检各子系统与外部系统存在不同的接口方式,不同接口方式是由不同接口访问器实现;而接口平台则是参照MEF导出、导入和协定等概念设计并实现了基于.NET 2.0轻量级MEF框架(EasyMEF)的接口访问器动态装载器,用于动态加载访问外部系统的接口访问器。不同于基于.NET 4.0框架下的MEF,EasyMEF是基于.NET 2.0设计的,可适用于XP,具有较强适用性。

根据实际需求,本文设计了Socket、MQ、Web Services等不同接口方式的访问器组件(导出功能),动态装载器执行EasyMEF框架协定将这些接口访问器组件导入到接口平台(导入功能)。这样彻底避免接口平台与外部系统的直接依赖,实现了不同接口方式的接口访问器“即插即用”[4]。

图2为安检系统外部接口平台框架设计图,其中包括内核模块、接口访问器动态装载器和接口访问器等三大模块。

3.1 内核模块

内核模块包括了安检系统对象模型库,消息类型中间件以及消息处理器。收到消息后,首先是消息解析,其次识别存储安检子系统数据库,最后完成消息存储。

(1) 安检系统对象模型库:构建消息平台消息解析后的对象库,并在对象库的基础上,采用特性技术,根据不同安检子系统,定义子系统应用数据库的数据表字段名。(2) 消息类型中间件[3,6]:消息类型中间件实现进程内,不同线程间共享消息。该模块的主要作用是解耦接口访问器和消息处理器之间的直接依赖。消息解析后,形成消息对象(Message Object),将消息对象按照消息类型存入消息中间件,供消息处理器异步读取和处理。(3)消息处理器:该模块按消息类型,从消息中间件中读取消息。采用反射技术,读取消息对象中字段在各子系统映射的数据库表字段,动态生成并执行SQL命令,从而实现将接口访问器所接收的消息存储至安检系统各子系统应用数据库。

3.2 接口访问器动态装载器

该模块实现了MEF功能的导出功能和导入功能之间的协定,其主要功能是用于动态识别和装载接口访问器。

3.3 接口访问器

在EasyMEF框架下,不同接口方式,需实现不同接口访问器,以完成消息的接收与发送。此外,接口访问器具有一定自治管理能力,还实现了接口消息统计和处理性能计数,接口故障诊断、报警与故障恢复等功能。endprint

这样设计的优点在于,安检系统接口平台与外部系统有新的接口方式需求时,只需按照编程规范实现接口访问器并导入接口平台便可实现与外部系统接口,而无需重新编写新的接口网关程序,也无需重新编译接口平台。

4 接口平台实现

本文设计的接口平台能动态装载不同接口访问器,实现与外部系统交互消息。同时,制定了接口访问器编程规范,一旦与外部系统出现新的接口方式,可参照规范实现新接口方式的访问器。接口访问器收到外部系统消息后,以事件的机制通知平台处理;平台解析消息后,将消息存入消息中间件,最后消息处理器读取中间件消息,将消息存储至安检各子系统应用数据库。

4.1 接口消息规范

安检系统与外部各系统交互的消息均参照标准规范协议, 交互相同格式规范的消息。例如,与DCS交互的BSM报文参照IATA《Recommended Practice 1745:Baggage Services Message》,与SMIS、BHS交互的消息也均遵循标准接口规范协议。

4.2 接口访问器动态装载器编程规范

为了使接口平台能动态装载不同接口访问器,本文制定了接口访问器装载器与接口访问器之间的编程规范,并开放了接口访问器接入接口平台准则。只有实现了该编程规范的接口访问器,才能接入接口平台。

设计与实现接口访问器时,必须声明EasyMEF特性,并实现IAccess接口以完成接口访问器与接口访问器动态装载器之间的功能协定。其中,IAccess接口要求接口访问器实现连接外部系统方法和断开方法、启动和终止数据接收服务方法、开放消息通知中心等;ICounter要求接口访问器实现基本的数据接收统计和报文处理统计功能。

例如,实现IBM MQ Sphere Series 6.0的离港系统接口访问器可声明如下:

接口访问器以DLL组件的形式存放于接口平台指定目录下。接口访问器动态装载器读取指定目录下的DLL文件,运用反射和特性技术识别DLL组件中的接口访问器。若接口访问器定义了EasyMEF特性并實现了IAccess接口,装载器便将接口访问器实例化和初始化,调用IAccess接口中的Connect方法访问启动连接外部系统,调用Start方法访问启动数据接收服务。接口访问器自治功能实现故障诊断和故障恢复,并通过消息通知中心,将故障诊断报警消息和故障恢复告知接口平台。实现接口访问器装载器算法如图4所示。

4.3 安检系统对象模型库

消息处理器读取消息类型中间件消息,将接口访问器收到的消息写入机场分层管理系统、机场信息管理系统等安检各子系统应用数据库。平台消息模块解析消息后,生成安检系统消息对象。消息对象中的每个字段定义了与安检应用数据库数据表字段的映射关系。如行李码的IATA字段,安检系统对象模型库定义如图5所示。

4.4 消息类型中间件

接口访问器获取外部系统消息后,以事件的机制通知接口平台。接口平台进行消息解析后,获取消息类型,将消息存入消息类型中间件。本文实现的消息中间件,封装了NET提供的Queue类,实现了基于消息类型的队列管理器,其基本功能以队列名为关键词对队列存储,每队列都有自己的存储类型标签。例如,解析BSM报文后,将BSM报文存入行李信息类型队列。

4.5 消息处理器

消息处理器设计思想是实现业务逻辑的归一化(One Business Mode)处理,采用泛型定义业务逻辑的能处理的消息类型,按照业务逻辑能够处理消息类型获取消息中间件中的消息,参照业务逻辑操纵的安检子系统类型,运用反射技术读取消息对象特性定义数据库字段类型,并组合生成SELECT命令、UPDATE命令和INSERT命令,最后完成数据库业务的增、删、改、查操作。

5 接口平台应用

目前,安检系统接口平台已初步推广使用,较好地实现安检系统与外部接口数据交互,满足安检各子系统需求和应用。在西安咸阳国际机场T1航站楼,接口平台实现了与安检信息管理系统接口(Socket方式);在虹桥国际机场T1航站楼,该接口平台实现安检信息管理系统与转报平台接口(IBM MQ 9.0方式)、与预安检闸机接口(File Share方式)以及与虹桥T2航站楼安检信息管理系统接口(DB Share方式);在武汉机场T3航站楼,接口平台分别实现安检主带式分层管理系统和安检柜台式分层管理系统与离港系统的接口(Web Services方式)。

6 结语

本文设计与实现了基于MEF的机场安检系统外部接口平台。接口平台支持以Socket、MQ、Web Services等不同的接口方式以插件方式接入平台,并且提供了开放式接口访问器编程规范接入新的接口方式,从而有效地缩短了安检系统接口软件开发周期,解决了安检系统接口程序版本控制问题,进一步减轻了系统运维工作量。

参考文献

[1]张勇,李伟,罗桂林.机场安检系统外部接口的设计与研究[J].机电产品开发与创新,2015,28(4):1.

[2]蔡军,胡伟.基于MEF的软件可复用框架设计与实现[J].苏州大学,2014(3):52.

[3]赵堃.基于中间件技术的机场信息集成系统设计与实现[D].中国科学院大学,2016:26.

[4]Nasib S.Gill. Reusability issues in component-based development [J], ACM SIGSOFT Software Engineering Notes, July 2003,28(4):4.

[5]李凤桐,杨艳峰,赵景超.基于MEF技术的插件式应用系统解决方案[J].计算机安全与维护,2015(4):93.

[6]校景中.基于消息中间件的开发平台的研究[D].电子科技大学,2003:37.endprint