CN101917394B - 在手机设备上进行数据共享的中间件***及工作方法 - Google Patents
在手机设备上进行数据共享的中间件***及工作方法 Download PDFInfo
- Publication number
- CN101917394B CN101917394B CN 201010202939 CN201010202939A CN101917394B CN 101917394 B CN101917394 B CN 101917394B CN 201010202939 CN201010202939 CN 201010202939 CN 201010202939 A CN201010202939 A CN 201010202939A CN 101917394 B CN101917394 B CN 101917394B
- Authority
- CN
- China
- Prior art keywords
- message
- client
- unit
- server
- conflict
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种在手机设备上进行数据共享的中间件***及工作方法,该***应用于至少一个服务器端和两个以上运行于手机设备的客户端组成的***中;客户端包括客户端项目管理单元,客户端消息转换单元,客户端缓存单元,客户端通信单元,客户端DOM操作单元,客户端消解策略单元,客户端冲突消解单元;服务器端具有:服务器端消息队列管理单元,服务器端存储单元,服务器端通信单元,服务器端消解策略单元,服务器端DOM操作单元,服务器端冲突消解单元。通过上述各单元的数据传输和处理,使两个终端互相发送消息,并对接收到的消息进行处理,进而继续发送处理过的消息,并且程序可进行回滚,这样也保证了两个终端之间消息的双向同步。
Description
技术领域
本发明涉及一种运行于手机设备上的中间件***,更具体地说是涉及移动手机组成的分布式环境下的计算机软件***及工作方法。
背景技术
有线网络,又称固定网络,即由一系列固定的主机,通过高带宽的网线及组网设备连接在一起从而组成的相对持久的物理网络。这样的运行环境要求分布式应用程序考虑:(1)可扩展性,是指在未来一段时间内可以容纳更高负载的能力;(2)开放性,指的是可以在功能需求变化时,更容易的扩展和修改***;(3)异构性,是指分布式***中被集成的不同组件是由不同的程序语言编写的,运行的不同的操作***之上,并且又是在不同的硬件平台上执行;(4)容错性,指的是在***出错时,能够在不停止整个***运行的情况下自动恢复;(5)资源共享和访问控制,即硬件和软件资源都可以为不同***的用户有条件地共享。中间件就是为了解决这些问题而产生的,它处于网络操作***之上,对开发者隐藏了分布式***的复杂性,成功应有于固定网络环境下的中间件***有OMG CORBA、Microsoft COM、Sun Java/RMI以及IBM MQSeries等。
近年来由于PDA、手机、笔记本电脑等移动设备的普及,以及无线网络的迅猛发展,移动应用正在不断接近人们的工作生活。由于设备的移动性、资源受限,移动无线网络不同于传统的固定网络,网络结构不固定,网络连接性较差。再加上移动设备的计算能力有限,设备异构性强,固定网络上中间件***完全不适合移动无线网络。
轻量级的移动中间件正是在这种背景之下产生的。移动中间件位于移动网络、操作***和移动应用软件之间,使用底层操作***提供的基本功能和服务,通过API为上层的移动应用***提供从一般的应用需求中抽象出来的、移动网络应用所需要的更高层的、通用的功能与服务。
比较成熟的移动中间件有上下文感知的中间件和数据共享中间件等。上下文感知的中间件使得移动应用可以感知诸如位置、设备状态、用户行为等上下文信息。位置信息是上下文感知的中间件研究最多的方面,目前有许多成熟的应用,例如提供旅游指南的CyberGuide,可以发送广告的Object Pager,及在一个特定区域发送消息给任何人的Conference Assistant等。数据共享的中间件支持用户离线操作,并在他们再次连线时对数据进行共享。较为优秀的数据共享中间件有Coda、Odyssey、Bayou及Xmiddle。他们都是最大限度地提高数据的可用性,但他们检测并解决冲突的机制并不相同。Odyssey比它的前任Coda更适合移动环境,但是由于它需要较大的计算能力;Bayou使用应用程序相关的知识进行依赖检查,可能受到级联冲突解决的影响;Xmiddle使用XML来描述信息,使用DOM来对数据进行操作。Coda、Odyssey等其他的数据共享中间件在进行数据复制时需要将整个文件都复制一遍,而Xmiddle可以简单的调整复制单元来适应不同的需要,更适合存储容量有限的移动设备。
消息是异构***交换数据的一种有效方式,它可以被不同的应用程序所理解,异构的***可以通过交换消息进行通信。消息中间件(MOM)通过消息队列和订阅/发布模式支持分布式应用软件之间进行跨平台的消息传递。与远程过程调用(RPC)相比,PRC就像打电话,而MOM就像发邮件,不用即时,可以断断续续事后批量处理。MOM具有松耦合、异步通讯等特点使其特别适合网络连接性较差的移动网络环境。不过现有的消息中间件(如IBM MQSeries等)都是运行于固定网络上的固定主机上,设备能力要求较高,不适合手机设备。他们对于关键字相同的消息只是进行简单的单向替换,所以也不支持数据共享。
发明内容
本发明针对以上问题的提出,而研制一套能够运行于手机设备上的移动消息中间件***及方法。本发明采用的技术手段如下:
一种在手机设备上进行数据共享的中间件***,其特征在于该***应用于至少一个服务器端和两个以上运行于手机设备的客户端组成的***中;
所述客户端包括:
客户端项目管理单元,用于用户编辑消息,配置通信对象以及通信方式参数;
客户端消息转换单元,用于将用户编辑的消息转换成XML格式的消息,并将此消息继续转换成树的形式;
客户端缓存单元,用于存储用户本地的数据,使用户可以离线的对数据进行操作修改,并将客户端经常访问的服务器端的数据存储在本地;
客户端通信单元,用于使用户同其他客户端或服务器进行通信;
客户端DOM操作单元,用于对XML格式的树形结构的消息进行添加和修改操作,并对其他终端发送过来的消息进行解析;
客户端消解策略单元,用于对消息转换单元转换成树形式的消息中的冲突节点定义冲突解决策略;
客户端冲突消解单元,用于调用客户端DOM操作单元对XML消息进行处理,之后调用所述客户端消解策略单元,按照事先定义的冲突消解策略来解决冲突;
显示单元,用于将结果显示给用户;
服务器端具有:
服务器端消息队列管理单元,用于对服务器的消息进行管理,并控制服务器同其他终端之间进行收发消息;
服务器端存储单元,用于将消息存储在数据库中;
服务器端通信单元,用于使该服务器与其他客户端或服务器进行通信;
服务器端消解策略单元,用于对树形式的消息中的冲突节点定义冲突解决策略;
服务器端DOM操作单元,用于对XML格式的树形结构的消息进行添加和修改操作,并对其他终端发送过来的消息进行解析;
服务器端冲突消解单元,用于调用服务器端DOM操作单元对XML消息进行处理,之后调用所述服务器端消解策略单元,按照事先定义的冲突消解策略来解决冲突;
所述中间件***的一个客户端作为消息的发送方,其客户端消息转换单元在收到用户利用该客户端项目管理单元编辑的消息后,将此消息转换成XML格式,然后利用客户端消解策略单元为可能会产生冲突的节点添加冲突解决策略,再通过客户端通信单元向外发送消息;由服务器端或者是另一个客户端接收消息,服务器端或者是另一个客户端的DOM操作单元对消息进行相关DOM操作,即接收方DOM操作单元对两个不同的树型结构的XML消息进行比较,产生diff树,以记录着由两个不同消息所产生的冲突;然后接收方中的冲突消解单元对冲突进行消解,产生一个没有冲突的新树,再将此树发送给发送方;如果此过程发生在两个移动客户端之间,则将结果存储于所述的客户端缓存单元中,并交由所述的显示单元显示;如果此过程发生在移动客户端与服务器之间,则服务器将此消息保存在服务器端存储单元的数据库中,并由所述的服务器端消息队列管理单元将此消息通过服务器端通信单元发送给所有订阅者。
所述的客户端缓存单元包括一个临时的消息队列,客户端将消息放到此消息队列中,由此消息队列主动按照该客户端通信单元所设定的协议来发送或接收消息;每个消息都附加一个发送结束符,当消息发送到结束符时,则认为消息发送成功,否则认为消息发送失败,重新发送此消息或进行后一步处理。
所述的服务器消息队列管理单元包括一个线程池与工作队列,由工作队列对接收到的请求进行监听,然后按照优先级在线程池中取出一个线程与响应的终端进行通信;每个线程与终端通信时,都包含一个与客户端类似的消息队列,用于主动的发送或接收消息,并将接收到的消息保存在数据库中;当在给定时间内没收到确认信息时,服务器的处理方法是:对于持久的订阅者来说,如果终端断线,服务器将消息存储起来,当他再次连线时,服务器会将消息再次发给订阅者;对于非持久的订阅者来说,断线就意味着失败,服务器将此订阅信息删除,如果订阅者想继续接收消息,那么他需要再次发送订阅信息。
所述发送方通过通信单元与接收方通信,由发送方先发送一个发现请求消息,如果接收方收到此消息,会返回给发送方一个确认码,则发送方将自己所存储消息的所有版本都发送给接收方;如果接收方没有收到发现请求消息或发送方没有收到确认码,则需要发送方重新发送发现请求消息给接收方。
一种在手机设备上进行数据共享的中间件***的工作方法,其特征在于包括如下步骤:
步骤1由用户根据具体的应用,通过客户端项目管理单元来编辑消息,并对配置信息进行相应设计;
步骤2客户端通过客户端消息转换单元将用户编辑的消息转换成XML格式的消息,将此消息存储于客户端缓存单元中;之后将此消息继续转换成树的形式,然后根据具体的应用,通过客户端消解策略单元为每个可能产生冲突的节点定义一个冲突解决策略,并通过客户端DOM操作单元为这颗树添加一个节点,此节点记录着冲突解决策略;当发生冲突时,应用程序应该采取此节点定义的冲突解决策略来解决冲突;
步骤3当客户端作为发送方通过客户端通信单元与另一个终端作为接收方开始通信,发送方先发送一个发现请求消息,如果接收方收到此消息,会返回给发送方一个确认码,说明此时发送方与接收方是可以进行通信的,发送方将自己所存储消息的所有版本都发送给接收方;如果接收方没有收到发现请求消息或发送方没有收到确认码,则需要重新发送发现请求消息;
步骤4接收方收到发送方所存储消息的所有版本后,通过服务器端或者是另一个客户端的DOM操作单元对这些消息进行解析,并与自己存储的消息进行比较,此时若发送方与接收方中有一方修改过消息,则比较时会发现冲突,接收方将这些冲突记录下来;
步骤5接收方根据步骤2所定义的冲突节点的解决策略节点,通过服务器端或者是另一个客户端的消解策略单元调用事先定义好的消解策略,由服务器端或者是另一个客户端的冲突消解单元对冲突进行消解,并记录下解决冲突后的新消息;
步骤6若接收方是移动客户端,则接收方将此新消息通过客户端缓存单元存储在缓存中,并将此新消息通过客户端通信单元返回给发送方,发送方记录下这个解决冲突后的消息,并存储在缓存中,然后交由客户端显示单元显示结果;
步骤7若接收方是服务器,则接收方通过服务器端消息队列管理单元对消息进行一定处理,把消息包装成服务器可识别的消息,之后通过服务器端存储单元将消息存储在数据库中;
步骤8然后服务器将更新过的消息通过服务器端通信单元发送给所有订阅者,使得所有订阅者中的消息保持同步。
本发明提供的在手机设备上进行数据共享的中间件***及工作方法同现有技术相比其优点是显而易见的,具体如下:
(1)使消息中间件支持移动分布式环境。区别于传统消息中间件,本发明支持移动网络环境,针对移动网络的特殊性和手机设备的特点,能够在手机设备真实的硬件环境和Java虚拟运行环境上运行,通过消息队列管理为时断时续的网络连接条件下的移动应用程序提供一种可靠的数据通信手段。
(2)有效地保证共享数据的成功收发及数据的一致性,支持数据共享。两个终端互相发送消息,并对接收到的消息进行处理,进而继续发送处理过的消息,并且这过程出现问题时,程序进行相应的回滚,这样也保证了两个终端之间消息的双向同步,而不是简单的消息替换。
附图说明
图1为本发明所述***的总体结构示意图;
图2为本发明所述***的移动客户端结构示意图;
图3为本发明所述***的服务器端结构示意图;
图4为本发明所述***的工作流程图;
图5为本发明所述***设计的实施装置工作流程图。
具体实施方式
本发明提供了一种用于支持移动环境的消息中间件的实施***。物理上,该***可划分为服务器端(后台计算机)和客户端(手机设备)两部分,两者通过无线网络、蓝牙等通信协议连接在一起,其中后台计算机上运行着本发明的消息中间件服务器部分,手机设备上运行移动客户端部分。可以实施两个手机设备之间的数据共享,他们可以不需通过服务器,而是直接进行点对点的通信;也可以实施一台服务器与多个手机设备之间的数据共享,这是结合消息中间件上的发布/订阅方式而完成的。可以选择通过TCP/IP、HTTP或蓝牙等协议同手机设备上的移动应用程序进行通讯。
如图1所示该手机设备上进行数据共享的中间件***应用于至少一个服务器端和两个以上运行于手机设备的客户端组成的***中;
如图2所示所述客户端包括:
客户端项目管理单元100,用于用户编辑消息,配置通信对象以及通信方式参数,由PanelManager、ClientEdit类组成;客户端消息转换单元101,用于将用户编辑的消息转换成XML格式的消息,并将此消息继续转换成树的形式,由TransformMessage、ExportLink类组成;客户端缓存单元102,用于使用户可以离线的对数据进行操作修改,并将客户端经常访问的服务器端的数据存储在本地,以防止当客户端频繁的访问服务器,节约网络带宽,由RecordStoreOperation类组成;客户端消解策略单元103,用于对消息转换单元转换成树形式的消息中的冲突节点定义冲突解决策略,即根据具体的应用来定义不同的冲突消解策略,如添加、修改、替换等,由TreeDiff、TreeMerge、TreeReplica、ListEntry类组成;客户端DOM操作单元104,用于对XML格式的树形结构的消息进行添加和修改操作,并对其他终端发送过来的消息进行解析,如比较两颗树的不同之处,对节点进行修改等;由XMLTranslator、MessageHead、MessageBody、Message、NeedToShare、DiscoveryRequest、AgentConnected、AgentDisconnected、EditionIdentifier、LinkedTableMessage、LinkedFrom、ConfirmMessage、TlistOfEI、NewChanges、Acknowledge类组成;客户端冲突消解单元105,用于调用客户端DOM操作单元对XML消息进行处理,之后调用所述客户端消解策略单元,按照事先定义的冲突消解策略来解决冲突,由Reconcile、ReplaceStrategy、MinusStrategy、AddStrategy类组成;客户端通信单元106,用于使用户采用一定的通信协议,如Http,蓝牙等,来与其他客户端或服务器进行通信,由Observer、Protocol、Subject接口,Transport、ProSocket、ProHttp、ProBluetooth、Agent、ConnectAgent、ReconcileAgent、ExchangeInfoAgent、ConfirmChangesAgent、ListEIAgent、NewChangesAgent、AckAgent、Terminate类组成;机上应用程序管理单元107,手机设备厂商提供,用于管理Java Me移动应用程序的下载、解压、安装、删除、运行;显示单元108,用于将结果显示给用户。
如图3所示服务器端包括:
服务器端通信单元206,用于使该服务器与其他客户端或服务器进行通信;服务器端消解策略单元205,用于对树形式的消息中的冲突节点定义冲突解决策略;服务器端DOM操作单元204,用于对XML格式的树形结构的消息进行添加和修改操作,并对其他终端发送过来的消息进行解析;服务器端冲突消解单元203,用于调用服务器端DOM操作单元对XML消息进行处理,之后调用所述服务器端消解策略单元,按照事先定义的冲突消解策略来解决冲突;上述各单元与客户端组成基本一致,这里不再赘述。其中服务器端存储单元202,用于将消息存储在数据库中,并支持对数据库中消息的操作;由类FileOperation、DatabaseOperation组成;服务器端消息队列管理单元201,用于对服务器的消息进行管理,并控制服务器同其他终端之间进行收发消息,由类Start、Init、StartXMLTranslator、ThreadPool类组成。
所述中间件***的一个客户端作为消息的发送方,其客户端消息转换单元在收到用户利用该客户端项目管理单元编辑的消息后,将此消息转换成XML格式,然后利用客户端消解策略单元为可能会产生冲突的节点添加冲突解决策略,再通过客户端通信单元向外发送消息;由服务器端或者是另一个客户端接收消息,服务器端或者是另一个客户端的DOM操作单元对消息进行相关DOM操作,即接收方DOM操作单元对两个不同的树型结构的XML消息进行比较,产生diff树,以记录着由两个不同消息所产生的冲突;然后接收方中的冲突消解单元对冲突进行消解,产生一个没有冲突的新树,再将此树发送给发送方;如果此过程发生在两个移动客户端之间,则将结果存储于所述的客户端缓存单元中,并交由所述的显示单元显示;如果此过程发生在移动客户端与服务器之间,则服务器将此消息保存在服务器端存储单元的数据库中,并由所述的服务器端消息队列管理单元将此消息通过服务器端通信单元发送给所有订阅者。
另外,客户端缓存单元包括一个临时的消息队列,客户端将消息放到此消息队列中,由此消息队列主动按照该客户端通信单元所设定的协议来发送或接收消息,以防止在网络条件不好时,客户端阻塞等待;每个消息都附加一个发送结束符,当消息发送到结束符时,则认为消息发送成功,否则认为消息发送失败,重新发送此消息或进行后一步处理。在服务器消息队列管理单元包括一个线程池与工作队列,由工作队列对接收到的请求进行监听,然后按照优先级在线程池中取出一个线程与响应的终端进行通信,这样就可以使服务器在多线程的情况下同时与多个终端进行消息的通信;每个线程与终端通信时,都包含一个与客户端类似的消息队列,用于主动的发送或接收消息,只是并将接收到的消息不再保存于缓存中,而是保存在数据库中;当在给定时间内没收到确认信息时,服务器的处理方法是:对于持久的订阅者来说,如果终端断线,服务器将消息存储起来,当他再次连线时,服务器会将消息再次发给订阅者;对于非持久的订阅者来说,断线就意味着失败,服务器将此订阅信息删除,如果订阅者想继续接收消息,那么他需要再次发送订阅信息。发送方通过通信单元与接收方通信,由发送方先发送一个发现请求消息,如果接收方收到此消息,会返回给发送方一个确认码,则发送方将自己所存储消息的所有版本都发送给接收方;如果接收方没有收到发现请求消息或发送方没有收到确认码,则需要发送方重新发送发现请求消息给接收方。
结合图4说明本发明用于支持移动环境的消息中间件***设计的工作方法,具体如下:
首先由用户根据具体的应用,通过客户端项目管理单元100来编辑消息,并对配置信息进行相应设计,如希望与哪个终端进行通信,通信的方式及端口(步骤S301);
客户端通过客户端消息转换单元101将用户编辑的消息转换成XML格式的消息,将此消息存储于客户端缓存单元中102;之后将此消息继续转换成树的形式,然后根据具体的应用,通过客户端消解策略单元105为每个可能产生冲突的节点定义一个冲突解决策略,并通过客户端DOM操作单元104为这颗树添加一个节点,此节点记录着冲突解决策略;当发生冲突时,应用程序应该采取此节点定义的冲突解决策略来解决冲突(步骤S302);
当客户端A作为发送方通过客户端通信单元106与另一个终端B作为接收方开始通信,客户端A(发送方)先发送一个发现请求消息,如果B(接收方)收到此消息,会返回给A(发送方)一个确认码,说明此时A(发送方)与B(接收方)是可以进行通信的,A(发送方)将自己所存储消息的所有版本都发送给B(接收方);如果B(接收方)没有收到发现请求消息或A(发送方)没有收到确认码,则说明此时网络条件不良,则需要重新发送发现请求消息(步骤S303);
B(接收方)收到A(发送方)所存储消息的所有版本后,通过服务器端或者是另一个客户端的DOM操作单元104对这些消息进行解析,并与自己存储的消息进行比较,此时若A(发送方)与B(接收方)中有一方修改过消息,则比较时会发现冲突,B(接收方)将这些冲突记录下来(步骤S304);
B(接收方)根据步骤S302所定义的冲突节点的解决策略节点,通过服务器端或者是另一个客户端的消解策略单元调用事先定义好的消解策略,由服务器端或者是另一个客户端的冲突消解单元对冲突进行消解,并记录下解决冲突后的新消息(步骤S305);
若B(接收方)是移动客户端,则B(接收方)将此新消息通过客户端缓存单元102存储在缓存中,并将此新消息通过客户端通信单元返回给A(发送方),A(发送方)记录下这个解决冲突后的消息,并存储在缓存中,然后交由客户端显示单元108显示结果(步骤S306);
若B(接收方)是服务器,则B(接收方)通过服务器端消息队列管理单元201对消息进行一定处理,把消息包装成服务器可识别的消息,之后通过服务器端存储单元202将消息存储在数据库中步骤307);
步骤8然后服务器将更新过的消息通过服务器端通信单元206发送给所有订阅者,使得所有订阅者中的消息保持同步(步骤308)。
图5给出了本发明实施装置的流程图。该装置可划分为发起端与接收端,发起端是一台移动智能手机,接收端可以使一台移动智能手机,也可以是消息中间件服务器,发起端与接收端通过蓝牙、TCP/IP或者HTTP协议进行通讯连接。
为方便起见,图5中的判断条件都简写成标识符,其中X1表示“接收端是否为服务器”,X2表示“接收端是否接收到了发现请求消息”,X3表示“发起端是否收到确认码”,X4表示“是否接收到新消息发送成功的确认码”。如图3所示,本发明装置的具体步骤为:
1、如果用户通过移动智能手机想要与服务器进行通信连接(X1为真),则服务器需先进行一系列的初始化,包括使数据库与实时信息同步、设置工作队列与线程池。发起端订阅自己感兴趣的消息,或发布一些消息到服务器中。如果用户通过移动智能手机想要与另一手机进行通信连接(X1为假),则接收端与发起端一并进行消息的编辑,由程序将编辑好的消息转化成机器可识别的XML格式的消息。
2、接收端监听端口,看有没有输入流流入,发起端发送发现请求消息,若接收端接收到消息(X2为真),则返回一个接收到消息后的确认码,否则接收端一直处于监听端口的状态。同样,在发起端发送发现请求消息之后,一直处于监听端口的状态,直到接收到接收端换回的确认码为止(X3为真)。此处当发起端与接收端若超过一段时间还没有接收到消息,则认定当前网络不良,需要过一段时间再次执行此步骤。
3、发起端发送需进行数据共享的消息,接收端接收到消息后,与本地消息一并进行处理,找出两个不同消息所产生的冲突,并对这些冲突进行消解。之后将解决冲突后的新消息返回给发起端。此时两个终端会彼此发送新消息接收成功的确认码,如果超出预定时间没有接收到确认码(X4为假),则需要对程序进行回滚,从第2步重新开始执行。
4、如果成功接收到确认码(X4为真),则发起端须将新消息存储在缓存中,以便下次继续使用。同样地,若接收端是移动智能手机(X1为假),则接收端也需将新消息存储在缓存中。若接收端是服务器(X1为真),则需将新消息存储在数据库中,并由服务器通知其他订阅此消息的主机,数据已变动,使他们的数据与服务器中的数据保持同步。
[第一实施方式]
本发明的第一优选实施例以一个合作的电子购物***为例。一个家庭很多成员在网上购物,他们每人都有一个移动智能手机,他们独自选择所需的商品,并将所选择的商品记录在个人智能手机上,而最终付账时是共同交钱,所以要将个人买的商品“合并”在一起,再由其中一个智能手机进行网络支付。例如,成员A买了1瓶牛奶和2个苹果,成员B买了2瓶牛奶,他们独自的将这些信息记录在个人智能手机上,当他们想要支付时,他们先将这些商品通过手机“合并”在一起,程序合并两个手机中的消息,结果为3瓶牛奶和2个苹果,然后由A进行最终的网络支付。该程序主要由Merchandise,Milk,Apple,Parser,ClientPanel,UploadToPay类组成,本实例实施目的是检查在目标机型SonyEricsson K700C上数据数据共享的执行结果是否正确。具体的实施步骤如下:
1、用户A与B分别在客户端项目管理单元100的向导面板下编辑消息,A编辑消息1 milk and 2 apple,B编辑消息2milk,然后设置对方为通信的对象,并设置通信协议为蓝牙,之后提交消息,用户可以去忙别的事,如打电话,发短信等,无需等待。
2、程序接收到消息后,使用客户端消息转换单元101对消息进行解析,解析完的结果是{milk:1,apple:2}及{milk:2},之后将消息转换成XML格式的消息,根节点为basket,A的消息为<basket><order><product>milk</product><quantity><howmuch>1</howmuch></quantity></order><order><product>apple</product><quantity><howmuch>2</howmuch></quantity></order></basket>,B的消息为<basket><order><product>milk</product><quantity><howmuch>2</howmuch></quantity></order></basket>,他们都将消息存储在缓存中。之后通过客户端消解策略单元105为quantity节点定义一个冲突解决策略add,意味着当quantity节点产生冲突时,***应该将采取相加的策略来解决冲突。之后通过客户端DOM操作单元104为每个quantity节点添加一个节点add,用于显示的标注冲突解决策略。
3、客户端A通过客户端通信单元106与另一个终端B开始进行通信连接,本地主机A先发送一个“发现请求”消息<DiscoveryRequest/>,当网络条件较好时,B会接收到此消息,并返回给A一个确认码<ConnectAgent/>,A将自己所存储消息发送给B;当网络条件不好或设备出现硬件故障时,B不会接收到发现请求消息或者A不会接收到确认码,则需要对硬件进行处理或间隔一段时间再次重新进行通信连接。
4、B收到A的消息后,通过客户端DOM操作单元104对这些消息进行解析,并与自己存储的消息进行比较,B会发现两个消息是不同的,此时就产生了冲突,冲突为:B的milk的数量是2,A的milk数量是1,并且B比A少了2个apple。B将这些冲突记录下来。
5、B在客户端冲突消解单元103对冲突进行消解。先解决前半部分冲突,根据quantity节点所定义的解决策略节点add,对milk的数量进行相加,为2+1=3。然后解决后半部分冲突,因为B比A少2个apple,所以将A的apple分支整体复制到B的消息下。最终冲突消解后的内容为3个milk及2个apple,为<basket><order><product>milk</product><quantity><howmuch>1</howmuch></quantity></order><order><product>apple</product><quantity><howmuch>2</howmuch></quantity></order></basket>。
6、B将此新消息通过客户端缓存单元102存储在缓存中,以便用于之后的网上支付或再次与其他终端进行数据共享,并将此新消息通过客户端通信单元106返回给A,A记录下这个解决冲突后的消息,并存储在缓存中。***通过显示单元108分别将结果显示给两个用户。
7、A将最终结果3个milk及2个apple经由网络上传到网上,进行网上支付。
[第二实施方式]
本发明的第二优选实施例以股票交易***为例。用户首先通过移动智能手机与消息服务器相连,并通过在手机设备上对股票进行买卖操作,买卖结果通知服务器,服务器对此进行进一步处理。当此股票出现一些重大变更,如涨停、跌停、或分红等,用户还可以收到来自服务器的通知,以便用户对此变更进行及时的处理。该程序主要由ClientPanel,StockOperation,Subscribe,SendToClient类组成,本实例的实施目的是检查在目标机型SonyEricsson K700C上整个股票交易***完成的情况,是否可以实现数据共享,当用户订阅的股票出现一些重大变更时是否可以及时收到服务器的通知。具体实施步骤如下:
1、首先对服务器进行初始化,设置工作队列及线程池,并与实时股票结合起来,服务器管理者将股票信息录入到服务器中。当股票信息发送改变时,服务器中的股票信息会及时做出相应改变。
2、用户通过项客户端目管理单元100的向导面板向服务器订阅自己感兴趣的股票,服务器将这些股票的信息通过服务器端通信单元206返回给用户,用户可以在向导面板查看股票信息,当股票信息发生改变时,服务器会实时的通知用户,以便用户进一步对股票进行操作。
3、当用户想要在手机端对股票进一步操作时,如用户已有a股票200股,在价格不变的情况下再次买进100股,用户通过客户端项目管理单元100的向导面板来编辑相应的股票信息buy 100 for a,选择HTTP方式与服务器进行通信,之后提交消息。
4、程序接收到消息后,使用客户端消息转换单元101对消息进行解析,解析完的结果是{<a,100,buy>},之后将消息转换成XML格式的消息,根节点为stock,,转换结果为<stock><order><ID>a</ID><quantity><howmuch>100</howmuch></quantity><style>buy</style></order></stock>,之后通过客户端消解策略单元105为quantity节点定义一个冲突解决策略add,意味着当服务器中储存的用户原有的股票数量与现在新购买的股票数量发生冲突时,程序会采取对数量相加的方式来解决冲突。之后通过客户端DOM操作单元104为每个quantity节点添加一个节点add,用于显示的标注冲突解决策略。
5、用户使用手机通过客户端通信单元106与服务器开始进行通信连接,手机端先发送一个“发现请求”消息<DiscoveryRequest/>,当网络条件较好时,服务器会接收到此消息,并返回给手机一个确认码<ConnectAgent/>,手机端将自己所存储消息发送给服务器;当网络条件不好或设备出现硬件故障时,服务器不会接收到发现请求消息,或者手机端不会接收到确认码,则此时需要对硬件进行处理或间隔一段时间再次重新进行通信连接。
6、服务器收到用户消息后,通过服务器端DOM操作单元204对这些消息进行解析,并与存储在数据库中的消息进行比较,服务器会发现两个消息是不同的,此时就产生了冲突,冲突为:服务器中用户所买的a股票的数量是200,用户新提交的a股票的数量是100。B将这些冲突记录下来。
7、B在服务器端冲突消解单元203对冲突进行消解。根据quantity节点所定义的解决策略节点add,对a的数量进行相加,为200+100=300。最终冲突消解后的内容为300股a股票,为<stock><order><ID>a</ID><quantity><howmuch>300</howmuch></quantity></order></stock>。
8、服务器通过服务器端消息队列管理单元201对消息进行一定处理,把消息包装成服务器可识别的消息,之后通过服务器端存储单元202将消息存储在数据库中。
9、如果服务器收到此a股票分红或涨停等新消息后,服务器将更新过的消息通过服务器端通信单元206发送给订阅此a股票的所有订阅者,以便用户可以及时的对股票进行实时处理。
运用本发明所提供的方法,可以实现在不经过服务器的情况下,支持客户端之间的数据共享。本发明允许客户端在他们连接的时候共享数据,并在他们重新取得连接时,对他们断开连接时进行离线的数据操作所导致的冲突进行冲突消解。本发明还支持在手机设备与服务器之间的采用数据共享式的通信,允许用户对自己已经发布的信息作出修改,并订阅相应信息,服务器会在用户订阅的信息作出改变通知用户。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (5)
1.一种在手机设备上进行数据共享的中间件***,其特征在于该***应用于至少一个服务器端和两个以上运行于手机设备的客户端组成的***中;
所述客户端包括:
客户端项目管理单元,用于用户编辑消息,配置通信对象以及通信方式参数;
客户端消息转换单元,用于将用户编辑的消息转换成XML格式的消息,并将此消息继续转换成树的形式;
客户端缓存单元,用于存储用户本地的数据,使用户可以离线的对数据进行操作修改,并将客户端经常访问的服务器端的数据存储在本地;
客户端通信单元,用于使用户同其他客户端或服务器进行通信;
客户端DOM操作单元,用于对XML格式的树形结构的消息进行添加和修改操作,并对其他客户端发送过来的消息进行解析;
客户端消解策略单元,用于对客户端消息转换单元转换成树形式的消息中的冲突节点定义冲突解决策略;
客户端冲突消解单元,用于调用客户端DOM操作单元对XML消息进行处理,之后调用所述客户端消解策略单元,按照事先定义的冲突消解策略来解决冲突;
显示单元,用于将结果显示给用户;
服务器端具有:
服务器端消息队列管理单元,用于对服务器的消息进行管理,并控制服务器同其他客户端之间进行收发消息;
服务器端存储单元,用于将消息存储在数据库中;
服务器端通信单元,用于使该服务器与其他客户端或服务器进行通信;
服务器端消解策略单元,用于对树形式的消息中的冲突节点定义冲突解决策略;
服务器端DOM操作单元,用于对XML格式的树形结构的消息进行添加和修改操作,并对其他客户端发送过来的消息进行解析;
服务器端冲突消解单元,用于调用服务器端DOM操作单元对XML消息进行处理,之后调用所述服务器端消解策略单元,按照事先定义的冲突消解策略来解决冲突;
所述中间件***的一个客户端作为消息的发送方,其客户端消息转换单元在收到用户利用该客户端项目管理单元编辑的消息后,将此消息转换成XML格式,然后利用客户端消解策略单元为可能会产生冲突的节点添加冲突解决策略,再通过客户端通信单元向外发送消息;由服务器端或者是另一个客户端接收消息,服务器端或者是另一个客户端的DOM操作单元对消息进行相关DOM操作,即接收方DOM操作单元对两个不同的树型结构的XML消息进行比较,产生diff树,以记录着由两个不同消息所产生的冲突;然后接收方中的冲突消解单元对冲突进行消解,产生一个没有冲突的新树,再将此树发送给发送方;如果此过程发生在两个移动客户端之间,则将结果存储于所述的客户端缓存单元中,并交由所述的显示单元显示;如果此过程发生在移动客户端与服务器之间,则服务器将此消息保存在服务器端存储单元的数据库中,并由所述的服务器端消息队列管理单元将此消息通过服务器端通信单元发送给所有订阅者。
2.根据权利要求1所述的在手机设备上进行数据共享的中间件***,其特征在于所述的客户端缓存单元包括一个临时的消息队列,客户端将消息放到此消息队列中,由此消息队列主动按照该客户端通信单元所设定的协议来发送或接收消息;每个消息都附加一个发送结束符,当消息发送到结束符时,则认为消息发送成功,否则认为消息发送失败,重新发送此消息或进行后一步处理。
3.根据权利要求1所述的在手机设备上进行数据共享的中间件***,其特征在于所述的服务器消息队列管理单元包括一个线程池与工作队列,由工作队列对接收到的请求进行监听,然后按照优先级在线程池中取出一个线程与响应的客户端进行通信;每个线程与客户端通信时,都包含一个消息队列,用于主动的发送或接收消息,并将接收到的消息保存在数据库中;当在给定时间内没收到确认信息时,服务器的处理方法是:对于持久的订阅者来说,如果客户端断线,服务器将消息存储起来,当他再次连线时,服务器会将消息再次发给订阅者;对于非持久的订阅者来说,断线就意味着失败,服务器将此订阅信息删除,如果订阅者想继续接收消息,那么他需要再次发送订阅信息。
4.根据权利要求1所述的在手机设备上进行数据共享的中间件***,其特征在于所述发送方通过通信单元与接收方通信,由发送方先发送一个发现请求消息,如果接收方收到此消息,会返回给发送方一个确认码,则发送方将自己所存储消息的所有版本都发送给接收方;如果接收方没有收到发现请求消息或发送方没有收到确认码,则需要发送方重新发送发现请求消息给接收方。
5.一种如权利要求1至4任一所述的在手机设备上进行数据共享的中间件***的工作方法,其特征在于包括如下步骤:
步骤1:由用户根据具体的应用,通过客户端项目管理单元来编辑消息,并对配置信息进行相应设计;
步骤2:客户端通过客户端消息转换单元将用户编辑的消息转换成XML格式的消息,将此消息存储于客户端缓存单元中;之后将此消息继续转换成树的形式,然后根据具体的应用,通过客户端消解策略单元为每个可能产生冲突的节点定义一个冲突解决策略,并通过客户端DOM操作单元为这颗树添加一个节点,此节点记录着冲突解决策略;当发生冲突时,应用程序应该采取此节点定义的冲突解决策略来解决冲突;
步骤3:当客户端作为发送方通过客户端通信单元与另一个客户端作为接收方开始通信,发送方先发送一个发现请求消息,如果接收方收到此消息,会返回给发送方一个确认码,说明此时发送方与接收方是可以进行通信的,发送方将自己所存储消息的所有版本都发送给接收方;如果接收方没有收到发现请求消息或发送方没有收到确认码,则需要重新发送发现请求消息;
步骤4:接收方收到发送方所存储消息的所有版本后,通过服务器端或者是另一个客户端的DOM操作单元对这些消息进行解析,并与自己存储的消息进行比较,此时若发送方与接收方中有一方修改过消息,则比较时会发现冲突,接收方将这些冲突记录下来;
步骤5:接收方根据步骤2所定义的冲突节点的解决策略节点,通过服务器端或者是另一个客户端的消解策略单元调用事先定义好的消解策略,由服务器端或者是另一个客户端的冲突消解单元对冲突进行消解,并记录下解决冲突后的新消息;
步骤6:若接收方是移动客户端,则接收方将此新消息通过客户端缓存单元存储在缓存中,并将此新消息通过客户端通信单元返回给发送方,发送方记录下这个解决冲突后的消息,并存储在缓存中,然后交由客户端显示单元显示结果;若接收方是服务器,则接收方通过服务器端消息队列管理单元对消息进行一定处理,把消息包装成服务器可识别的消息,之后通过服务器端存储单元将消息存储在数据库中,之后服务器将更新过的消息通过服务器端通信单元发送给所有订阅者,使得所有订阅者中的消息保持同步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010202939 CN101917394B (zh) | 2010-06-13 | 2010-06-13 | 在手机设备上进行数据共享的中间件***及工作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010202939 CN101917394B (zh) | 2010-06-13 | 2010-06-13 | 在手机设备上进行数据共享的中间件***及工作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101917394A CN101917394A (zh) | 2010-12-15 |
CN101917394B true CN101917394B (zh) | 2013-03-20 |
Family
ID=43324780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010202939 Expired - Fee Related CN101917394B (zh) | 2010-06-13 | 2010-06-13 | 在手机设备上进行数据共享的中间件***及工作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101917394B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262668A (zh) * | 2011-07-28 | 2011-11-30 | 南京中兴新软件有限责任公司 | 分布式文件***文件读写方法、分布式文件***及其装置 |
CN108243174B (zh) * | 2016-12-27 | 2020-10-30 | 北京新唐思创教育科技有限公司 | 在线直播互动***及方法 |
CN108898356A (zh) * | 2018-06-12 | 2018-11-27 | 北京仿真中心 | 一种跨单位试验数据团队共享*** |
CN108881492B (zh) * | 2018-08-08 | 2020-03-31 | 百卓网络科技有限公司 | 一种解决消息处理顺序及疏导消息处理的方法 |
CN109286671A (zh) * | 2018-09-29 | 2019-01-29 | 青岛海尔科技有限公司 | 物联网环境下订阅通知处理方法、装置、存储介质及设备 |
CN109743142A (zh) * | 2018-09-30 | 2019-05-10 | 比亚迪股份有限公司 | 消息通信方法及装置 |
CN111130999B (zh) * | 2019-12-23 | 2021-08-31 | 飞天诚信科技股份有限公司 | 一种适用于分布式消息传输的方法及总线适配器 |
CN112987915B (zh) * | 2021-02-04 | 2022-10-11 | 复旦大学 | 基于ast的应用于vr会议协同白板编辑任务的方法 |
CN113434522B (zh) * | 2021-05-08 | 2023-06-09 | 华东师范大学 | 一种面向联盟链的状态树上的并行更新方法及更新*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101521899A (zh) * | 2009-03-31 | 2009-09-02 | 大连海事大学 | 用于移动应用程序的机上测试***和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4554637B2 (ja) * | 2007-03-28 | 2010-09-29 | 日本電信電話株式会社 | マルチリンク通信システム、マルチリンク通信方法、マルチリンク通信装置、マルチリンク通信システム管理方法、及びマルチリンク通信基地局 |
-
2010
- 2010-06-13 CN CN 201010202939 patent/CN101917394B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101521899A (zh) * | 2009-03-31 | 2009-09-02 | 大连海事大学 | 用于移动应用程序的机上测试***和方法 |
Non-Patent Citations (1)
Title |
---|
JP特开2008-245031A 2008.10.09 |
Also Published As
Publication number | Publication date |
---|---|
CN101917394A (zh) | 2010-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101917394B (zh) | 在手机设备上进行数据共享的中间件***及工作方法 | |
CN112788074B (zh) | 数据发送方法、处理方法、接收方法及其设备、存储介质 | |
CN105337923B (zh) | 数据分发方法和***及数据发送装置和数据接收装置 | |
CA2367800C (en) | Communication architecture for distributed computing environment | |
CN114363407B (zh) | 消息服务方法及装置、可读存储介质及电子设备 | |
CN104579905A (zh) | 消息传递方法和***及mom服务器、接收端 | |
US20180324259A1 (en) | Client connection method and system | |
US8505030B2 (en) | Coordinating resources using a volatile network intermediary | |
CN110062004A (zh) | 一种基于物联网协议的报文处理***及方法 | |
CN102474425A (zh) | 对于具有多播能力的路由器上的轻主机管理协议的方法和装置 | |
JPH10254968A (ja) | ポイント管理システム | |
CN109391482A (zh) | 网络功能的升级方法及升级管理实体 | |
CN101562804A (zh) | 一种基于移动p2p的区域管理服务器***及其调度方法 | |
CN201854301U (zh) | 在手机设备上进行数据共享的中间件*** | |
CN105553682A (zh) | 事件通知方法及用于事件通知的*** | |
CN113626002A (zh) | 一种服务执行方法及装置 | |
CN109286671A (zh) | 物联网环境下订阅通知处理方法、装置、存储介质及设备 | |
CN110532066A (zh) | 一种事务一致性的实现方法及*** | |
CN114285695B (zh) | 通信方法、装置、设备、***和存储介质 | |
CN116319732A (zh) | 一种基于RabbitMQ的消息队列集中配置管理***及方法 | |
CN101213521A (zh) | 用于多主体***的基于中介的恢复机制 | |
CN107566436A (zh) | 页面消息中心组件及消息实时推送方法和装置 | |
CN101924815A (zh) | 3g moa 手机中间件嵌入式*** | |
CN110619579B (zh) | 极速报盘方法、装置及计算机可读存储介质 | |
CN115361382B (zh) | 基于数据群组的数据处理方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130320 Termination date: 20130613 |