CN102810065B - 用于加载程序模块的方法和系统 - Google Patents

用于加载程序模块的方法和系统 Download PDF

Info

Publication number
CN102810065B
CN102810065B CN201110144285.2A CN201110144285A CN102810065B CN 102810065 B CN102810065 B CN 102810065B CN 201110144285 A CN201110144285 A CN 201110144285A CN 102810065 B CN102810065 B CN 102810065B
Authority
CN
China
Prior art keywords
module
loaded
program
root
root module
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
Application number
CN201110144285.2A
Other languages
English (en)
Other versions
CN102810065A (zh
Inventor
戴海斌
S.海尼斯
J.加里
邬海杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN201110144285.2A priority Critical patent/CN102810065B/zh
Priority to US13/484,388 priority patent/US9146753B2/en
Publication of CN102810065A publication Critical patent/CN102810065A/zh
Application granted granted Critical
Publication of CN102810065B publication Critical patent/CN102810065B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Abstract

本发明涉及应用程序处理领域。更具体地,本发明尤其涉及对应用程序中具有层级关系的程序模块进行加载的方法及系统。本发明提供了一种用于加载具有层级关系的程序模块的方法,包括:接收来自客户端的加载程序模块的请求,所述请求中包含待加载程序模块中的根模块信息;根据所述请求中的根模块信息,获取所述待加载根模块以及所述待加载根模块的子模块;以及将所述根模块以及所述根模块的子模块发送至所述客户端。

Description

用于加载程序模块的方法和系统
技术领域
应用程序处理领域。更具体地,本发明尤其涉及对应用程序中具有层级关系的程序模块进行加载的方法及系统。
背景技术
随着计算机应用程序的规模、代码量日益庞大以及程序模块化程度的不断提升,越来越多的程序开发人员通过引用已有的通用代码(例如通用库文件CommonLibrary)来避免重复性的编程工作。这些具有复用性的代码可能包括程序类Class以及其它代码包,它们是构成一个应用程序的组件或模块。一个大型应用程序可能由多个这样的程序模块构成,并且这些程序模块间往往存在者层级关系(也可理解为父子关系或调用的依赖关系)。目前很多应用程序在开发、测试或运行时,需要通过网络传输/调用/加载这些可复用的存在层级关系的众多程序组件或模块。
目前存在以下几种通过网络传输程序模块的技术方案。第一种是加载整个库文件(Library)。由于库文件通常体积庞大,而真正需要调用其实只是库文件中的部分模块,因此加载整个库文件会导致不必要的内容传输,延长了加载的时间。
第二种现有技术中的技术方案是仅加载所需要的代码单元。例如,客户端的微件WidgetA需要某个库文件中的100个代码包,而客户端的微件WidgetB需要该库文件中的50个代码包(其中有一些代码包和WidgetA需要的代码包相同),虽然在传输的过程中WidgetA和B均可以只请求服务器端传输其所需的代码包,并且也可以避免传输相同的代码包,可以避免不必要的及重复的代码内容传输,但是由于WidgetA和B需要对其所需的每个代码包向服务器发出一个请求(request),导致网络请求的数量剧增,同样会大大延长加载的时间。
第三种现有技术中的技术方案是由程序开发人员事先将客户端不同的应用(例如Widget)所需要的代码包进行打包,然后在每个Widget调用时直接将打包好的程序包发送至客户端。这种技术方案的好处是可以避免加载整个库文件,也可以避免过多的网络请求,但缺点是可能有大量的重复的代码包被发送至客户端,因为客户端的WidgetA所需要的代码包与WidgetB所需要的代码包存在重复,在松耦合(Loose-Coupling)程序开发的情形下(松耦合是指某一应用程序存在多个开发人员,例如WidgetA的开发人员和WidgetB的开发人员彼此不知晓对方所开发的Widget里面是否需要调用相同的代码包),不同的程序开发者无法事先知晓哪些代码包是重复的。
发明内容
考虑到上述存在的问题,本发明的目的之一在于提供一种能够在松耦合的情况下加载具有层级关系的程序模块的方法或系统。本发明的又一目的在于提供一种能够在松耦合的情况下加载具有层级关系的程序模块,并且能够避免重复代码传输。本发明的又一目的在于提供一种能够在松耦合的情况下加载具有层级关系的程序模块,并且能够避免不必要的代码传输。本发明的又一目的在于提供一种能够在松耦合的情况下加载具有层级关系的程序模块,并且能够避免大量的或复杂的网络请求。上述四个子目的彼此独立,本发明的发明目的并非要同时达到上述四个子目的,而是可能仅实现目的之一或任意数量的组合。
根据本发明的一个方面,提供了一种用于加载具有层级关系的程序模块的方法,包括:接收来自客户端的加载程序模块的请求,所述请求中包含待加载程序模块中的根模块信息;根据所述请求中的根模块信息,获取所述待加载根模块以及所述待加载根模块的子模块;以及将所述根模块以及所述根模块的子模块发送至所述客户端。
根据本发明的一个实施例,上述方法还包括:接收来自客户端的关于已加载的程序模块的通知,所述通知中包含已加载的程序模块中的根模块信息;以及根据所述通知中的根模块信息,获取已加载的根模块以及所述已加载的根模块的子模块信息。
根据本发明的另一方面,提供了一种用于加载具有层级关系的程序模块的系统,包括:请求接收装置,被配置为接收来自客户端的加载程序模块的请求,所述请求中包含待加载程序模块中的根模块信息;第一获取装置,被配置为根据所述请求中的根模块信息,获取所述待加载根模块以及所述待加载根模块的子模块;以及加载装置,被配置为将所述根模块以及所述根模块的子模块发送至所述客户端。
根据本发明的一个实施例,上述系统还包括:通知接收装置,被配置为接收来自客户端的关于已加载的程序模块的通知,所述通知中包含已加载的程序模块中的根模块信息;以及第二获取装置,被配置为根据所述通知中的根模块信息,获取已加载的根模块以及所述已加载的根模块的子模块信息。
通过本发明的方法和系统,可以在松耦合的情况下加载具有层级关系的程序模块,并且能够避免重复代码传输和/或避免不必要的代码传输和/或避免大量的网络请求。
附图说明
通过对结合附图所示出的实施方式进行详细说明,本发明的上述以及其他特征将更加明显,本发明附图中相同的标号表示相同或相似的部件。在附图中,
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图;
图2示出了根据本发明一实施例的用于加载具有层级关系的程序模块的方法的流程图;
图3A示出了根据本发明又一实施例的用于加载具有层级关系的程序模块的方法的流程图;
图3B示出了根据本发明一个具体实施例的通过客户端请求加载程序模块的层级关系图;
图4示出了根据本发明一实施例的用于加载具有层级关系的程序模块的系统的框图;
图5示出了根据本发明一实施例的用于加载具有层级关系的程序模块的系统的框图。
具体实施方式
在下文中,将参考附图通过实施方式对本发明提供的用于加载具有层级关系的程序模块的方法和系统进行详细描述。
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。在这些设备中,与系统总线104耦合的有CPU101、RAM102、ROM103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅为了示例的目的而示出的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况而增加或者减少某些设备。
图2示出了根据本发明一实施例的用于加载具有层级关系的程序模块的方法的流程图。
图2所示的方法从步骤201开始,在步骤201中,接收来自客户端的加载程序模块的请求,所述请求中包含待加载程序模块中的根模块信息。这里所指的客户端是一个相对于服务器端的概念,可以是客户端代理、浏览器、微件Widget、程序开发人员在开发、测试过程中请求加载程序模块的计算机等,并非一定是终端用户。总之,任何发出加载程序模块请求的应用、插件、计算机等软、硬件均可被理解为这里所指的客户端。
根据本发明的一个实施例,加载程序模块的请求中仅包含待加载程序模块中的根模块信息。根据本发明的又一实施例,加载程序模块的请求中包含待加载程序模块中的根模块信息以及部分或全部该根模块的子模块信息。如果加载程序模块的请求中仅包含待加载程序模块中的根模块信息,可以根据根模块信息和程序模块间的层级关系信息来获取该根模块的所有子模块。如果加载程序模块的请求中包含待加载程序模块中的根模块信息以及部分或全部该根模块的子模块信息,虽然存在部分重复分析的过程,但是仍然能够确保获取该根模块的所有子模块。当然,客户端是无法获取尚未加载的程序模块间的层级关系的,因此客户端在发送请求时,如果待加载的程序模块尚未被加载至客户端,客户端并不知晓这些待加载的程序模块中哪些是根模块,哪些是子模块,因此其请求中可能仅包含根模块,也可能既包含根模块又包含子模块。但是无论如何,根模块是一定会包含在请求中的(因为如果一个模块是客户端需要加载的并且尚未被加载,并且没有其它需要加载的模块依赖于该模块,那么这个模块是根模块,并且一定会包含在客户端发送的请求中)。
需要指出的是,具有层级关系的程序模块间存在调用与被调用,或者依赖与被依赖的关系。因此,在本发明中,将仅依赖于其它程序模块而不被其它程序模块所依赖的程序模块称为根模块(最顶级的模块),将根模块所依赖的程序模块称为子模块。根模块与子模块的关系可以简单地理解为在树形图中的根节点与子节点的关系。还需要指出的是,来自客户端的一个加载程序模块的请求中可能包含加载一个或多个根模块的信息,例如客户端请求加载两个程序模块,这两个程序模块间彼此不具有层级关系,且对于这个客户端而言,没有任何其它需要加载的程序模块(需要加载的程序模块不包含已经被加载过的程序模块)依赖于这两个模块,那么这两个程序模块均为根模块。
根据本发明的一个实施例,本发明中的程序模块为可复用的代码包、代码单元、代码组件、程序类Class中的一个或多个。本领域技术人员应当理解,程序模块的概念强调的是构成程序的单元、部分,其在不同的编程环境下可能体现为不同的形式。根据本发明的一个实施例,本发明中的具有层级关系的程序模块为未经编译的源代码模块。根据本发明的又一实施例,本发明中的具有层级关系的程序模块为经过编译的目标代码(二进制代码)模块。本领域技术人员应当理解,无论程序模块是源代码还是目标代码,只要它们彼此之间存在着层级关系信息就可以应用于本发明。
接下来,图2所示的方6进行至步骤202,在步骤202中,根据所述请求中的根模块信息,获取所述待加载根模块以及所述待加载根模块的子模块。之所以能够根据请求中的根模块信息来获取待加载根模块及其子模块,是因为程序模块间的层级关系信息已经被获取。根据本发明的一个实施例,通过依次分析每个程序模块,获取所有程序模块间的层级关系信息。根据本发明的另一实施例,响应于所述来自客户端的加载程序模块的请求,获取待加载的程序模块间的层级关系信息。根据本发明的再一实施例,通过程序开发人员的输入来获取待加载的程序模块间的层级关系信息。利用已经取得的程序模块间的层级关系信息以及程序模块加载请求中的根模块信息,可以分析出待加载的根模块的一级子模块,以及一级子模块的子模块,以此类推,从而确定所有待加载的具有层级关系的程序模块信息,并进而获取待加载的具有层级关系的程序模块。本领域技术人员应当了解,层级关系信息可以通过多种方式获取,上文中给出的三种实施例仅仅是示例性说明的目的,并不构成对具体实施方式的任何限制。
接下来在步骤206中,将所述根模块以及所述根模块的子模块发送至所述客户端。这样,客户端就可以实现对所有待加载程序模块的加载。根据本发明的一个实施例,步骤201中的请求接收以及步骤206中的模块发送均是通过以太网或其它网络进行的。
通过图2所示的方法,区别于现有技术方案,客户端在发送加载程序模块的请求时可以仅告知待加载程序模块的根模块信息,而通过仅发送一次加载请求(并且加载请求非常简单,仅包含根模块信息)就完成对所有待加载模块的加载(并且仅加载了客户端必需的程序模块),从而实现了本发明避免传输不必要的代码内容以及避免复杂的网络请求的目的。
图3A示出了根据本发明又一实施例的用于加载具有层级关系的程序模块的方法的流程图。
图3A所示的方法中的步骤301和302分别对应于图2所示的方法中的步骤201和202,在此不再赘述。在步骤303中,接收来自客户端的关于已加载的程序模块的通知,所述通知中包含已加载的程序模块中的根模块信息。由于在之前的加载过程中(例如客户端的另一个请求加载程序模块的微件Widget或其它插件),有一些程序模块可能已经加载到客户端,为了避免重复加载相同的程序模块,优选地,客户端会通知当前待加载的程序模块中已经加载过的程序模块信息。根据本发明的一个实施例,关于已加载的程序模块的通知中仅包含已加载的程序模块中的根模块信息。这是因为,虽然可能有很多程序模块已经被加载,出于简化网络请求(通知本质上也可归为网络请求的一种)的目的,由于已加载的程序模块间也是具有层级关系的,因此客户端已经建立了已加载的程序模块之间的层级关系,并且仅通知已加载的程序模块中的根模块。根据本发明的一个实施例,客户端在本地维护已加载的程序模块间的层级关系(例如通过构造并维护一个本地全局变量的方式)。
接下来,在步骤304中,根据所述通知中的根模块信息,获取已加载的根模块以及所述已加载的根模块的子模块信息。步骤304类似于步骤202,在此不再赘述。步骤304与步骤202的不同之处在于:步骤202中需要实际获取待加载的根模块及其子模块,而步骤304中只需要获取已加载的根模块及其子模块的信息即可,无需实际获取已加载的根模块及其子模块。
在步骤305中,从所获取的根模块以及所述根模块的子模块中删除已加载的根模块及其所有子模块。为了避免将已加载的程序模块再次加载,把这些已加载的程序模块从待加载的程序模块中删除。接下来,在步骤306中,将被删除已加载的根模块及其所有子模块后的剩余程序模块发送至所述客户端。步骤306可以理解为对应于图2中的步骤206,其实质均在于将最终确定的需要通过网络传输至客户端的待加载模块发送至客户端。
需要指出的是,尽管在图3以及上文的文字描述中对步骤301-306的顺序有所设定,但是步骤301-306的执行顺序或步骤间的关系在不脱离本发明构思的前提下可能存在多种变化。根据本发明的一个实施例,在步骤301接收到的加载程序模块的请求中除了待加载的程序模块的根模块信息外,还包含关于已加载的程序模块的通知。也就是说,步骤303中的通知和步骤301中的请求可以同时由客户端发出。根据本发明的一个实施例,可以先执行步骤304,根据所述通知中的根模块信息,获取已加载的根模块以及所述已加载的根模块的子模块信息。然后执行步骤302,根据所述请求中的根模块信息,获取所述待加载根模块以及所述待加载根模块的子模块。由于在执行步骤302之前,已经知晓哪些程序模块已经被加载,因此在执行步骤302时,就可以仅获取待加载程序模块中的未被加载过的程序模块,也就是说,无需先获取全部的待加载程序模块再从中删除已加载的程序模块,而是在分析层级关系信息阶段就确定了需要最终传输的待加载程序模块。这样的话,步骤305也无需再次执行。总之,图2及图3中的步骤间的顺序仅仅是示例性的说明,而不构成对本发明的限制。
通过图3A所示的方法,区别于现有技术方案,客户端在发送加载程序模块的请求时可以仅告知待加载程序模块的根模块信息,并且通知哪些程序模块已经被加载(通知时仅通知已加载程序模块的根模块),仅发送一次加载请求和通知(并且加载请求非常简单,仅包含根模块信息)就完成对所有待加载模块的加载(并且仅加载了客户端必需的并且尚未被加载过的程序模块),从而实现了本发明避免传输不必要的代码内容、避免传输重复的代码内容以及避免复杂的网络请求的目的,大大节省了网络带宽及加载多个程序模块时的延时。
图2及图3A所示的方法还有一个技术效果在HTTP请求下尤其明显。为了满足HTTP请求的Catch特性,必须使用HTTP请求中的Get请求(Get请求中仅包含URL地址),而不能使用HPPT请求中的Post请求(Post请求中包含很多参数信息,不能满足Catch特性)。然而,通常在客户端请求加载大量程序模块时,无法通过Get请求(具体的URL地址)将所需的所有程序模块一一加载。本发明的好处就在于:请求中仅包含根模块,而不包含其它模块的信息,可以利用Get请求来发送加载程序模块的请求,从而可以满足Catch特性。关于Catch特性的具体内容属于本领域的公知常识,在此不再赘述。
下面结合图2及图3A所示的方法,通过一个简单的例子对本发明提供的用于加载具有层级关系的程序模块的方法进行描述。图3B示出了程序模块间的层级关系图。假设客户端浏览器中具有两个微件,分别是WidgetA和WidgetB。开始阶段,客户端没有任何已加载的程序模块。现在WidgetA请求加载类ClassA(ClassA为程序模块),并且ClassA包含子类(子模块)A0和B0,并且A0进一步包含子类A1,B0进一步包含子类B1。那么WidgetA仅向服务器端发出请求加载ClassA(根模块)的请求。当服务器端接收到这条请求后,利用程序模块间的层级关系信息以及请求中的根模块信息,获取了ClassA以及它的全部四个子类A0、A1、B0、B1,并将这五个类打包后发送至客户端,从而完成了WidgetA的加载请求。
接下来,假设同一客户端的另一微件WidgetB请求加载类ClassB,而ClassB包含子类(子模块)B0和C0,并且类B0包含子类B1,那么WidgetB向服务器端发送加载ClassB的请求(请求中仅包含根类ClassB),并且通知服务器端类ClassB0已经被加载(通知中仅包含根类ClassB0)。服务器在收到WidgetB发送的请求和通知后,即确定:WidgetB要加载的类为ClassB、B0、B1、C0,而ClassB0和B1已经被加载,因此服务器端仅获取ClassB和ClassC0,并将这两个程序类打包后发送至客户端,从而完成WidgetB的加载程序模块的请求。
图4示出了根据本发明一实施例的用于加载具有层级关系的程序模块的系统的框图。图4所示的系统在整体上由系统400表示。具体地,系统400包括请求接收装置401,被配置为接收来自客户端的加载程序模块的请求,所述请求中包含待加载程序模块中的根模块信息;第一获取装置402,被配置为根据所述请求中的根模块信息,获取所述待加载根模块以及所述待加载根模块的子模块;以及加载装置406,被配置为将所述根模块以及所述根模块的子模块发送至所述客户端。本领域技术人员应当理解,系统400中的装置401、402和406分别对应于图2所示的方法中的步骤201、202和206,在此不再赘述。
图5示出了根据本发明一实施例的用于加载具有层级关系的程序模块的系统的框图。图5所示的系统在整体上由系统500表示。具体地,系统500包括请求接收装置501,被配置为接收来自客户端的加载程序模块的请求,所述请求中包含待加载程序模块中的根模块信息;第一获取装置502,被配置为根据所述请求中的根模块信息,获取所述待加载根模块以及所述待加载根模块的子模块;通知接收装置503,被配置为接收来自客户端的关于已加载的程序模块的通知,所述通知中包含已加载的程序模块中的根模块信息;第二获取装置504,被配置为根据所述通知中的根模块信息,获取已加载的根模块以及所述已加载的根模块的子模块信息;删除装置505,被配置为从所获取的根模块以及所述根模块的子模块中删除已加载的根模块及其所有子模块;以及加载装置506,被配置为将所述根模块以及所述根模块的子模块发送至所述客户端。本领域技术人员应当理解,系统500中的装置501-506分别对应于图3所示的方法中的步骤301-306,在此不再赘述。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
虽然以上结合具体实例,对本发明的利用远程应用处理本地文件的系统及方法进行了详细描述,但本发明并不限于此。本领域普通技术人员能够在说明书教导之下对本发明进行多种变换、替换和修改而不偏离本发明的精神和范围。应该理解,所有这样的变化、替换、修改仍然落入本发明的保护范围之内。本发明的保护范围由所附权利要求来限定。

Claims (16)

1.一种用于加载具有层级关系的程序模块的方法,包括:
接收来自客户端的加载程序模块的请求,所述请求中包含待加载程序模块中的根模块信息;
根据所述请求中的根模块信息,获取待加载的根模块以及所述待加载的根模块的子模块;以及
将所述根模块以及所述根模块的子模块发送至所述客户端,其中,根据所述请求中的根模块信息,获取待加载的根模块以及所述待加载根模块的子模块包括:
根据所述请求中的根模块信息以及程序模块间的层级关系,获取所述待加载的根模块以及所述待加载根模块的所有子模块,其中层级关系指程序模块间存在的调用与被调用的关系。
2.如权利要求1所述的方法,还包括:
删除所获取的根模块以及根模块的子模块中已加载的根模块及其所有子模块;并且,
其中将所述根模块以及所述根模块的子模块发送至所述客户端包括:
将删除已加载的根模块及其所有子模块后的剩余程序模块发送至所述客户端。
3.如权利要求2所述的方法,还包括:
接收来自客户端的关于已加载的程序模块的通知,所述通知中包含已加载的程序模块中的根模块信息;以及
根据所述通知中的根模块信息,获取已加载的根模块以及所述已加载的根模块的子模块信息。
4.如权利要求3所述的方法,其中
根据所述通知中的根模块信息,获取已加载的根模块以及所述已加载的根模块的子模块信息包括:
根据所述通知中的根模块信息以及程序模块间的层级关系,获取所述已加载的根模块以及所述已加载的根模块的所有子模块信息。
5.如权利要求1-4任一所述的方法,还包括:
通过依次分析每个程序模块,获取所有程序模块间的层级关系信息。
6.如权利要求1-4任一所述的方法,还包括:
响应于所述来自客户端的加载程序模块的请求,获取待加载的程序模块间的层级关系信息。
7.如权利要求1所述的方法,其中程序模块为程序类Class,并且所述具有层级关系的程序模块间是松耦合的。
8.如权利要求3或4任一所述的方法,其中所述请求中仅包含待加载程序模块中的根模块信息,并且所述通知中仅包含已加载的程序模块中的根模块信息。
9.一种用于加载具有层级关系的程序模块的系统,包括:
请求接收装置,被配置为接收来自客户端的加载程序模块的请求,所述请求中包含待加载程序模块中的根模块信息;
第一获取装置,被配置为根据所述请求中的根模块信息,获取待加载的根模块以及所述待加载根模块的子模块;以及
加载装置,被配置为将所述根模块以及所述根模块的子模块发送至所述客户端,其中第一获取装置被进一步配置为:
根据所述请求中的根模块信息以及程序模块间的层级关系,获取待加载的根模块以及所述待加载根模块的所有子模块,其中层级关系指程序模块间存在的调用与被调用的关系。
10.如权利要求9所述的系统,还包括:
删除装置,被配置为删除所获取的根模块以及所述根模块的子模块中的已加载的根模块及其所有子模块;并且,
其中加载装置被进一步配置为:
将删除已加载的根模块及其所有子模块后的剩余程序模块发送至所述客户端。
11.如权利要求10所述的系统,还包括:
通知接收装置,被配置为接收来自客户端的关于已加载的程序模块的通知,所述通知中包含已加载的程序模块中的根模块信息;以及
第二获取装置,被配置为根据所述通知中的根模块信息,获取已加载的根模块以及所述已加载的根模块的子模块信息。
12.如权利要求11所述的系统,其中第二获取装置被进一步配置为:
根据所述通知中的根模块信息以及程序模块间的层级关系,获取所述已加载的根模块以及所述已加载的根模块的所有子模块信息。
13.如权利要求9-12任一所述的系统,还包括:
第三获取装置,被配置为通过依次分析每个程序模块,获取所有程序模块间的层级关系信息。
14.如权利要求9-12任一所述的系统,还包括:
第三获取装置,被配置为响应于所述来自客户端的加载程序模块的请求,获取待加载的程序模块间的层级关系信息。
15.如权利要求9所述的系统,其中程序模块为程序类Class,并且所述具有层级关系的程序模块间是松耦合的。
16.如权利要求11或12任一所述的系统,其中所述请求中仅包含待加载程序模块中的根模块信息,并且所述通知中仅包含已加载的程序模块中的根模块信息。
CN201110144285.2A 2011-05-31 2011-05-31 用于加载程序模块的方法和系统 Expired - Fee Related CN102810065B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110144285.2A CN102810065B (zh) 2011-05-31 2011-05-31 用于加载程序模块的方法和系统
US13/484,388 US9146753B2 (en) 2011-05-31 2012-05-31 Loading program modules

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110144285.2A CN102810065B (zh) 2011-05-31 2011-05-31 用于加载程序模块的方法和系统

Publications (2)

Publication Number Publication Date
CN102810065A CN102810065A (zh) 2012-12-05
CN102810065B true CN102810065B (zh) 2016-04-27

Family

ID=47233774

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110144285.2A Expired - Fee Related CN102810065B (zh) 2011-05-31 2011-05-31 用于加载程序模块的方法和系统

Country Status (2)

Country Link
US (1) US9146753B2 (zh)
CN (1) CN102810065B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105094857B (zh) * 2014-04-23 2018-09-25 国际商业机器公司 用于应用加载的方法和系统
CN106919812B (zh) * 2015-12-26 2020-06-16 腾讯科技(深圳)有限公司 一种应用进程权限管理方法和装置
CN107506483A (zh) * 2017-09-15 2017-12-22 广州优视网络科技有限公司 页面加载方法、装置、电子设备及存储介质
CN112486481B (zh) * 2020-12-03 2024-03-19 北京展心展力信息科技有限公司 多模块分层架构实现方法、装置、电子设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6559871B1 (en) * 1999-09-29 2003-05-06 International Business Machines Corporation Asynchronous tree navigator graphical user interface and associated methods
CN101493775A (zh) * 2009-03-06 2009-07-29 北京北纬通信科技股份有限公司 嵌入式系统的动态加载系统及其加载方法
CN101937353A (zh) * 2010-09-20 2011-01-05 中兴通讯股份有限公司 一种插件部署和加载的方法及装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0916217A2 (en) 1996-05-24 1999-05-19 Narrative Communications Corp. Computer method and apparatus for object streaming
US5966702A (en) 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
US6230184B1 (en) * 1998-10-19 2001-05-08 Sun Microsystems, Inc. Method and apparatus for automatically optimizing execution of a computer program
US20040015953A1 (en) 2001-03-19 2004-01-22 Vincent Jonathan M. Automatically updating software components across network as needed
US7389515B1 (en) 2001-05-21 2008-06-17 Microsoft Corporation Application deflation system and method
US6901589B2 (en) * 2001-06-25 2005-05-31 Wind River Systems, Inc. System and method for determining a root cause of a failure
US7178140B2 (en) 2002-02-28 2007-02-13 Sun Microsystems, Inc. Speeding up application downloading from a remote server
US20070288556A1 (en) * 2002-05-17 2007-12-13 Anton Richard N System and Method for Encoding and Decoding Data Files
US20040255294A1 (en) * 2003-02-12 2004-12-16 Bea Systems, Inc. System and method for hierarchical loading of EJB implementations
GB0326915D0 (en) * 2003-11-19 2003-12-24 Ibm A method and system for updating/reloading the content of pages browsed over a network
US7644402B1 (en) * 2004-03-17 2010-01-05 Sun Microsystems, Inc. Method for sharing runtime representation of software components across component loaders
US7937717B2 (en) 2004-09-13 2011-05-03 Tvworks, Llc Method and apparatus enabling multiple application sharing of classes
CN101193113A (zh) * 2006-11-29 2008-06-04 国际商业机器公司 内容响应和内容请求方法及内容响应器和内容请求器
US10216854B2 (en) * 2007-07-26 2019-02-26 International Business Machines Corporation Optimized page script downloads in a component based architecture
US20090125611A1 (en) * 2007-11-08 2009-05-14 Barsness Eric L Sharing loaded java classes among a plurality of nodes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6559871B1 (en) * 1999-09-29 2003-05-06 International Business Machines Corporation Asynchronous tree navigator graphical user interface and associated methods
CN101493775A (zh) * 2009-03-06 2009-07-29 北京北纬通信科技股份有限公司 嵌入式系统的动态加载系统及其加载方法
CN101937353A (zh) * 2010-09-20 2011-01-05 中兴通讯股份有限公司 一种插件部署和加载的方法及装置

Also Published As

Publication number Publication date
US20120311554A1 (en) 2012-12-06
CN102810065A (zh) 2012-12-05
US9146753B2 (en) 2015-09-29

Similar Documents

Publication Publication Date Title
CN108347358B (zh) 云连接的自动化测试的方法和系统
CN102855178B (zh) 一种单元测试中生成Mock库的方法和装置
CN104965788A (zh) 一种代码静态检测方法
US20120143588A1 (en) Concurrent workload simulation for application performance testing
CN102810065B (zh) 用于加载程序模块的方法和系统
CN108965375B (zh) 服务调用代理控制系统、方法、服务器及可读存储介质
US10540150B2 (en) Composable context menus
CN111026634A (zh) 一种接口自动化测试系统、方法、装置及存储介质
US20170123765A1 (en) Composable application session parameters
CN105164691A (zh) 利用计算机网络为测试计算机软件应用优化测试数据有效载荷的选择
CA2846581A1 (en) Data infrastructure for providing interconnectivity between platforms, devices and operating systems
Mieścicki et al. Verification of Concurrent Engineering Software Using CSM Models
CN111666572A (zh) 一种自动化渗透测试框架
CN108197024B (zh) 嵌入式浏览器调试方法、调试终端及计算机可读存储介质
CN106293651A (zh) 一种通用接口的实现方法及装置
CN109408577B (zh) Oracle数据库json解析方法、系统、装置及可存储介质
Singh et al. Reusability framework for cloud computing
CN105607892A (zh) 一种多程序的并发执行方法和系统
CN104834958A (zh) 一种对答案的步骤进行评判的方法和装置
CN114116509A (zh) 程序分析方法、装置、电子设备和存储介质
CN109683879B (zh) 前端组件处理方法及装置
CN106330556A (zh) 一种用于生成服务模块调用关联信息的方法与装置
US20170109457A1 (en) Verification of system assertions in simulation
US9800692B2 (en) Expression based declarative data service execution chaining
CN113703879B (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160427

CF01 Termination of patent right due to non-payment of annual fee