CN101739297B - 普适服务动态更新中服务对象状态转移系统及其方法 - Google Patents
普适服务动态更新中服务对象状态转移系统及其方法 Download PDFInfo
- Publication number
- CN101739297B CN101739297B CN201010300513A CN201010300513A CN101739297B CN 101739297 B CN101739297 B CN 101739297B CN 201010300513 A CN201010300513 A CN 201010300513A CN 201010300513 A CN201010300513 A CN 201010300513A CN 101739297 B CN101739297 B CN 101739297B
- Authority
- CN
- China
- Prior art keywords
- state
- service
- service object
- submodule
- pervasive
- 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
- Stored Programmes (AREA)
Abstract
一种计算机应用技术领域的普适服务动态更新中服务对象状态转移系统及其方法,该系统包括:对象代理管理模块和对象状态转换模块,其中:对象代理管理模块包括:普适环境监听子模块、服务对象代理管理子模块和服务对象引用查询接口子模块,对象状态转换模块包括:对象状态提取子模块、对象状态注入子模块和对象状态转移执行子模块;该方法包括:服务注册监听、触发更新事件、提取旧服务对象源状态、注入目的状态到新服务对象。本发明占用的时间和空间小,性能高,且能解决包括普通成员、数组、列表、哈希表在内的一切状态形式的状态转移问题,因此本发明的适应性很广。
Description
技术领域
本发明涉及的是一种计算机应用技术领域的系统及其方法,具体是一种普适服务动态更新中服务对象状态转移系统及其方法。
背景技术
随着计算机应用的不断扩大,人们意识到计算机将深入人们的生活,充满生活的各个角落,并以人们任意希望的形式存在。于是普适计算的概念诞生了。普适计算将软件的功能拆分成一个个服务,并可以部署在不同的地方。这些服务可以在不同的环境下独立开发和编译,并通过合适的组装方式来搭建实际的应用系统,由此使服务得以重用和共享,其使用寿命也不再像传统代码模块一样受限于某个应用程序。由于生存周期的延长,普适服务在其服役期间将可能需要得到更新,以便改进实现、提供新的功能、纠正设计错误及适应运行时环境的变化等。更为重要的是,在一些任务关键型应用领域,诸如金融数据处理系统、空中交通控制系统、航天探测器控制软件、网格和自治计算系统等,由于具有比较高的可用性需求,软件组件的更新必须在运行时完成而不导致系统的中断,也就是需要进行动态更新。动态更新将用服务运行时服务的新版本来取代旧版本,而服务的运行时实例是通过某些服务对象来实现的。因此,普适服务动态更新将被具体化为普适服务对象的动态更新。
通常,普适环境中的服务会以组件的形式被封装,普适服务和普适服务之间会存在各种各样的依赖关系,旧版本的普适服务对象的状态很可能依然需要被其它的普适服务所引用,因此在把旧版本的普适服务对象从普适环境中移出之前,为了保证更新前后系统状态的一致性,必须将旧版本普适服务对象的状态转移到新版本的普适服务对象上。
经对现有技术文献的检索发现,Alessandro Orso等人在2002年的《18th IEEEInternational Conference on Software Maintenance(第18届IEEE国际软件维护会议)》论文集第649页撰文“A Technique for Dynamic Updating of Java Software(一种动态更新Java软件的技术)”,该文详细阐述了一种基于代理模式进行软件动态更新时转移服务对象状态的方法和实现Java软件动态更新系统DUSC(Dynamic Updating through Swapping ofClasses,通过交换类的动态更新系统)。该方法通过将软件运行时的每个对象的接口、执行以及状态分离的方法,解决了服务对象的状态迁移问题,该DUSC系统通过实现上述提到的基于代理模式进行软件动态更新时转移服务对象状态的方法对Java软件进行动态更新。但是该技术需要为系统中的每个对象都生成3个额外的辅助对象,生成这些对象需要计算机投入大量的运算时间和内存空间,因此该方法大幅增加了软件的时间和空间消耗,可用性较低,与未使用该动态更新方法相比较,运行时间平均要提高1.13%,内存使用平均要提高6.36%。
发明内容
本发明针对现有技术存在的上述不足,提供了一种普适服务动态更新中服务对象状态转移系统及其方法,使得在软件动态更新转移组件服务对象状态时,可以大大减少额外的软件时间和空间消耗,具有较高可用性。
本发明是通过以下技术方案实现的:
本发明涉及的普适服务动态更新中服务对象状态转移系统,包括:对象代理管理模块和对象状态转换模块,其中:对象代理管理模块与对象状态转换模块相连传输服务对象的引用信息。
所述的对象代理管理模块监听普适环境中服务的注册和请求事件,并向对象状态转换模块提供其所需的服务对象的引用信息,该模块包括:普适环境监听子模块、服务对象代理管理子模块和服务对象引用查询接口子模块,其中:普适环境监听子模块和服务对象代理管理子模块相连传输服务对象的注册和请求信息,服务对象代理管理子模块和服务对象引用查询接口子模块相连传输实际的服务对象执行请求信息,服务对象引用查询接口子模块与对象状态转换模块相连传输服务对象的引用信息。
所述的对象状态转换模块负责在服务对象状态转移时,从旧版本的普适服务对象中提取状态,并将其注入到新版本的普适服务对象中,该模块包括:对象状态提取子模块、对象状态注入子模块和对象状态转移执行子模块,其中:对象状态提取子模块和对象状态注入子模块分别与对象代理管理模块相连传输服务对象的引用信息,对象状态提取子模块和对象状态转移执行子模块相连传输源服务对象状态的路径和服务对象状态信息,对象状态注入子模块与对象状态转移执行子模块相连传输目标服务对象状态的路径和服务对象状态信息。
本发明涉及的上述普适服务动态更新中服务对象状态转移系统的转移方法,包括以下步骤:
步骤一,服务注册监听:当普适环境中有新的组件服务对象被注册时,对象代理管理模块将为该普适服务对象生成一个代理对象,并将代理对象的引用返回给普适服务的使用者。
步骤二,触发更新事件:当普适服务的管理员对普适服务进行更新时,触发一个更新事件,该更新事件包括:新版本的普适服务和状态转移规则。
所述的状态转移规则是新旧版本普适服务对象之间的状态对应规则。
步骤三,提取旧服务对象源状态:当普适服务动态更新开始执行时,对象状态转换模块根据状态转换规则,从旧版本中的普适服务对象中将普适服务对象的源状态提取出来。
所述的提取是利用状态转移规则中对象路径所描述的源状态位置。
步骤四,注入目的状态到新服务对象:对象状态转换模块根据状态转换规则,将旧版本服务对象的源状态注入到新版本的普适服务对象的目标位置中。
所述的目标位置是通过新版本普适服务对象的状态路径描述的。
步骤五,依次重复步骤三和步骤四,实现普适服务动态更新中所有服务对象状态的转移。
与现有技术相比,本发明的有益效果是:
1)占用的时间和空间小,性能高:由于使用了对象路径描述了普适服务对象的状态位置,因此可以从普适服务对象出发获取及注入所有的状态,且只需对普适服务对象建立代理对象,而无需对其他的对象建立代理对象,使得普适服务在注册时所需执行的预处理工作大大减少;因为在普适环境中,普适服务对象的数量仅占所有对象中的很小一部分,从而使生成这些代理对象需要投入的运算时间和内存空间大大减小,性能较高。
2)适应性广:能解决包括普通成员、数组、列表、哈希表在内的一切状态形式的状态转移问题,因此本发明的适应性很广。
附图说明
图1是本发明系统组成框图;
图2为实施例中新旧版本普适服务对象状态图。
具体实施方式
以下结合附图对本发明的实施例进一步描述:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
实施例
如图1所示,本实施涉及的普适服务动态更新中服务对象状态转移系统,包括:对象代理管理模块和对象状态转换模块,其中:对象代理管理模块与对象状态转换模块相连传输服务对象信息。
所述的对象代理管理模块的作用是:监听普适环境中服务的注册和请求事件,并为新注册的普适服务对象生成代理对象,代理对象将持有被注册的普适服务对象的引用,所有对该普适服务对象的服务调用也将通过对象代理管理模块执行,对象代理管理模块向对象状态转换模块提供其所需的服务对象的引用信息。该对象代理管理模块包括:普适环境监听子模块、服务对象代理管理子模块和服务对象引用查询接口子模块,其中:普适环境监听子模块和服务对象代理管理子模块相连传输服务对象的注册和请求信息,普适环境监听子模块将侦听得到的注册事件传输给服务对象代理管理子模块后,服务对象代理管理子模块会为新注册的服务对象生成代理对象,而普适环境监听子模块将侦听得到的请求事件传输给服务对象代理管理子模块后,服务对象代理管理子模块会根据请求的代理对象调用代理对象所指向的实际服务对象执行请求;服务对象代理管理子模块和服务对象引用查询接口子模块相连传输实际的服务对象的引用信息,当对象状态转换模块希望从服务对象引用查询接口子模块获取某个服务对象的引用信息时,服务对象引用查询接口子模块从服务对象代理管理子模块收集引用信息。
所述的对象状态转换模块的作用是:负责在服务对象状态转移时,从旧版本的普适服务对象中提取状态,并将其注入到新版本的普适服务对象中。由于组件中所有对象都是为注册的普适服务提供支持的,因此普适服务对象的状态就是这些组件中的对象,从普适服务对象出发,通过成员对象的引用链访问到该对象的所有状态。该模块提供了一套基于对象路径的状态描述机制和状态访问方法,使得服务开发人员能通过该状态描述方法访问普适服务的每一个状态,再从旧版本的普适服务对象中获取状态并注入到新版本的普适服务对象中去,完成整个普适服务对象的状态转移工作。该对象状态转换模块包括:对象状态提取子模块、对象状态注入子模块和对象状态转移执行子模块,其中:对象状态提取子模块和对象状态转移执行子模块相连传输源服务对象状态的路径和服务对象状态信息,对象状态转移执行子模块向对象状态提取子模块提供源服务对象状态的路径,对象状态定位子模块根据源服务对象状态的路径,从旧版本的服务对象中将该路径对应的服务对象状态提取出来传递给对象状态转移执行子模块;对象状态注入子模块和对象状态转移执行子模块相连传输目标服务对象状态的路径和服务对象状态信息,对象状态转移执行子模块向对象状态注入子模块提供目标服务对象状态的路径和服务对象状态,对象状态注入子模块向新版本的服务对象中该路径注入该服务对象状态。在状态的提取和注入过程中,对象状态提取子模块和对象状态注入子模块分别与对象代理管理模块的服务对象引用查询接口子模块相连传输服务对象的引用信息。
如图2,本实施例涉及的上述普适服务动态更新中服务对象状态转移系统的转移方法,用于将图2中的旧版本普适服务对象ro的状态转移到新版本普适服务对象rn上去。该普适服务的作用是绘制平面上的一系列点的序列,其状态包括点的数量和点的坐标。在旧版本服务对象中,所有点的x坐标被保存在一个叫x的数组中,所有点的y坐标被保存在一个叫y的数组中,点的数量被保存在一个叫count的变量中;在新版本服务对象中,这些状态的表现形式发生了改变,所有点的坐标被保存在一个叫points的数组中,points数组中的每个元素表示一个点,每个点有2个域,即x和y,其中:x保存点的x坐标,y保存点的y坐标,点的数量依然被保存在一个叫count的变量中,具体包括以下步骤:
步骤一,服务注册监听:当普适环境中有新的组件服务对象被注册时,对象代理管理模块将为该普适服务对象生成一个代理对象,并将代理对象的引用返回给普适服务的使用者。
本实施例中在ro和rn被注册到普适环境中时,对象代理管理模块将为ro生成一个代理对象rop,对象代理管理模块将为rn生成一个代理对象rnp,rop持有ro的引用,rnp持有rn的引用,其它服务者通过rop使用ro提供的服务。
所述的普适服务对象,是指实现了普适服务对普适环境约定的服务接口的对象,它能完成服务接口所指定的任务。
所述的代理对象,是指与指定普适服务对象拥有相同接口的代理对象。
步骤二,触发更新事件:当普适服务的管理员对普适服务进行更新时,触发一个更新事件,该更新事件包括:新版本的普适服务和新旧版本普适服务对象之间的状态转移规则。
本实施例当ro的管理员希望将ro动态更新成rn时,该管理员将触发一个更新事件,并提供一个状态转移规则,该状态转移规则具体为:
ro.count->rn.count
ro.x->rn.points.x
ro.y->rn.points.y
步骤三,提取旧服务对象源状态:当普适服务动态更新开始执行时,对象状态转换模块根据状态转换规则,从旧版本中的普适服务对象中将普适服务对象的源状态提取出来。
所述的提取是利用状态转移规则中对象路径所描述的源状态位置。
本实施例从状态转移规则获取一条规则:ro.count->rn.count,对象状态转换模块通过ro.count这条对象路径,获取ro的状态值。
步骤四,注入目的状态到新服务对象:对象状态转换模块根据状态转换规则,将旧版本服务对象的源状态注入到新版本的普适服务对象的目标位置中。
本实施例通过上述对应规则中的rn.count对象路径,将ro的状态值通过对象状态转换模块定位的目标状态注入rn的目标位置中。
第五步,依次重复第三步和第四步,分别完成ro.x->rn.points.x和ro.y->rn.points.y这两条规则的执行,从而实现普适服务对象的状态转移。
通过测试得知:本实施例与未使用该动态更新方法相比较,运行时间平均仅提高0.12%,内存使用平均仅提高0.23%,性能与Alessandro Orso等人的方法和系统相比有显著提高,并且适应性广,能解决包括普通成员、数组、列表、哈希表在内的一切状态形式的状态转移问题。
Claims (5)
1.一种普适服务动态更新中服务对象状态转移系统,其特征在于,包括:对象代理管理模块和对象状态转换模块,其中:对象代理管理模块与对象状态转换模块相连传输服务对象的引用信息;
所述的对象代理管理模块监听普适环境中服务的注册和请求事件,并向对象状态转换模块提供其所需的服务对象的引用信息,代理对象将持有被注册的普适服务对象的引用,所有对该普适服务对象的服务调用也将通过对象代理管理模块执行,对象代理管理模块向对象状态转换模块提供其所需的服务对象的引用信息;所述的对象代理管理模块包括:普适环境监听子模块、服务对象代理管理子模块和服务对象引用查询接口子模块,其中:普适环境监听子模块和服务对象代理管理子模块相连传输服务对象的注册和请求信息,普适环境监听子模块将侦听得到的注册事件传输给服务对象代理管理子模块后,服务对象代理管理子模块会为新注册的服务对象生成代理对象,而普适环境监听子模块将侦听得到的请求事件传输给服务对象代理管理子模块后,服务对象代理管理子模块会根据请求的代理对象调用代理对象所指向的实际服务对象执行请求;服务对象代理管理子模块和服务对象引用查询接口子模块相连传输实际的服务对象的引用信息,当对象状态转换模块希望从服务对象引用查询接口子模块获取某个服务对象的引用信息时,服务对象引用查询接口子模块从服务对象代理管理子模块收集引用信息,服务对象引用查询接口子模块与对象状态转换模块相连传输服务对象的引用信息;
所述的对象状态转换模块负责在服务对象状态转移时,从旧版本的普适服务对象中提取状态,并将其注入到新版本的普适服务对象中,由于组件中所有对象都是为注册的普适服务提供支持的,因此普适服务对象的状态就是这些组件中的对象,从普适服务对象出发,通过成员对象的引用链访问到该对象的所有状态,所述的对象状态转换模块提供了一套基于对象路径的状态描述机制和状态访问方法,使得服务开发人员能通过该状态描述方法访问普适服务的每一个状态,再从旧版本的普适服务对象中获取状态并注入到新版本的普适服务对象中去,完成整个普适服务对象的状态转移工作;所述的对象状态转换模块包括:对象状态提取子模块、对象状态注入子模块和对象状态转移执行子模块,其中:对象状态提取子模块和对象状态注入子模块分别与对象代理管理模块相连传输服务对象的引用信息,对象状态提取子模块和对象状态转移执行子模块相连传输源服务对象状态的路径和服务对象状态信息,对象状态转移执行子模块向对象状态提取子模块提供源服务对象状态的路径,对象状态定位子模块根据源服务对象状态的路径,从旧版本的服务对象中将该路径对应的服务对象状态提取出来传递给对象状态转移执行子模块;对象状态注入子模块和对象状态转移执行子模块相连传输目标服务对象状态的路径和服务对象状态信息,对象状态转移执行子模块向对象状态注入子模块提供目标服务对象状态的路径和服务对象状态,对象状态注入子模块向新版本的服务对象中该路径注入该服务对象状态;在状态的提取和注入过程中,对象状态提取子模块和对象状态注入子模块分别与对象代理管理模块的服务对象引用查询接口子模块相连传输服务对象的引用信息。
2.一种根据权利要求l所述的普适服务动态更新中服务对象状态转移系统的转移方法,其特征在于,包括以下步骤:
步骤一,服务注册监听:当普适环境中有新的组件服务对象被注册时,对象代理管理模块将为该普适服务对象生成一个代理对象,并将代理对象的引用返回给普适服务的使用者;
步骤二,触发更新事件:当普适服务的管理员对普适服务进行更新时,触发一个更新事件,该更新事件包括:新版本的普适服务和状态转移规则;
步骤三,提取旧服务对象源状态:当普适服务动态更新开始执行时,对象状态转换模块根据状态转换规则,从旧版本中的普适服务对象中将普适服务对象的源状态提取出来;
步骤四,注入目的状态到新服务对象:对象状态转换模块根据状态转换规则,将旧版本服务对象的源状态注入到新版本的普适服务对象的目标位置中;
步骤五,依次重复步骤三和步骤四,实现普适服务动态更新中所有服务对象状态的转移。
3.根据权利要求2所述的普适服务动态更新中服务对象状态转移方法,其特征是,步骤二中所述的状态转移规则是新旧版本普适服务对象之间的状态对应规则。
4.根据权利要求2所述的普适服务动态更新中服务对象状态转移方法,其特征是,步骤二中所述的提取是利用状态转移规则中对象路径所描述的源状态位置。
5.根据权利要求2所述的普适服务动态更新中服务对象状态转移方法,其特征是,步骤四中所述的目标位置是通过新版本普适服务对象的状态路径描述的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010300513A CN101739297B (zh) | 2010-01-21 | 2010-01-21 | 普适服务动态更新中服务对象状态转移系统及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010300513A CN101739297B (zh) | 2010-01-21 | 2010-01-21 | 普适服务动态更新中服务对象状态转移系统及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101739297A CN101739297A (zh) | 2010-06-16 |
CN101739297B true CN101739297B (zh) | 2012-10-03 |
Family
ID=42462816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010300513A Expired - Fee Related CN101739297B (zh) | 2010-01-21 | 2010-01-21 | 普适服务动态更新中服务对象状态转移系统及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101739297B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101383540B1 (ko) | 2007-01-03 | 2014-04-09 | 삼성전자주식회사 | 복수의 움직임 벡터 프리딕터들을 사용하여 움직임 벡터를추정하는 방법, 장치, 인코더, 디코더 및 복호화 방법 |
US20120159515A1 (en) * | 2010-12-16 | 2012-06-21 | Microsoft Corporation | Sharing object representations |
CN105159907B (zh) * | 2015-06-18 | 2019-05-24 | 百度在线网络技术(北京)有限公司 | 数据的传输方法及装置 |
CN106708547B (zh) * | 2015-11-12 | 2020-10-27 | 卓望数码技术(深圳)有限公司 | 一种服务插件管理方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2334353A (en) * | 1998-02-12 | 1999-08-18 | Ibm | Distributed computing system arranged to allow selection of servers for creating transaction state data |
US6912714B1 (en) * | 2000-06-28 | 2005-06-28 | International Business Machines Corporation | Finding named collections via life cycle interfaces |
CN101162428A (zh) * | 2007-11-22 | 2008-04-16 | 上海交通大学 | 软件动态演化中构件运行时状态的获取和转换方法 |
CN101571816A (zh) * | 2008-04-29 | 2009-11-04 | 环达电脑(上海)有限公司 | 更新数据保护系统及方法 |
-
2010
- 2010-01-21 CN CN201010300513A patent/CN101739297B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2334353A (en) * | 1998-02-12 | 1999-08-18 | Ibm | Distributed computing system arranged to allow selection of servers for creating transaction state data |
CN1226698A (zh) * | 1998-02-12 | 1999-08-25 | 国际商业机器公司 | 用于客户机/服务器计算的装置、方法和程序产品 |
US6912714B1 (en) * | 2000-06-28 | 2005-06-28 | International Business Machines Corporation | Finding named collections via life cycle interfaces |
CN101162428A (zh) * | 2007-11-22 | 2008-04-16 | 上海交通大学 | 软件动态演化中构件运行时状态的获取和转换方法 |
CN101571816A (zh) * | 2008-04-29 | 2009-11-04 | 环达电脑(上海)有限公司 | 更新数据保护系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101739297A (zh) | 2010-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Raynal et al. | Logical time: Capturing causality in distributed systems | |
CN102262680B (zh) | 一种基于海量数据存取需求的分布式数据库代理系统 | |
Helal et al. | A three-tier architecture for ubiquitous data access | |
CN103176892B (zh) | 一种页面监控方法及系统 | |
CN101739297B (zh) | 普适服务动态更新中服务对象状态转移系统及其方法 | |
CN100426293C (zh) | 目标集成管理系统 | |
CN115759955B (zh) | 一种基于区块链的业务流程执行引擎 | |
CN101833452A (zh) | 一种基于传感器的监测软件设计方法 | |
CN101980546B (zh) | 智能网平台、业务执行方法和分析业务异常的方法 | |
CN1647040A (zh) | 用于管理计算机系统的方法和系统 | |
CN103544016A (zh) | 一种基于java反射技术的服务注册配置方法及系统 | |
CN103257852A (zh) | 一种分布式应用系统的开发环境搭建的方法和装置 | |
CN111949454A (zh) | 一种基于微服务组件的数据库系统及相关方法 | |
CN102402515A (zh) | 通用自定义查询系统及方法 | |
CN1878206B (zh) | 事件订阅的方法及系统 | |
CN103809915B (zh) | 一种磁盘文件的读写方法和装置 | |
CN104714923A (zh) | 一种实现设备共享的方法和装置 | |
CN101639775A (zh) | 一种组件构建方法和装置 | |
Martin et al. | Controlled conflict resolution for replicated document | |
KR101888131B1 (ko) | Dds-dbms 연동 도구의 실시간 변경 데이터 발간 서비스 수행 방법 | |
US7877422B2 (en) | Method and system for processing 1:N relationships between data object nodes | |
Gao et al. | Achieving Transparent and Real-time Collaboration in Co-AutoCAD Application. | |
CN105787013A (zh) | 一种异构数据的类型名称分配方法及系统 | |
CN112416995A (zh) | 一种数据统计方法、装置、计算机设备及存储介质 | |
Nyström et al. | High‐level distribution for the rapid production of robust telecoms software: comparing C++ and Erlang |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121003 Termination date: 20150121 |
|
EXPY | Termination of patent right or utility model |