[发明专利]用于加载程序模块的方法和系统有效
| 申请号: | 201110144285.2 | 申请日: | 2011-05-31 |
| 公开(公告)号: | CN102810065A | 公开(公告)日: | 2012-12-05 |
| 发明(设计)人: | 戴海斌;S.海尼斯;J.加里;邬海杰 | 申请(专利权)人: | 国际商业机器公司 |
| 主分类号: | G06F9/445 | 分类号: | G06F9/445;H04L29/08 |
| 代理公司: | 北京市柳沈律师事务所 11105 | 代理人: | 黄小临 |
| 地址: | 美国纽*** | 国省代码: | 美国;US |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 用于 加载 程序 模块 方法 系统 | ||
技术领域
应用程序处理领域。更具体地,本发明尤其涉及对应用程序中具有层级关系的程序模块进行加载的方法及系统。
背景技术
随着计算机应用程序的规模、代码量日益庞大以及程序模块化程度的不断提升,越来越多的程序开发人员通过引用已有的通用代码(例如通用库文件Common Library)来避免重复性的编程工作。这些具有复用性的代码可能包括程序类Class以及其它代码包,它们是构成一个应用程序的组件或模块。一个大型应用程序可能由多个这样的程序模块构成,并且这些程序模块间往往存在者层级关系(也可理解为父子关系或调用的依赖关系)。目前很多应用程序在开发、测试或运行时,需要通过网络传输/调用/加载这些可复用的存在层级关系的众多程序组件或模块。
目前存在以下几种通过网络传输程序模块的技术方案。第一种是加载整个库文件(Library)。由于库文件通常体积庞大,而真正需要调用其实只是库文件中的部分模块,因此加载整个库文件会导致不必要的内容传输,延长了加载的时间。
第二种现有技术中的技术方案是仅加载所需要的代码单元。例如,客户端的微件Widget A需要某个库文件中的100个代码包,而客户端的微件Widget B需要该库文件中的50个代码包(其中有一些代码包和Widget A需要的代码包相同),虽然在传输的过程中Widget A和B均可以只请求服务器端传输其所需的代码包,并且也可以避免传输相同的代码包,可以避免不必要的及重复的代码内容传输,但是由于Widget A和B需要对其所需的每个代码包向服务器发出一个请求(request),导致网络请求的数量剧增,同样会大大延长加载的时间。
第三种现有技术中的技术方案是由程序开发人员事先将客户端不同的应用(例如Widget)所需要的代码包进行打包,然后在每个Widget调用时直接将打包好的程序包发送至客户端。这种技术方案的好处是可以避免加载整个库文件,也可以避免过多的网络请求,但缺点是可能有大量的重复的代码包被发送至客户端,因为客户端的Widget A所需要的代码包与Widget B所需要的代码包存在重复,在松耦合(Loose-Coupling)程序开发的情形下(松耦合是指某一应用程序存在多个开发人员,例如Widget A的开发人员和WidgetB的开发人员彼此不知晓对方所开发的Widget里面是否需要调用相同的代码包),不同的程序开发者无法事先知晓哪些代码包是重复的。
发明内容
考虑到上述存在的问题,本发明的目的之一在于提供一种能够在松耦合的情况下加载具有层级关系的程序模块的方法或系统。本发明的又一目的在于提供一种能够在松耦合的情况下加载具有层级关系的程序模块,并且能够避免重复代码传输。本发明的又一目的在于提供一种能够在松耦合的情况下加载具有层级关系的程序模块,并且能够避免不必要的代码传输。本发明的又一目的在于提供一种能够在松耦合的情况下加载具有层级关系的程序模块,并且能够避免大量的或复杂的网络请求。上述四个子目的彼此独立,本发明的发明目的并非要同时达到上述四个子目的,而是可能仅实现目的之一或任意数量的组合。
根据本发明的一个方面,提供了一种用于加载具有层级关系的程序模块的方法,包括:接收来自客户端的加载程序模块的请求,所述请求中包含待加载程序模块中的根模块信息;根据所述请求中的根模块信息,获取所述待加载根模块以及所述待加载根模块的子模块;以及将所述根模块以及所述根模块的子模块发送至所述客户端。
根据本发明的一个实施例,上述方法还包括:接收来自客户端的关于已加载的程序模块的通知,所述通知中包含已加载的程序模块中的根模块信息;以及根据所述通知中的根模块信息,获取已加载的根模块以及所述已加载的根模块的子模块信息。
根据本发明的另一方面,提供了一种用于加载具有层级关系的程序模块的系统,包括:请求接收装置,被配置为接收来自客户端的加载程序模块的请求,所述请求中包含待加载程序模块中的根模块信息;第一获取装置,被配置为根据所述请求中的根模块信息,获取所述待加载根模块以及所述待加载根模块的子模块;以及加载装置,被配置为将所述根模块以及所述根模块的子模块发送至所述客户端。
根据本发明的一个实施例,上述系统还包括:通知接收装置,被配置为接收来自客户端的关于已加载的程序模块的通知,所述通知中包含已加载的程序模块中的根模块信息;以及第二获取装置,被配置为根据所述通知中的根模块信息,获取已加载的根模块以及所述已加载的根模块的子模块信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110144285.2/2.html,转载请声明来源钻瓜专利网。





