一种分布式跨进程间通信总线系统的制作方法

文档序号:20599303发布日期:2020-05-01 21:29阅读:129来源:国知局
一种分布式跨进程间通信总线系统的制作方法

本发明涉及通信技术领域,特别涉及一种分布式跨进程间通信总线系统。



背景技术:

目前移动端的不同应用之间的通信越来越频繁,如分别在三个电子设备上的应用a、b、c之间需要访问和操作彼此之间的数据信息和接口服务。在一般情况下,不同进程之间的通信就必须建立进程间通信(inter-processcommunication,ipc)通道达到跨进程通信的目的,每两个电子设备之间必须建立ipc通道才能实现端与端之间的通信,如果有多个电子设备的情况下,随着应用接入端的增加,接入成本会呈指数级别的增加,并且,应用模块之间耦合度过高、兼容性差。



技术实现要素:

本发明实施例提供一种分布式跨进程间通信总线系统,以解决现有技术中多个电子设备的应用程序之间通信导致接入成本高、应用模块耦合度过高、兼容性差的问题。

为了解决上述技术问题,本发明是这样实现的:

第一方面,本发明实施例提供了一种分布式跨进程间通信总线系统,包括:

接入层,所述接入层与至少两个电子设备的应用程序通信连接,所述至少两个电子设备的应用程序包括第一电子设备的第一应用程序和第二电子设备的第二应用程序;

与所述接入层通信连接的软件开发包;

与所述软件开发包通信连接的数据库;

其中,所述软件开发包用于获取所述第一应用程序的第一请求信息,并将所述第一请求信息发送至所述第二应用程序,并获取所述第二应用程序根据所述第一请求信息生成的数据对象,以及将所述数据对象发送至所述第一应用程序,其中,所述第一请求信息用于请求获取所述第二应用程序的数据对象;

所述数据库用于保存所述数据对象。

这样,本发明实施例中,通过所述软件开发包获取第一应用程序请求获取第二应用程序数据对象的第一请求信息,并将所述第一请求信息发送至所述第二应用程序,并获取所述第二应用程序根据所述第一请求信息生成的数据对象,以及将所述数据对象发送至所述第一应用程序,多个电子设备的应用程序只需要对接分布式跨进程间通信总线系统(vivo-inter-processcommunication,vipc)就可以实现跨进程间的通信,降低接入成本,还可以随时接入随时移除,且不会对其他电子设备的应用程序有影响,降低了应用模块之间的耦合度。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1表示现有技术的多个电子设备的应用程序间的通信示意图;

图2表示本发明实施例的多个电子设备的应用程序间的通信示意图;

图3表示本发明实施例的vipc的分层示意图;

图4表示本发明实施例的数据对象传递示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,a、b、c、d、e分别为5个不同的电子设备的应用程序,5个应用程序需要建立ipc通道的次数为10次,如果有n(n为大于或等于2的整数)端,需要接入ipc通道的次数为n(n-1)/2,整个接入成本是呈指数上升的,势必会增大接入复杂度,造成接入速度及其慢且效率非常低下,不利于往后的扩展。当a与b通过ipc机制实现通信就建立了连接,产生了模块耦合,后面b的任何改动都会影响a,反之a的任何改动都会影响b。这种模块的耦合过高容易导致代码维护成本的增高,且不利于快速迭代开发。特别是,如果考虑c端、d端的接入,又会大大增加耦合度,大大增加维护成本。并且,若有新需求要求各模块更新,容易产生兼容性问题,比如:a端升级到新版本时,b端虽然有新版本但是用户却选择不更新,这时就容易出问题。而如果是多对多的情况,版本差异导致的兼容问题会更为突出。因此,本发明实施例提供了一种分布式跨进程间通信总线系统,如图2所示,当有5个电子设备的情况下,只需要每一个电子设备均与vipc连接即可,vipc机制是一个通信总线,所有电子设备的应用程序的数据分享和传递都在一个通信通道里面,任何一个电子设备的应用程序接入一次vipc就可以实现与其他电子设备的应用程序间的通信。

如图3所示,本发明实施例提供了一种分布式跨进程间通信总线系统,包括:

接入层,所述接入层与至少两个电子设备的应用程序通信连接,所述至少两个电子设备的应用程序包括第一电子设备的第一应用程序和第二电子设备的第二应用程序;

与所述接入层通信连接的软件开发包;

与所述软件开发包通信连接的数据库;

其中,所述软件开发包用于获取所述第一应用程序的第一请求信息,并将所述第一请求信息发送至所述第二应用程序,并获取所述第二应用程序根据所述第一请求信息生成的数据对象,以及将所述数据对象发送至所述第一应用程序,其中,所述第一请求信息用于请求获取所述第二应用程序的数据对象;

所述数据库用于保存所述数据对象。

需要说明的是,上述数据对象中包含第一应用程序获取的第二应用程序数据。

具体的,如图3所示,所述分布式跨进程间通信总线系统由上到下分为三层,分别是接入层、软件开发包和数据库。其中,接入层是分布式的特性实现,分为数据产生端producer端(即数据发送端,一般常说发送端)和数据消费端consuer端(即数据接收端,一般常说接收端)。在接入层开始多个电子设备的应用程序各自的进程,即图3中的p1进程、p2进程、p3进程等为各个电子设备的应用程序的进程。

具体的,如图3所示,软件开发包具体可以为接入层提供跨进程通信连接的软件开发包,vipc以软件开发包的方式提供各个电子设备去接入。所述软件开发包是跨进程通信的特性实现,主要是提供一些跨进程通信接口供接入层使用,可以包括多个应用程序接口(applicationprogramminginterface,api),可以为vipc提供一系列给电子设备的应用程序调用和使用的应用程序接口,以实现各个电子设备的应用程序之间的数据传递。producerapis为提供给电子设备的应用程序发送端调用的接口方法,consumerapis为提供给电子设备的应用程序接收端调用的接口方法,commonapis为提供给电子设备的应用程序发送端和接收端公共调用的接口方法,livedataapis为数据对象的接口方法,livedata是一个数据传递对象(即数据对象),livedataproducer为负责发送livedata数据对象,livedataconsumer为负责接收livedata数据对象。libs为第三方的公共库,比如数据加密库sqlicpher,静态页面显示控件nuwaengine等。

具体的,如图3所示,所述数据库是数据总线的特性实现,所有数据通过一个数据库存储,可以实现各个电子设备的应用程序的数据共享访问,达到数据总线的特性。其中,p1.db、p2.db、p3.db等指的是各个电子设备的应用程序进程对应的数据库文件;c/r/u/d表示在做计算处理时的增加create、读取read、更新update和删除delete几个单词的首字母简写,指数据操作。

本发明实施例中,通过所述软件开发包获取第一应用程序请求获取第二应用程序数据的第一请求信息,并将所述第一请求信息发送至所述第二应用程序,并获取所述第二应用程序根据所述第一请求信息生成的数据对象,以及将所述数据对象发送至所述第一应用程序,vipc支持跨进程间的通信,多个电子设备的应用程序只需要对接vipc就可以实现跨进程间的通信,不会有任何模块耦合,降低接入成本,还可以随时接入随时移除电子设备的应用程序,且不会对其他电子设备的应用程序有影响,即接即用。

可选的,如图4所示,所述软件开发包包括:

接收模块,用于接收所述第一请求信息,并将所述第一请求信息发送至管理模块;

管理模块,用于根据所述第一请求信息,获取所述数据对象,并将所述数据对象保存至所述数据库;

监听模块,用于获取所述数据库中的所述数据对象,并将所述数据对象发送至所述第一应用程序;

其中,所述接收模块、所述管理模块和所述监听模块之间通信连接。

可选的,如图4所示,所述软件开发包还包括:

发送模块,与所述管理模块通信连接,用于接收所述管理模块发送的所述第一请求信息,并将所述第一请求信息发送至所述第二应用程序,并获取所述第二应用程序生成的所述数据对象,并将所述数据对象发送至所述管理模块。

具体的,第一应用程序与接入层的接收端连接,第二应用程序与接入层的发送端连接;第一应用程序通过所述接收模块,将所述第一请求信息发送至所述管理模块,所述管理模块根据所述第一请求信息寻找可以获取第二应用程序数据对象的发送模块,并将所述第一请求信息发送至所述发送模块,然后发送模块将所述第一请求信息发送至所述第二应用程序,使所述第二应用程序根据所述第一请求信息生成关于第二应用程序数据对象(即数据对象livedata),所述发送模块获取第二应用程序生成的数据对象,并将所述数据对象发送至所述管理模块,所述管理模块向所述数据库发送插入数据对象(即保存数据对象)的信息,将所述数据对象保存在所述数据库中。所述第一应用程序可以通过所述监听模块获取所述数据库中第二应用程序的数据对象。

具体的,所述接收模块具体可以为负责接收livedata数据对象(即livedataconsumer),发送模块具体可以为负责发送livedata数据对象(即livedataproducer),所述管理模块具体可以为livedatamanager负责管理livedata数据对象,所述监听模块可以为监听器,负责监听并处理接收到的数据对象。

可选的,如图4所示,所述数据库分别与所述监听模块和所述管理模块通信连接;

所述数据库具体用于保存所述管理模块获取的所述数据对象,并将保存所述数据对象的通知信息发送至所述监听模块。

具体的,所述数据库在接收到所述管理模块发送的插入数据对象信息后,将所述数据对象保存在所述数据库中。所述数据库在保存所述数据对象之后,将已经保存数据对象的通知消息发送至所述监听模块。

可选的,如图4所示,所述监听模块,具体用于在接收到所述通知信息后,向所述数据库发送请求处理所述数据对象的第二请求信息;以及接收所述数据库根据所述第二请求信息发送的所述数据对象。

具体的,所述监听模块在接收到所述通知消息后,向所述数据库发送第二请求信息,请求处理所述数据对象,如果所述数据库允许处理数据对象,则所述监听模块可以获取数据对象,并在获取数据对象之后进行处理并发送给第一应用程序,从而使第一应用程序获取第二应用程序的数据对象。

可选的,如图4所示,所述数据库可以包括:

控制模块,与所述管理模块通信连接,用于接收所述管理模块发送的所述数据对象,并控制所述数据对象保存至存储模块中;

所述存储模块,与所述控制模块通信连接,用于保存所述数据对象。

具体的,所述控制模块具体可以为操作数据库的一个类管理对象vipcprodvider,所述存储模块中存储多个电子设备的应用程序各自的数据文件。

可选的,如图4所示,所述控制模块与所述监听模块通信连接,所述控制模块还用于在所述数据对象保存至所述存储模块后,向所述监听模块发送所述通知信息;以及接收所述监听模块在接收到所述通知信息后发送的所述第二请求信息。

具体的,所述控制模块在接收到所述管理模块发送的插入数据对象信息后,控制所述数据对象保存在所述存储模块中。所述存储模块在保存所述数据对象之后,所述控制模块将已经保存数据对象的通知消息发送至所述监听模块;并且,在所述监听模块向所述数据库发送第二请求信息的情况下,所述控制模块接收监听模块发送的第二请求信息。

可选的,如图4所示,所述控制模块,还用于根据所述第二请求信息,在向所述监听模块发送所述数据对象之后,将所述数据对象从所述存储模块中删除。

具体的,所述第二请求信息可以包括请求读取所述数据对象的信息,以及请求在所述监听模块读取所述数据对象之后,删除所述数据库中保存的数据对象的信息。在所述监听模块读取所述数据对象之后,所述控制模块控制所述数据对象从所述存储模块中删除,可以节省存储空间。

并且,在本发明实施例中,还可以设立一个中心服务器,为其他电子设备的应用程序提供共享存储和公共服务等,在此并不限定。

综上所述,本发明上述实施例中,vipc接入速度快、复杂度低、成本低且可控,无论要实现跟多少个电子设备的应用程序通信都是需要接入vipc一端就可以,不会增加任何工作量;并且,接入的每个电子设备的应用程序之间没有耦合度,快速迭代成本极低,接入的每个电子设备的应用程序的修改不会影响到其它电子设备的应用程序;该种跨进程间通信方式可提高通信效率,降低功耗;兼容性极好,各个电子设备的应用程序的版本升级情况不会影响到其它电子设备的应用程序。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1