CN104657168A - 一种客户端以及该客户端进行升级的方法 - Google Patents
一种客户端以及该客户端进行升级的方法 Download PDFInfo
- Publication number
- CN104657168A CN104657168A CN201310602666.XA CN201310602666A CN104657168A CN 104657168 A CN104657168 A CN 104657168A CN 201310602666 A CN201310602666 A CN 201310602666A CN 104657168 A CN104657168 A CN 104657168A
- Authority
- CN
- China
- Prior art keywords
- component
- client
- new
- service
- existing
- 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
- 238000000034 method Methods 0.000 title claims abstract description 101
- 230000008569 process Effects 0.000 claims abstract description 54
- 238000012545 processing Methods 0.000 claims description 47
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 238000004590 computer program Methods 0.000 description 7
- 238000012217 deletion Methods 0.000 description 6
- 230000037430 deletion Effects 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000006378 damage Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种客户端以及该客户端进行升级的方法,用于解决现有客户端进行升级时,必须重新启动才能完成客户端的升级的问题。本发明实施例的方法包括:在运行过程中,客户端加载新组件,并判断该新组件是对客户端的已有组件的更新或是客户端的新增组件,根据判断结果,对该新组件以及与该新组件相关的已有组件进行相应处理,以完成客户端的升级过程。采用本发明实施例在不需要关闭和重启客户端的情况下,能够完成客户端的升级过程,提高了用户体验。
Description
技术领域
本发明涉及安防技术领域,特别涉及一种客户端以及该客户端进行升级的方法。
背景技术
目前,安防领域中的视频监控系统常采用的结构模式包括:客户机/服务器(Client/Server,C/S)结构和浏览器/服务器(Brower/Server,B/S)结构来实现。其中,C/S结构是建立在局域网的基础上的,该结构充分利用客户端和服务器端硬件环境的优势,将任务合理分配到客户端和服务器端来实现,形成所谓两层体系结构;B/S结构是建立在广域网的基础上的,该结构下,用户工作界面是通过浏览器来实现,极少部分事务逻辑在前端(即浏览器)实现,但是主要事务逻辑在服务器端实现,形成所谓三层体系结构。
C/S结构相比于B/S结构,具有如下优点:
1、交互性强;在C/S结构中,由于安装了客户端,而客户端具有一套完整的应用程序,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换。
2、安全性好;由于C/S结构是配对的点对点的结构模式,采用适用于局域网、安全性比较好的网络协议,安全性可以得到较好的保证。
3、网络通信量少;由于C/S结构在逻辑上只有两层结构,网络通信量只包括Client与Server之间的通信量。
4、处理速度快;由于C/S结构在逻辑上比B/S结构少一层结构,对于相同的任务,C/S结构完成的速度比B/S结构快,更利于处理大量数据。
因此,现有的大多数视频监控系统采用C/S结构来实现,该结构安装、运行在客户端的计算机中,通过局域网与后台数据库服务器连接、共享数据,并把原始数据或处理后的数据存储在后台数据库中。
由于有些应用领域,对视频监控系统中的客户端的实时性要求较高,然而目前客户端在进行升级过程中,必须重新启动才能完成客户端的升级。以现有C/S结构中的客户端中现有功能模块进行升级为例,在下载完更新所需文件后,客户端无法在运行的情况下,把原有的功能模块替换成新的功能模块,原有的功能模块创建的实例对象在客户端系统停止运行前,是不会主动销毁的,而新的功能模块在客户端系统调用前,也不会自动生成,因此,现有C/S结构中的客户端在升级的时候,下载完升级所需的必要文件后,必须重新启动客户端才能替换原有的功能模块,由于客户端比较庞大,重新启动客户端一般需要较长时间。在重新启动期间,客户端无法正常进行监控,造成监控空白,从而可能导致客户损失。
综上所述,由于现有客户端进行升级时,必须重新启动才能完成客户端的升级,从而造成客户端的监控空白。
发明内容
本发明实施例提供了一种客户端以及该客户端进行升级的方法,用于解决现有客户端进行升级时,必须重新启动才能完成客户端的升级,从而造成客户端的监控空白的问题。
本发明实施例提供了一种客户端进行升级的方法,在所述客户端运行过程中,该方法包括:
客户端加载新组件,并判断所述新组件是对所述客户端的已有组件的更新或是所述客户端的新增组件;
所述客户端根据判断结果,对所述新组件以及与所述新组件相关的已有组件进行处理,以完成所述客户端的升级过程。
本发明实施例提供的方法,在客户端运行过程中,客户端加载新组件,判断新组件是对客户端的已有组件的更新或是客户端的新增组件;并根据判断结果,对新组件以及与新组件相关的已有组件进行处理,以完成客户端的升级过程,以完成该客户端的升级过程,从而在不需要关闭和重启客户端的情况下,能够完成客户端的升级过程,提高了用户体验。
作为一种处理方式,若所述新组件是对所述客户端的已有组件的更新,所述客户端将该已有组件确定为待升级组件,并执行如下处理过程:
所述客户端根据所述待升级组件所实现的各服务对应的接口,分别确定用于创建所述待升级组件的各服务的创建对象;
所述客户端指示所述待升级组件的各创建对象清除自身所创建的所有实例,且,所述客户端通知除所述待升级组件之外的已有组件释放与所述待升级组件的各创建对象相关的资源;
所述客户端获取用于创建所述新组件所实现的各服务的实例的创建对象以及各服务对应的接口名称;以及
所述客户端通知除所述待升级组件之外的已有组件所述新组件的各创建对象,以使之前调用了所述待升级组件的服务的已有组件根据所述新组件所实现的各服务的创建对象,建立与所述新组件之间的调用关系。
作为另一种处理方式,若所述新组件是所述客户端的新增组件,则客户端执行如下处理过程:
所述客户端获取用于创建所述新组件所实现的各服务的实例的创建对象以及各服务对应的接口名称;以及
所述客户端通知所有已有组件所述新组件的各创建对象,以使需要调用所述新组件的已有组件根据所述新组件的各创建对象,建立与所述新组件之间的调用关系。
作为再一种处理方式,在所述客户端运行过程中,所述方法还包括:
所述客户端获取用于创建所述新组件所实现的各服务的实例的创建对象以及各服务对应的接口名称;以及
所述客户端通知所有已有组件所述新组件的各创建对象,以使需要调用所述新组件的已有组件根据所述新组件的各创建对象,建立与所述新组件之间的调用关系。
在实施中,所述方法还包括:
所述客户端存储有所述已有组件所实现的各服务对应的接口名称和用于创建所述已有组件所实现的各服务的实例的创建对象,以及所述新组件所实现的各服务对应的接口名称和用于创建所述新组件所实现的各服务的实例的创建对象;
其中,每个组件被加载后,将用于创建该组件所实现的各服务的实例的创建对象以及各服务对应的接口名称注册到客户端,所述组件包括客户端的已有组件和所述新组件。
本发明实施例还提供了一种客户端,该客户端处于运行过程中,该客户端包括:
判断模块,用于加载新组件,并判断所述新组件是对所述客户端的已有组件的更新或是所述客户端的新增组件;
处理模块,用于根据判断结果,对所述新组件以及与所述新组件相关的已有组件进行相应处理,以完成客户端的升级过程。
本发明实施例提供的客户端,在运行过程中,加载新组件,判断新组件是对客户端的已有组件的更新或是客户端的新增组件,并根据判断结果,对新组件以及与该新组件相关的已有组件进行相应处理,以完成该客户端的升级过程,从而在不需要关闭和重启客户端的情况下,能够完成客户端的升级过程,提高了用户体验。
作为一种处理方式,若所述新组件是对所述客户端的已有组件的更新,所述处理模块将该已有组件确定为待升级组件,并执行如下处理过程:
根据所述待升级组件所实现的各服务对应的接口,分别确定用于创建所述待升级组件的各服务的创建对象;指示所述待升级组件的各创建对象清除自身所创建的所有实例,且,通知除所述待升级组件之外的已有组件释放与所述待升级组件的各创建对象相关的资源;获取用于创建所述新组件所实现的各服务的实例的创建对象以及各服务对应的接口名称;以及通知除所述待升级组件之外的已有组件所述新组件的各创建对象,以使之前调用了所述待升级组件的服务的已有组件根据所述新组件所实现的各服务的创建对象,建立与所述新组件之间的调用关系。
作为另一种处理方式,若所述新组件是所述客户端的新增组件,则所述处理模块执行如下处理过程:
获取用于创建所述新组件所实现的各服务的实例的创建对象以及各服务对应的接口名称;以及通知所有已有组件所述新组件的各创建对象,以使需要调用所述新组件的已有组件根据所述新组件的各创建对象,建立与所述新组件之间的调用关系。
作为再一种处理方式,所述处理模块还用于:
接收用于指示删除所述客户端中已有组件的指令,并确定待删除组件所实现的各服务对应的接口名称;根据所述待删除组件的各服务对应的接口名称,确定用于创建所述待删除组件的各服务的实例的创建对象;以及指示所述待删除组件的各创建对象清除自身所创建的所有实例,且,通知除所述待删除组件之外的已有组件释放与所述待删除组件的各创建对象相关的资源。
在实施中,所述客户端还包括:
存储模块,用于存储有所述已有组件所实现的各服务对应的接口名称和用于创建所述已有组件所实现的各服务的实例的创建对象,以及所述新组件所实现的各服务对应的接口名称和用于创建所述新组件所实现的各服务的实例的创建对象;其中,每个组件被加载后,将用于创建该组件所实现的各服务的实例的创建对象以及各服务对应的接口名称注册到客户端,所述组件包括客户端的已有组件和所述新组件。
附图说明
图1为本发明实施例提供的一种客户端进行升级的方法示意图;
图2为本发明实施例提供的客户端中的已有组件进行升级的方法示意图;
图3为本发明实施例提供的在客户端中增加新组件的方法示意图;
图4为本发明实施例提供的删除客户端中已有组件的方法示意图;
图5为本发明实施例提供的一种客户端的示意图。
具体实施方式
本发明实施例提供的客户端以及该客户端进行升级的方法,优选适用于采用C/S结构的客户端,当然也适用于采用其他结构的客户端。本发明实施例中,客户端采用组件化,该客户端包括多个组件,每个组件类似于一个应用程序,可以独立运行使用,也可以在运行时与其他组件连接起来构成一个应用程序;每个组件可以实现多个服务(即组件实现的服务是指该组件向用户所提供的服务),其中,每个服务对应一个接口,可以通过与每个服务对应的接口调用相应的服务,且每个服务绑定一个用于创建该服务的实例的创建对象,该创建对象能够在客户端创建用于实现该服务的所有实例;一般情况下,一个组件对应一个服务。客户端按照每个组件实现的每个服务对应的接口名称,来调用该服务的创建对象,根据该服务对应的接口名称加载该组件的相应服务,各组件之间相互调用时,也是根据接口名称来查询是否有自身需要调用的服务。
在实施中,客户端中的每个已有组件都会将用于创建该已有组件所实现的各服务的实例的创建对象以及各服务对应的接口名称,注册到客户端(即客户端系统),这样客户端就能够获取每个已有组件所实现的各服务的创建对象以及各服务对应的接口名称;
新组件被加载后,也会将用于创建该新组件所实现的各服务的实例的创建对象以及该服务的接口名称注册到客户端(即客户端系统),这样客户端就能够获取该新组件所所实现的各服务的创建对象以及各服务对应的接口名称。
相应的,客户端中存储有已有组件所实现的各服务对应的接口名称和用于创建已有组件所实现的各服务的实例的创建对象,以及新组件所实现的各服务对应的接口名称和用于创建新组件所实现的各服务的实例的创建对象。
具体的,每个组件(包括已有组件和新组件)的每个服务对应的接口名称与用于创建该服务的实例的创建对象一一对应,即一个接口名称对应一个创建对象。
进一步,客户端可以获取各组件(包括已有组件和新组件)所实现的各服务的创建对象,并将各组件的各创建对象通知给已有组件,尤其是与该组件相关联的已有组件(如订阅了该组件的任一服务的组件),以使已有组件获知自身所需要的服务已经被某个组件实现了,然后,已有组件就可以根据客户端通知的创建对象创建所需的实例,以建立组件间的关系。
下面结合说明书附图对本发明实施例作进一步详细描述。
参见图1所示,本发明实施例提供了一种客户端进行升级的方法,在客户端运行过程中,该方法包括以下步骤:
步骤11、客户端加载新组件,并判断新组件是对该客户端的已有组件的更新或是该客户端的新增组件。
具体的,在新组件相关的文件下载到客户端后,客户端加载该新组件,并判断该新组件是对该客户端的已有组件的更新或是该客户端的新增组件;
由于每个组件(包括客户端的已有组件以及新组件)均具有相应的组件信息,该组件信息至少包括:该组件所实现的接口、该组件的编号以及该组件的版本信息。新组件被加载时,客户端可以根据该新组件对应的组件信息以及该客户端中已有组件对应的组件信息,判断新组件是对该客户端的已有组件的更新或是该客户端的新增组件;具体为:
若新组件的编号与该客户端中任一已有组件的编号相同且版本信息不同(即新组件的版本信息高于该已有组件的版本信息),则客户端判定该新组件是对该客户端的已有组件的更新;
若新组件的编号与该客户端中所有已有组件的编号均不相同,则客户端判定该新组件是该客户端的新增组件,即对该客户端系统功能的扩展。
步骤12、客户端根据判断结果,对新组件以及与该新组件相关的已有组件进行相应处理,以完成该客户端的升级过程。
本发明实施例中,在运行过程中,客户端加载新组件,判断新组件是对客户端的已有组件的更新或是客户端的新增组件,并根据判断结果,对新组件以及与该新组件相关的已有组件进行相应处理,以完成该客户端的升级过程,从而在不需要关闭和重启客户端的情况下,能够完成客户端的升级过程,提高了用户体验。
作为一种处理方式,步骤11中,若判断结果为新组件是对客户端的已有组件的更新,则客户端将该已有组件确定为待升级组件,进一步,参见图2所示,步骤12中,客户端执行如下处理过程:
步骤121A、客户端根据待升级组件所实现的各服务对应的接口,分别确定用于创建待升级组件的各服务的实例的创建对象。
由于客户端中的每个已有组件已将自身所实现的各服务的创建对象以及对应的接口名称注册到了客户端,优选的,客户端中存储有各已有组件所实现的各服务的创建对象以及对应的接口名称。
本步骤中,客户端根据待升级组件所实现的各服务的接口名称,获取用于创建待升级组件所实现的各服务的实例的创建对象。
步骤122A、客户端指示待升级组件的各创建对象清除自身所创建的所有实例,且客户端通知除该待升级组件之外的已有组件释放与待升级组件的各创建对象相关的资源。
本步骤中,客户端先指示待升级组件的各创建对象清除自身所创建的所有实例,在确定该待升级组件的各创建对象完成自我销毁后,客户端再通知除该待升级组件之外的已有组件释放与待升级组件的各创建对象相关的资源;或者,
客户端先通知除该待升级组件之外的已有组件释放与待升级组件的各创建对象相关的资源,再指示待升级组件的各创建对象清除自身所创建的所有实例,以完成该待升级组件的各创建对象完成自我销毁。
本步骤中,优选的,待升级组件的各创建对象清除完所创建的所有实例后,待升级组件撤销对客户端(即客户端系统)的注册,即待升级组件通知客户端删除待升级组件已注册的各创建对象。
进一步,本步骤还包括:客户端删除自身存储的待升级组件已注册的各创建对象。
该方式下,由于新组件是对该待升级组件的更新,因此,客户端仅需要删除该待升级组件已注册的各创建对象,不需要删除该待升级组件已注册的接口名称,此时,该待升级组件已注册的接口名称对应的创建对象为空。
优选的,本步骤中,客户端通知除待升级组件之外的已有组件释放与待升级组件的各创建对象相关的资源,具体为:
客户端仅通知调用了待升级组件的创建对象的已有组件释放与待升级组件的各创建对象相关的资源;或者,
客户端通知除待升级组件之外的所有已有组件释放与待升级组件的各创建对象相关的资源。
需要说明的是,若客户端通知除待升级组件之外的所有已有组件释放与待升级组件的各创建对象相关的资源,则调用了待升级组件的创建对象的已有组件在接收到客户端的通知后,释放与待升级组件的创建对象相关的资源;未调用待升级组件的任一创建对象的已有组件(即与该待升级组件不相关的已有组件)在接收到客户端的通知后,忽略该通知,不执行任何操作。
步骤123A、新组件将自身实现的各服务对应的接口名称以及用于创建各服务的实例的创建对象注册到客户端。
本步骤中,在待升级组件的各创建对象已完成自我销毁之后,新组件才在客户端进行注册,优选的,客户端可以在确定待升级组件的各创建对象完成自我销毁后,通知新组件进行注册。
本步骤中,新组件在完成注册之后,由于新组件的各服务对应的接口名称与待升级组件中相同的服务对应的接口名称相同,客户端将在待升级组件已注册的接口名称下,保存该新组件已注册的与该接口名称对应的创建对象,以建立待升级组件已注册的接口名称与新组件的创建对象的对应关系。
步骤124A、客户端通知除待升级组件之外的已有组件该新组件的各创建对象,以使之前调用了待升级组件的服务的已有组件根据该新组件所实现的各服务的创建对象,建立与新组件之间的调用关系。
由于接入客户端的新组件已将自身所实现的各服务的创建对象以及对应的接口名称注册到了客户端,优选的,客户端中存储有新组件已注册的创建对象以及相应的接口名称。本步骤中,客户端根据新组件的接口名称,获取用于创建该接口名称对应的服务的实例的创建对象。
优选的,本步骤中,客户端通知除待升级组件之外的已有组件该新组件的各创建对象,具体为:
客户端仅通知之前调用了待升级组件的创建对象的已有组件该新组件的各创建对象;或者,
客户端通知除待升级组件之外的所有已有组件该新组件的各创建对象。
该处理方式下,由于新组件是对客户端中的待升级组件的更新,因此,新组件与待升级组件所实现的相同服务对应的接口名称相同,该新组件在进行注册时,使用与该待升级组件相同的接口名称向客户端注册自身的创建对象。
下面结合一个具体实施例,对本发明实施例中客户端已有组件的升级过程进行详细说明,其中,以下实施例中是以一个组件实现一个服务为例进行说明,其他情况与此类似,此处不再一一列举。
实施例一、本实施例中,客户端中已有组件已在该客户端注册了自身的创建对象以及相应的接口名称,假设新组件是对该客户端中一个已有组件的更新,则对客户端中已有组件的升级方法包括以下步骤:
首先,客户端(即客户端系统,以下简称系统)按照待升级组件的接口名称(假设该接口名称为ABCService),查询到用于创建待升级组件所实现的各服务的实例的创建对象(假设该创建对象为ABCCreator)。
然后,系统通知之前对接口名称为ABCService的服务感兴趣(如订阅了该服务)的其他组件接口名称为ABCService的服务已经不存在,该其他组件进行相应的处理,即释放与ABCCreator相关的资源。
接着,系统调用ABCCreator的撤销方法,以指示ABCCreator清除自身创建到系统中的所有实例,相应的,待升级组件的创建对象就把自己之前创建到系统的实例对象一一清除,并且待升级组件撤销对系统的注册(即指示系统删除系统中存储的待升级组件的创建对象)。
接着,新组件以相同的接口名称(即ABCService)向系统注册能够创建自己所实现的服务的创建对象ABCCreator。
接着,系统将该新组件的创建对象通知给其他组件。
接着,之前订阅了接口名称为ABCService的服务的组件收到了系统发送的通知,获知ABCCreator已经出现。
最后,其他组件引用ABCCreator创建ABCService到相关位置,从而完成了在没有关闭系统的情况下,更新了待升级组件。
该处理方式下,客户端在运行过程中,加载新组件,指示待升级组件的各创建对象清除所有实例、通知其他组件释放与待升级组件的各创建对象相关的资源、通知其他组件该新组件的各创建对象,从而在运行过程中,实现了新组件替换待升级组件的过程,可见,采用该处理方式,在不需要关闭和重启客户端的情况下,能够完成客户端中已有组件的升级过程,能够保证该客户端的实时监控,提高了用户体验。
作为另一种处理方式,若新组件是客户端的新增组件,则参见图3所示,客户端执行如下处理过程:
步骤121B、客户端获取用于创建新组件所实现的各服务的实例的创建对象以及各服务对应的的接口名称。
该处理方式下,新组件被加载,将用于创建自身所实现的各服务的创建对象以及各服务对应的接口名称注册到客户端,优选的,客户端中存储有新组件已注册的各创建对象以及相应的接口名称。
优选的,客户端在加载了新组件后,通知新组件进行注册。
本步骤中,客户端根据新组件所实现的各服务对应的的接口名称,获取用于创建相应服务的实例的创建对象。
步骤122B、客户端通知所有已有组件该新组件的各创建对象,以使需要调用该新组件的已有组件根据新组件的各创建对象,建立与该新组件间的调用关系。
本步骤中,客户端将该新组件的各创建对象通知给所有已有组件,以使需要调用该新组件的任一创建对象的已有组件(即对该新组件提供的任一服务感兴趣的已有组件),可以根据该新组件相应的创建对象,建立与新组件之间的调用关系。
下面结合一个具体实施例,对本发明实施例中客户端已有组件的升级方法进行详细说明,其中,以下实施例中是以一个组件实现一个服务为例进行说明,其他情况与此类似,此处不再一一列举。
实施例二、本实施例中,客户端中已有组件和新组件已在该客户端注册了用于创建自身所实现的各服务的创建对象以及相应的接口名称,假设新组件是该客户端的一个新增组件,则对该客户端的升级方法包括以下步骤:
首先,系统加载新组件,该新组件被加载后,将用于创建自身所实现的各服务的实例的创建对象及各服务对应的接口名称注册到系统;
其中,新组件所实现的各服务对应的接口必须是继承自界面创建接口(UICreator)或者直接实现该父类接口(即UICreator)。
需要说明的是,客户端定义了组件基础服务接口(即BaseService),每个注册到该客户端的组件所实现的各服务对应的接口必须是继承该组建基础服务接口的接口,或者直接是该父类接口;
一般情况下,带图形界面的组件都必须实现图形界面基础服务接口(UIBaseService,该服务的创建对象必须实现图形界面创建接口(UICreator),而不需要图形展示的组件(即不带图形界面的组件)可以实现非界面服务接口(NUIBaseService)。
然后,系统存储新组件所实现的每个服务对应的的接口名称以及用于创建该服务的实例的创建对象;
接着,系统通知已有组件该新组件的各创建对象;
最后,需要调用该新组件的任一创建对象的已有组件接收到系统的通知后,根据该新组件相应的创建对象,建立与新组件之间的调用关系,从而完成了在没有关闭系统的情况下,在系统中添加新组件的过程。
该处理方式下,客户端在运行过程中,加载新组件,获取新组件所实现的每个服务对应的接口名称以及用于创建该服务的创建对象,并通知所有已有组件该新组件的各创建对象,从而在运行过程中,实现了在客户端中添加新组件的过程,可见,采用该处理方式,在不需要关闭和重启客户端的情况下,能够完成在客户端中添加新组件的过程,能够保证该客户端的实时监控,提高了用户体验。
作为再一种处理方式,在客户端运行过程中,该方法还包括:删除客户端中已有组件的过程,参见图4所示,具体为:
步骤121C、客户端接收用于指示删除客户端中已有组件的删除指令,并确定待删除组件所实现的各服务对应的接口名称;
具体的,客户端接收用户发送的删除指令,该删除指令中指明了待删除组件的各接口名称。
步骤122C、客户端根据待删除组件的各服务对应的接口名称,确定用于创建待删除组件的各服务的实例的创建对象;
由于客户端中的每个已有组件已将自身的各创建对象以及相应的接口名称注册到了客户端,优选的,客户端中存储有各已有组件已注册的创建对象以及接口名称。
本步骤中,客户端根据待删除组件已注册的接口名称,获取该待删除组件已注册的各创建对象。
步骤123C、客户端指示待删除组件的各创建对象清除自身所创建的所有实例,且,客户端通知除待删除组件之外的已有组件释放与待删除组件的各创建对象相关的资源。
本步骤中,客户端先指示该待删除组件的各创建对象清除自身所创建的所有实例,在确定每个创建对象均完成自我销毁后,客户端再通知除该待删除组件之外的已有组件释放与待删除组件的各创建对象相关的资源;或者,
客户端先通知除待删除组件之外的已有组件释放与待删除组件的各创建对象相关的资源,再指示待删除组件的各创建对象清除自身所创建的所有实例,以完成创建对象完成自我销毁。
本步骤中,优选的,待删除组件的创建对象清除完所创建的所有实例后,待删除组件撤销对客户端(即客户端系统)的注册,即待删除组件通知客户端删除待删除组件已注册的接口名称以及相应的创建对象。
进一步,本步骤还包括:客户端删除自身存储的待删除组件已注册的接口名称以及相应的创建对象。
优选的,本步骤中,客户端通知除待删除组件之外的已有组件释放与待删除组件的各创建对象相关的资源,具体为:
客户端仅通知之前调用了待删除组件的任一创建对象的已有组件释放与待删除组件的各创建对象相关的资源;或者,
客户端通知除待删除组件之外的所有已有组件释放与待删除组件的各创建对象相关的资源。
该处理方式下,客户端在运行过程中,接收到用户发送的删除指令后,指示待删除组件已注册的创建对象清除所有实例、通知已有组件释放与待删除组件的各创建对象相关的资源,从而在运行过程中,实现了删除客户端中已有组件的过程,可见,采用该处理方式,在不需要关闭和重启客户端的情况下,能够完成从客户端中删除已有组件的过程,能够保证该客户端的实时监控,提高了用户体验。
上述方法处理流程可以用软件程序实现,该软件程序可以存储在存储介质中,当存储的软件程序被调用时,执行上述方法步骤。
基于同一发明构思,本发明实施例中还提供了一种客户端,由于该客户端解决问题的原理与上述客户端进行升级的方法相似,因此该客户端的实施可以参见方法的实施,重复之处不再赘述。
参见图5所示,本发明实施例提供的客户端,该客户端处于运行过程中,该客户端包括:
判断模块51,用于加载新组件,并判断新组件是对客户端的已有组件的更新或是客户端的新增组件;
处理模块52,用于根据判断结果,对新组件以及与该新组件相关的已有组件进行相应处理,以完成客户端的升级过程。
本发明实施例提供的客户端,在运行过程中,加载新组件,并判断新组件是对客户端的已有组件的更新或是客户端的新增组件,并根据判断结果,对新组件以及与该新组件相关的已有组件进行相应处理,以完成该客户端的升级过程,从而在不需要关闭和重启客户端的情况下,能够完成客户端的升级过程,提高了用户体验。
在实施中,判断模块51具体用于:
根据该新组件对应的组件信息以及该客户端中已有组件对应的组件信息,判断新组件是对该客户端的已有组件的更新或是该客户端的新增组件;
若新组件的编号与该客户端中任一已有组件的编号相同且版本信息不同(即新组件的版本信息高于该已有组件的版本信息),则客户端判定该新组件是对该客户端的已有组件的更新;
若新组件的编号与该客户端中所有已有组件的编号均不相同,则客户端判定该新组件是该客户端的新增组件,即对该客户端系统功能的扩展。
作为一种处理方式,若新组件是对客户端的已有组件的更新,则处理模块52将该已有组件确定为待升级组件,并执行如下处理过程:
根据待升级组件所实现的各服务对应的接口,分别确定用于创建待升级组件的各服务的创建对象;指示待升级组件的各创建对象清除自身所创建的所有实例,且,通知除待升级组件之外的已有组件释放与待升级组件的各创建对象相关的资源;获取用于创建新组件所实现的各服务的实例的创建对象以及各服务对应的接口名称;以及通知除待升级组件之外的已有组件新组件的各创建对象,以使之前调用了待升级组件的服务的已有组件根据新组件所实现的各服务的创建对象,建立与新组件之间的调用关系。
作为另一种处理方式,若新组件是客户端的新增组件,则处理模块52执行如下处理过程:
获取用于创建新组件所实现的各服务的实例的创建对象以及各服务对应的接口名称;以及通知所有已有组件新组件的各创建对象,以使需要调用新组件的已有组件根据新组件的各创建对象,建立与新组件之间的调用关系。
作为再一种处理方式,处理模块52还用于:
接收用于指示删除客户端中已有组件的指令,并确定待删除组件所实现的各服务对应的接口名称;根据待删除组件的各服务对应的接口名称,确定用于创建待删除组件的各服务的实例的创建对象;以及指示待删除组件的各创建对象清除自身所创建的所有实例,且,通知除待删除组件之外的已有组件释放与待删除组件的各创建对象相关的资源。
在实施中,客户端还包括:
存储模块53,存储有已有组件所实现的各服务对应的接口名称和用于创建已有组件所实现的各服务的实例的创建对象,以及新组件所实现的各服务对应的接口名称和用于创建新组件所实现的各服务的实例的创建对象;其中,每个组件被加载后,将用于创建该组件所实现的各服务的实例的创建对象以及各服务对应的接口名称注册到客户端,组件包括客户端的已有组件和所述新组件。
本发明实施例提供的客户端在运行过程中,能够在不需要关闭和重启客户端的情况下,完成客户端中已有组件的升级、在客户端中增加新组件、以及删除客户端中已有组件的过程,提高了用户体验。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种客户端进行升级的方法,其特征在于,在所述客户端运行过程中,该方法包括:
客户端加载新组件,并判断所述新组件是对所述客户端的已有组件的更新或是所述客户端的新增组件;
所述客户端根据判断结果,对所述新组件以及与所述新组件相关的已有组件进行处理,以完成所述客户端的升级过程。
2.如权利要求1所述的方法,其特征在于,若所述新组件是对所述客户端的一个已有组件的更新,所述客户端将该已有组件确定为待升级组件,并执行如下处理过程:
所述客户端根据所述待升级组件所实现的各服务对应的接口,分别确定用于创建所述待升级组件的各服务的实例的创建对象;
所述客户端指示所述待升级组件的各创建对象清除自身所创建的所有实例,且,所述客户端通知除所述待升级组件之外的已有组件释放与所述待升级组件的各创建对象相关的资源;
所述客户端获取用于创建所述新组件所实现的各服务的实例的创建对象以及各服务对应的接口名称;以及
所述客户端通知除所述待升级组件之外的已有组件所述新组件的各创建对象,以使之前调用了所述待升级组件的服务的已有组件根据所述新组件所实现的各服务的创建对象,建立与所述新组件之间的调用关系。
3.如权利要求1所述的方法,其特征在于,若所述新组件是所述客户端的新增组件,则客户端执行如下处理过程:
所述客户端获取用于创建所述新组件所实现的各服务的实例的创建对象以及各服务对应的接口名称;以及
所述客户端通知所有已有组件所述新组件的各创建对象,以使需要调用所述新组件的已有组件根据所述新组件的各创建对象,建立与所述新组件之间的调用关系。
4.如权利要求1所述的方法,其特征在于,在所述客户端运行过程中,所述方法还包括:
所述客户端接收用于指示删除所述客户端中已有组件的指令,并确定待删除组件所实现的各服务对应的接口名称;
所述客户端根据所述待删除组件的各服务对应的接口名称,确定用于创建所述待删除组件的各服务的实例的创建对象;
所述客户端指示所述待删除组件的各创建对象清除自身所创建的所有实例,且,所述客户端通知除所述待删除组件之外的已有组件释放与所述待删除组件的各创建对象相关的资源。
5.如权利要求1~4任一项所述的方法,其特征在于,所述方法还包括:
所述客户端存储有所述已有组件所实现的各服务对应的接口名称和用于创建所述已有组件所实现的各服务的实例的创建对象,以及所述新组件所实现的各服务对应的接口名称和用于创建所述新组件所实现的各服务的实例的创建对象;
其中,每个组件被加载后,将用于创建该组件所实现的各服务的实例的创建对象以及各服务对应的接口名称注册到客户端,所述组件包括客户端的已有组件和所述新组件。
6.一种客户端,其特征在于,该客户端处于运行过程中,包括:
判断模块,用于加载新组件,并判断所述新组件是对所述客户端的已有组件的更新或是所述客户端的新增组件;
处理模块,用于根据判断结果,对所述新组件以及与所述新组件相关的已有组件进行相应处理,以完成客户端的升级过程。
7.如权利要求6所述的客户端,其特征在于,若所述新组件是对所述客户端的一个已有组件的更新,所述处理模块将该已有组件确定为待升级组件,并执行如下处理过程:
根据所述待升级组件所实现的各服务对应的接口,分别确定用于创建所述待升级组件的各服务的创建对象;指示所述待升级组件的各创建对象清除自身所创建的所有实例,且,通知除所述待升级组件之外的已有组件释放与所述待升级组件的各创建对象相关的资源;获取用于创建所述新组件所实现的各服务的实例的创建对象以及各服务对应的接口名称;以及通知除所述待升级组件之外的已有组件所述新组件的各创建对象,以使之前调用了所述待升级组件的服务的已有组件根据所述新组件所实现的各服务的创建对象,建立与所述新组件之间的调用关系。
8.如权利要求6所述的客户端,其特征在于,若所述新组件是所述客户端的新增组件,则所述处理模块执行如下处理过程:
获取用于创建所述新组件所实现的各服务的实例的创建对象以及各服务对应的接口名称;以及通知所有已有组件所述新组件的各创建对象,以使需要调用所述新组件的已有组件根据所述新组件的各创建对象,建立与所述新组件之间的调用关系。
9.如权利要求6所述的客户端,其特征在于,所述处理模块还用于:
接收用于指示删除所述客户端中已有组件的指令,并确定待删除组件所实现的各服务对应的接口名称;根据所述待删除组件的各服务对应的接口名称,确定用于创建所述待删除组件的各服务的实例的创建对象;以及指示所述待删除组件的各创建对象清除自身所创建的所有实例,且,通知除所述待删除组件之外的已有组件释放与所述待删除组件的各创建对象相关的资源。
10.如权利要求6~9任一项所述的客户端,其特征在于,所述客户端还包括:
存储模块,用于存储有所述已有组件所实现的各服务对应的接口名称和用于创建所述已有组件所实现的各服务的实例的创建对象,以及所述新组件所实现的各服务对应的接口名称和用于创建所述新组件所实现的各服务的实例的创建对象;其中,每个组件被加载后,将用于创建该组件所实现的各服务的实例的创建对象以及各服务对应的接口名称注册到客户端,所述组件包括客户端的已有组件和所述新组件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310602666.XA CN104657168B (zh) | 2013-11-22 | 2013-11-22 | 一种客户端以及该客户端进行升级的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310602666.XA CN104657168B (zh) | 2013-11-22 | 2013-11-22 | 一种客户端以及该客户端进行升级的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104657168A true CN104657168A (zh) | 2015-05-27 |
CN104657168B CN104657168B (zh) | 2018-02-16 |
Family
ID=53248350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310602666.XA Active CN104657168B (zh) | 2013-11-22 | 2013-11-22 | 一种客户端以及该客户端进行升级的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104657168B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108121574A (zh) * | 2016-11-29 | 2018-06-05 | 阿里巴巴集团控股有限公司 | 一种内核模块的热升级方法、装置及虚拟机系统 |
CN110955474A (zh) * | 2018-09-27 | 2020-04-03 | 杭州海康威视系统技术有限公司 | 一种应用系统中业务添加、业务调用方法、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060248107A1 (en) * | 2005-04-11 | 2006-11-02 | Coronado Juan A | Apparatus system and method for updating software while preserving system state |
CN101656739A (zh) * | 2009-09-25 | 2010-02-24 | 金蝶软件(中国)有限公司 | 组件更新方法、系统及设备 |
CN102184112A (zh) * | 2011-05-06 | 2011-09-14 | 北京百度网讯科技有限公司 | 控件升级方法及装置 |
CN102523268A (zh) * | 2011-12-08 | 2012-06-27 | 北京新媒传信科技有限公司 | 一种客户端升级方法和系统 |
-
2013
- 2013-11-22 CN CN201310602666.XA patent/CN104657168B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060248107A1 (en) * | 2005-04-11 | 2006-11-02 | Coronado Juan A | Apparatus system and method for updating software while preserving system state |
CN101656739A (zh) * | 2009-09-25 | 2010-02-24 | 金蝶软件(中国)有限公司 | 组件更新方法、系统及设备 |
CN102184112A (zh) * | 2011-05-06 | 2011-09-14 | 北京百度网讯科技有限公司 | 控件升级方法及装置 |
CN102523268A (zh) * | 2011-12-08 | 2012-06-27 | 北京新媒传信科技有限公司 | 一种客户端升级方法和系统 |
Non-Patent Citations (1)
Title |
---|
郭国平: "基于构件的开发平台研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108121574A (zh) * | 2016-11-29 | 2018-06-05 | 阿里巴巴集团控股有限公司 | 一种内核模块的热升级方法、装置及虚拟机系统 |
CN108121574B (zh) * | 2016-11-29 | 2021-09-24 | 阿里巴巴集团控股有限公司 | 一种内核模块的热升级方法、装置及虚拟机系统 |
CN110955474A (zh) * | 2018-09-27 | 2020-04-03 | 杭州海康威视系统技术有限公司 | 一种应用系统中业务添加、业务调用方法、装置及设备 |
CN110955474B (zh) * | 2018-09-27 | 2023-09-05 | 杭州海康威视系统技术有限公司 | 一种应用系统中业务添加、业务调用方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104657168B (zh) | 2018-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11740943B2 (en) | Techniques for managing long-running tasks with a declarative provisioner | |
US8910138B2 (en) | Hot pluggable extensions for access management system | |
US10379968B2 (en) | Backup and restore framework for distributed computing systems | |
US9778923B2 (en) | Peoplesoft cloud manager | |
US8762929B2 (en) | System and method for exclusion of inconsistent objects from lifecycle management processes | |
US20170124326A1 (en) | Method for monitoring the security of a virtual machine in a cloud computing architecture | |
CN104410672A (zh) | 网络功能虚拟化应用升级的方法、转发业务的方法及装置 | |
CN109639818B (zh) | 一种云环境下的服务发现方法、装置、服务器和存储介质 | |
CN105653425A (zh) | 基于复杂事件处理引擎的监控系统 | |
JP2013522769A (ja) | 仮想マシンイメージ更新サービス | |
CN110083651B (zh) | 一种数据加载的方法和装置 | |
US10824548B1 (en) | System and method for performance regression detection | |
US10892970B2 (en) | Centralized, scalable, resource monitoring system | |
CN112882738A (zh) | 一种微服务架构下的配置信息更新方法、装置及电子设备 | |
CN107463390B (zh) | 一种软件升级方法及升级服务器 | |
CN104657168B (zh) | 一种客户端以及该客户端进行升级的方法 | |
US20110225463A1 (en) | Detecting and recovering from process failures | |
US20160335058A1 (en) | Semantic representations of software extensions | |
CN112905306A (zh) | 多集群容器管理方法、装置、电子设备和存储介质 | |
WO2024139011A1 (zh) | 信息处理方法 | |
CN111080250B (zh) | 流程回退补偿方法、装置、存储介质及电子设备 | |
CN113961221A (zh) | 一种基于注册中心的服务管理方法 | |
EP2169552A1 (en) | System and method for transactional application lifecycle management for mobile devices | |
CN109101253B (zh) | 云计算系统中主机的管理方法和装置 | |
CN113590033A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |