智能车分布式进程虚拟交换机通信方法_4

文档序号:9276886阅读:来源:国知局
块可以"热插拔"到虚拟交换机中,随用随添加,随停随移除,不存在服务 器与客户端的概念,模块自成通信节点,一旦某模块发生故障对其它模块不产生影响,提高 了系统的可靠性。
[0168] 2.消息采用"订阅/发布"模式,模块间直接传递"对象",不用考虑数据的封装与 解析,提高了开发效率。
[0169] 3.模块之间不存在直接的点对点通信,实现了各模块在时间与空间上的解耦,增 加了模块的独立性,以及系统的灵活性和可扩展性。
[0170] 上述参照实施例对一种智能车分布式进程虚拟交换机通信方法进行的详细描述, 是说明性的而不是限定性的,可按照所限定范围列举出若干个实施例,因此在不脱离本发 明总体构思下的变化和修改,应属本发明的保护范围之内。
【主权项】
1. 一种智能车分布式进程虚拟交换机通信方法,其特征是:采用总线型拓扑结构,基 于UDP组播协议,通过订阅/发布消息模式,实现了智能车软件模块间的数据通信,具体步 骤如下: 一、 建立软件模块通信分组: 智能车软件系统由若干软件模块组成,每个软件模块对应一个进程,软件模块以进程 的形式存在于智能车系统中,两者在智能车系统中属同一范畴;按照智能车各软件模块之 间的通信关系,将软件模块划分成若干通信分组,为每组分配一条虚拟总线编号; 二、建立虚拟交换机: 虚拟交换机用于局域网内单个或多个计算机上不同进程之间的数据通信,所述虚拟交 换机是基于微软.net平台、应用于局域网、异步收发和直接传递"对象"的总线型分布式消 息中间件,以.net环境下托管动态链接库的形式被进程调用; 三、 建立虚拟总线: 虚拟总线基于UDP组播协议实现,一条虚拟总线相当于一个网络套接字,套接字的网 络地址为私网组播地址,连接到同一条虚拟总线上的各软件模块通过虚拟交换机同时加入 该组播组并监听套接字上的消息,每条总线连接若干进程,所述进程属于局域网内任何一 台计算机,同一总线上的不同进程之间通过订阅消息和发布消息两种模式进行数据通信; 四、 建立消息: 虚拟交换机中的一帧消息由三部分组成: 消息标题+时间戳+消息内容 其中,时间戳由虚拟交换机生成,消息标题及消息内容由软件模块生成; 五、 建立订阅消息/取消订阅消息: 所述订阅消息是进程将消息标题加入到自身内存中的消息订阅列表中,同时将回调函 数地址关联到所述消息标题, 所述取消订阅消息是进程将消息标题从消息订阅列表中移除, 虚拟交换机为每个进程保存一张消息订阅列表,存储在该进程的地址空间中,每个进 程维护一个消息订阅列表; 六、 发布消息: 当软件模块发布消息时,虚拟交换机首先将消息内容序列化成字节数组,然后与时间 戳及消息标题一起形成消息帧,再通过虚拟总线将消息帧发送给所有连接到该总线的软件 丰吴块; 采用总线型拓扑结构,所述虚拟交换机通过一条或多条虚拟总线与软件模块连接,实 现软件模块订阅所需消息和发布产生的消息,通信结束后,虚拟总线随着软件模块的退出 而退出。 所述虚拟交换机通过虚拟总线编号计算出组播端口,计算方法为:组播端口 =(总线 编号+6000) % 1024,侦听该端口号的UDP组播,当虚拟总线有新消息到来时,该进程空间的 虚拟交换程序首先提取该消息标题,然后查找自身消息订阅列表,如果存在该标题,则在线 程池中启动一个新线程执行对应的回调函数,如果不存在则不进行处理; 所述发布消息是该进程空间的虚拟交换机首先将消息内容序列化成字节数组,然后加 上时间戳及消息标题形成消息帧,通过虚拟总线编号计算出组播端口号,计算方法为:组播 端口 =(总线编号+6000) % 1024,最后通过UDP组播协议将消息广播到以太网。2. 根据权利要求1所述的智能车分布式进程虚拟交换机通信方法,其特征是:所述虚 拟交换机包含可靠传输模式和非可靠传输模式两种运行方式,底层实现分别对应微软消息 队列与UDP多播,不同的虚拟总线,对应不同的多播地址;在同一条虚拟总线上,能够将数 据载荷进一步划分为64位字节的消息头和后面的真正载荷,使得软件模块能够有选择性 的订阅总线上的各类消息。3. 根据权利要求1所述的智能车分布式进程虚拟交换机通信方法,其特征是:所述虚 拟交换机使用方法:虚拟交换机共提供4个接口供软件模块调用:1. 连接虚拟总线:VirtualSwitchBus(int busNum); 【功能】连接虚拟总线 【参数】 busNum :总线编号,0~1023 ; 【返回值】无2. 订阅消息:int SubMsg(string msgLabel, MsgRecvFunc msgRecvFunc); 【功能】订阅消息 【参数】 msgLabel :消息标题 msgRecvFunc :回调函数 回调函数声明如下:void FuncName (object msgContent, ref DateTime msgSentTime)。其中,msgContent表示接收到的消息内容,msgSentTime表示消息时间戳。 【返回值】 〇 :订阅成功; 1 :订阅失败;3. 取消订阅消息:int UnSubMsg(string msgLabel); 【功能】取消订阅消息 【参数】 msgLabel :消息标题 【返回值】 〇 :取消订阅成功; 1 :取消订阅失败;4. 发布消息:int PubMsg(string msgLabel, object msgContent); 【功能】发布消息 【参数】 msgLabel :消息标题 msgContent :消息内容 【返回值】 〇 :发布成功; 1 :发布失败; 所述虚拟交换机使用C#实现动态链接库供进程调用,依照进程要求,其使用流程如 下: 1) 进程注册:进程向中间件注册,告知上线; 2) 消息订阅:进程告知中间件自身所需订阅的消息类别; 3) 消息发布:进程向中间件发布最新消息,中间件将消息封装成帧后通过UDP组播协 议发送到局域网。当收到消息时,中间件查询消息订阅表,并以回调函数的形式通知目标进 程收到消息; 4) 取消订阅:进程告知中间件不再需要某种消息; 5) 进程注销:进程告知中间件自身下线,中间件不再向该进程分发任何消息。4. 根据权利要求1所述的智能车分布式进程虚拟交换机通信方法,其特征是:所述虚 拟总线可分为两种类型,可靠型总线和不可靠型总线;总线数量最多1024条,每条总线上 连接的进程数量没有限制。5. 根据权利要求1所述的智能车分布式进程虚拟交换机通信方法,其特征是:所述消 息标题采用64bytes,所述时间戳采用8bytes,所述消息内容彡60000bytes。6. 根据权利要求1所述的智能车分布式进程虚拟交换机通信方法,其特征是:所述进 程之间直接传递"对象"类型,无需进程额外对消息内容进行编码与解码。
【专利摘要】本发明涉及一种智能车分布式进程虚拟交换机通信方法,其特征是:采用总线型拓扑结构,基于UDP组播协议,通过订阅/发布消息模式,实现了智能车软件模块间的数据通信。有益效果:与现有技术相比,本发明使用的虚拟交换机,采用总线型拓扑结构,模块可以“热插拔”到系统中,随用随添加,随停随移除,不存在服务器与客户端的概念;模块自成通信节点,一旦某模块发生故障对其它模块不产生影响,提高了系统的可靠性。消息采用“订阅/发布”模式,模块间直接传递“对象”,不用考虑数据的封装与解析,提高了开发效率。模块之间不存在直接的点对点通信,实现了各模块在时间与空间上的解耦,增加了模块的独立性,以及系统的灵活性和可扩展性。
【IPC分类】H04L12/40, H04L29/08
【公开号】CN104994166
【申请号】CN201510404842
【发明人】李德毅, 韩威, 郑思仪, 贾鹏
【申请人】李德毅, 韩威
【公开日】2015年10月21日
【申请日】2015年7月10日
当前第4页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1