多进程间结构化文档通信方法转让专利

申请号 : CN201210064709.9

文献号 : CN102662774B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 邓维叶理德赵菁欧燕

申请人 : 中冶南方工程技术有限公司

摘要 :

本发明涉及多进程间结构化文档通信方法,即:通信进程搜索本地通信节点的共享内存区,如果不存在,则提交创建通信用共享内存及创建结构化文档对象的申请,申请响应后注册本进程需通信的内容,序列化该文档;将序列化的文档存储至共享内存区,进行操作申请,等待直至授权;授权后,将获取的结构化文档对象反序列化以获得文档内容,再根据需求读写结构化文档并保存文档;然后序列化修改过的结构化文档,释放操作权限;最后通信进程提交网络通信申请,实现多进程间结构化文档的通信。本发明用于同一节点以及不同节点间的多进程通信,具有通用性,能保证多个进程在通信过程中能实现最重要的数据优先通信、大量数据快速通信,以及数据结构化特性。

权利要求 :

1.多进程间结构化文档通信方法,其特征在于:通信进程搜索本地通信节点的共享内存区,如果不存在,则提交创建通信用共享内存及创建结构化文档对象的申请,申请响应后注册本进程需通信的内容,序列化该文档;将序列化的文档存储至共享内存区,进行操作申请,等待直至授权;授权后,将获取的结构化文档对象反序列化以获得文档内容,再根据需求读写结构化文档并保存文档;然后序列化修改过的结构化文档,释放操作权限;最后通信进程提交网络通信申请,实现多进程间结构化文档的通信。

2.根据权利要求1所述的多进程间结构化文档通信方法,其特征在于包括以下步骤:步骤(1),进程注册通信内容:

具体地,当进程启动时,检测本地节点是否存在共享内存,不存在,则提交共享内存申请直至该节点存在共享内存,然后提取该进程通过配置文件生成的或根据定义规则生成的需和其它进程通信的信息,根据要求标记信息特征;然后检测当前共享内存数据区是否存在结构化文档,如果不存在,则创建新的文档;如果已经存在结构化文档,则将需注册的信息的特征与结构化文档中的信息进行特征匹配,如存在相同特征的信息,则删除文档中已有的信息;然后再注册对应的通信信息;

步骤(2),进程申请操作权限:

具体地,进程提交操作权限申请后,如未获得授权,则等待直至授权;在该进程等待过程中,除操作结构化文档的事件受阻外,其它事件仍按原有逻辑执行;

步骤(3),获取结构化文档对象,反序列化获取结构化文档并进行读写操作,具体地,获得操作权限后,则搜索共享内存的数据区,获取结构化文档对象,并对获得的对象进行反序列化,提取结构化文档,然后进行读写操作;

步骤(4),序列化结构化文档并保存:

具体地,结构化文档修改完成后,将结构化文档进行序列化处理,保存并更新当前共享内存数据区;

步骤(5),释放操作权限:

具体地,结构化文档处理完成后,操作进程修改操作状态字,并通过触发操作完成事件将状态字提交,以此将共享数据区的权限状态修改为未授权;

步骤(6),提交网络申请:

具体地,操作进程捕捉操作状态字由未完成修改为已完成的事件生成网络申请,其申请内容包含本进程的名称、本进程所在节点的IP以及本进程所在节点共享内存数据区中与其相关的结构化文档;然后通过事件发送已经生成的网络申请;

经过上述步骤,实现对多进程间结构化文档的通信。

3.根据权利要求2所述的多进程间结构化文档通信方法,其特征在于步骤(3)中,在操作结构化文档时,遵守先读后写的原则。

4.权利要求1至3中任一权利要求所述多进程间结构化文档通信方法的用途,其特征在于该方法用于同一节点的多进程通信。

5.权利要求1至3中任一权利要求所述多进程间结构化文档通信方法的用途,其特征在于该方法用于不同节点间的多进程通信,通过网络申请触发网络配对请求,不同节点的多进程配对成功则实现所述多进程间结构化文档的通信。

说明书 :

多进程间结构化文档通信方法

技术领域

[0001] 本发明涉及计算机技术及网络通信领域,特别涉及一种多进程间通信的方法。

背景技术

[0002] 在Windows应用程序开发过程中,不同系统间的多个进程或者同一个系统内部不同的多个进程间都会存在信息交换。而这些进程可能分布在网络的同一个节点上,也可能分布在多个不同的节点上。面对少量的,无特殊结构的数据,现有技术已经可以很好的解决,一旦数据量繁杂并且要求有特殊的组织结构,往往需要结束本地数据文件或者数据之类的庞大并且昂贵的资源,这无疑提高了开发成本;而当某个程序内部数据结构变化时,与可能导致其关联的其他进程的通信接口发生改变,使开发过程变得繁杂,可扩展性能差。
[0003] 目前,对于处于同一节点的多进程间通信,常见的通信方法有:共享内存方式、匿名管道方式、命名管道方式、WM_COPYDATA(Windows程序间传送的一种消息格式)、Sockets(网络上的一种节点通信方式)方式等。在上述方法中,共享内存的方法对于多个进程间大量数据的通信支持最好,且具有比较好的安全性,但现有的传统的共享内存方法访问方式都按实际的物理地址加字节访问的,不能按照数据的原有结构进行通信。对于在通信网络中不同节点间多进程的通信,常采用的是Sockets方法,但进行通信的数据格式比较单一,不能支持结构化的多格式的信息,且通信接口也会随其他进程数据结构的变化而变化,可扩展性能差。

发明内容

[0004] 本发明所要解决的技术问题是:提供一种多进程间结构化文档通信系统和方法,通过配置,可以方便地在单节点以及多节点的多进程间灵活的交换大量的各种数据,在保证数据在交换过程中的完整性、正确性以及对应的逻辑关系的同时,还能保证很好的扩展性能。
[0005] 本发明解决其技术问题采用以下的技术方案:
[0006] 本发明提供的多进程间结构化文档通信方法,具体是:通信进程搜索本地通信节点的共享内存区,如果不存在,则提交创建通信用共享内存及创建结构化文档对象的申请,申请响应后注册本进程需通信的内容,序列化该文档;将序列化的文档发送至共享内存区中进行操作申请,等待直至授权;授权后,将获取的结构化文档对象反序列化以获得文档内容,再根据需求读写结构化文档并保存文档;然后序列化修改过的结构化文档,释放管理权限;最后通信进程提交网络通信申请,实现多进程间结构化文档的通信。
[0007] 本发明提供的上述多进程间结构化文档通信方法,其包括以下步骤:
[0008] 步骤(1),进程注册通信内容:
[0009] 具体地,当进程启动时,提交共享申请直至该节点存在共享内存,然后提取该进程通过配置文件生成的或根据定义规则生成的需和其它进程通信的信息,根据要求标记信息的特征;然后检测当前共享内存数据区是否存在结构化文档,如果不存在,则创建新的文档;如果已经存在结构化文档,则将需注册的信息的特征与结构化文档中的信息进行特征匹配,如存在相同特征的信息,则删除文档中已有的信息;然后再注册对应的通信信息;
[0010] 需要说明的,该步骤中所述的标记信息特征,是为每个需通信的信息分配GUID(全球唯一标识符);进程需注册的信息包含进程名、信息名以及其对应的GUID、节点IP及端口号、与之通信的进程节点进程名称和IP以及通信信息映射关系;
[0011] 步骤(2),进程申请操作权限:
[0012] 具体地,进程提交操作权限申请后,如未获得授权,则等待直至授权;在该进程等待过程中,除操作结构化文档的事件受阻外,其它事件仍按原有逻辑执行;
[0013] 步骤(3),获取结构化文档对象,反序列化获取结构化文档并进行读写操作,[0014] 具体地,获得操作权限后,则搜索共享内存的数据区,获取结构化文档对象,并对获得的对象进行反序列化,提取结构化文档,然后进行读写操作;
[0015] 步骤(4),序列化结构化文档并保存:
[0016] 具体地,结构化文档修改完成后,将结构化文档进行序列化处理,保存并更新当前共享内存数据区;
[0017] 步骤(5),释放操作权限:
[0018] 具体地,结构化文档处理完成后,操作进程修改操作状态字,并通过触发操作完成事件将状态字提交,以此将共享数据区的权限状态修改为未授权;
[0019] 步骤(6),提交网络申请:
[0020] 具体地,操作进程捕捉操作状态字由未完成修改为已完成的事件生成网络申请,其申请内容包含本进程的名称、本进程所在节点的IP以及本进程所在节点共享内存数据区中与其相关的结构化文档;然后通过事件发送已经生成的网络申请;
[0021] 经过上述步骤,实现对多进程间结构化文档的通信。
[0022] 上述的步骤(3)中,在操作结构化文档时,遵守先读后写的原则。
[0023] 本发明提供的上述多进程间结构化文档通信的方法,其用于同一节点的多进程通信。
[0024] 本发明提供的上述多进程间结构化文档通信的方法,其用于不同节点间的多进程通信,通过网络申请触发网络配对请求,不同节点的多进程配对成功则实现所述多进程间结构化文档的通信。
[0025] 本发明与现有技术相比具有以下的主要优点:
[0026] 1.在节点开辟共享内存来存储当前节点参与通信的所有进程的通信内容,然后通过动态注册的方法,这可以任意的在现有系统上增删通信进程,而不影响现有的通信,保证了大量数据快速通信;
[0027] 2.设置了权限管理的步骤,使用者在开发自己程序的时候可以定义进程的优先级别,能保证多个进程在通信过程中能实现最重要的数据优先通信;
[0028] 3.通过映射关系将内存地址映射成结构化文档中节点的相对地址,对共享内存的访问方式和数据存储进行了改进,使任何参与进程的通信数据都以结构化的形式进行读写和保存,避免了现有方法以基地址加偏移量的访问方式,保证了数据的逻辑性;
[0029] 4.将共享内存和sockets通讯方式结合,在同一网络节点上的多进程通过共享内存通信,而不同节点的进程间通信则使用sockets的方式,具有通用性;
[0030] 5.采用了序列化技术,使不同节点在通信前将通信数据序列化,接收后再进行反序列技术,保证了数据的结构化特性;
[0031] 6.采用了组态技术,能够在不改变现有完整程序的同时,可以动态调整不用进程间的通信变量之间的关系映射,是方法和系统具有通用性。

附图说明

[0032] 图1是本发明实施例1提供的一种多进程间结构化文档的通信方法的流程图。
[0033] 图2是本发明实施例2提供的一种多进程间结构化文档的通信方法的流程图。

具体实施方式

[0034] 下面将结合实施例及附图对本发明做进一步的详细描述。
[0035] 实施例1:
[0036] 本实施例提供的多进程间结构化文档通信的方法,具体是:信进程搜索本地通信节点的共享内存区,如果不存在,则提交创建通信用共享内存及创建结构化文档对象的申请,申请响应后注册本进程需通信的内容,序列化该文档;将序列化的文档发送至共享内存区中进行操作申请,等待直至授权;授权后,将获取的结构化文档对象反序列化以获得文档内容,再根据需求读写结构化文档并保存文档;然后序列化修改过的结构化文档,释放管理权限;最后通信进程提交网络通信申请,实现多进程间结构化文档的通信。
[0037] 该方法如图1所示,具体步骤如下:
[0038] 步骤101,进程注册通信内容:
[0039] 具体地,当进程启动时,提交共享申请直至该节点存在共享内存,然后提取该进程通过配置文件生成的或根据定义规则生成的需和其它进程通信的信息,根据要求标记信息的特征;然后检测当前共享内存数据区是否存在结构化文档,如果不存在,则创建新的文档;如果已经存在结构化文档,则将需注册的信息的特征与结构化文档中的信息进行特征匹配,如存在相同特征的信息,则删除文档中已有的信息;然后再注册对应的通信信息。
[0040] 需要说明的,该步骤中所述的标记信息特征,是为每个需通信的信息分配GUID(全球唯一标识符);进程需注册的信息包含进程名、信息名以及其对应的GUID、节点IP、与之通信的进程节点进程名称和IP以及通信信息映射关系;
[0041] 步骤102,进程申请操作权限:
[0042] 具体地,进程提交操作权限申请后,如未获得授权,则等待直至授权;在该进程等待过程中,除操作结构化文档的事件受阻外,其它事件仍按原有逻辑执行。
[0043] 步骤103,获取结构化文档对象,反序列化获取结构化文档并进行读写操作。
[0044] 具体地,获得操作权限后,则搜索共享内存的数据区,获取结构化文档对象,并对获得的对象进行反序列化,提取结构化文档,然后进行读写操作。在操作结构化文档时,遵守先读后写的原则。
[0045] 步骤104,序列化结构化文档并保存:
[0046] 具体地,结构化文档修改完成后,将结构化文档进行序列化处理,保存并更新当前共享内存数据区。
[0047] 步骤105,释放操作权限:
[0048] 具体地,结构化文档处理完成后,操作进程修改操作状态字,并通过触发操作完成事件将状态字提交,以此将共享数据区的权限状态修改为未授权。
[0049] 步骤106,提交网络申请:
[0050] 具体地,操作进程捕捉操作状态字由未完成修改为已完成的事件生成网络申请,其申请内容包含本进程的名称、本进程所在节点的IP以及本进程所在节点共享内存数据区中与其相关的结构化文档。然后通过事件发送已经生成的网络申请。
[0051] 需要说明的是,提交网络申请是为了确保该方法的通用性,因为本发明既适用于同一节点的多进程通信,还适用于不同节点间的多进程通信。通过网络申请触发网络配对请求,不同节点的多进程配对成功则可实现通信。
[0052] 经过上述步骤,实现对多进程间结构化文档的通信。
[0053] 实施例2:
[0054] 本实施例以高炉槽下分布式仿真系统为例,以该仿真系统中不同平台间的数据通信为应用场景,对实施例1进行详细的描述。
[0055] 该实施例中涉及到的高炉槽下分布式仿真系统有多个平台,仅在此使用其中的两个平台进行:HMI仿真平台以及设备仿真平台;其中人机交互仿真平台功能是仿真现场人员的操作状况;设备仿真平台则仿真槽下各个设备的运行状态以及对人机交互仿真平台操作的反馈。
[0056] 该实施例中还涉及多进程结构化文档通信的系统,该系统的功能是为本发明提供具体的实现手段,其主要功能是负责结构化文档的生成、操作、内存及权限管理和网络通信。
[0057] 如图2所示,网络上有两个节点,第一个节点称之为节点A,该节点包含了:多进程结构化文档通信的系统,称之为系统A;设备仿真平台,该平台所属的进程称之为进程A;人机交互仿真平台,该平台所属的进程称之为进程B。第二个节点称之为节点B,该节点多进程结构化文档通信的系统,称之为系统B;人机交互仿真平台,该平台所属的进程称之为进程C。
[0058] 本发明实施例2提供的多进程间结构化文档通信的方法,步骤如下:
[0059] 步骤201:节点A上的进程A作为该节点第一个启动的通信进程,当进程A启动时,向同一节点上的系统A提交共享内存申请;系统A检测该节点上的共享内存存在状态,由于该节不存在共享内存,系统A则根据默认的空间大小开辟一部分共享内存。进程A检测到共享内存后,搜集自身的通信信息,并向系统A提交注册申请;系统A响应进程A的注册申请,按找预定义的文档格式生成结构化文档,该文档包含信息的传输方向、名称、所属进程名、节点IP及端扣。
[0060] 节点A上的进程B作为该节点第二个启动的通信进程,当进程B启动时,该节点已经存在共享内存,所以进程B直接提交注册申请,将通信信息添加到已有的结构化文档中;
[0061] 节点B上的进程C作为该节点第一个启动的通信进程,其过程和节点A上的进程A过程相同,不再重复。
[0062] 需要说明的是,当多进程结构化文档通信的系统第一次生成结构化文档后,会将该结构化文档序列化然后保存到共享内存中;收到注册申请时,如果共享内存中已经存在结构化文档,则将读取该结构化文档,并反序列化,然后追加通信内容,完成后再序列化该结构化文档并保存至共享内存。
[0063] 需要说明的是,当注册完成后,需要通过多进程结构化文档通信的系统来配置进程A,进程B和进程C之间通信信息的映射关系。
[0064] 步骤202:进程A中的人机交互仿真平台仿真发出其中的一个设备A启动信号,此时需要将该信号发送给进程B中的设备仿真平台,使设备接收启动信号并仿真启动后的设备运行状态;与此同时还需将该信号发送给节点B上的进程C的人机交互仿真平台,保证同功能平台间的信息同步。
[0065] 进程A定时产生事件,该事件向系统A提交操作共享内存中结构化文档的操作权限的申请;系统A收到申请后,将该申请放入等待队列,然后根据自身的策略管理原则,在满足条件的情况下,将操作权限授予进程A,并将权限状态更改为已授权。
[0066] 步骤203:进程A在收到授权后,从共享内存中获取结构化文档对象,并将结构化文档反序列化,读取传输方向为输入的通信信息值,修该设备A的启动信息对应的结构化文档中信息值,并通过映射关系修改结构化文档中与设备A启动信息对应的进程B中的信息值。
[0067] 步骤204:进程A操作完成后,将结构化文档序列化,保存并更新共享内存数据区。
[0068] 步骤205:进程A在操作完结构化文档之后,修改操作状态字为未授权,通过事件将操作状态字提交给系统A;系统A收到进程A的状态字后,将权限状态改为未授权。
[0069] 与此同时,如果进程B通过定时器产生通信事件,进程收到进程A发送的信息,其过程与步骤203和步骤204中A进程的过程相同。
[0070] 步骤206:当进程A操作完成后,触发事件,该事件搜集本进程的名称、本进程所在节点的IP以及本进程所在节点共享内存数据区中与其相关的结构化文档,并向系统A提交网络申请;系统A收到网络申请后,在结构化文档中搜索与该申请匹配的通信节点B信息,如果然后由系统A发送通信配对请求,配对成功后,系统A启动线程发送通信信息。
[0071] 节点B在通信配对成功后,开始接收信息,在通信完成之后保存信息并根据映射关系更新节点B上共享内存中结构化文档的通信信息值,而节点B上进程C的通信过程与节点A上的进程A通信相同。
[0072] 通过以上方法实现同一节点以及不同节点间多进程间结构化文档的通信。
[0073] 以上实施方式仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。