发明内容
本发明针对现有的数据交换系统中,当外部系统变化时,必须重构内部系统,导致系统改动的工作量巨大的缺陷,提供一种数据交换方法和系统及一种网关服务器,屏蔽内部和外部的差异,在无需改动内部系统的情况下,适应外部环境的变化。
本发明解决其技术问题采用的技术方案是:提供一种数据交换方法,通过网关服务器实现外部系统和内部系统之间的数据交换,所述数据交换方法包括以下步骤:
S1、所述网关服务器判断接收到的数据消息的发送方向;
S2、所述网关服务器基于所述发送方向,将接收到的数据消息的协议转换为目的系统的协议后发送到目的系统。
优选地,所述数据交换方法还包括以下步骤:
S01、所述网关服务器启动网关服务;
S02、所述网关服务器监听数据消息。
优选地,所述网关服务包括事件服务、配置服务、日志服务、通信服务和插件服务,所述网关服务器中存储有业务插件,子步骤S01包括以下次级子步骤:
S011、按照一定的顺序启动所述事件服务、所述配置服务和所述通信服务,然后再启动所述插件服务;
S012、获取所述事件服务、所述配置服务、所述日志服务和所述通信服务并提供给所述业务插件,以完成所述业务插件的初始化;
S013、执行所述业务插件。
优选地,所述业务插件包括外部适配插件、内部代理插件以及协议转换插件,所述步骤S2包括以下子步骤:
S21、若所述发送方向为所述外部系统到所述内部系统,调用所述外部适配插件处理数据消息,调用所述协议转换插件将数据消息的协议转换为内部系统协议后,再调用所述外部适配插件将协议转换后的数据消息发送到所述内部系统;
S22、若所述发送方向为所述内部系统到所述外部系统,调用所述内部代理插件处理数据消息,调用所述协议转换插件将数据消息的协议转换为外部系统协议后,再调用所述内部代理插件将协议转换后的数据消息发送到所述外部系统。
提供一种网关服务器,用于实现外部系统和内部系统之间的数据交换,包括:
外部系统接口模块,用于与外部系统通信连接;
内部系统通信模块,用于与内部系统通信连接;
插件容器模块,分别与所述外部系统接口模块和所述内部系统通信模块通信连接,用于存储业务插件;所述业务插件用于监听数据消息,并判断接收到的数据消息的发送方向,基于所述发送方向将接收到的数据消息的协议转换为目的系统的协议后,通过所述外部系统接口模块或者所述内部系统通信模块发送到目的系统;
管理控制模块,其与所述插件容器模块通信连接,用于在接收到启动网关服务指令时,调用所述业务插件监听数据消息。
优选地,网关服务包括事件服务、配置服务、日志服务、通信服务和插件服务;当接收到所述启动网关服务指令时,所述管理控制模块按照一定的顺序启动所述事件服务、所述配置服务和所述通信服务,然后再启动所述插件服务,获取所述事件服务、所述配置服务、所述日志服务和所述通信服务并提供给所述业务插件,以完成所述业务插件的初始化,然后调用所述业务插件监听数据消息。
优选地,所述业务插件包括外部适配插件、内部代理插件以及协议转换插件;所述协议转换插件用于将接收到的数据消息的协议转换为目的系统的协议;所述外部适配插件用于通过所述外部系统接口模块接收外部系统发送的数据消息,并通过所述内部系统通信模块将协议转换为内部系统协议的数据消息发送到内部系统;所述内部代理插件用于通过所述内部系统通信模块接收内部系统发送的数据消息,并通过所述外部系统接口模块将协议转换为外部系统协议的数据消息发送到外部系统。
优选地,所述事件服务包括通知事件服务、监听事件服务和异常事件服务。
提供一种数据交换系统,包括外部系统和内部系统,所述数据交换系统还包括上述任一项所述的网关服务器。
优选地,本发明的数据交换系统,包括多个冗余设置的所述网关服务器。
本发明的数据交换方法和系统及网关服务器具有以下有益效果:通过网关服务器对外部系统(内部系统)发送的数据消息进行处理,并对处理后的数据消息进行协议转换,然后发送到内部系统(外部系统),供内部系统(外部系统)使用,这样,无论外部系统如何变化,业务插件的内容如何变化,都可以使用该网关服务器实现外部系统和内部系统之间的数据交换。
具体实施方式
以下结合附图和实施例对本发明做进一步的解释说明。
图1为本发明的数据交换系统100第一实施例的结构示意图,如图1所示,在本实施例中,数据交换系统100包括外部系统1、内部系统2以及多个网关服务器3。网关服务器3在外部系统1和内部系统2之间提供网关服务。多个网关服务器3冗余设置,即当一个网关服务器3出现故障时,备份的网关服务器3继续工作,从而不影响系统整体的功能。
在本实施例中,参见图2,网关服务器3包括外部系统接口模块31、内部系统通信模块32、插件容器模块33以及管理控制模块34。
其中,外部系统接口模块31用于与外部系统1通信连接,实现与外部系统1的接口。内部系统通信模块32用于与内部系统2通信连接,完成与内部系统2的通信功能,即实现对业务系统的接口。插件容器模块33,分别与外部系统接口模块31和内部系统通信模块32通信连接,用于存储业务插件。业务插件用于监听数据消息,并判断接收到的数据消息的发送方向,基于发送方向将接收到的数据消息的协议转换为目的系统的协议后,通过外部系统接口模块31或者内部系统通信模块32发送到目的系统。管理控制模块34与插件容器模块33通信连接,用于在接收到启动网关服务指令时,通过配置方式调用业务插件监听数据消息。
网关服务包括事件服务、配置服务、日志服务、通信服务和插件服务。事件服务主要包括通知事件服务、监听事件服务和异常事件服务,这样便于外部系统1能了解网关服务器3在运行过程中所获得的时间及其异常情况,便于外部系统1根据具体情况进行业务处理。网关服务器3也提供一些基础配置和维护信息的服务(配置服务),这样便于系统的可扩展和本地化。网关服务器3提供的日志服务可以被业务插件所使用。通信服务为基于通信服务器的模式,支持TCP协议和UDP协议。网关服务器3提供的插件服务,使得网关服务器3相当于一个插件容器,按照OSCI规范可以兼容多种插件,然后动态加载这些插件,通过插件监听在外部系统1和内部系统2之间传输的数据消息,并对数据消息进行协议转换后完成数据的交互。
当管理控制模块34接收到启动网关服务指令时,按照一定的顺序启动事件服务、配置服务和通信服务,然后再启动插件服务,初始化业务插件。初始化业务插件的过程为:管理控制模块34获取事件服务、配置服务、日志服务以及通信服务,若上述各服务获取成功则完成业务插件的初始化,运行业务插件并反馈业务插件的状态,若上述任一服务获取失败,则业务插件的初始化失败,退出业务插件的实例化。在完成初始化业务插件,并使业务插件成功运行后,业务插件将监听外部系统1或者内部系统2发送的数据消息,若外部系统接口模块31接收到外部系统1发送的数据消息,则业务插件判断此时发送方向为外部系统1到内部系统2,则将数据消息的协议转换为内部系统协议后通过内部系统通信模块32发送到内部系统2。当内部系统通信模块32接收到内部系统2发送的数据消息时,业务插件判断此时的发送方向为内部系统2到外部系统1,则将数据消息的协议转换为外部系统协议后通过外部系统接口模块31发送到外部系统1。
在本发明的数据交换系统100第一实施例中,网关服务器3提供了一个插件容器以及一些公用的服务,公用的服务包括事件服务、配置服务、日志服务、通信服务以及插件服务。因此,业务插件可专注于具体要实现的业务,可以由不同的人员开发,在业务插件加载到网关服务器后,通过网关服务器提供的事件服务、配置服务、日志服务以及通信服务,对外部系统1(内部系统2)发送的数据消息进行处理(处理主要包括接收),并对处理后的数据消息进行协议转换,然后发送到内部系统2(外部系统1),供内部系统2(外部系统1)使用。这样,无论外部系统1如何变化,业务插件的内容如何变化,都可以使用该网关服务器3实现外部系统1和内部系统2之间的数据交换。
参见图1,在本发明的数据交换系统100第二实施例中,数据交换系统100包括外部系统1、内部系统2以及多个网关服务器3。多个网关服务器3冗余设置。
在本实施例中,如图3所示,网关服务器3包括外部系统接口模块31、内部系统通信模块32、插件容器模块33以及管理控制模块34。其中,插件容器模块33用于完成接口逻辑、协议转换等功能,通过配置的方式由管理配置模块34调用,插件容器模块33中存储的业务插件包括外部适配插件331、内部代理插件332以及协议转换插件333。协议转换插件333用于将接收到的数据消息的协议转换为目的系统的协议。外部适配插件331用于通过外部系统接口模块31接收外部系统1发送的数据消息,并通过内部系统通信模块32将协议转换为内部系统协议的数据消息发送到内部系统2。内部代理插件332用于通过内部系统通信模块32接收内部系统2发送的数据消息,并通过外部系统接口模块31将协议转换为外部系统协议的数据消息发送到外部系统1。
在本实施例中,管理控制模块34包括网关服务器框架341以及基础类库342。其中,网关服务器框架341包括监控代理组件3411、界面表现组件3412、数据传输对象(Datatransfer object,DTO)组件3413以及插件管理平台3414。
监控代理组件3411用于提供信息给监控软件,便于部署有监控软件的监控中心掌握网关服务器3的内部信息和状态。
界面表现组件3412主要用于输入和输出信息,其提供维护界面用于接收操作者输入的配置信息、操作信号等,实现网关服务器3的初始化和配置。界面表现组件3412还提供监控界面,用于显示网关服务器3的各种信息和变量情况,例如展现监听事件。
DTO组件3413主要用于各个层之间的数据传输对象。
插件管理平台3414主要用于对定制化的业务插件进行管理和维护。
其中,基础类库342包括通用组件3421、通信层组件3422、以及.NET框架平台3423。
通用组件3421用于提供网关服务器3的基本应用组件,基本应用组件包括异常组件、日志组件、基础框架组件、配置组件。异常组件用于提供异常报警服务,日志组件用于提供日志服务,基础框架组件用于提供组件运行时间服务(ComponentRunTime)以及部署管理服务(DeploymentAdmin)。配置组件用于提供配置服务。
通信层组件3422包括标准通信组件和WCF(windows通讯接口)通信组件,即主要包括用于外部系统1和内部系统2的通信层连接和管理的程序实现部分(因此,外部系统接口模块31以及内部系统通信模块32还会调用通信层组件342来建立与外部系统1和内部系统2的通信层连接),其中,标准通信组件包括TCP通信组件、UDP通信组件等。
网关服务器3主要有三个实现流程,第一个是网关服务启动过程,第二是在网关服务启动过程中业务插件的初始化过程,第三个是业务插件的监听服务过程。
网关服务的启动过程如图4所示,启动网关服务器3的界面表现组件3412中的监控界面,通过该界面启动网关服务,其中,启动网关服务的具体步骤包括:启动插件管理平台3414提供的事件服务,然后启动通用组件3421中的配置组件提供的配置服务,接着启动通信层组件3422提供的通信服务,最后启动插件服务,进入业务插件的初始化过程。
如图5所示,初始化业务插件的步骤(即使装载业务插件的步骤)包括:获取事件服务,若获取成功则进一步获取配置服务,若获取成功则进一步获取日志服务,若获取成功则进一步获取通信服务,若获取成功则完成业务插件的初始化,运行业务插件并反馈业务插件的状态,其中若获取网关的上述任一服务失败,则业务插件的初始化失败,退出业务插件的实例化。
在完成初始化业务插件,并使业务插件成功运行后,通过业务插件监听外部系统1或者内部系统2发送的数据消息,并在外部系统和内部系统之间提供网关服务。具体的,业务插件监听外部系统1或者内部系统2发送的数据消息的过程如图6所示:当外部适配插件331监听到外部系统接口模块31接收到外部系统1发送的数据消息时,判断此时发送方向为外部系统1到内部系统2,则外部适配插件331处理该数据消息(处理包括接收),待协议转换插件333将该数据消息的协议转换为内部系统协议之后将该数据消息通过内部系统通信模块32发送到内部系统2。当内部代理插件332监听到内部系统通信模块32接收到内部系统2发送的数据消息时,判断此时发送方向为从内部系统2到外部系统1,则内部代理插件332处理该数据消息(处理包括接口),待协议转换插件333将该数据消息的协议转换为外部系统协议之后将该数据消息通过外部系统接口模块31发送到外部系统1。
根据以上情况,对于网关服务器3框架来说,有以下基本需求:
1.应该提供配置性的接口方式,来调用业务插件,如IOC(依赖注入)方式,此接口包含但不限于以下内容:
(1)系统参数读取、保存方式;(2)系统配置的设置界面;(3)服务初始化、重启、关闭所需要的接口;(4)异常提示接口。
2.提供通用的统一风格的主界面,能显示网关的运行状态情况,如网络连接情况,消息收发情况;
3.提供启动、停止、重启服务的操作界面(可以是主界面);
4.提供统一的日志记录机制,方便调试、查错;
5.提供统一的告警机制;
6.过开关选项能支持只运行一个实例。
在本发明的数据交换系统100第二实施例中,网关服务器3为面向服务的架构,体现了SOA架构思想,这使得不同的功能服务可以由不同的人员来开发,也可以由不同的开发工具或语言来开发;另外,为了提高系统的可靠性和稳定性,采用了集群技术来解决网关服务器3单点故障问题,对于核心节点而言,都需要支持集群,保持一定冗余,当出现单点故障后仍然保持系统继续运行;再者,通过为实现不同的功能而划分不同的功能服务,实现了分布式结构,因此对应用程序的结构没有约束:在复杂的应用场合中,通讯程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合,多种通讯方式的构造并没有增加应用程序的复杂性;另外,由于功能服务、网关独立出来,稳定了功能服务和业务服务之间的接口,实现了模块化,当面对不同的外部系统和设备时,只需要修改网关即可;再者,通过消息通信提供异步服务,降低服务之间耦合性,通讯程序可在不同的时间运行(程序不在网络上直接相互通话,而是间接地将消息放入消息队列,因为程序间没有直接的联系,所以它们不必同时运行),消息放入适当的队列时,目标程序甚至根本不需要正在运行,即使目标程序在运行,也不意味着要立即处理该消息,实现了异步服务;另外,由于功能服务和业务协同服务的连接接口一致,简化了各种接口的实现,只需要定义有关的基础协议即可,从某种程度上说,业务协同服务和配套的协议实际起到了“企业服务总线”的作用,具有良好的扩展性,实现了接口的标准化。
结合图1和图7,在本发明的数据交换方法的第一实施例中,通过网关服务器3实现外部系统1和内部系统2之间的数据交换,数据交换方法包括以下步骤:
S1、网关服务器3判断接收到的数据消息的发送方向;
S2、网关服务器3基于所述发送方向,将接收到的数据消息的协议转换为目的系统的协议后发送到目的系统。
在本实施例中,网关服务器3上存储有业务插件,业务插件包括外部适配插件331、内部代理插件332以及协议转换插件333,在步骤S1中,当网关服务器3启动网关服务并加载了外部适配插件331、内部代理插件332以及协议转换插件333之后,通过上述业务插件监听发送到网关服务器3的数据消息。
在本实施例的步骤S2中,若当外部适配插件331监听到外部系统接口模块31接收到外部系统1发送的数据消息时,判断此时发送方向为外部系统1到内部系统2,则外部适配插件331接收该数据消息,待协议转换插件333将该数据消息的协议转换为内部系统协议之后将该数据消息通过内部系统通信模块32发送到内部系统2。当内部代理插件332监听到内部系统通信模块32接收到内部系统2发送的数据消息时,判断此时发送方向为从内部系统2到外部系统1,则内部代理插件332接收该数据消息,待协议转换插件333将该数据消息的协议转换为外部系统协议之后将该数据消息通过外部系统接口模块31发送到外部系统1。
在本发明的数据交换方法第一实施例中,网关服务器3提供了外部适配插件331、内部代理插件332以及协议转换插件333,通过外部适配插件331对外部系统1发送的数据消息进行处理(处理主要包括接收),通过协议转换插件333对处理后的数据消息进行协议转换,然后再通过外部适配插件331发送到内部系统2,供内部系统2使用。通过内部代理插件332对内部系统2发送的数据消息进行处理(处理主要包括接收),通过协议转换插件333对处理后的数据消息进行协议转换,然后再通过内部代理插件332将协议转换后的数据消息发送到外部系统。这样,无论外部系统1如何变化,业务插件的内容如何变化,都可以使用该网关服务器3实现外部系1统和内部系统2之间的数据交换。
如图8所示,在本发明的数据交换方法的第二实施例中,数据交换方法包括:
S01、网关服务器3启动网关服务;
S02、网关服务器3监听数据消息;
S1、网关服务器3判断接收到的数据消息的发送方向;
S2、网关服务器3基于所述发送方向,将接收到的数据消息的协议转换为目的系统的协议后发送到目的系统。
在本实施例中,网关服务器3的内部设计如图9所示,网关服务器3包括界面表现组件3412、通用组件3421、网关接口层、插件管理平台3414、DTO传输组件3413、监控代理组件3411以及通信层组件3422。
其中,网关接口层包括外部系统接口模块31和内部系统通信模块32,外部系统接口模块31用于实现与外部系统1的接口,内部系统通信模块32用于完成与消息服务的通信功能,即实现对业务系统的接口。
界面表现组件3412主要用于输入和输出信息,其提供维护界面(维护UI)用于接收操作者输入的配置信息、操作信号等,实现网关服务器3的初始化和配置。界面表现组件3412还提供监控界面(监控UI),用于显示网关服务器3的各种信息和变量情况,例如展现监听事件。
通用组件3421主要针对网关服务器3的基本应用组件,一般有日志组件、异常组件、框架组件、事件组件和配置组件等。异常组件用于提供异常报警服务,日志组件用于提供日志服务,基础框架组件用于提供组件运行时间服务以及部署管理服务。配置组件用于提供配置服务。
插件管理平台3414主要负责对各个定制化的协议插件组件进行管理和维护。
插件容器模块33主要用于存放和调用业务插件,业务插件包含定制化业务的外部适配插件331、内部代理插件332和协议转换插件333。
通信层组件3422主要是用于外部系统1和内部系统2的通信层连接和管理的程序实现部分,包括TCP通信组件、UDP通信组件等。
DTO组件3413主要用于各个层次之间的数据传输对象。
监控代理组件3411主要用于提供信息给监控软件,便于监控中心掌握网关服务器3的内部信息和状态。
参见图5,在本实施例的步骤S01中,启动网关服务器3的界面表现组件3412中的监控界面,通过该界面启动网关服务:启动插件管理平台3414提供的事件服务,然后启动通用组件3421中的配置组件提供的配置服务,接着启动通信层组件3422提供的通信服务,最后启动插件服务,进入业务插件的初始化过程;初始化业务插件的步骤(即使装载业务插件的步骤)包括:获取事件服务,若获取成功则进一步获取配置服务,若获取成功则进一步获取日志服务,若获取成功则进一步获取通信服务,若获取成功则完成业务插件的初始化,运行业务插件并反馈业务插件的状态,其中若获取网关的上述任一服务失败,则业务插件的初始化失败,退出业务插件的实例化。
在其他实施例中,在业务插件的初始化过程中,提供给业务插件的服务还可以包括由基于框架组件提供的组件运行时间服务和部署管理服务,以及插件管理平台提供的事件管理服务(EventAdmin)和应用程序管理服务(ApplicationAdmin)。
在完成初始化业务插件,并使业务插件成功运行后,在步骤S02中通过业务插件监听外部系统1或者内部系统2发送的数据消息。
参见图6,在步骤S1中,当外部适配插件331监听到外部系统接口模块31接收到外部系统1发送的数据消息时,判断此时发送方向为外部系统1到内部系统2,当内部代理插件332监听到内部系统通信模块32接收到内部系统2发送的数据消息时,判断此时发送方向为从内部系统2到外部系统1。
在步骤S2中,当发送方向为外部系统1到内部系统2时,外部适配插件331处理该数据消息(处理包括接收),待协议转换插件333将该数据消息的协议转换为内部系统协议之后将该数据消息通过内部系统通信模块32发送到内部系统2;当发送方向为内部系统2到外部系统1时,内部代理插件332处理该数据消息(处理包括接口),待协议转换插件333将该数据消息的协议转换为外部系统协议之后将该数据消息通过外部系统接口模块31发送到外部系统1。
在本发明的数据交换方法第二实施例中,网关服务器3为面向服务的架构,体现了SOA架构思想,这使得不同的功能服务可以由不同的人员来开发,也可以由不同的开发工具或语言来开发;再者,通过为实现不同的功能而划分不同的功能服务,实现了分布式结构,因此对应用程序的结构没有约束:另外,在复杂的应用场合中,通讯程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合,多种通讯方式的构造并没有增加应用程序的复杂性;再者,由于功能服务、网关独立出来,稳定了功能服务和业务服务之间的接口,实现了模块化,当面对不同的外部系统和设备时,只需要修改网关即可;另外,通过消息通信提供异步服务,降低服务之间耦合性,通讯程序可在不同的时间运行,消息放入适当的队列时,目标程序甚至根本不需要正在运行,即使目标程序在运行,也不意味着要立即处理该消息,实现了异步服务;再者,由于功能服务和业务协同服务的连接接口一致,简化了各种接口的实现,只需要定义有关的基础协议即可,从某种程度上说,业务协同服务和配套的协议实际起到了“企业服务总线”的作用,具有良好的扩展性,实现了接口的标准化。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。