一种客户端以及该客户端进行升级的方法_3

文档序号:8339415阅读:来源:国知局
对应的创建对象为空。
[0072]优选的,本步骤中,客户端通知除待升级组件之外的已有组件释放与待升级组件的各创建对象相关的资源,具体为:
[0073]客户端仅通知调用了待升级组件的创建对象的已有组件释放与待升级组件的各创建对象相关的资源;或者,
[0074]客户端通知除待升级组件之外的所有已有组件释放与待升级组件的各创建对象相关的资源。
[0075]需要说明的是,若客户端通知除待升级组件之外的所有已有组件释放与待升级组件的各创建对象相关的资源,则调用了待升级组件的创建对象的已有组件在接收到客户端的通知后,释放与待升级组件的创建对象相关的资源;未调用待升级组件的任一创建对象的已有组件(即与该待升级组件不相关的已有组件)在接收到客户端的通知后,忽略该通知,不执行任何操作。
[0076]步骤123A、新组件将自身实现的各服务对应的接口名称以及用于创建各服务的实例的创建对象注册到客户端。
[0077]本步骤中,在待升级组件的各创建对象已完成自我销毁之后,新组件才在客户端进行注册,优选的,客户端可以在确定待升级组件的各创建对象完成自我销毁后,通知新组件进行注册。
[0078]本步骤中,新组件在完成注册之后,由于新组件的各服务对应的接口名称与待升级组件中相同的服务对应的接口名称相同,客户端将在待升级组件已注册的接口名称下,保存该新组件已注册的与该接口名称对应的创建对象,以建立待升级组件已注册的接口名称与新组件的创建对象的对应关系。
[0079]步骤124A、客户端通知除待升级组件之外的已有组件该新组件的各创建对象,以使之前调用了待升级组件的服务的已有组件根据该新组件所实现的各服务的创建对象,建立与新组件之间的调用关系。
[0080]由于接入客户端的新组件已将自身所实现的各服务的创建对象以及对应的接口名称注册到了客户端,优选的,客户端中存储有新组件已注册的创建对象以及相应的接口名称。本步骤中,客户端根据新组件的接口名称,获取用于创建该接口名称对应的服务的实例的创建对象。
[0081]优选的,本步骤中,客户端通知除待升级组件之外的已有组件该新组件的各创建对象,具体为:
[0082]客户端仅通知之前调用了待升级组件的创建对象的已有组件该新组件的各创建对象;或者,
[0083]客户端通知除待升级组件之外的所有已有组件该新组件的各创建对象。
[0084]该处理方式下,由于新组件是对客户端中的待升级组件的更新,因此,新组件与待升级组件所实现的相同服务对应的接口名称相同,该新组件在进行注册时,使用与该待升级组件相同的接口名称向客户端注册自身的创建对象。
[0085]下面结合一个具体实施例,对本发明实施例中客户端已有组件的升级过程进行详细说明,其中,以下实施例中是以一个组件实现一个服务为例进行说明,其他情况与此类似,此处不再一一列举。
[0086]实施例一、本实施例中,客户端中已有组件已在该客户端注册了自身的创建对象以及相应的接口名称,假设新组件是对该客户端中一个已有组件的更新,则对客户端中已有组件的升级方法包括以下步骤:
[0087]首先,客户端(即客户端系统,以下简称系统)按照待升级组件的接口名称(假设该接口名称为ABCService ),查询到用于创建待升级组件所实现的各服务的实例的创建对象(假设该创建对象为ABCCreator)。
[0088]然后,系统通知之如对接口名称为ABCService的服务感兴趣(如订阅了该服务)的其他组件接口名称为ABCService的服务已经不存在,该其他组件进行相应的处理,即释放与ABCCreator相关的资源。
[0089]接着,系统调用ABCCreator的撤销方法,以指示ABCCreator清除自身创建到系统中的所有实例,相应的,待升级组件的创建对象就把自己之前创建到系统的实例对象一一清除,并且待升级组件撤销对系统的注册(即指示系统删除系统中存储的待升级组件的创建对象)。
[0090]接着,新组件以相同的接口名称(即ABCService)向系统注册能够创建自己所实现的服务的创建对象ABCCreator。
[0091]接着,系统将该新组件的创建对象通知给其他组件。
[0092]接着,之前订阅了接口名称为ABCService的服务的组件收到了系统发送的通知,获知ABCCreator已经出现。
[0093]最后,其他组件引用ABCCreator创建ABCService到相关位置,从而完成了在没有关闭系统的情况下,更新了待升级组件。
[0094]该处理方式下,客户端在运行过程中,加载新组件,指示待升级组件的各创建对象清除所有实例、通知其他组件释放与待升级组件的各创建对象相关的资源、通知其他组件该新组件的各创建对象,从而在运行过程中,实现了新组件替换待升级组件的过程,可见,采用该处理方式,在不需要关闭和重启客户端的情况下,能够完成客户端中已有组件的升级过程,能够保证该客户端的实时监控,提高了用户体验。
[0095]作为另一种处理方式,若新组件是客户端的新增组件,则参见图3所示,客户端执行如下处理过程:
[0096]步骤121B、客户端获取用于创建新组件所实现的各服务的实例的创建对象以及各服务对应的的接口名称。
[0097]该处理方式下,新组件被加载,将用于创建自身所实现的各服务的创建对象以及各服务对应的接口名称注册到客户端,优选的,客户端中存储有新组件已注册的各创建对象以及相应的接口名称。
[0098]优选的,客户端在加载了新组件后,通知新组件进行注册。
[0099]本步骤中,客户端根据新组件所实现的各服务对应的的接口名称,获取用于创建相应服务的实例的创建对象。
[0100]步骤122B、客户端通知所有已有组件该新组件的各创建对象,以使需要调用该新组件的已有组件根据新组件的各创建对象,建立与该新组件间的调用关系。
[0101]本步骤中,客户端将该新组件的各创建对象通知给所有已有组件,以使需要调用该新组件的任一创建对象的已有组件(即对该新组件提供的任一服务感兴趣的已有组件),可以根据该新组件相应的创建对象,建立与新组件之间的调用关系。
[0102]下面结合一个具体实施例,对本发明实施例中客户端已有组件的升级方法进行详细说明,其中,以下实施例中是以一个组件实现一个服务为例进行说明,其他情况与此类似,此处不再一一列举。
[0103]实施例二、本实施例中,客户端中已有组件和新组件已在该客户端注册了用于创建自身所实现的各服务的创建对象以及相应的接口名称,假设新组件是该客户端的一个新增组件,则对该客户端的升级方法包括以下步骤:
[0104]首先,系统加载新组件,该新组件被加载后,将用于创建自身所实现的各服务的实例的创建对象及各服务对应的接口名称注册到系统;
[0105]其中,新组件所实现的各服务对应的接口必须是继承自界面创建接口(UICreator)或者直接实现该父类接口(即UlCreator)。
[0106]需要说明的是,客户端定义了组件基础服务接口(即BaseService),每个注册到该客户端的组件所实现的各服务对应的接口必须是继承该组建基础服务接口的接口,或者直接是该父类接口;
[0107]一般情况下,带图形界面的组件都必须实现图形界面基础服务接口(UIBaseService,该服务的创建对象必须实现图形界面创建接口(UlCreator),而不需要图形展示的组件(即不带图形界面的组件)可以实现非界面服务接口(NUIBaseService)。
[0108]然后,系统存储新组件所实现的每个服务对应的的接口名称以及用于创建该服务的实例的创建对象;
[0109]接着,系统通知已有组件该新组件的各创建对象;
[011
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1