专利名称:基于ace的通信框架和方法、及功能模块间的通信方法
技术领域:
本发明涉及数据通信,尤其涉及一种基于ACE的通信方法和框架、及功能模块间的通信方法。
背景技术:
在模块化的程序设计方法中,通常将一个较大的程序按功能分成若干个功能模块,每个功能模块是一个代码集,通过编写和调试可将多个功能模块组合构成程序段,即函数。在同一个程序内,每个功能模块不可能孤立运行,必须相互配合,因此功能模块间需要进行数据交互和相互调用。然而,不同的功能模块可能由不同的人员编写,人员间的程序编写水平和风格不同,易于造成功能模块间的通信故障率增加,从而导致程序无法执行其功能,以及还将导致调试、测试、维护的难度增大。当程序内的功能模块越多时,这些问题将更为严重。进一步地,当需要进行数据交互的功能模块位于不同的程序内时,在实现应用程序之间数据交互的程序间通信过程中,如果应用程序装载在同一台终端中,它们之间只需一定的通道就能实现数据交互;然而,如果应用程序装载在不同的终端中,则要复杂得多。首先,程序之间要通过网络之间的协议才能实现;其次,不同的终端中可能装载不同的操作系统,例如,有的终端采用Windows操作系统,有的则采用UNIX/Linux操作系统,由此,在实施上述应用程序的功能过程中,其进程间的通信需要跨操作系统才能实现。目前,业界通常米用JAVA 和 ACE (ADAPTIVE Communication Environment)两种方法来实现跨操作系统的进程间通信。其中,JAVA由于在处理二进制和大容量方面存在效率问题,因此在网管和应用服务器领域内,如果需要跨操作系统,通常采用ACE。虽然采用ACE可以解决跨操作系统通信的问题,但是因各进程可能位于不同的终端或操作系统中,其代码的撰写风格和工具不统一,使得进程间的通信容易出现故障,而出现故障后调试和解决的难度较大。另夕卜,还有一种方法是米用中间服务器,例如MTC服务器(MachineTypeCommunications Server),通过该中间服务器来转发需要交互的数据,而程序之间彼此并不知晓该数据是如何传送的,彼此之间也不直接传送数据。这种方法虽然可以避开操作系统,但是其对中间服务器的存储空间和处理速度要求较高,且处理方法更为复杂。
发明内容
本发明要解决的技术问题在于针对现有技术中功能模块间通信容易出现故障的缺陷,提供一种基于ACE的通信方法和框架、以及功能模块间的通信方法。本发明解决其技术问题所采用的技术方案是提供了一种基于ACE的通信框架,由底层向上依次包括操作系统层、ACE层、平台层、以及应用层;其中,所述应用层包括功能模块的集合;所述平台层包括守护进程和子进程;其中,所述守护进程用于解析所述功能模块所在进程的配置文件;所述子进程用于基于所述功能模块所在进程的配置文件进行配置以启动所述子进程,并解析所述功能模块自身的配置文件,以基于所述功能模块自身的配置文件来激活所述功能模块,从而通过所述平台层来统一管理所述功能模块间的通信。在依据本发明实施例的基于ACE的通信框架中,所述功能模块所在进程的配置文件包括IP和端口 ;所述子进程在进行所述配置时采用所述IP和所述端口作为通信端口。在依据本发明实施例的基于ACE的通信框架中,所述功能模块自身的配置文件包括所述功能模块的ID和对应的动态库;所述子进程用于将所述动态库加载至它的进程空间来激活所述功能模块。本发明还提供了一种基于ACE的通信方法,包括步骤S110、守护进程解析功能模块所在进程的配置文件;S120、子进程基于所述功能模块所在进程的配置文件进行配置以启动所述子进程;S130、子进程解析所述功能模块自身的配置文件,以基于所述功能模块自身的配置文件来激活所述功能模块,从而通过所述平台层来统一管理所述功能模块间的通信。在依据本发明实施例的基于ACE的通信方法中, 当所述功能模块所在进程的配置文件包括IP和端口时,所述步骤S120中,所述子进程在进行所述配置时采用所述IP和所述端口作为通信端口。在依据本发明实施例的基于ACE的通信方法中,当所述功能模块自身的配置文件包括所述功能模块的ID和对应的动态库时,所述步骤S130中,所述子进程将所述动态库加载至它的进程空间来激活所述功能模块。本发明还提供了一种功能模块间的通信方法,包括步骤S210、源功能模块向平台层发送数据传送通知;S220、所述平台层查找目的功能模块所在的子进程以及所述子进程的通信端口 ;S230、基于所述目的功能模块所在的子进程的通信端口,所述源功能模块把数据直接传送到所述目的功能模块。在依据本发明实施例的功能模块间的通信方法中,在步骤S210中,所述源功能模块还向所述平台层发送所述目的功能模块的ID ;在步骤S220中,所述平台层根据所述目的功能模块的ID查找所述目的功能模块所在的子进程以及所述子进程的通信端口。在依据本发明实施例的功能模块间的通信方法中,所述平台层位于操作系统层与ACE层之间。在依据本发明实施例的功能模块间的通信方法中,所述方法在所述步骤S210之前还包括步骤S201、所述平台解析功能模块所在进程的配置文件;并基于所述功能模块所在进程的配置文件分别配置所述功能模块对应的子进程以启动所述子进程;所述子进程解析所述功能模块自身的配置文件,以激活所述功能模块。本发明产生的有益效果是因为平台层并不直接参与功能模块间的数据交互,平台层只是对各功能模块的进程的进行统一配置,使得功能模块间按照统一的通信端口进行点对点的直接数据交互,这样避免了使用对存储空间和处理速度要求较高的中间服务器。另外,因为平台层统一生成和管理功能模块的子进程,功能模块只需要关心其特有功能即可,不需要关心彼此之间是如何进行数据交互的,因此简化了功能模块的编码。同时,因为功能模块间通信统一,还避免了因代码撰写差异而导致的通信故障率增加,并且简化了调试、测试、维护以及故障定位过程。
下面将结合附图及实施例对本发明作进一步说明,附图中图1示出了依据本发明实施例的基于ACE的通信框架的结构示意图;图2示出了依据本发明实施例的图1中的平台层的逻辑框图;图3示出了采用上述通信框架实施依据本发明实施例的基于ACE的通信方法的流程图;图4示出了依据本发明实施例的一种功能模块间的通信方法的流程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。图1示出了依据本发明实施例的基于ACE的通信框架的结构示意图,如图1所示,该通信框架由底层向上依次包括操作系统层、ACE层、平台层、以及应用层。其中,上述操作系统层包括但不限于Windows、Linux以及Unix。应用层包括功能模块的集合,该功能模块间的数据交互至少部分通过ACE层,以实现跨操作系统的数据通信。该功能模块间的数据交互至少部分通过平台层,从而可通过该平台层来统一管理各功能模块间的通信,以使得功能模块只需要关心其自身特有功能的实施,而不需要关心功能模块间是如何进行数据交互的。具体而言,功能模块可能位于同一个程序段中,也有可能位于不同的程序段中。而上述程序段可能装载在不同的终端上,也有可能装载在同一终端上。其中,上述终端可能具有不同的操作系统。在实施上述程序段的过程中,可能多个程序段共用一个进程,也可能每个程序段对应一个进程,也可能一个程序段具有多个进程。为此,可预先设置功能模块所在进程的配置文件,在该配置文件中设置进程的IP和端口(port)。例如,在第一种进程的配置文件中,配置进程的IP为172. 16. 161. 249,端口为11000;该进程内包括两个功能模块,分别是功能模块“access”和功能模块“security”,其中“access”和“security”为功能模块的名称(name)。在这种配置文件中,一个进程内包括多个功能模块,从而实现了功能模块部署与代码分离,即不需要根据不同的部署重新编写代码,只需要相应修改配置文件即可。在第二种进程的配置文件中,配置进程I的IP为172. 16. 161. 249,port为11000 ;进程2的IP为172. 16. 161. 249,port为12000。其中,进程I中只包括一个名称为“access”的功能模块;进程2中只包括一个名称为“security”的功能模块。图2示出了依据本发明实施例的图1中的平台层的逻辑框图,如图2所示,平台层包括守护进程和子进程。其中,守护进程解析功能模块所在进程的配置文件;子进程基于功能模块所在进程的配置文件进行配置以启动该子进程,并解析功能模块自身的配置文件,以基于功能模块自身的配置文件来激活功能模块,从而通过平台层来统一管理功能模块间的通信。图3示出了采用上述通信框架实施依据本发明实施例的基于ACE的通信方法的流程图,下面将按步骤描述该通信方法。S110、守护进程解析功能模块所在进程的配置文件。具体而言,平台层中的守护进程通过解析功能模块所在进程的配置文件(简称为进程的配置文件),获得守护进程需要拉起的子进程的IP地址和端口,例如,通过解析上述的第二种进程的配置文件,获得需要拉起的子进程 I 的 IP 为 172. 16. 161. 249,端口为 11000,子进程 2 的 IP 为 172. 16. 161. 249,端口为12000。解析完成后,将获得的进程的配置文件(包括IP和端口)、以及进程下的功能模块的名称传送至子进程。S120、子进程基于功能模块所在进程的配置文件进行配置以启动子进程。具体而言,当进程的配置文件包括IP和端口时,子进程在进行上述配置过程中将该IP和端口作为通信端口。仍以上述的第二种进程的配置文件为例,此时根据该进程的配置文件配置的子进程 I 的 IP 为 172. 16. 161. 249,端口为 11000,子进程 2 的 IP 为 172. 16. 161. 249,端口为12000。S130、子进程解析功能模块自身的配置文件,以基于功能模块自身的配置文件来激活功能模块,从而通过平台层来统一管理功能模块间的通信。具体而言,当在步骤S120中启动或拉起子进程后,该子进程已从守护进程处获知它所包括的功能模块,因此功能模块自身的配置文件(简称为功能模块的配置文件)可只包括功能模块的名称、ID以及对应的动态库。例如,在功能模块的配置文件中,设置名称为“access”的功能模块的ID为1,对应的动态库为“lib access”;设置名称为“security”的功能模块的ID为2,对应的动态库为“lib security”。应当注意的是,对于整个平台层而言,功能模块的ID是统一赋值,一个功能模块对应一个ID,各ID间没有重复或共用的情况发生。此时,子进程将动态库加载至它的进程空间即可激活该功能模块。例如,子进程I将动态库“lib access”加载至它的进程空间后即可激活该功能模块“access”。由于通过平台层统一启动子进程和激活功能模块,因此可通过平台层实现统一管理功能模块间的通信。为了进一步阐述上述基于ACE的通信框架和方法,图4示出了依据本发明实施例的一种功能模块间的通信方法,此时设置待传送数据的功能模块为源功能模块,接收数据的功能模块为目的功能模块,下面将按步骤描述这种把数据从源功能模块传送到目的功能模块的方法。事先地,在步骤S201中,平台解析功能模块所在进程的配置文件;并基于功能模块所在进程的配置文件分别配置功能模块对应的子进程以启动子进程;子进程解析功能模块自身的配置文件,以激活功能模块。例如,可通过上述基于ACE的通信框架,采用上述基于ACE的通信方法来实施该步骤,此处部分或全部引用上述关于基于ACE的通信框架和通信方法的描述。该步骤一旦完成,后续的步骤中则可以使用所启动的子进程。随后,在步骤S210中,源功能模块向平台层发送数据传送通知,告知平台准备发送数据的事件以及该事件中的目的功能模块。优选地,源功能模块还向平台层发送目的功能模块的ID。步骤S220中,平台层查找目的功能模块所在的子进程以及该子进程的通信端口。其中,上述通信端口包括子进程的IP地址和端口。优选地,平台层根据接收的目的功能模块的ID查找目的功能模块所在的子进程以及子进程的通信端口。因为对于平台层而言,功能模块与其ID —一对应,因此通过ID查找功能模块的结果必然是唯一的。仍以第二种进程的配置文件为例,如果告知目的模拟功能模块的ID为2,则查找到该功能模块的名称为“security”,位于子进程2中,该子进程2的IP为172. 16. 161. 249,端口为12000。采用该ID来进行查找的方法在确保查找精确的同时简化了查找过程。S230、基于目的功能模块所在的子进程的通信端口,源功能模块把数据直接传送到目的功能模块。仍以步骤S220中的示例为例,平台层将目的功能模块的IP和端口告知源功能模块,源功能模块则直接将数据传送至具有上述IP和端口的子进程内的ID为2的目的功能模块处,从而完成了功能模块间的数据通信。从以上可以看出,平台层并不直接参与功能模块间的数据交互,平台层只是对各功能模块所在的子进程进行统一配置,并告知源功能模块其目的功能模块所在的子进程以及该子进程所的通信端口。这样避免了使用对存储空间和处理速度要求较高的中间服务器。因为平台层统一生成和管理子进程,功能模块只需要关心其特有功能即可,不需要关心彼此之间是如何进行数据交互的,因此简化了功能模块的编码。与此同时,因为实现了功能模块间的统一通信,避免了因代码撰写差异而导致的通信故障率增加,并且简化了调试、测试、维护以及故障定位过程。应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
权利要求
1.一种基于ACE的通信框架,其特征在于,由底层向上依次包括操作系统层、ACE层、平台层、以及应用层;其中, 所述应用层包括功能模块的集合; 所述平台层包括守护进程和子进程;其中,所述守护进程用于解析所述功能模块所在进程的配置文件;所述子进程用于基于所述功能模块所在进程的配置文件进行配置以启动所述子进程,并解析所述功能模块自身的配置文件,以基于所述功能模块自身的配置文件来激活所述功能模块,从而通过所述平台层来统一管理所述功能模块间的通信。
2.根据权利要求1所述的基于ACE的通信框架,其特征在于, 所述功能模块所在进程的配置文件包括IP和端口 ; 所述子进程在进行所述配置时采用所述IP和所述端口作为通信端口。
3.根据权利要求1或2所述的基于ACE的通信框架,其特征在于, 所述功能模块自身的配置文件包括所述功能模块的ID和对应的动态库; 所述子进程用于将所述动态库加载至它的进程空间来激活所述功能模块。
4.一种基于ACE的通信方法,其特征在于,包括步骤 S110、守护进程解析功能模块所在进程的配置文件; S120、子进程基于所述功能模块所在进程的配置文件进行配置以启动所述子进程;S130、子进程解析所述功能模块自身的配置文件,以基于所述功能模块自身的配置文件来激活所述功能模块,从而通过所述平台层来统一管理所述功能模块间的通信。
5.根据权利要求4所述的基于ACE的通信方法,其特征在于, 当所述功能模块所在进程的配置文件包括IP和端口时,所述步骤S120中,所述子进程在进行所述配置时采用所述IP和所述端口作为通信端口。
6.根据权利要求4或5所述的基于ACE的通信框架,其特征在于,当所述功能模块自身的配置文件包括所述功能模块的ID和对应的动态库时,所述步骤S130中,所述子进程将所述动态库加载至它的进程空间来激活所述功能模块。
7.一种功能模块间的通信方法,其特征在于,包括步骤 S210、源功能模块向平台层发送数据传送通知; S220、所述平台层查找目的功能模块所在的子进程以及所述子进程的通信端口 ; S230、基于所述目的功能模块所在的子进程的通信端口,所述源功能模块把数据直接传送到所述目的功能模块。
8.根据权利要求7所述的功能模块间的通信方法,其特征在于, 在步骤S210中,所述源功能模块还向所述平台层发送所述目的功能模块的ID ; 在步骤S220中,所述平台层根据所述目的功能模块的ID查找所述目的功能模块所在的子进程以及所述子进程的通信端口。
9.根据权利要求7所述的功能模块间的通信方法,其特征在于,所述平台层位于操作系统层与ACE层之间。
10.根据权利要求7所述的功能模块间的通信方法,其特征在于,所述方法在所述步骤S210之前还包括步骤 S201、所述平台解析功能模块所在进程的配置文件;并基于所述功能模块所在进程的配置文件分别配置所述功能模块对应的子进程以启动所述子进程;所述子进程解析所述功能模块自 身的配置文件,以激活所述功能模块。
全文摘要
本发明公开了一种基于ACE的通信框架和方法以及功能模块间的通信方法。该通信框架由底层向上依次包括操作系统层、ACE层、平台层和应用层。应用层包括功能模块的集合;平台层包括守护进程和子进程。守护进程解析功能模块所在进程的配置文件;子进程基于进程的配置文件进行配置以启动子进程,并解析功能模块的配置文件以激活功能模块,从而通过平台层来统一管理功能模块间的通信。因为平台层不直接参与功能模块间的数据交互,只统一生成子进程以及告知目的功能模块的通信端口,这样避免了使用对存储空间和处理速度要求较高的中间服务器。同时功能模块不需要关心彼此间是如何进行数据交互的,因此避免了因代码撰写差异而导致的通信故障率增加。
文档编号G06F9/54GK103034545SQ20121052968
公开日2013年4月10日 申请日期2012年12月10日 优先权日2012年12月10日
发明者罗辉 申请人:上海斐讯数据通信技术有限公司