CN101655789A - 一种实现应用组件热插拔的方法和装置 - Google Patents
一种实现应用组件热插拔的方法和装置 Download PDFInfo
- Publication number
- CN101655789A CN101655789A CN200910092661A CN200910092661A CN101655789A CN 101655789 A CN101655789 A CN 101655789A CN 200910092661 A CN200910092661 A CN 200910092661A CN 200910092661 A CN200910092661 A CN 200910092661A CN 101655789 A CN101655789 A CN 101655789A
- Authority
- CN
- China
- Prior art keywords
- assembly
- dependence
- strong
- weak
- application
- 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.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了实现应用组件热插拔的方法和装置。所述方法包括:对于弱依赖组件,将其镜像到内存中,当弱依赖组件更新时,重新将更新后的弱依赖组件镜像到内存中,得到更新后的对应镜像组件,当需要调用该弱依赖组件时,调用其对应的镜像组件;而对于强依赖组件,根据相互依赖关系分为不同的组件组,将不同的组件组加载到不同的应用程序域中,当一个强依赖组件更新时,卸载该强依赖组件所在的组件组所对应的应用程序域,并将该更新后的强依赖组件所在的组件组加载到新建的应用程序域中,当需要调用强依赖组件时,在其对应的应用程序域中的调用该强依赖组件。本发明的技术方案,能够对应用组件进行热插拔,无需像现有技术那样重启IIS,也无需中断客户端的操作。
Description
技术领域
本发明涉及WEB管理系统技术领域,尤其涉及一种实现应用组件热插拔的方法和装置。
背景技术
在使用.net技术开发的大型基于互联网信息服务(IIS,Internetinformation Server)的WEB管理系统中,会有上千个应用组件存在。对于这些应用组件,存在进行动态更新的需求。例如,在基于IIS的WEB管理系统的开发测试的过程中,开发人员或测试人员在使用WEB服务器时,需要经常地进行更新应用组件来进行测试和验证;而在客户需要不间断运行的实际应用(如大型的商业、金融证券等网站中)过程中,需要对应用组件进行更新换代。
但是在现有的方案中,必须要重新启动IIS来进行应用组件的更新。重启IIS时,需要重新加载所有组件,所以启动过程比较缓慢,同时再还原到原操作界面并录入相应的测试或验证数据更需要花费一定的时间。另外,在客户需要不间断运行的应用中,重启IIS会中断客户端当前运行的所有操作。
发明内容
本发明提供了实现应用组件热插拔的方法和装置,本发明的技术方案不需要重启IIS,也不需要中断客户端的操作。
为达到上述目的,本发明的技术方案具体是这样实现的:
本发明公开了一种实现应用组件热插拔方法,该方法包括:
将基于IIS的应用组件分为弱依赖组件和强依赖组件;其中,弱依赖组件是与其他应用组件没有依赖关系的应用组件,强依赖组件是与其他应用组件有依赖关系的应用组件;
对于弱依赖组件,将弱依赖组件镜像到内存中,得到对应镜像组件;当在弱依赖组件更新时,重新将更新后的弱依赖组件镜像到内存中,得到更新后的对应镜像组件;
对于强依赖组件,根据强依赖组件之间的相互依赖关系,将强依赖组件分为不同的组件组,将不同的组件组加载到不同的应用程序域中;当一个强依赖组件更新时,卸载该强依赖组件所在的组件组所对应的应用程序域,并将该更新后的强依赖组件所在的组件组加载到新建的应用程序域中;
当收到调用指定应用组件的请求,判断该指定应用组件是弱依赖组件还是强依赖组件;如果是弱依赖组件,则调用内存中的与该指定应用组件对应的镜像组件;如果是强依赖组件,则在对应的应用程序域中调用该指定应用组件。
本发明公开了一种实现应用组件热插拔方法,该方法适用于基于IIS的弱依赖组件的热插拔,所述弱依赖组件是与其他应用组件没有依赖关系的应用组件,该方法包括:
将弱依赖组件镜像到内存中,得到对应镜像组件;当在弱依赖组件更新时,重新将更新后的弱依赖组件镜像到内存中,得到更新后的对应镜像组件;
当收到调用指定弱依赖组件的请求时,调用内存中的与该指定弱依赖组件对应的镜像组件。
本发明公开了一种应用组件热插拔方法,该方法适用于基于IIS的强依赖组件的热插拔,所述强依赖组件是与其他应用组件有依赖关系的应用组件,该方法包括:
根据强依赖组件之间的相互依赖关系,将强依赖组件分为不同的组件组,将不同的组件组加载到不同的应用程序域中;当一个强依赖组件更新时,卸载该强依赖组件所在的组件组所对应的应用程序域,并将该更新后的强依赖组件所在的组件组加载到新建的应用程序域中;
当收到调用指定强依赖组件的请求时,在相应的应用程序域中调用该指定强依赖组件。
本发明公开了一种实现应用组件热插拔的装置,基于IIS的应用组件分被分为弱依赖组件和强依赖组件,其中,弱依赖组件是与其他应用组件没有依赖关系的应用组件,强依赖组件是与其他应用组件有依赖关系的应用组件,该装置包括:代理请求模块、组件管理模块、域管理模块、第一监控模块和第二监控模块;
代理请求模块,用于在收到调用指定应用组件的请求时,判断指定应用组件是弱依赖组件还是强依赖组件;如果是弱依赖组件,则将请求转发给组件管理模块,如果是强依赖组件,则将请求转发给域管理模块;
组件管理模块,用于将弱依赖组件镜像到内存中,得到对应镜像组件,并在收到来自第一监控模块的弱依赖组件更新通知时,重新将更新后的弱依赖组件镜像到内存中;用于在接收到所述请求时,将所述请求转换为镜像组件调用请求,调用内存中的与该指定应用组件对应的镜像组件;
第一监控模块,用于对弱依赖组件进行监控,当在弱依赖组件更新时,向组件管理模块发送弱依赖组件更新通知;
域管理模块,用于根据强依赖组件之间的相互依赖关系,将强依赖组件分为不同的组件组,将不同的组件组加载到不同的应用程序域中;用于在接收到来自第二监控模块的强依赖组件更新通知时,卸载该强依赖组件所在的组件组所对应的应用程序域,并将该更新后的强依赖组件所在的组件组加载到新建的应用程序域中;用于在接收到所述请求时,将所述请求转换为代理调用请求,在对应的应用程序域中调用该指定应用组件;
第二监控模块,用于对强依赖组件进行监控,当一个强依赖组件更新时,向域管理模块发送强依赖组件更新通知。
本发明公开了一种实现应用组件热插拔的装置,该装置用于对基于IIS的弱依赖组件实现热插拔,其中,所述弱依赖组件是与其他应用组件没有依赖关系的应用组件,该装置包括:组件管理模块和监控模块;
组件管理模块,用于将弱依赖组件镜像到内存中,得到对应镜像组件,并在收到来自监控模块的弱依赖组件更新通知时,重新将更新后的弱依赖组件镜像到内存中;用于在接收调用指定弱依赖组件的请求时,将所述请求转换为镜像组件调用请求,调用内存中的与该指定弱依赖组件对应的镜像组件;
监控模块,用于对弱依赖组件进行监控,当在弱依赖组件更新时,向组件管理模块发送弱依赖组件更新通知。
本发明公开了一种实现应用组件热插拔的装置,该装置用于对基于IIS的强依赖组件实现热插拔,其中,所述强依赖组件是与其他应用组件有依赖关系的应用组件,该装置包括:域管理模块和监控模块;
域管理模块,用于根据强依赖组件之间的相互依赖关系,将强依赖组件分为不同的组件组,将不同的组件组加载到不同的应用程序域中;用于在接收到来自监控模块的强依赖组件更新通知时,卸载该强依赖组件所在的组件组所对应的应用程序域,并将该更新后的强依赖组件所在的组件组加载到新建的应用程序域中;用于在接收到调用指定强依赖组件的请求时,将所述请求转换为代理调用请求,在对应的应用程序域中调用该指定强依赖组件;
监控模块,用于对强依赖组件进行监控,当一个强依赖组件更新时,向域管理模块发送强依赖组件更新通知。
由上述技术方案可见,本发明的技术方案是:对于弱依赖组件,将其镜像到内存中,当弱依赖组件更新时,重新将更新后的弱依赖组件镜像到内存中,得到更新后的对应镜像组件,当需要调用该弱依赖组件时,调用其对应的镜像组件;而对于强依赖组件,根据相互依赖关系分为不同的组件组,将不同的组件组加载到不同的应用程序域中,当一个强依赖组件更新时,卸载该强依赖组件所在的组件组所对应的应用程序域,并将该更新后的强依赖组件所在的组件组加载到新建的应用程序域中,当需要调用强依赖组件时,在其对应的应用程序域中的调用该强依赖组件。本发明的技术方案,能够对应用组件进行热插拔,无需像现有技术那样重启IIS,也无需中断客户端的操作。
附图说明
图1是本发明实施例一种实现应用组件热插拔方法的流程图;
图2是本发明实施例中的弱依赖组件的示意图;
图3是本发明实施例中的强依赖组件的示意图;
图4是本发明实施例中的对弱依赖组件进行热插拔的示意图;
图5是本发明实施例中的对强依赖组件进行热插拔的示意图;
图6是本发明实施例中的实现弱依赖组件和强依赖组件热插拔的综合流程示意图;
图7是本发明一种实现应用组件热插拔的装置的第一实施例结构框图;
图8是本发明一种实现应用组件热插拔的装置的第二实施例结构框图;
图9是本发明一种实现应用组件热插拔的装置的第三实施例结构框图。
具体实施方式
图1是本发明实施例一种实现应用组件热插拔方法的流程图。如图1所示,该方法包括:
101、将基于IIS的应用组件分为弱依赖组件和强依赖组件;其中,弱依赖组件是与其他应用组件没有依赖关系的应用组件,强依赖组件是与其他应用组件有依赖关系的应用组件。
102、对于弱依赖组件,将弱依赖组件镜像到内存中,得到对应镜像组件;当在弱依赖组件更新时,重新将更新后的弱依赖组件镜像到内存中,得到更新后的对应镜像组件。
103、对于强依赖组件,根据强依赖组件之间的相互依赖关系,将强依赖组件分为不同的组件组,将不同的组件组加载到不同的应用程序域中;当一个强依赖组件更新时,卸载该强依赖组件所在的组件组所对应的应用程序域,并将该更新后的强依赖组件所在的组件组加载到新建的应用程序域中;
104、当收到调用指定应用组件的请求,判断该指定应用组件是弱依赖组件还是强依赖组件;如果是弱依赖组件,则调用内存中的与该指定应用组件对应的镜像组件;如果是强依赖组件,则在对应的应用程序域中调用该指定应用组件。
通过图1所示的技术方案,能够对基于IIS的应用组件进行热插拔,无需像现有技术那样重启IIS,也无需中断客户端的操作。
为了使本发明的目的、技术方案和优点更加清楚,下面结合具体实施例对本发明进行进一步的详细描述。
在本发明中的对弱依赖组件和强依赖组件采用不同的方法实现热插拔。因此,首先对弱依赖组件和强依赖组件进行定义:
弱依赖组件:与其他应用组件之间不存在依赖关系,但可能与基础组件存在依赖关系的应用组件。这里的依赖关系具体指引用关系,包括引用和被引用关系。
图2是本发明实施例中的弱依赖组件的示意图。如图2所示,组件A、组件B和组件C均只引用基础组件,即依赖于基础组件,但相互之间没有依赖关系。因此,组件A、组件B和组件C均为弱依赖组件。弱依赖组件本身相对独立,存在其自身的独立性,比较容易在组件上进行关系分离,使其不依赖其他的同类组件,仅依赖基础组件。如UI的Webpart组件就是弱依赖组件。
强依赖组件:与其他应用组件之间存在依赖关系的应用组件。
图3是本发明实施例中的强依赖组件的示意图。如图3所示,组件X、组件Y和组件Z依赖基础组件的同时,组件Z依赖组件Y,组件Y依赖组件X。因此,组件X、组件Y和组件Z均为强依赖组件。如后台的实体业务组件一般是强依赖组件。
一般来说,后台组件之间容易存在依赖关系,是强依赖组件,而前台组件之间没有依赖关系,是弱依赖组件。
下面对弱依赖组件和强依赖组件实现热插拔的方案分别进行介绍。
一、弱依赖组件的热插拔
在本发明实施例中,通过制作组件管理器和组件监视器来统一调用弱依赖组件,而不是像现有技术那样直接通过IIS进行弱依赖组件的调用。组件管理器执行本发明所述的组件调用处理,而不是直接调用组件,具体为:由组件管理器先用字节流将前台弱依赖组件读入到内存中形成镜像组件,并直接调用内存中的镜像组件;同时组件监视器对前台的弱依赖组件的变化进行监控,当弱依赖组件更新时,通知组件管理器;组件管理器收到组件监视器的通知后,重新加载更新后的弱依赖组件的内存镜像,并使用新的内镜像组件来加载页面。
图4是本发明实施例中的对弱依赖组件进行热插拔的示意图。如图4所示,当IIS通过Portal请求调用组件A(弱依赖组件)时,不直接对组件A进行调用,而是通过组件管理器来将组件A的调用转换为镜像组件A的调用。即调用组件A的请求发送到组件管理器时,组件管理器转为调用与组件A对应的镜像组件A。而组件监视器实时对弱依赖组件进行监视,当弱依赖组件有版本更新后,及时通知组件管理器,组件管理器将更新后的组件读为镜像,得到新的镜像组件,并且之后的新的调用请求也会转到新镜像组件。
在图4中,对图2中的组件A的热插拔方式进行了说明,而组件B和组件C的热插拔方式与组件A相同,这里不再复述。
可以看出,对于弱依赖组件,任何一个弱依赖组件的热插拔,均不影响其他组件的操作。但是,这里需要说明的是,对于基础组件,由于其被应用组件所依赖,所以不能根据本方案进行热插拔。
二、强依赖组件的热插拔
由于内存镜像对于强依赖组件会导致类型上的不一致,因此内存镜像的方式不能解决强依赖组件的热插拔问题。
在本发明实施例中,使用.net的应用程序域(APP Domain)来分离一组强依赖组件。即有相互依赖关系的强依赖组件被分为一组,形成组件组,例如,图3中的组件X、Y和Z就被划分为一组。应用程序域之间的调用,使用类似跨进程的代理调用的方式来实现隔离。当需要更新一个强依赖组件时,将其所属组件组的应用程序域卸载,然后重新建立新的应用程序域,并将更新后的组件组加载到的新建的应用程序域中,则后续的新的调用转为新的应用程序的调用,同时不影响其他组件的处理。
由于要隔离调用方之间对于调用本身的技术实现隐藏,需要编写通用的代理层代码,用来屏蔽内部调用的区别,当需要热插拔时,更换成代理调用,当不使用热插拔时,能走原有的正常的调用实现方式。
图5是本发明实施例中的对强依赖组件进行热插拔的示意图。如图5所示,强依赖组件X、Y和Z相互之间有依赖关系,因此被分为一组,称为组件组1,而强依赖组件M、L和N相互之间有依赖关系,因此被分为一组,称为组件组2。组件组1加载到应用程序域1中,组件组2加载到应用程序域2中。当IIS通过Portal请求调用某个强依赖组件时(例如组件X)时,不直接对组件X进行调用,而是通过代理请求管理器来进行转发调用,代理请求管理器中有相应的判断,对于非热插拔或弱依赖组件的调用,不走代理方式,此时的代理请求管理器仅仅负责转发,而对于强依赖组件,将原调用转为代理调用发送到域管理器,由域管理器在对应的应用程序域1中实现对强依赖组件X的调用。而组件监视器实现对各强依赖组件的监视,当一个强依赖组件发生变化时,通知域管理器,由域管理器将原有的对应应用程序域卸载,并创建新的对应应用程序域。域管理模块负责将之后的调用请求转发到新的应用程序域中去执行,以达到组件的更新。
前面分别介绍了弱依赖组件的热插拔和强依赖组件的热插拔。在一个WEB管理系统即存在弱依赖组件,也存在强依赖组件,因此下面给出实现弱依赖组件和强依赖组件热插拔的综合流程示意图。
图6是本发明实施例中的实现弱依赖组件和强依赖组件热插拔的综合流程示意图。参见图6,当IIS通过Portal请求调用组件某个指定应用组件时,代理请求管理器判断该指定应用组件是弱依赖组件还是强依赖组件,如果是弱依赖组件则将调用请求转发到组件管理器,如果是强依赖组件则转换为代理模式,则将调用请求转发到域管理器。
还需要说明的一点是:在现有技术中,基于IIS应用组件存放在一个默认的目录中,当IIS重启时,会自动加载该默认目录中的应用组件。本发明实施例中为了避免应用组件随着IIS的启动自动开始加载,设置一个独立加载目录,所有的强依赖组件和弱依赖组件被预先保存到所述独立加载目录中,这样这些组件就不会随着IIS本身的启动就开始加载。
在基于IIS的大型WEB管理系统的开发测试过程中,使用本发明提供的应用组件热插拔技术,可以省去暂停当前操作,以及重启IIS并再次进入操作页面录入数据的操作,大大提高了开发测试过程中的工作效率,同时,避免了客户操作的中断,提高了用户的满意度。
在大型的管理系统中,其本身的组件非常庞大,在开发测试过程中进行组件的更细测试,需要长达5-10分钟的时间来重启IIS并再次进入相应的操作界面,并且正在使用IIS服务器的应用被中断。而经过测试,使用本发明中的热插拔技术,对于弱依赖组件的热插拔,能达到无延迟的效果,更新立即生效;而对于强依赖组件的热插拔,只需要1分钟左右的服务应用程序域的重启时间。
下面基于上述实施例给出本发明中的实现应用组件热插拔的装置的组成结构。
图7是本发明一种实现应用组件热插拔的装置的第一实施例结构框图。首先,基于IIS的应用组件被分为弱依赖组件和强依赖组件,其中,弱依赖组件是与其他应用组件没有依赖关系的应用组件,强依赖组件是与其他应用组件有依赖关系的应用组件,则如图7所示,该装置包括:代理请求模块701、组件管理模块702、域管理模块703、第一监控模块704和第二监控模块705;
代理请求模块701,用于在收到调用指定应用组件的请求时,判断指定应用组件是弱依赖组件还是强依赖组件;如果是弱依赖组件,则将请求转发给组件管理模块,如果是强依赖组件,则将请求转发给域管理模块;
组件管理模块702,用于将弱依赖组件镜像到内存中,得到对应镜像组件,并在收到来自第一监控模块的弱依赖组件更新通知时,重新将更新后的弱依赖组件镜像到内存中;用于在接收到所述请求时,将所述请求转换为镜像组件调用请求,调用内存中的与该指定应用组件对应的镜像组件;
第一监控模块,用于对弱依赖组件进行监控,当在弱依赖组件更新时,向组件管理模块发送弱依赖组件更新通知;
域管理模块703,用于根据强依赖组件之间的相互依赖关系,将强依赖组件分为不同的组件组,将不同的组件组加载到不同的应用程序域中;用于在接收到来自第二监控模块的强依赖组件更新通知时,卸载该强依赖组件所在的组件组所对应的应用程序域,并将该更新后的强依赖组件所在的组件组加载到新建的应用程序域中;用于在接收到所述请求时,将所述请求转换为代理调用请求,在对应的应用程序域中调用该指定应用组件;
第二监控模块,用于对强依赖组件进行监控,当一个强依赖组件更新时,向域管理模块发送强依赖组件更新通知。
在图7所示的装置中,所有的强依赖组件和弱依赖组件被预先保存到独立加载目录中。
这里,代理请求模块对应于前述是实施例中的代理请求管理器,组件模块对应于组件管理器,域管理模块对应域管理器,监控模块对应组件监视器。
图8是本发明一种实现应用组件热插拔的装置的第二实施例结构框图。该装置用于对基于IIS的弱依赖组件实现热插拔,其中,所述弱依赖组件是与其他应用组件没有依赖关系的应用组件,如图8所示,该装置包括:组件管理模块801和监控模块802;
组件管理模块801,用于将弱依赖组件镜像到内存中,得到对应镜像组件,并在收到来自监控模块802的弱依赖组件更新通知时,重新将更新后的弱依赖组件镜像到内存中;用于在接收调用指定弱依赖组件的请求时,将所述请求转换为镜像组件调用请求,调用内存中的与该指定弱依赖组件对应的镜像组件;
监控模块802,用于对弱依赖组件进行监控,当在弱依赖组件更新时,向组件管理模块801发送弱依赖组件更新通知。
在图8所示的装置中,所有的弱依赖组件被预先保存到独立加载目录中。
图9是本发明一种实现应用组件热插拔的装置的第三实施例结构框图。该装置用于对基于IIS的强依赖组件实现热插拔,其中,所述强依赖组件是与其他应用组件有依赖关系的应用组件,如图9所示,该装置包括:域管理模块901和监控模块902;
域管理模块901,用于根据强依赖组件之间的相互依赖关系,将强依赖组件分为不同的组件组,将不同的组件组加载到不同的应用程序域中;用于在接收到来自监控模块902的强依赖组件更新通知时,卸载该强依赖组件所在的组件组所对应的应用程序域,并将该更新后的强依赖组件所在的组件组加载到新建的应用程序域中;用于在接收到调用指定强依赖组件的请求时,将所述请求转换为代理调用请求,在对应的应用程序域中调用该指定强依赖组件;
监控模块902,用于对强依赖组件进行监控,当一个强依赖组件更新时,向域管理模块901发送强依赖组件更新通知。
在图9所示的装置中,所有的强依赖组件被预先保存到独立加载目录中。
综上所述,本发明的技术方案是:对于弱依赖组件,将其镜像到内存中,当弱依赖组件更新时,重新将弱依赖组件镜像到内存中,得到更新后的对应镜像组件,当需要调用该弱依赖组件时,调用其对应的镜像组件;而对于强依赖组件,根据相互依赖关系分为不同的组件组,将不同的组件组加载到不同的应用程序域中,当一个强依赖组件更新时,卸载该强依赖组件所在的组件组所对应的应用程序域,并将该强依赖组件所在的组件组加载到新建的应用程序域中,当需要调用强依赖组件时,在其对应的应用程序域中的调用该强依赖组件。本发明的技术方案,能够对应用组件进行热插拔,无需像现有技术那样重启IIS,也无需中断客户端的操作。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (12)
1、一种实现应用组件热插拔方法,其特征在于,该方法包括:
将基于互联网信息服务IIS的应用组件分为弱依赖组件和强依赖组件;其中,弱依赖组件是与其他应用组件没有依赖关系的应用组件,强依赖组件是与其他应用组件有依赖关系的应用组件;
对于弱依赖组件,将弱依赖组件镜像到内存中,得到对应镜像组件;当在弱依赖组件更新时,重新将更新后的弱依赖组件镜像到内存中,得到更新后的对应镜像组件;
对于强依赖组件,根据强依赖组件之间的相互依赖关系,将强依赖组件分为不同的组件组,将不同的组件组加载到不同的应用程序域中;当一个强依赖组件更新时,卸载该强依赖组件所在的组件组所对应的应用程序域,并将该更新后的强依赖组件所在的组件组加载到新建的应用程序域中;
当收到调用指定应用组件的请求,判断该指定应用组件是弱依赖组件还是强依赖组件;如果是弱依赖组件,则调用内存中的与该指定应用组件对应的镜像组件;如果是强依赖组件,则在对应的应用程序域中调用该指定应用组件。
2、根据权利要求1所述的方法,其特征在于,该方法进一步包括:预先将所有强依赖组件和弱依赖组件保存到独立加载目录中。
3、一种实现应用组件热插拔方法,其特征在于,该方法适用于基于IIS的弱依赖组件的热插拔,所述弱依赖组件是与其他应用组件没有依赖关系的应用组件,该方法包括:
将弱依赖组件镜像到内存中,得到对应镜像组件;当在弱依赖组件更新时,重新将更新后的弱依赖组件镜像到内存中,得到更新后的对应镜像组件;
当收到调用指定弱依赖组件的请求时,调用内存中的与该指定弱依赖组件对应的镜像组件。
4、根据权利要求3所述的方法,其特征在于,该方法进一步包括:预先将所有弱依赖组件保存到独立加载目录中。
5、一种实现应用组件热插拔方法,其特征在于,该方法适用于基于IIS的强依赖组件的热插拔,所述强依赖组件是与其他应用组件有依赖关系的应用组件,该方法包括:
根据强依赖组件之间的相互依赖关系,将强依赖组件分为不同的组件组,将不同的组件组加载到不同的应用程序域中;当一个强依赖组件更新时,卸载该强依赖组件所在的组件组所对应的应用程序域,并将该更新后的强依赖组件所在的组件组加载到新建的应用程序域中;
当收到调用指定强依赖组件的请求时,在相应的应用程序域中调用该指定强依赖组件。
6、根据权利要求5所述的方法,其特征在于,该方法进一步包括:预先将所有强依赖组件保存到独立加载目录中。
7、一种实现应用组件热插拔的装置,其特征在于,基于IIS的应用组件被分为弱依赖组件和强依赖组件,其中,弱依赖组件是与其他应用组件没有依赖关系的应用组件,强依赖组件是与其他应用组件有依赖关系的应用组件,该装置包括:代理请求模块、组件管理模块、域管理模块、第一监控模块和第二监控模块;
代理请求模块,用于在收到调用指定应用组件的请求时,判断指定应用组件是弱依赖组件还是强依赖组件;如果是弱依赖组件,则将请求转发给组件管理模块,如果是强依赖组件,则将请求转发给域管理模块;
组件管理模块,用于将弱依赖组件镜像到内存中,得到对应镜像组件,并在收到来自第一监控模块的弱依赖组件更新通知时,重新将更新后的弱依赖组件镜像到内存中;用于在接收到所述请求时,将所述请求转换为镜像组件调用请求,调用内存中的与该指定应用组件对应的镜像组件;
第一监控模块,用于对弱依赖组件进行监控,当在弱依赖组件更新时,向组件管理模块发送弱依赖组件更新通知;
域管理模块,用于根据强依赖组件之间的相互依赖关系,将强依赖组件分为不同的组件组,将不同的组件组加载到不同的应用程序域中;用于在接收到来自第二监控模块的强依赖组件更新通知时,卸载该强依赖组件所在的组件组所对应的应用程序域,并将该更新后的强依赖组件所在的组件组加载到新建的应用程序域中;用于在接收到所述请求时,将所述请求转换为代理调用请求,在对应的应用程序域中调用该指定应用组件;
第二监控模块,用于对强依赖组件进行监控,当一个强依赖组件更新时,向域管理模块发送强依赖组件更新通知。
8、如权利要求7所述的装置,其特征在于,所有的强依赖组件和弱依赖组件被预先保存到独立加载目录中。
9、一种实现应用组件热插拔的装置,其特征在于,该装置用于对基于IIS的弱依赖组件实现热插拔,其中,所述弱依赖组件是与其他应用组件没有依赖关系的应用组件,该装置包括:组件管理模块和监控模块;
组件管理模块,用于将弱依赖组件镜像到内存中,得到对应镜像组件,并在收到来自监控模块的弱依赖组件更新通知时,重新将更新后的弱依赖组件镜像到内存中;用于在接收调用指定弱依赖组件的请求时,将所述请求转换为镜像组件调用请求,调用内存中的与该指定弱依赖组件对应的镜像组件;
监控模块,用于对弱依赖组件进行监控,当在弱依赖组件更新时,向组件管理模块发送弱依赖组件更新通知。
10、如权利要求9所述的装置,其特征在于,所有的弱依赖组件被预先保存到独立加载目录中。
11、一种实现应用组件热插拔的装置,其特征在于,该装置用于对基于IIS的强依赖组件实现热插拔,其中,所述强依赖组件是与其他应用组件有依赖关系的应用组件,该装置包括:域管理模块和监控模块;
域管理模块,用于根据强依赖组件之间的相互依赖关系,将强依赖组件分为不同的组件组,将不同的组件组加载到不同的应用程序域中;用于在接收到来自监控模块的强依赖组件更新通知时,卸载该强依赖组件所在的组件组所对应的应用程序域,并将该更新后的强依赖组件所在的组件组加载到新建的应用程序域中;用于在接收到调用指定强依赖组件的请求时,将所述请求转换为代理调用请求,在对应的应用程序域中调用该指定强依赖组件;
监控模块,用于对强依赖组件进行监控,当一个强依赖组件更新时,向域管理模块发送强依赖组件更新通知。
12、如权利要求11所述的装置,其特征在于,所有的强依赖组件被预先保存到独立加载目录中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910092661A CN101655789B (zh) | 2009-09-22 | 2009-09-22 | 一种实现应用组件热插拔的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910092661A CN101655789B (zh) | 2009-09-22 | 2009-09-22 | 一种实现应用组件热插拔的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101655789A true CN101655789A (zh) | 2010-02-24 |
CN101655789B CN101655789B (zh) | 2012-10-24 |
Family
ID=41710087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910092661A Expired - Fee Related CN101655789B (zh) | 2009-09-22 | 2009-09-22 | 一种实现应用组件热插拔的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101655789B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012106909A1 (zh) * | 2011-07-20 | 2012-08-16 | 华为技术有限公司 | 对分布式计算机系统中内存的管理方法和装置 |
CN103186400A (zh) * | 2011-12-31 | 2013-07-03 | 深圳市金蝶中间件有限公司 | Web应用程序升级方法及系统 |
CN103593190A (zh) * | 2013-11-15 | 2014-02-19 | 北京国双科技有限公司 | 应用程序处理方法及装置 |
CN104765624A (zh) * | 2014-01-06 | 2015-07-08 | 腾讯科技(深圳)有限公司 | 虚拟机应用程序的更新处理方法和装置 |
CN104935561A (zh) * | 2014-03-19 | 2015-09-23 | 国家电网公司 | 一种组件数据处理方法和装置 |
CN105278962A (zh) * | 2015-11-04 | 2016-01-27 | 北京星网锐捷网络技术有限公司 | 应用程序及数据库的热部署方法及装置 |
CN107274023A (zh) * | 2017-06-20 | 2017-10-20 | 阿里巴巴集团控股有限公司 | 投保流程生成方法、投保请求处理方法及装置和电子设备 |
CN104935561B (zh) * | 2014-03-19 | 2018-06-01 | 国家电网公司 | 一种组件数据处理方法和装置 |
CN108228248A (zh) * | 2016-12-14 | 2018-06-29 | 阿里巴巴集团控股有限公司 | 一种依赖关系的确定方法和装置 |
CN108427568A (zh) * | 2018-04-28 | 2018-08-21 | 北京小米移动软件有限公司 | 用户界面的更新方法及装置 |
CN108694048A (zh) * | 2018-05-04 | 2018-10-23 | 广州慧睿思通信息科技有限公司 | 一种批量发布服务的实现方法 |
CN108989072A (zh) * | 2017-06-05 | 2018-12-11 | 阿里巴巴集团控股有限公司 | 一种部署、管理及调用组件的方法及装置 |
CN111399806A (zh) * | 2019-01-03 | 2020-07-10 | 百度在线网络技术(北京)有限公司 | 一种组件管理方法、装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7036007B2 (en) * | 2002-09-09 | 2006-04-25 | Intel Corporation | Firmware architecture supporting safe updates and multiple processor types |
US7448066B2 (en) * | 2002-09-19 | 2008-11-04 | International Business Machines Corporation | Application server object-level security for distributed computing domains |
CN1317640C (zh) * | 2004-08-31 | 2007-05-23 | 华为技术有限公司 | 实时操作系统环境下多任务应用软件模块的管理方法 |
-
2009
- 2009-09-22 CN CN200910092661A patent/CN101655789B/zh not_active Expired - Fee Related
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012106909A1 (zh) * | 2011-07-20 | 2012-08-16 | 华为技术有限公司 | 对分布式计算机系统中内存的管理方法和装置 |
CN103186400A (zh) * | 2011-12-31 | 2013-07-03 | 深圳市金蝶中间件有限公司 | Web应用程序升级方法及系统 |
CN103186400B (zh) * | 2011-12-31 | 2016-01-13 | 深圳市金蝶中间件有限公司 | Web应用程序升级方法及系统 |
CN103593190A (zh) * | 2013-11-15 | 2014-02-19 | 北京国双科技有限公司 | 应用程序处理方法及装置 |
CN104765624A (zh) * | 2014-01-06 | 2015-07-08 | 腾讯科技(深圳)有限公司 | 虚拟机应用程序的更新处理方法和装置 |
CN104765624B (zh) * | 2014-01-06 | 2020-04-07 | 腾讯科技(深圳)有限公司 | 虚拟机应用程序的更新处理方法和装置 |
CN104935561B (zh) * | 2014-03-19 | 2018-06-01 | 国家电网公司 | 一种组件数据处理方法和装置 |
CN104935561A (zh) * | 2014-03-19 | 2015-09-23 | 国家电网公司 | 一种组件数据处理方法和装置 |
CN105278962A (zh) * | 2015-11-04 | 2016-01-27 | 北京星网锐捷网络技术有限公司 | 应用程序及数据库的热部署方法及装置 |
CN108228248A (zh) * | 2016-12-14 | 2018-06-29 | 阿里巴巴集团控股有限公司 | 一种依赖关系的确定方法和装置 |
CN108989072A (zh) * | 2017-06-05 | 2018-12-11 | 阿里巴巴集团控股有限公司 | 一种部署、管理及调用组件的方法及装置 |
CN108989072B (zh) * | 2017-06-05 | 2021-08-24 | 创新先进技术有限公司 | 一种部署、管理及调用组件的方法及装置 |
CN107274023A (zh) * | 2017-06-20 | 2017-10-20 | 阿里巴巴集团控股有限公司 | 投保流程生成方法、投保请求处理方法及装置和电子设备 |
CN108427568A (zh) * | 2018-04-28 | 2018-08-21 | 北京小米移动软件有限公司 | 用户界面的更新方法及装置 |
CN108427568B (zh) * | 2018-04-28 | 2021-04-27 | 北京小米移动软件有限公司 | 用户界面的更新方法及装置 |
CN108694048A (zh) * | 2018-05-04 | 2018-10-23 | 广州慧睿思通信息科技有限公司 | 一种批量发布服务的实现方法 |
CN108694048B (zh) * | 2018-05-04 | 2021-08-06 | 广州慧睿思通信息科技有限公司 | 一种批量发布服务的实现方法 |
CN111399806A (zh) * | 2019-01-03 | 2020-07-10 | 百度在线网络技术(北京)有限公司 | 一种组件管理方法、装置、电子设备及存储介质 |
CN111399806B (zh) * | 2019-01-03 | 2023-09-01 | 百度在线网络技术(北京)有限公司 | 一种组件管理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101655789B (zh) | 2012-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101655789B (zh) | 一种实现应用组件热插拔的方法和装置 | |
CN104199666B (zh) | 一种应用程序动态配置方法及装置 | |
US9485134B2 (en) | Managing configurations of system management agents in a distributed environment | |
US20170161059A1 (en) | Management of multiple application programming interface versions for development environments | |
CN112100005B (zh) | 一种Redis副本集的实现方法及装置 | |
JP5444178B2 (ja) | バックアップ・リストア処理装置とバックアップ・リストア処理方法およびプログラム | |
US10331418B2 (en) | State machine representation of a development environment deployment process | |
CN109245908B (zh) | 一种主从集群切换的方法和装置 | |
US10404568B2 (en) | Agent manager for distributed transaction monitoring system | |
CN107644075B (zh) | 收集页面信息的方法和装置 | |
US20040139175A1 (en) | Method and system for nondisruptive deployment during upgrading of enterprise systems | |
CN111885114B (zh) | 网关中的应用程序接口模块的升级方法、设备及存储介质 | |
CN111510480B (zh) | 一种请求发送方法、装置以及第一服务器 | |
CN107729042A (zh) | 移动应用升级方法及装置、存储介质、电子设备 | |
CN103870307B (zh) | 一种数据源同步与告警的装置和方法 | |
CN108874531B (zh) | 用于熔断服务的方法、装置、系统及电子设备 | |
US20170161026A1 (en) | Deployment of development environments | |
CN104092732A (zh) | 一种终端软件智能更新方法及装置 | |
CN105938490B (zh) | 一种web应用系统连接数据源智能切换方法及系统 | |
CN112565340B (zh) | 分布式应用的服务调度方法、装置、计算机系统及介质 | |
CN113377487B (zh) | 管理虚拟机升级的方法、设备和计算机程序产品 | |
US8135765B2 (en) | System and method for a genetic integration of a database into a high availability cluster | |
CN104348646A (zh) | 配置数据处理方法、装置及系统 | |
CN112953719A (zh) | 一种令牌认证方法和装置 | |
CN105338058A (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 | ||
C56 | Change in the name or address of the patentee | ||
CP03 | Change of name, title or address |
Address after: 100094 Haidian District North Road, Beijing, No. 68 Patentee after: Yonyou Network Technology Co., Ltd. Address before: 100094 Beijing city Haidian District North Road No. 68, UFIDA Software Park Patentee before: UFIDA Software Co., Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121024 Termination date: 20180922 |