专利名称:一种实现消息通信的装置及方法
技术领域:
本发明涉及计算机通信技术领域,特别是一种实现消息通信的装置及方法。
背景技术:
现代操作系统一般提供多进程机制,允许多个进程并发执行。并发的多个 进程之间需要竟争共享资源、执行顺序有内在的依赖关系、需要交互一些信息, 这些都要涉及到进程间通信。
进程间通信可以采用消息队列、共享内存、信号量等方法。操作系统一般 都会自带消息通信的编程接口。但功能上可能会有些限制。从软件编程的角度 而言, 一般不会直接依赖操作系统的接口,而通过一层屏蔽层提高可移植性。
但是,目前要实现应用进程之间通信,都务农赖操作系统提供通信的接口 , 这使得应用进程必须根据特定操作系统提供的接口进行编程,由于每个操作系 统提供的编程接口可能不同,所以应用进程也不方便移植。
发明内容
本发明的实施例主要目的是提供一种实现消息通信的装置及方法,用于屏 蔽具体操作系统接口的差异,使应用进程之间实现消息通信时,可以不依赖具 体的操作系统接口。
本发明的实施例提供的一种实现消息通信的装置,应用于应用进程之间进
行消息通信的过程中,该装置可以这样实现
该装置包括可以包括消息通信管理进程单元,第一消息通信管理单元, 以及第二消息通信管理单元,每个消息通信管理单元对应一个应用进程;其中,
第一消息通信管理单元,用于根据源应用进程指定的目的应用进程信息, 将来自源应用进程的消息发送到消息通信管理进程单元中创建的对应目的应
用进程的消息队列中;
第二消息通信管理单元,用于从消息通信管理进程单元中目的应用进程的 消息队列中取出消息发送给对应的目的应用进程;
所述消息通信管理进程单元,用于为目标应用进程创建并管理消息队列。
本发明的实施例提供的一种实现消息通信的方法可以这样实现
A. 根据源应用进程指定的目的应用进程信息,将来自源应用进程的消息 发送至为该目的应用进;f呈创建的消息队列中;
B. 从所述消息队列中取出消息,并将该消息发送给目标应用进程。
从上述技术方案可知,在本发明的实施例中,源应用进程对应的消息通信
管理单元直接将来自源应用进程的消息发送到目的应用进程的消息队列,再由 目的应用进程对应的消息通信管理单元将该消息从消息队列中取出交给目的 应用进程。这样,本发明可以屏蔽具体操作系统接口的差异,方便应用程序移 植,使应用进程之间实现消息通信时,可以不依赖具体的操作系统接口。而且, 本发明的实施例还将消息管理集中在消息通信管理进程单元中进行,结构简 单,复杂度低,灵活性和可扩展性高。
图1为实现本发明装置的结构示意图; 图2为实现本发明装置的实施例结构示意图; 图3为实现本发明方法的流程示意图; 图4为本发明实现跟踪功能的示意图。
具体实施例方式
本发明实施例的核心思想是根据源应用进程指定的目的应用进程信息,将来自源应用进程的消息发送至预先为该目的应用进程创建的消息队列中;从 所述消息队列中取出消息,并将该消息发送给目标应用进程。
所述源应用进程指定的目的应用进程信息为目的应用进程标识,或为组播 组标识,或为广播-标识。
根据不同的目的应用进程信息,将来自源应用进程的消息发送至预先为该 目的应用进程创建的消息队列中的方式稍有不同。具体如下
当目的应用进程信息包括目的应用进程标识时,需要根据预先保存的目的 应用进程标识与消息队列标识的第一对应关系,确定所述目的应用进程标识对 应的消息队列标识;根据所述消息队列标识将该消息发送给对应的消息队列
中;
当目的应用进程信息包括组播组标识时,需要根据预先保存的组播组标识 和该组播组中所有目的应用进程标识的第二对应关系,确定该组播组内所有目
的应用进程标识;根据预先保存的目的应用进程标识与消息队列标识的第一对 应关系,确定该组播组内每个目的应用进程标识对应的消息队列标识;根据消 息队列标识将该消息发送给对应的消息队列中;
当源应用进程指定的目的应用进程信息为广播标识时,直接将该消息发送 给所有应用进程的消息队列中即可。
参见图1所示,本发明的实施例的装置包括多个消息通信管理单元11和 消息通信管理进程单元12。其中,每个消息通信管理单元对应一个应用进程。 在本发明实施例的装置中,将源应用进程对应的消息通信管理单元称为第一消 息通信管理单元,将目的应用进程对应的消息通信管理单元称为第二消息通信 管理单元。第一消息通信管理单元,用于根据源应用进程指定的目的应用进程 信息,将来自源应用进程的消息发送到消息通信管理进程单元12中创建的对 应目的应用进程的消息队列中;第二消息通信管理单元,用于从消息通信管理 进程单元中目的应用进程的消息队列中取出消息发送给对应的目的应用进程; 消息通信管理进程单元12,用于为目标应用进程创建并管理消息队列。
目的应用进程^f言息可以为目的应用进程标识,可以为包4舌一个以上目的应 用进程的组#~组标识,也可以为广^"标识。
参见图2所示,本发明的实施例的装置还可以进一步包括存储单元13,在 该存储单元中保存对应用进程的消息进行管理的进程数据信息。消息通信管理 单元根据存储单元中保存的进程数据对应用进程的消息进行管理。这里,进行 管理的消息通信管理单元既可以是第一消息通信管理单元,也可以是第二消息 通信管理单元。存储单元可以为内存。
在实现管理功能时,内存包括共享内存数据区头、进程数据区、消息通信 管理单元数据区,所述共享内存数据区头用于记录相关管理数据头的地址,所 述进程数据区用于记录需要使用的相关管理数据的地址;所述消息通信管理单 元数据区用于记录保存管理数据以及该管理数据所属进程的数据地址;每个消 息通信管理单元ll,还包括消息管理单元,用于记录内存中所保存的自身对应 应用进程的进程数据的地址,根据该地址从所述内存中获得对应的进程数据, 再根据获得的进程数据进行管理。
所述消息通信管理进程单元12包括消息队列增加单元、消息队列修改 单元和消息队列删除单元。其中,消息队列增加单元,用于对存储单元中的数 据信息进行增加操作;消息队列修改单元,用于对存储单元中的数据信息进行 修改操作;消息队列删除单元,用于对存储单元中的数据信息进行删除操作。
本发明的实施例的装置可以看作不同操作系统的应用进程间通信中提供 了统一的通信接口,屏蔽了具体操作系统接口的差异,源应用进程和目的应用 进程通信时,不需要考虑目的应用进程所在的操作系统的接口特性,即可实现 通信。而且,源应用进程对应的消息通信管理单元直接将来自源应用进程的消 息发送到消息队列,再由目的应用进程对应的消息通信管理单元将该消息从消 息队列中取出消息发送目的应用进程,因此,通信效率高。
参见图3所示,基于上述本发明的实施例的装置实现消息通信的方法具体 包括以下步骤
步骤301:源应用进程向第一消息通信管理单元输入含有目的应用进程信 息的发送消息。
步骤302:第一消息通信管理单元收到该消息后,根据所述目的应用进程 信息,将该消息发送至所述消息通信管理进程单元为该目的应用进程创建的消 息队列中。
步骤303:第二消息通信管理单元从所述消息队列中取出消息,并将该消 息输出给目标应用进程进行处理。
目的应用进程信息可以为目的应用进程标识,可以为包括一个以上目的应 用进程的组播组标识,也可以为广播标识。这里,可以预先保存目的应用进程 标识与消息队列标识的第一对应关系;在步骤302中第一消息通信管理单元收 到消息后,如果目的应用进程信息为目的应用进程标识,可以获得目的应用进 程标识对应的消息队列标识,并将消息发送给该消息队列标识对应的消息通信 管理进程单元中创建的消息队列中;目的应用进程对应的消息通信管理单元, 即第二消息通信管理单元实时监测该目的应用进程对应的消息队列,当监测到 有消息时,从所述消息队列中取出消息,并将该消息发送给目标应用进程进行 处理。
当然,还可以进一步保存组播组标识和该组播组包括的所有目的应用进程 标识的第二对应关系;在步骤302中第一消息通信管理单元收到消息后,如果 目的应用进程信息为组播组标识,首先根据所述第二对应关系获得该组播组标 识所对应的所有目的应用进程标识,然后根据第一对应关系,获得每个目的应 用进程标识对应的消息队列标识,并将该消息发送务争个消息队列标识对应的 消息通信管理进程单元中创建的消息队列中;每个目的应用进程对应的消息通 信管理单元,即第二消息通信管理单元实时监测该目的应用进程对应的消息队 列,当监测到有消息时,从所述消息队列中取出消息,并将该消息输出给目标 应用进程进行处理。
当源应用进程指定的目的应用进程信息为广播标识时,第一消息通信管理单元收到源应用进程的消息后,将该消息发送给所有应用进程对应的消息通信 管理进程单元中创建的消息队列中。
在本发明的实施例中,可以将上述第 一对应关系和第二对应关系保存在一 内存中,该内存对所有消息通信管理单元是共享的,每个消息通信管理单元都 可以查询访问内存的信息,用于第一对应关系、第二对应关系、以及其它共享 信息。
而且,为了实现对消息的各种管理功能,可以将内存划分为三个区域,分 别为内存数据区头、进程数据区、消息通信管理单元数据区,这三个区域分别 用于存储消息管理相关管理数据头的地址、需要使用的相关管理数据的地址、 保存管理数据以及该管理数据所属进程的数据地址。并且,消息通信管理单元
在步骤303之后,消息通信管理单元可以查询该内存存储的管理信息,对 消息进行消息管理。
下面结合附图以对消息进行跟踪管理为例说明本发明的实施例通过共享 内存来实现管理的方案。
跟踪的目的是将符合跟踪过滤条件的消息发送给启动跟踪者,由于发送消 息是由消息通信管理单元完成的,将包括跟踪过滤条件的跟踪项数据放在内存 中,消息通信管理单元在发送消息到目的应用进程时,可以才艮据内存中保存的 所述目的应用进程的跟踪过滤条件,判断该消息是否符合跟踪过滤条件,并将 符合跟踪过滤条件的消息发送给启动跟踪的应用进程。此时,向启动跟踪的应 用进程发送该消息的方法与本发明发送消息的方法 一样。
如图4所示,共享内存中记录了共享内存数据区头、进程数据、跟踪项数 据和跟踪记录数据。共享内存数据区头包括最大跟踪项个数、进程数据块头偏 移、跟踪项数据块头偏移、跟踪记录数据块头偏移。进程数据中包括多个进程 的数据块,以及每个进程的跟踪记录块头偏移,该偏移再结合跟踪记录数据块 头偏移可确定该进程的跟踪记录数据地址。跟踪项数据记录了多个跟踪项数据,主要包括以下内容跟踪ID、跟踪者进程数据偏移、跟踪过滤条件,每个 进程的跟踪记录数据中记录着该进程所匹配的跟踪项数据偏移,每个进程的跟 踪记录数据个数为最大跟踪项个数。跟踪记录数椐记录了该进程对应的各个跟 踪项数据偏移,该偏移与跟踪项数据偏移结合就可确定对应的跟踪项数据的地 址,跟踪项数据记录了跟踪ID、跟踪者进程数据偏移和跟踪过滤条件。跟踪过 滤条件中记录跟踪标志以及所有跟踪条件,其中跟踪标志置位表示需要跟踪, 复位表示不需要跟踪,跟踪条件中包含发送进程标识、接收进程标识、消息长 度范围等。
消息通信管理单元记录包括对应应用进程在共享内存中的数据偏移,当进 行消息管理时,消息通信管理单元可以4艮据该偏移结合应用进程^:据块头偏移 可确定该应用进程数据块的地址。
在内存中设置跟踪条件可以由消息通信管理进程单元进行。具体如下消 息通信管理进程单元从跟踪项数据中找到一个空闲项,将跟踪过滤条件记录在 跟踪项中,并且在进程数据中查找启动跟踪者的进程数据偏移,也记录在跟踪 项中,除此之外,消息通信管理进程单元在进程数据中查找和跟踪条件匹配的 进程,并在该进程对应的跟踪记录数据中记录对应的跟踪项的偏移。当然,如 果在设置一个新的跟踪条件时,被跟踪对象还不存在,因此,无法在被跟踪对 象的相应数据区记录和该跟踪项的对应关系,所以在增加一个通信方时,即应 用进程时,需要检查所有跟踪块,记录与它所匹配的所有跟踪块。
当被跟踪的进程对应的消息通信管理单元发送消息时,判断本进程数据对 应的跟踪记录数据中是否存在跟踪项的偏移,如果存在,才艮据偏移找到对应的 跟踪项,根据跟踪项中记录的启动跟踪者的进程数据偏移找到启动跟踪者的进 程数据,再得到启动跟踪者的队列ID,按照该ID就可以将消息发送给启动跟 踪的进程。
上述跟踪实现方案,通过共享内存对消息进行管理,该方式由于跟踪记录 数据中仅记录对应的跟踪项数据的偏移,因此,占用最少的内存资源;由于跟踪项数据中记录跟踪者的进程数据偏移,而不是跟踪者的通信名称,因此,可 以直接找到跟踪者的进程数据,加快处理效率。数据管理简单、占用内存资源 少、跟踪对性能的影响低。
权利要求
1、一种实现消息通信的装置,其特征在于,该装置包括消息通信管理进程单元,第一消息通信管理单元,以及第二消息通信管理单元,每个消息通信管理单元对应一个应用进程;其中,第一消息通信管理单元,用于根据源应用进程指定的目的应用进程信息,将来自源应用进程的消息发送到消息通信管理进程单元中创建的对应目的应用进程的消息队列中;第二消息通信管理单元,用于从消息通信管理进程单元中目的应用进程的消息队列中取出消息发送给对应的目的应用进程;所述消息通信管理进程单元,用于为目标应用进程创建并管理消息队列。
2、 根据权利要求1所述的装置,其特征在于,所述第一消息通信管理单 元,用于当所述目的应用进程信息包括目的应用进程标识时,才艮据目的应用进 程标识与消息队列标识的第一对应关系,确定目的应用进程标识对应的消息队 列标识;根据所述消息队列标识将该消息发送到消息通信管理进程单元中创建 的对应的消息队列中。
3、 根据权利要求1所述的装置,其特征在于,所述第一消息通信管理单 元,用于当所述目的应用进程信息为包括组播组标识时,才艮据组播组标识和该 组播组中所有目的应用进程标识的第二对应关系,确定目的应用进程标识;根 据目的应用进程标识与消息队列标识的第一对应关系,确定该组播组中所有目 的应用进程标识对应的消息队列标识;4艮据所述消息队列标识将该消息分别发 送到消息通信管理进程单元中创建的对应的消息队列中。
4、 根据权利要求1所述的装置,其特征在于,所述第一消息通信管理单 元,用于当所述目的应用进程信息为广播标识时,将该消息分别发送给所有应 用进程的消息队列中。
5、 根据权利要求1所述的装置,其特征在于,该装置还包括 存储单元,用于保存对应用进程的消息进行管理的进程数据信息。
6、 根椐权利要求5所述的装置,其特征在于,所述存储单元为内存,所 述内存包括共享内存数据区头、进程数据区和消息通信管理单元数据区,所述共享内存数据区头用于记录相关管理数据头的地址,所述进程数据区用于记录需要^f吏用的相关管理数据的地址;所述消息通信管理单元数据区用于记录保存管理数据以及该管理数据所属进程的数据地址;所述第一消息通信管理单元或第二消息通信管理单元,还进一步包括 消息管理单元,用于记录所述内存中所保存的应用进程的进程数据的地址,根据该地址从所述内存中获得对应的进程数据,再根据获得的进程数据进行管理。
7、 根据权利要求5所述的装置,其特征在于,所述消息通信管理进程单 元还包括消息通信增加单元,用于对存储单元中的数据信息进行增加操作; 消息通信修改单元,用于对存储单元中的数据信息进行修改操作; 消息通信删除单元,用于对存储单元中的数据信息进行删除操作。
8、 一种实现消息通信的方法,其特征在于,该方法包括以下步骤A. 根据源应用进程指定的目的应用进程信息,将来自源应用进程的消息 发送至预先为该目的应用进程创建的消息队列中;B. 从所述消息队列中取出消息,并将该消息发送给目标应用进程。
9、 根据权利要求8所述的方法,其特征在于,所述源应用进程指定的目 的应用进程信息为目的应用进程标识,或为组播组标识,或为广播标识。
10、 根据权利要求8所述的方法,其特征在于,当目的应用进程信息包括 目的应用进程标识时,步骤A包括才艮据预先保存的目的应用进程标识与消息队列标识的第一对应关系,确定 所述目的应用进程标识对应的消息队列标识;才艮据所述消息队列标识将该消息 发送给对应的消息队列中。
11、 根据权利要求8所述的方法,其特征在于,当目的应用进程信息包括组播组标识时,则步骤A包括对应关系,确定该组播组内所有目的应用进程标识;根据预先保存的目的应用 进程标识与消息队列标识的第一对应关系,确定该组播组内每个目的应用进程 标识对应的消息队列标识;根据消息队列标识将该消息发送给对应的消息队列 中。
12、 根据权利要求8所述的方法,其特征在于,当源应用进程指定的目的 应用进程信息为广播标识时,则步骤A包括将该消息发送给所有应用进程的消息队列中。
13、 根据权利要求8所述的方法,其特征在于,预先保存管理数据信息, 则该方法进一步包括C.利用所述管理数据信息,对该消息进行消息管理。
14、 根据权利要求13所述的方法,其特征在于,步骤C中管理数据信息 保存在内存中,所述内存包括共享内存数据区头、进程数据区、消息通信管 理单元数据区,分别存储消息管理相关管理数据头的地址、需要^吏用的相关管 理数据的地址、保存管理数据以及该管理数据所属进程的数据地址。
全文摘要
本发明公开了一种实现消息通信的装置,该装置包括消息通信管理进程单元、第一消息通信管理单元以及第二消息通信管理单元,每个消息通信管理单元对应一个应用进程;其中,第一消息通信管理单元,用于根据源应用进程指定的目的应用进程信息,将来自源应用进程的消息发送到消息通信管理进程单元中创建的对应目的应用进程的消息队列中;第二消息通信管理单元,用于从消息通信管理进程单元中目的应用进程的消息队列中取出消息发送给对应的目的应用进程;消息通信管理进程单元,用于为目标应用进程创建并管理消息队列。同时,本发明还提供了一种实现消息通信的方法。本发明在实现消息通信时,可以屏蔽不同操作系统的消息通信功能的差异,结构简单。
文档编号G06F9/54GK101174225SQ20061015049
公开日2008年5月7日 申请日期2006年11月2日 优先权日2006年11月2日
发明者严海峰, 元 南, 坤 张, 汤智龙, 裘洪国, 瑞 赵, 芬 靳, 俊 饶 申请人:华为技术有限公司