构件化软件的在线演化方法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
构件化软件的在线演化方法

说 明 书 构件化软件的在线演化方法 技术领域: 本发明涉及一种构件化软件的在线演化方法,属于软件维护技术领域。 背景技术: 目前构件化软件支持产品主要是从大型软件的复用性、分布性角度开发出来的,一般提供应用系统的热部署功能。这是一种大粒度的系统演化,实现了在保持现有系统运行的前提增加新系统的功能,各个系统之间一般没有直接关系。但是,目前还没有针对单个系统的在线演化,即在保持当前系统持续运行、服务的前提下,对系统内的构件进行演化,这是一种细粒度的系统演化,难度比大粒度的系统演化更大。 发明内容: 本发明的目的是提供一种细粒度的系统演化方法,在保持当前系统持续运行、服务的前提下,对系统内的构件进行演化,即进行构件的增加、删除、替换、改变构件之间的关系等操作,以取得在线增加服务内容、优化服务流程、消除系统缺陷、提高响应时间的效果。 本发明的具体技术方案如下: 本发明的构件化软件的在线演化方法是,除了管理一般的构件生命周期状态(例如加载状态、就绪状态、服务状态、执行状态、缓存状态等)外,通过引入构件的属性同步状态、请求截流状态和请求缓冲状态建立对构件的细粒度管理机制,从而更精确地控制构件的行为,并在此基础上进行构件重载,实现软件的在线演化。 构件的细粒度管理机制:与操作系统中对进程的管理类似,基于构件的软件系统运行过程中,需要随时对构件的各种状态进行检视、控制。为支持在线演化,除了一般的构件生命周期状态(例如加载状态、就绪状态、服务状态、执行状态、缓存状态等)之外,本发明引入另外三种状态:(1)属性同步状态,当一个新构件将替换一个当前正处于服务状态的构件(下称老构件)时,它必须建立起与老构件相同的环境与属性值,这是通过不断地复制老构件的属性等过程建立起来的;(2)请求截流状态,当新构件与老构件已经达到同步状态时,新构件可以开始接受新请求,老构件不再接受新请求,但必须完成正在执行的操作,并返回操作结果,故称其为截流状态;(3)请求缓冲状态,如果新老构件不在执行操作时间上存在交叠,则必须在切换的瞬间必须对请求进行缓冲,此时该构件处于请求缓冲状态,这与缓存状态不同,后者是指构件的实例服务完后,不立即将实例删除,而是将其放置到一个缓存队列中,这样当其他请求需要该构件服务时就不必重新加载,而是可以直接从队列中取出构件实例,不必初始化构件,从而降低响应时间。通过引入构件的上述三种新状态,可以更精确地控制构件的行为,实现构件对状态的更细粒度的管理,以满足在线演化软件的基本需求。 构件重载:现代计算机软件的一个重要假定是程序载运行过程中不修改自身的代码,因此操作系统一般仅在应用系统启动时加载各个模块,而在运行过程中则可以增加模块,但不允许修改模块。这给构件重载造成了困难,为了解决这一问题,本发明利用构造新加载程序的方法,并借助于构件接口来进行构件的重载。每一个构件有一个对应的构件接口类,新的加载程序区分构件的接口与构件的具体实现,其中接口在系统演化过程中是不变的,变化的是实现构件功能的具体对象。当需要重载构件时,首先加载新的构件实现体,并以该构件为模板创建构件实例,然后利用请求路由控制机制和请求缓冲控制机制二者之一或二者结合,将请求消息定向到新构件实现上,这样构件功能的真正实现体即变为新构件的实例。 所述请求路由控制机制是:当需要替换一个(或一组)构件时,为保持服务的连续性,往往在加载新构件时,老构件将继续存在于系统之中,因此将发生新老构件同时存在于一个构件管理器中的状况(甚至同时进行服务),这时需要引入请求路由控制机制。请求路由最初是指向老构件的,在替换构件时,如果老构件未处于服务状态或者执行状态(当然,也不处于加载状态),则可以直接将请求路由进行修改,使其指向新构件;如果老构件处于服务状态,则必须将构件状态设置为属性同步状态,建立起老构件的环境与属性,然后修改路由,由新构件接替老构件的当前服务;如果老构件处于执行状态,意味着老构件的许多属性等可能正在变化,因此只有等待其执行结束后才能进行同步,此时可以将构件状态设置为截流状态。此时,新构件可以接受新的服务过程,但不能接收正在服务的某个新请求,只有当老构件正在执行的所有过程全部完成后,才可以完全将请求路由完全映射到新构件上。这样,通过将请求路由从旧构件切换到新构件,即可以实现替换构件的微观过程。 所述请求缓冲控制机制是:当进行在线演化时,对部分请求进行临时缓存,以可以接受的响应时间延迟,换取演化的可靠性。请求的缓冲的实现需要结合底层的通信机制,以及底层的线程管理机制进行,请求在底层就是一个基于互操作协议的消息包,可能的协议包括:IIOP、SOAP、JRMP等,与每个构件对应的构件容器上可以缓存这些消息包,从而缓冲来自客户的请求,待新老构件切换完毕时,再将这些消息继续向构

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档