APP下载

金融自助终端报文通信系统研究

2018-09-10朱利妍牛鹏

计算机与网络 2018年16期

朱利妍 牛鹏

摘要:针对金融自助终端软件报文通信需求复杂多变的情况,在综合分析业务交易本质的基础上,提炼关键业务要素,抽象为解析器、模板和业务报文3层系统模型,提出了一种灵活可配置的交易报文通信系统设计和实现方法,包括通信链路设计、报文协议格式、动态组解包方法、报文数据加工存取及通信完成事件通知等,为终端交易软件的开发提供技术支持和方案参考。

关键词:交易报文;自助终端软件;通信链路;报文协议

中图分类号:TP391文献标志码:A文章编号:1008-1739(2018)16-66-3

Research on Financial Self-service Terminal Message Communication System

ZHU Liyan1, NIU Peng2

(1. He爷nan Police College, Zhengzhou He爷nan 450046, China; 2. Inspur Financial Information Technology Co., Ltd, Ji爷nan Shandong 250101, China)

0引言

随着近年来互联网技术的高速发展,基于金融自助终端交易平台的业务形态在不断发生改变,以适应新形势下技术的不断进步和变革。2015年以来,随着国有各大银行加速推进网点服务转型升级,对高度集成银行业务的新型智能设备的需求日益剧增。大量新型智能设备的引入对交易软件的要求也越来越高,在报文通信层面,要能够接入更多的后端业务系统,适配不同的通信协议。本文提出一种完全配置化的通信报文设计方案,在实际应用中,通过实现其定义的模块接口,配置不同的报文模板,即可满足不同业务场景下的报文通信需求,从而屏蔽底层处理细节,简化应用开发的复杂度。

1总体设计

未来几年,金融智能设备市场预计仍将保持10%左右的年均增速[1],大量新业务的迁移和开发,要求软件的报文通信方案要足够灵活、可配置、稳定和可靠,这样才能满足未来系统的扩容和新业务的无缝融入。

传统实践中,终端软件的通信方案设计往往与特定业务类型紧密耦合,抽象度低、复用性差。当后端的业务接口发生变更时,必须编写新的通信模块,修改调用者代码,或者扩展原有通信模块的功能,然后再经过编译、打包及测试等一系列流程进行发布和上线,效率低下、維护不便,不利于业务系统的快速迭代更新。从项目实施的角度看,如何简化报文通信过程的复杂度、加快开发效率及保证系统健壮与高复用性是一项亟待解决的问题。如图1和图2所示,当后端系统接口发生变更时,传统的通信系统设计并不能快速适应新需求的变化,需要对基础通信模块和业务逻辑模块同时进行升级改造,工作量大、维护不便。

基于上述问题,提出一种灵活可配置、高度参数化和业务无关的通信报文设计方案。内置常用的链路通信协议,设计一种通用的报文模板,遵循“高内聚,低耦合”的设计原则[2],真正达到“对扩展开放,对修改关闭”的目标。

基于上述问题,提出一种灵活可配置、高度参数化和业务无关的通信报文设计方案。内置常用的链路通信协议,设计一种通用的报文模板,遵循“高内聚、低耦合”的设计原则[2],真正达到“对扩展开放,对修改关闭”的目标。

2详细设计

系统设计一个开放式的框架,它抽象出协议模块和链路模块,并定义好各自的接口形式。在功能上划分为链路管理器、报文解析器、自动化模块、数据字典和事件模块5个模块。

①在链路定义上,设计支持TCP和HTTP两种通信方式;②在报文协议上,支持银联8583报文格式,XML格式、分隔符以及其他自定义形式的报文;③自动化模块提供脚本的动态加载和执行功能,增强系统可扩展性,以便定制化开发不同报文的组解包函数;④数据字典提供统一平台化的数据管理、存储和访问能力,提供系统各模块间的数据交互能力;⑤事件[6]模块提供对外通知接口,通知在整个发送接收过程中可能产生的各类系统状态,如图3所示。

2.1接口设计

基于开放的系统设计,不同模块之间功能边界清晰,保持松散的耦合关系。本文提出的设计方案将接口划分为对外服务接口、链路模块接口和报文协议模块接口3类,如表1、表2和表3所示。

2.2模板设计

报文模板设计上遵循规则清晰、易于理解和配置方便的原则,涵盖报文通信中的两大要素是链路属性和数据应用协议。①在链路属性中,定义链路传输协议及其相应参数;②在报文协议中,将报文视为一组原子字段的组合,每个字段有其固定的属性,将不同的字段组合在一起即定义出了一条特定的报文,这二者绑定在一起构成了一个完整的通信方案。

2.3关键算法

2.3.1组包算法

若干字段构成一个虚拟的字段组,若干字段和字段组构成一条报文,若干条报文和一些统一的规则构成了一个应用协议的完整定义。

在实现报文数据组包功能时,总体过程是通过字符串连接的方式将每个字段串起来。首先要进行数据准备,解析模板文件,提取每个字段定义的属性;其次根据规则分别对不同的字段进行处理。若是普通数据字段则直接提取数据,而特殊字段则按字段属性进行自动赋值或编码转换。

在配置报文模板的过程中,字段的数据来源分为3类:①直接指定的字面值常量:在报文配置过程中指定;②由数据字典模块提供的特定名称变量:数据内容在运行时确定;③根据字段属性自动赋值:对于第一种数据,在解析模板文件的过程中直接获取;对于数据字典变量,根据运行时该变量对应的内存数据来获取;第3种则根据此字段当前的上下文环境来自动赋值,本系统的组包流程如图4所示。

2.3.2解包算法设计

数据解包的过程,本质上就是按照模板中定义的返回报文格式,将收到的字节流划分为一个个独立有序的字段,并按照报文定义的规则进行下一步处理的过程。而在将一串数据划分为报文定义的字段时,最关键的是确定当前字段的长度,本系统解包流程如图5所示。

3系统测试

本系统作为一个独立通用的平台性模块,封装为单独的动态链接库以供应用程序调用。测试时主要关注2个方面:①应用程序作为客户端与后台通信时,处理结果是否正确;②应用程序作为服务端,接收后台发送的主动报文时,处理结果是否正确。

测试时,应用程序按序调用对外服务接口,加载数据字典模块和模板解析模块,并自动生成报文数据,不需要调用程序处理底层的各种技术细节。当接收完返回数据后,自动执行解包过程,全部操作成功后,接口函数返回成功,发出事件通知,应用程序调用者使用数据存取接口获得需要的数据。

4结束语

互联网、人工智能等新技术的高速发展,为传统行业的业务形态带来了巨大的冲击,变革迫在眉睫,流程复杂、效率低下的人工柜面业务终将被各类终端应用软件所取代。本文提出的通信系统设计方案,高度内聚,又具备极强的灵活性,易于扩展,从理论及实践来看,几乎可以满足金融终端软件的各种通信需求。

本系统高度参数化,所依赖的模板文件为通用的XML格式,在实现上选择跨平台语言开发,因此可以满足不同操作系统上的使用要求。由于系统自身的业务无关性,因此也可以应用在社保、交通等行业软件中,作为独立的通信模块使用。

参考文献

[1]前瞻产业研究院.2018-2023年中国ATM机行业市场前瞻与投资战略规划分析报告[R].北京:前瞻产业研究院,2017.

[2] Gamma E,Helm R,Johnson R,et al.设计模式:可复用面向對象软件的基础[M].北京:机械工业出版社,2007.

[3] Blanchette J,Summerfield M.C++GUI Qt 4编程[M].北京:电子工业出版社,2013.

[4] Nicholas C Z.JavaScript高级程序设计(第2版)[M].北京:人民邮电出版社,2010.

[5]蒲松涛.金融自助服务设备国产化现状研究[J].中国信息化周报,2017(32-33):23.

[6] JeffreyR.Windows核心编程[M].北京:机械工业出版社,2008.