CN106561032A - 一种基于xml的消息通讯方法 - Google Patents
一种基于xml的消息通讯方法 Download PDFInfo
- Publication number
- CN106561032A CN106561032A CN201510637422.4A CN201510637422A CN106561032A CN 106561032 A CN106561032 A CN 106561032A CN 201510637422 A CN201510637422 A CN 201510637422A CN 106561032 A CN106561032 A CN 106561032A
- Authority
- CN
- China
- Prior art keywords
- message
- xml
- agent
- communication
- documentbuilderfactory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/61—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
一种基于XML的消息通讯方法以消息传输的方式实现多Agent***的通讯消息的XML格式封装和解析机制,以及基于消息优先级的消息传送同步控制算法,实现了消息的可靠有效传输。
Description
技术领域
一种基于XML的消息通讯方法主要涉及计算机通讯方面领域。
背景技术
基于多Agent 分布式***是以网络技术为基础,将分布在不同地理位置上的Agent
集成在一个时间和空间相一致的环境中,通过它们之间的通讯与互操作,实现知识与信息共享,从而完成复杂任务的求解。多Agent
分布式***广泛应用在如电子商务、机器人控制、生产计划与调度等不同领域中。目前,关于多Agent
分布式***的研究,主要集中在支持协作的通讯方式上,并提出了许多协作通讯模型。如基于黑/白板结构和基于消息的通讯模型。在基于黑板结构的多Agent 通讯模型中,黑板提供公共工作区,Agent
可以交换信息、数据和知识。但当Agent 结点数目增多时,黑板中的数据量会呈指数增长,导致***的通讯效率降低。在基于消息的通讯模型中,Agent 间通过使用统一的消息传送协议,克服了黑板***的缺陷,提高了***的通讯能力。但是,在消息的通讯模型中,如何进行Agent间消息的传送和同步,保证通讯的可靠性与有效性,即在通信的情况下保证消息以最小的通讯时间可靠提交;如何保证消息不受协议响应结构的限制,提高***通讯的灵活性仍然是研究的一个难点。
主要以消息传输的方式实现多Agent 分布式***的通讯,通过采用消息的XML 格式封装和解析实现消息的传送。封装后的消息由于可以绑定更多的信息,支持对其的扩展,因此克服了协议响应结构对消息的限制,提高了消息传送的灵活性。同时为了保持Agent
之间消息传送的时空一致性,在消息传输过程中采用了基于消息优先级的传输同步控制算法,保证了消息可靠有效传输。最后给出了***仿真的实现框架,并在Win2000
***上应用Java 语言得以实现验证。
发明内容
通过国家专利检索没有发现关于此***方面的申请资料。
在多Agent 分布式***中,为了实现Agent 之间的通讯,要求每一个Agent 知道其它Agent
的名称、通信地址、通讯端口、协作能力等等。因此,在每个仿真Agent 中设计一个通讯Agent 模块。该模块负责所有与通讯有关的动作,同时该模块也是Agent
间进行通讯的一个接口。每个通讯模块包含信息表、消息缓存池和一个通讯服务管理器三部分。信息表用来记录Agent
中的一些基本特性。信息表主要包括以下两部分:(1)静态信息表:存储Agent 自身的静态信息,如Agent 标识、本身的性能、IP 地址等;(2)动态信息表:主要存储通讯状态下的其它Agent 信息。在每个Agent
启动与其他Agent 通讯时,会将各种通讯状态信息登记到动态信息表中,并在退出时删除这些信息,以保持动态信息表的实时更新;消息缓存池:Agent
用来存储发送和接收到的消息;通讯服务管理器:主要负责消息的XML 格式封装和解析、消息同步传输控制。避免由于同步问题造成的因果错误。
将信息表、消息缓存池、通讯服务管理器和其他各部分分别定义成Java 类的形式;把发送的消息封装成XML 格式文档,然后进行传输。在底层采用TCP/IP
通讯协议和socket 通讯技术实现多仿真Agent
结点的通讯。具体的操作方法是:
1. 基于XML 的消息封装和解析:1)在消息传输中,消息的语义内容是Agent 通讯的核心部分。主要应用FIPA-ACL
消息结构[5]。通过使用FIPA-ACL
消息,每个Agent 可以向其他Agent
发送请求或请求服务。FIPAACL消息结构是一种基于原语的消息结构,由外到内分为3 个层次:envelope、content、message。envelope:描述消息传输的各种附加信息,如发送者、接受者等;content:描述消息传输的具体内容;message:描述消息传输的各种参数,如消息使用的编码格式,传输的协议等。
每次消息只有在固有的原语范围内进行消息请求与服务(如接受(accept)、请求(request)等),扩展性较差。因此,为了克服协议响应结构对消息传送的限制。本文将这种消息结构封装成XML 格式。XML 格式的优点在于可以自定义诸多XML 标记元素,并且XML 元素可以绑定更多的信息,支持对其扩展。同时,传送时易于实现数据的压缩传输,提高了传输效率,即节约网络流量,减少通讯时间。如在message.dtd
中扩展了优先级的属性。
基于XML 的消息结构(message.dtd)如下:
<! ELEMENT acl-message(msg-type,msg-param)
<! ELEMENT msg-type(agree|request|refuse|accept-proposal|cancel)>
<! ELEMENT agree(#PCDATA)>
……
<! ELEMENT msg-param(#PCDATA)>
<! ATTLIST msg-param sender CDATA #REQUIRED
receiver CDATA #REQUIRED
content CDATA #REQUIRED
in-reply-to CDATA #REQUIRED
language CDATA #REQUIRED
priority CDATA #REQUIRED
>
例如:Agent A 请求(request) Agent B 去推动一个箱子。
传递消息结构(move.xml)如下:
<xml version="1.0">
<! DOCTYPE acl-message SYSTEM "message.dtd">
<acl-message>
<msg-type> request</msg-type>
<msg-param sender="A"
receive="B"
content="action(agent-identifier:name B)(deliver box(loc 12)"
language="fipa-sl"
protocol="fipa-request"
reply-with="order567"
priority="5">
</msg-param>
</acl-message >。
2)XML 文档的解析
接收端为了识别具体的请求消息内容,需要对XML 文档进行解析。解析的目的就是要从XML 文档中读取用户所需要的数据。应用DOM 解析器[6]实现对XML 文档的解析。文档解析后,首先判断属于哪种类型的消息,然后根据消息激活相应的
动作。解析步骤如下:
(1)在javax.xml.parsers.DocumentBuilderFactory
类中,调用newInstance()方法,生成一个DocumentBuilderFactory 对象。
DocumentBuilderFactory
factory =DocumentBuilderFactory.newInstance();
(2)应用factory
调用newDocumentBuilder()方法生成DocumentBuilder
对象。
javax.xml.parsers.DocumentBuilder
build =factory.newDocument-
Builder();
(3)build
对象调用public Document parse(File f)方法解析f 指定的XML 文档,并通过Element 类型对象来分析具有子孙关系节点的数据。
Org.w3c.dom.Document
dom=build.parse(new File(move.xml));
Element root=dom.getDocumentElement();
(4)最后,解析出来的数据调用getElementByTagName(String)方法,识别各个标记节点内容。另外,对于含有属性的节点要做特殊的处理,让该节点对象调用NamedNodeMapgetAttributes()方法来解析属性内容。
NodeList
nodelist=root.getElementByTagName(“acl-message”);
NamedNodeMap nnm=nodelist.item(i).getAttributes();//第i 个结
点属性。
2. 通讯服务管理器:1) 仿真Agent 间实现相互通讯就要处理Agent 通讯过程中的各种事务。在每个通讯模块中设置一个通讯服务管理器。通讯服务管理器作为消息通讯的枢纽,在***中起着核心作用。通讯服务管理主要包括XML 文档转换与解析、Agent ***管理、Agent 域名管理和消息传输过程管理。XML 文档转换与解析:完成消息的XML 格式封装和XML 文件的解析;Agent 域名管理:解析和查询其他Agent 的名称、通讯地址和通讯端口等信息;Agent
***管理:负责仿真Agent 内部其他模块间的协同操作;消息传输过程管理:主要完成通讯中服务监听与线程管理和消息发送与接收的传输控制,如消息传输同步控制;为其它Agent
分配线程等。
通过定义如下的类与方法来实现通讯服务管理器的功能。服务监听与线程管理是由run 方法进行处理。方法doComm-Manage 用于完成消息传输的同步控制管理。消息的XML 格式封装和解析分别由CreateXml
类中的doConverXml 方法和parseXml方法实现。
通讯服务管理类定义为:
Class CommServer implements Runnable,IEventHandler
{ CreateXml crxml=new CreateXml();
public void setup(){ //启动服务监听}
pulic void doCommManage(String message){}
public void run(){ //服务监听与线程管理}
public void sent()
{ ZipOutputStream out=new ZipOutputStream(socket.getOutputStream());
out.putNextEntry(new ZipEntry(“message1.xml”));
out.write();//将数据压缩后写入输出流;
}
public String receive(){}
public void action() {
synchronized(this){}
//消息处理过程}
}。
2). 鉴于多Agent 仿真环境分布式的特点,为保证仿真Agent结点间通讯在时间和空间上的一致,本文给出了基于消息优先级的传输控制算法。首先让封装好的消息XML 文件根据优先级高低进入传输任务就绪队列。优先级是根据传输任务紧急程度来确定的。
***总是允许优先级最高的任务开始执行。当一个优先级更高的任务到达时,允许将当前传输任务暂时挂起,而令高优先级任务立即投入运行。采用这种方式能满足最紧急的消息优先传输。若所有的进程都具有相同的优先级初值,则最先进入先执行。在具体实现时对高优先级任务采用同步代码块策略来控制,从而保证消息传送在时间和空间上的一致。在传送时,为了保证通讯的有效性,以最小的通讯时间来决定何时采用本地通讯,何时采用远程通讯。
Claims (9)
1.一种基于XML的消息通讯方法其特征是(1)静态信息表:存储Agent 自身的静态信息,如Agent 标识、本身的性能、IP 地址等;(2)动态信息表:主要存储通讯状态下的其它Agent 信息。
2.根据权利要求1将信息表、消息缓存池、通讯服务管理器和其他各部分分别
定义成Java 类的形式;把发送的消息封装成XML 格式文档,然后进行传输。
3.根据权利要求2通过使用FIPA-ACL 消息,每个Agent 可以向其他Agent 发送请求或请求服务。
4.根据权利要求3把这种消息结构封装成XML格式。
5.根据权利要求4对这种XML进行解析;主要是在javax.xml.parsers.DocumentBuilderFactory 类中,调用newInstance()方法,生成一个DocumentBuilderFactory 对象;
DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance()。
6.根据权利要求5应用factory 调用newDocumentBuilder()方法生成DocumentBuilder对象;
javax.xml.parsers.DocumentBuilder build =factory.newDocument-Builder()。
7.根据权利要求6中的build 对象调用public Document parse(File f)方法解析f 指定的XML 文档,并通过Element 类型对象来分析具有子孙关系节点的数据;
Org.w3c.dom.Document dom=build.parse(new File(move.xml));
Element root=dom.getDocumentElement()。
8.根据权利要求7解析出来的数据调用getElementByTagName(String)方法,识别各个标记节点内容。
9.另外,对于含有属性的节点要做特殊的处理,让该节点对象调用NamedNodeMapgetAttributes()方法来解析属性内容;
NodeList nodelist=root.getElementByTagName(“acl-message”);
NamedNodeMap nnm=nodelist.item(i).getAttributes()。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510637422.4A CN106561032A (zh) | 2015-10-06 | 2015-10-06 | 一种基于xml的消息通讯方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510637422.4A CN106561032A (zh) | 2015-10-06 | 2015-10-06 | 一种基于xml的消息通讯方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106561032A true CN106561032A (zh) | 2017-04-12 |
Family
ID=58485286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510637422.4A Pending CN106561032A (zh) | 2015-10-06 | 2015-10-06 | 一种基于xml的消息通讯方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106561032A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108540545A (zh) * | 2018-03-27 | 2018-09-14 | 武汉理工大学 | 基于多Agent的云计算环境中空间数据双向双重异步传输方法 |
-
2015
- 2015-10-06 CN CN201510637422.4A patent/CN106561032A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108540545A (zh) * | 2018-03-27 | 2018-09-14 | 武汉理工大学 | 基于多Agent的云计算环境中空间数据双向双重异步传输方法 |
CN108540545B (zh) * | 2018-03-27 | 2020-05-08 | 武汉理工大学 | 基于多Agent的云计算环境中空间数据双向双重异步传输方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9331953B2 (en) | Device management method, middleware, and machine-to-machine communications platform, device, and system | |
US20160219125A1 (en) | Method and apparatus for implementing subscription notification | |
JP2007525870A (ja) | 装置管理システム内における管理ノードの指定 | |
CN113411215B (zh) | 基于opc ua的时间敏感网络集中用户配置方法及*** | |
CN105763619B (zh) | 客户端与服务端进行通讯的方法及装置 | |
CN110022289A (zh) | 数据传输方法、装置及*** | |
CN113556359B (zh) | 一种通讯协议转换方法、设备、***及网关设备 | |
CN101466109B (zh) | 一种WiMAX网络管理的通信***和方法 | |
CN115150274B (zh) | 时间敏感网络设备的统一配置方法、***及存储介质 | |
CN108446105B (zh) | 一种轻量级API Server开发框架及开发方法 | |
CN101567861B (zh) | 异构应用***之间的数据同步方法及应用*** | |
CN101902473A (zh) | 基于网格gis的数据同步更新实现方法 | |
US10310851B2 (en) | Automated generation of service definitions for message queue application clients | |
CN114449459B (zh) | 消息传输方法、平台功能应用功能 | |
CN112822276A (zh) | 一种变电站站控层通信方法、***、电子设备及存储介质 | |
CN113596017B (zh) | 一种协议解析方法、装置、软网关和存储介质 | |
CN105871819B (zh) | 传输控制方法及设备 | |
CN104243198B (zh) | 一种基于网络配置协议的网络管理方法和*** | |
CN104753804A (zh) | 一种数据流传输控制方法、装置及*** | |
CN114448719A (zh) | 一种报文交互方法、装置和*** | |
KR100736081B1 (ko) | 웹 서비스 제공 장치, 웹 서비스 요청 장치, 웹 서비스제공 방법 및 웹 서비스 요청 방법 | |
AU2005208065B2 (en) | Defining nodes in device management system | |
CN117596091A (zh) | 采用DCP协议进行Profinet总线设备扫描方法及*** | |
CN106561032A (zh) | 一种基于xml的消息通讯方法 | |
Li et al. | Efficient oneM2M protocol conversion platform based on NB-IoT access |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170412 |
|
WD01 | Invention patent application deemed withdrawn after publication |