云应用的动态插件的制作方法

文档序号:6533435阅读:179来源:国知局
云应用的动态插件的制作方法
【专利摘要】本文描述了能够为应用动态安装插件的技术。使代理插件在指定应用的一部署(例如,跨云环境中的多个机器或“内部部署”)中运行。指定的应用被封包以包括代理插件。代理插件被用于基于关于指定应用的配置信息动态安装选定插件。配置信息指示要响应于指定应用正被部署而被安装的选定插件。
【专利说明】云应用的动态插件
[0001] 背景
[0002] 插件是向软件应用添加一个或多个选定能力的软件组件。插件可被用于使得第三 方开发者能够创建扩展应用的能力、支持容易添加的新特征(例如,剖析、诊断等等)、减少 应用的大小等。开发者传统上在应用的部署之前就在应用中包括插件。关于用于安装插件 的常规技术的一个限制是应用所有者(其不必然是应用开发者)通常不能够基于当前需求 在无需重构和重新部署应用的情况下添加、移除和/或更新插件。重构和重新部署应用可 能是耗时和/或成本高昂的过程。而且,这样的常规技术通常提供在许多不同应用内封包 的相同插件的许多副本,这可能会妨碍插件的更新版本的广泛部署。例如,如果插件的新版 本解决了一安全性弱点,用该插件封包的每个应用传统上被重新封包并重新部署;这一重 新封包和重新部署可能相对缓慢发生。从而,常规技术可导致增加封包大小、存储成本和/ 或传输成本。
[0003] 在一些常规技术中,开发者创建他们自己的启动任务,这些启动任务利用现有的 安装机制(例如,web平台安装工具)来安装应用的先决条件(即依赖关系)。应用的先 决条件是不被包括在应用中、该应用需要以便正确运行的软件组件。例如,如果应用是基 于JAVA?的,则JAVA?运行时可以是应用的先决条件。例如,如果应用是PHP tm应用,则 PHP?运行时可以是应用的先决条件。每一启动任务通常使用脚本来调用命令行实用程序来 安装应用所需的特定产品。尽管以这种方式使用脚本对于各个应用而言不会过度繁重,但 是脚本通常是每个开发者为每一应用手写和测试的。对于安装这样的组件,还没有标准、通 用、稳健的机制为人所知。而且,如果应用需要一组不同的先决条件(例如,先决条件的新 版本),则可能有必要重构和重新部署应用以便安装和执行该组不同的先决条件。再一次, 对于在部署后安装这样的组件,不存在标准、通用、稳健的机制。


【发明内容】

[0004] 本文描述了为应用动态安装插件的各种方案等等。描述了其中标识了关于指定应 用的配置信息的方法。配置信息指示要响应于指定应用正被部署而被安装的从存储在所部 署的应用可访问的一位置中的一个或多个插件中选择的选定插件。使代理插件在指定应用 的部署中运行。例如,部署可跨云环境中的多个机器执行。在另一示例中,部署可"内部部 署(on premises)"(即,在一个或多个本地机上)执行。指定的应用被封包以包括代理插 件。代理插件被用于基于配置信息动态安装选定插件。从而,这样的选定插件在本文中可 被互换地称为"动态插件"。
[0005] 描述了包括标识模块、因果关系模块和安装模块的系统。安装模块被配置成标识 关于指定应用的配置信息。配置信息指示要响应于指定应用正被部署而被安装的从存储在 所部署的应用可访问的一位置中的一个或多个插件中选择的选定插件。因果关系模块被配 置成使代理插件在指定应用的部署(例如,跨云环境中的多个机器或"内部部署")中运行。 指定的应用被封包以包括代理插件。安装模块被配置成使用代理插件来基于配置信息动态 安装选定插件。
[0006] 描述了包括计算机可读介质的计算机程序产品,计算机可读介质上记录有用于使 得基于处理器的系统能够关于指定应用动态安装选定插件的计算机程序逻辑。计算机程序 产品包括第一、第二,和第三程序逻辑模块。第一程序逻辑模块用于使得基于处理器的系统 能够标识关于指定应用的配置信息。配置信息指示要响应于指定应用正被部署而被安装的 从存储在所部署的应用可访问的一位置中的一个或多个插件中选择的选定插件。第二程序 逻辑模块用于使得基于处理器的系统能够使代理插件在指定应用的部署(例如,跨云环境 中的多个机器或"内部部署")中运行。指定的应用被封包以包括代理插件。第三程序逻辑 模块用于使得基于处理器的系统能够使用代理插件来基于配置信息动态安装选定插件。
[0007] 提供本概述是为了以简化的形式介绍将在以下【具体实施方式】中进一步描述的概 念选择。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制 所要求保护主题的范围。此外,注意到本发明不限于在详细描述和/或本文的其它章节中 所述的特定实施例。本文呈现这些实施例仅用于说明性的用途。基于本文所包含的描述, 其它实施例对于相关领域的技术人员将是显而易见的。

【专利附图】

【附图说明】
[0008] 本文结合的并且组成本说明书的一部分的附图示出了本发明的各实施例,并且还 与本描述一起用于解释所涉及的原理以及使相关领域的技术人员能够实现和使用所公开 的技术。
[0009] 图1是根据一实施例的示例计算机系统的框图。
[0010] 图2是根据一实施例的图1中所示的动态插件安装模块的示例实现的框图,示出 了提交插件供开发者在应用中使用。
[0011] 图3是根据一实施例的图1中所示的动态插件安装模块的示例实现的框图,示出 了开发者选择应用的依赖关系。
[0012] 图4是根据一实施例的图1中所示的动态插件安装模块的示例实现的框图,示出 了开发者为应用选择插件。
[0013] 图5是根据一实施例的图1中所示的动态插件安装模块的示例实现的框图,示出 了如分别在图3和4中所示的、所选依赖关系和插件的安装和执行。
[0014] 图6-9描绘了根据各实施例的用于为应用动态安装插件的示例方法的流程图。
[0015] 图10是根据一实施例的图1所示的动态插件安装模块的另一示例实现的框图。
[0016] 图11描绘了其中可实现各实施例的示例计算机。
[0017] 通过下面的结合附图对本发明进行的详细说明,所公开的技术的特点和优点将变 得更加显而易见,在附图中,类似的附图标记在整个说明书中标识对应的元素。在附图中, 相同的参考标号一般指相同的、功能上相似的和/或结构上相似的元素。其中元素第一次 出现的附图由对应的参考标号中最左侧的数字指示。

【具体实施方式】
[0018] I.引言
[0019] 以下详细描述参考示出本发明的示例性实施例的附图。但是,本发明的范围不限 于这些实施例,而是由所附权利要求书定义。因此,诸如所示实施例的修改版本之类的在附 图所示之外的实施例仍然由本发明所包含。
[0020] 本说明书中对"一个实施例"、"实施例"、"示例实施例"等的引用指的是所述实施 例可包括特定的特征、结构或特点,但是每一实施例不一定包括该特定的特征、结构或特 点。此外,这些短语不一定指相同的实施例。此外,当结合实施例描述具体特征、结构或特性 时,应当理解在相关领域的技术人员的知识范围内能够结合其他实施例来实现具体特征、 结构或特性,无论是否被显式地描述。
[0021] II.示例实施例
[0022] 本文描述的示例实施例能够为应用动态安装插件。根据示例实施例,使代理插件 在指定应用的部署中运行。例如,部署可跨云环境中的多个机器执行。在另一示例中,部署 可"内部部署(on premises)"(即,在一个或多个本地机上)执行。指定的应用被封包以 包括代理插件。代理插件被用于基于关于指定应用的配置信息动态安装选定插件。从而, 这样的选定插件在本文中可被互换地称为"动态插件"。配置信息指示要响应于指定应用正 被部署而被安装的选定插件。
[0023] 与用于安装插件的常规技术相比,本文描述的示例技术具有各种益处。例如,示例 技术可使得用户(例如,应用开发者、应用所有者等)能够基于当前的需求在不需要应用的 重构和/或重新部署的情况下关于应用的部署添加、移除和/或更新插件和/或应用的依 赖关系。例如,示例技术可提供用于(例如,在应用已被部署之后)安装插件和/或依赖关 系的标准、通用、稳健的机制。从而,示例技术与常规技术相比,可消费更少的时间和/或更 少的资源。例如,使用本文所述的技术可导致与常规技术相比的较小的封包大小、较少的存 储成本、和/或较少的传输成本。
[0024] 图1是根据一实施例的示例计算机系统100的框图。一般来说,计算机系统100操 作来响应于从用户(例如,应用开发者)接收的请求(如超文本传输协议(HTTP)请求)向 所述用户提供信息。信息可包括文档(如网页、图像、视频文件等等)、可执行程序的输出、 和/或任何其他合适类型的信息。根据本文所述的示例实施例,计算机系统100为应用动 态安装插件。例如,如果应用开发者使用计算机系统100开发应用,计算机系统100可使代 理插件在应用的部署中运行,然后使用代理插件为应用动态安装所选插件。关于用于为应 用动态安装插件的技术的细节在以下讨论中提供。
[0025] 如图1所示,计算机系统100包括多个用户计算机系统102A-102M、网络104、多个 服务器106A-106N以及插件源110。使用公知的网络通信协议通过网络104实现用户系统 102A-102M、服务器106A-106N以及插件源110之间的通信。网络104可以是广域网(如因 特网)、局域网(LAN)、另一类型的网络、或它们的组合。
[0026] 插件源110是能够与服务器106A-106N通信的处理系统。处理系统的示例是包括 能够根据指令集操纵数据的至少一个处理器的系统。例如,处理系统可以是计算机、个人数 字助理等。插件源110被配置成提供插件112供动态插件安装模块108进一步处理,所述 处理将在以下更详细讨论。例如,插件源110可响应于从动态插件安装模块108接收到对 插件112的请求而提供插件112。
[0027] 用户系统102A-102M是能够与服务器106A-106N通信的处理系统。用户系统 102A-102M被配置成向服务器106A-106N提供请求来请求存储在服务器106A-106N上(或 经服务器以其他方式可访问)的信息。例如,用户可使用用户所拥有的或以其他方式用户 可访问的用户系统102上部署的客户端(如web浏览器、web爬行器、或其他类型的客户端) 来发起执行计算机程序的请求。根据一些示例实施例,用户系统102A-102M能够访问由服 务器104A-104N托管(host)的域(如网站),使得用户系统102A-102M可访问通过所述域 可用的信息。这样的域可包括网页,所述网页可作为超文本标记语言(HTML)文档和在其中 被链接的对象(如文件)来提供。
[0028] 将认识到,任何一个或多个用户系统102A-102M都可与任何一个或多个服务器 106A-106N通信。尽管图1中用户系统102A-102M被描绘为台式计算机,但是相关领域的技 术人员将理解用户系统102A-102M可包括任何启用客户端的系统或设备,包括但不限于台 式计算机、膝上型计算机、平板计算机、个人数字助理、蜂窝电话等等。
[0029] Servers 106A-106N are processing systems that are capable of communicating with user systems 102A-102M and plugin source (s)HO.月艮务器 106A-106N是能够与用户系统102A-102M和插件源110通信的处理系统。服务器106A-106N 被配置成执行响应于从用户接收到请求而向用户提供信息的计算机程序。例如,信息可包 括文档(如网页、图像、视频文件等等)、可执行程序的输出、或任何其他合适类型的信息。 根据某些示例实施例,服务器106A-106N被配置成托管各个网站,使得网站可由计算机系 统100的用户访问。
[0030] 第一服务器106a被示为包括动态插件安装模块108。动态插件安装模块108被配 置成将从插件源110接收的插件112转发到所部署的应用可访问的一位置。例如,动态插件 安装模块108可响应于向插件源110提供对插件112的请求而接收插件112。动态插件安 装模块108还被配置成标识关于指定应用的配置信息。配置信息指示要响应于指定应用正 被部署而被安装的从存储在所部署的应用可访问的位置中的插件112选择的选定插件。动 态插件安装模块108还被配置成使代理插件在指定应用的部署(例如,跨云环境中的多个 机器或"内部部署")中运行。指定的应用被封包以包括代理插件。动态插件安装模块108 还被配置成使用代理插件来基于配置信息动态安装选定插件。以下参考图2-10更详细讨 论用于为应用动态安装插件的一些示例技术。
[0031] 应注意,动态插件安装模块108的实例被包括在包含指定应用的每一服务器上。 动态插件安装模块108的每一实例使代理插件在在其上包括动态插件安装模块108的机器 上安装并运行动态插件。
[0032] 出于说明的目的而不旨在为限制,动态插件安装模块108被示为容纳在第一服务 器106A中。将认识到,动态插件安装模块108的实例可被容纳在服务器106A-106N的任何 一个或多个中。
[0033] 动态插件安装模块108可按照各种方式实现,以便为应用动态安装插件,包括被 实现为硬件、软件、固件或其任何组合。例如,动态插件安装模块108可被实现为配置成在 一个或多个处理器中执行的计算机程序代码。在另一示例中,动态插件安装模块108可被 实现为硬件逻辑/电子电路。在一实施例中,动态插件安装模块108可被实现为片上系统 (SoC)。每个SoC可包括一集成电路芯片,该集成电路芯片包括以下一个或多个:处理器(如 微控制器、微处理器、数字信号处理器(DSP)等等)、存储器、一个或多个通信接口、和/或用 于执行其功能的进一步的电路和/或嵌入的固件。
[0034] 图2-5描绘了根据各实施例的动态插件安装模块200、300、400和500,它们是图 1中所示的动态插件安装模块108的示例实现。图2示出了根据一实施例提交插件供开发 者在应用中使用。如图2中所示,动态插件安装模块200包括动态代理门户202、块(blob) 存储204和封包工具206。动态代理门户202截取来自开发者的向块存储204添加插件的 请求(例如指令)、更新安装在块存储204中的插件和/或基于请求从块存储204移除插 件。例如,动态代理门户202可根据来自第一开发者的上传请求来向块存储204添加选定 插件。动态代理门户202可根据来自第一开发者和/或其他开发者的更新请求,更新选定 插件。动态代理门户202可根据来自第一开发者或另一开发者的移除请求从块存储204移 除选定插件。插件中的每一个可具有任何合适的功能。例如,插件中的一个或多个可执行 关于应用的诊断操作(例如,监视问题、标识问题根源、调试、剖析、控制等)。
[0035] 插件可包括任何合适数目的组件(例如文件)。例如,插件可包括一个或多个可 执行二进制代码、一个或多个支持库、插件清单等。插件清单是描述插件的配置(例如,设 置)的文件(例如,可扩展标记语言(XML)文件)。例如,插件清单可指示对插件需要哪些 配置值。动态代理门户202可提供用户接口,该用户接口使得用户能够指定对应于插件的 相应配置的配置值。
[0036] 如图2中所示,出于说明目的,标记为"Plugin, cspluginx"的插件212包括标记 为 "PluginAgent. exe" 的第一文件 208 和标记为 "Plugin, csplugin" 的第二文件 210。封 包工具206能够组合文件208和210以创建插件212,如图2中所示。然而,将认识到开发 者可组合文件208和210来创建插件212。
[0037] 无论如何,经由动态代理门户202来上传插件212。例如,开发者可使用部署在用 户系统(例如,用户系统102A-102M之一)上的客户端来上传插件212。插件212可被配 置成具有任何合适的格式(例如,基于开放封包约定的格式)。封包工具206可在插件212 经由动态代理门户202上传之前将插件212封包成前述格式。在一个示例实施例中,封包 工具206在插件212经由动态代理门户202上传之前提供在线形式供开发者完成。在另一 示例实施例中,动态代理门户202向开发者提供在线形式。
[0038] 动态代理门户202生成标记为"PluginFeed. xml"的馈源214,它包括插件212、关 于插件212的位置的位置信息以及包括用于安装插件212的指令的安装信息。该馈源例如 可以是web平台安装工具(WebPI)馈源,然而将认识到,馈源可以是任何合适类型的馈源。 web PI馈源是使得web平台安装工具能够定位和安装web平台安装工具被指示来安装的插 件和/或依赖关系的配置文件。在一个示例中,插件212可被定义为馈源214内的虚拟产 品。根据这一示例,虚拟产品标识插件212的依赖关系。安装信息可包括用于解压插件212 的指令。馈源214可以是web平台安装工具兼容的,尽管示例实施例的范围在这一方面不 受限制。出于说明目的,定义馈源的代码片段的一个非限定性示例在以下的章节III. A中 提供。动态代理门户202向块存储204提供插件212和馈源214。
[0039] 块存储204是公共的、网络可访问(例如web可访问)存储。块存储204存储插件 212和馈源214以及经由动态代理门户202上传的任何其它插件及其相应的馈源。块存储 204可以是任何合适类型的存储。存储的一种类型是数据库。例如,块存储204可以是关系 数据库、实体关系数据库、对象数据库、对象关系数据库、可扩展标记语言(XML)数据库等。
[0040] 图3示出了根据一实施例的开发者选择应用的依赖关系。如图3中所示,动态插 件安装模块300包括动态代理门户202、块存储204和接口 320。动态代理门户202和块存 储204能够如以上参考图2所述地操作。动态代理门户202截取来自开发者的关于应用的 安装依赖关系的请求(例如,指令)。
[0041] 接口 320提供可用于关于应用的安装的依赖关系的视觉表示。例如,接口 320示 出了依赖关系A、B和C的相应的视觉表示322A、322B和322C。选择框324A-324C对应于 相应的依赖关系A、B和C。用户可选择选择框324A来使依赖关系A关于应用来被安装;用 户可选择选择框324B来使依赖关系B关于应用来被安装,以此类推。
[0042] 如图3中所示,选择框324A和324C被选择,且选择框324B不被选择。从而,动态 代理门户202生成标记为"ProductFeed. xml"的产品馈源316,以包括依赖关系A和C而 不包括依赖关系B。动态代理门户202生成标记为"AggregatedFeed. xml"的聚集的馈源 318,以包括馈源214和316。馈源316和318可以是web平台安装工具兼容的,尽管示例实 施例的范围在这一方面不受限制。动态代理门户202向块存储204提供馈源316和318。
[0043] 块存储204存储馈源316和318以及插件212和馈源214。块存储204所存储的 每一馈源可对应于一已知的依赖关系或一未知的依赖关系。已知的依赖关系是在应用开发 时已知的依赖关系。例如,诸如.丨ava?执行框架的执行框架是已知依赖关系的一个示例类 型。未知的依赖关系是在应用开发时不知道的依赖关系。例如,性能测量插件可构成未知 的依赖关系。应注意到,可在应用的部署被启动之后,为关于应用的安装选择未知的依赖关 系。
[0044] 图4示出了根据一实施例的开发者为应用选择插件。如图4中所示,动态插件安装 模块400包括动态代理门户202、块存储204和接口 420。动态代理门户202和块存储204 能够如以上参考图2和3所述地操作。动态代理门户202截取来自开发者的关于应用安装 插件的请求(例如,指令)。
[0045] 接口 420提供可用于关于应用的安装的插件的视觉表示。例如,接口 420示出了 插件A、B和C的相应的视觉表示422A、422B和422C。选择框424A-424C对应于相应的插件 A、B和C。用户可选择选择框424A来使插件A关于应用来被安装;用户可选择选择框424B 来使插件B关于应用来被安装,以此类推。用户还可配置插件(例如,指定插件的设置)。
[0046] 如图4中所示,选择框424A和424C被选择,且选择框424B不被选择。从而,动态 代理门户202修改产品馈源316以包括插件A和C的插件馈源。注意,插件B的插件馈源不 被添加到产品馈源316,因为选择框424B未被选择。动态代理门户202响应于选择框424A 和424C被选择和/或响应于从用户接收配置指令生成关于插件A和C的标记为"Settings, xml"的设置426。动态代理门户202向块存储204提供设置426以便存储在其中。
[0047] 动态代理门户202不在显式公开的位置中存储设置426。例如,设置426可包括 敏感数据(例如,数据库连接串)。在用于维护这样的敏感数据的安全的一个示例技术中, 在非可浏览的容器中使用基于全局唯一标识符(基于GUID)的URI来存储设置426。尽管 URI技术是公开的,但用蛮力方法访问URI是相对不可行的。将认识到,这仅是一个示例技 术,且可采用其它技术来补充或代替这一示例技术。
[0048] 出于说明目的,定义通过对两个插件的选择而生成的馈源的代码片段的非限定性 示例在以下的章节III. B中提供。出于说明目的,定义通过对两个插件的选择而生成的配 置文件的代码片段的非限定性示例在以下的章节III. C中提供。
[0049] 图5示出了根据一实施例的如分别在图3和4中所示的所选依赖关系和插件的安 装和执行。如图5中所示,动态插件安装模块500包括动态代理门户202和块存储204,它 们能够如以上参考图2-4所述地操作。应用528在图5中被示为包括角色530和代理插件 532。角色530定义应用528的操作。代理插件532担当应用528的代理。例如,代理插件 532提供动态理解其上安装应用528的网络的拓扑的能力。因为云环境中的机器(例如,物 理机器和/或虚拟机)通常位于防火墙之后,应用528的拓扑可能相当难以直接确定。从 而,代理插件532负责确定与应用528相关联的虚拟机包括什么构成部分。一旦应用528 的拓扑被确定,代理插件532可部署其它插件、这些插件的依赖关系以及应用与相关位置 的依赖关系,然后初始化并运行这些插件和依赖关系。
[0050] 出于说明目的,且不旨在限制,代理插件532包括WebPI代理534和动态代理536。 WebPI代理534被配置成安装如分别在图3和4中所示的所选依赖关系和插件。动态代理 536被配置成执行如分别在图3和4中所示的所选插件。
[0051] WebPI代理534使用web平台安装工具的库和应用编程接口(API)来读取聚集的 馈源318,来确定要下载和安装哪些依赖关系和插件。例如,WebPI代理534向动态代理门户 202提供查询(例如,查询538)。查询包括对聚集的馈源318和与应用528的部署相关联的 部署标识符(ID)的请求。动态代理门户202将查询重定向到块存储204中对应于基于查 询中的部署ID的统一资源标识符(URI,诸如统一资源定位符(URL)或统一资源名(URN)) 的存储位置。WebPI代理534从对应于URI的存储位置下载聚集的馈源318用于安装如分 别在图3和4中所示的所选依赖关系和插件。
[0052] 在一个示例中,WebPI代理534可在应用528内被配置成使用预定馈源来安装来 自该馈源的预定的一组产品(例如,一个或多个依赖关系和/或一个或多个插件)或在预 定馈源中没有指定产品时安装"默认"产品。默认的产品可由预定馈源内"默认"关键词到 产品的关联来指示。
[0053] 在另一示例中,如果WebPI代理534未被特别配置,则WebPI代理534可向web应 用请求馈源。WebPI代理534可提供与应用528的部署相关联的部署ID,使得web应用将 WebPI代理534重定向到与部署相关联的馈源。如果未指定馈源或没有馈源与应用528的 部署相关联,则WebPI代理534可不安装如分别在图3和4中所示的所选依赖关系和/或 插件。
[0054] 动态代理536向动态代理门户202提供查询(例如,查询538)。查询包括对设置 426和与应用528的部署相关联的部署标识符(ID)的请求。动态代理门户202将查询重定 向块存储204中对应于基于查询中的部署ID的URI的存储位置。动态代理536从对应于 URI的存储位置下载设置426以用于如图4中所示的所选插件的执行。设置426可以(或 可以不)包括关于依赖关系的设置。
[0055] 在一个示例中,动态代理536可在应用528内被配置成使用标识要执行的插件和 这些插件的配置设置的预定配置文件。在另一示例中,如果动态代理536未被特别配置,则 动态代理536可向web应用请求配置文件。动态代理536可提供与应用528的部署相关联 的部署ID,使得web应用将动态代理536重定向到与部署相关联的配置文件。如果未指定 配置文件或没有配置文件与应用528的部署相关联,则动态代理536可不执行如分别在图 3和4中所示的所选插件。
[0056] 在一示例实施例中,对于每一被配置的插件,动态代理536定位相应的插件清单 (例如,在本地机上)。动态代理536然后执行在清单内指示的每一二进制代码。如果存在 与插件相关联的配置设置,动态代理536就经由环境变量将配置设置传递给插件。如果在 插件清单中指定等待插件停止执行的指令,则动态代理536等待该插件停止执行。否则,动 态代理536移动至下一配置的插件。当所有配置的插件已被执行时,动态代理536停止执 行。
[0057] 在另一示例实施例中,动态代理536的操作模拟平台的启动加载器进程的行为, 启动加载器进程运行随应用528封包的插件。动态代理536从而可减少(例如最小化)作 为应用528的一部分运行的插件和作为这一动态情形的一部分运行的插件之间的体系结 构差异。一些插件可能能够在两种环境中执行而无需对插件的改变。
[0058] 应注意,其上安装了应用528的网络的拓扑可从动态代理门户202拉取信息,然后 基于动态代理门户202中的设置配置其本身。这不同于传统上用于试图发现网络拓扑的推 送技术。
[0059] 图6-9描绘了根据各实施例的用于为应用动态安装插件的示例方法600、700、800 和900的流程图。流程图600、700、800和900可例如由图1中所示的系统100的动态插件 安装模块108执行。出于说明性目的,关于图10所示的动态插件安装模块1000描述了流 程图600、700、800和900,根据一实施例,动态插件安装模块1000是动态插件安装模块108 的另一示例。如图10中所示,动态插件安装模块1000包括标识模块1002、因果关系模块 1004、安装模块1006、执行模块1008、接口模块1010、选择模块1012、生成模块1014、确定模 块1016和存储1018。基于有关流程图600、700、800和900的讨论,进一步的结构及操作实 施例对于相关领域的技术人员将是显而易见的。
[0060] 如图6所示,流程图600的方法在步骤602处开始。在步骤602,标识关于指定应 用的配置信息。配置信息指示要响应于指定应用正被部署而被安装的从存储在所部署的应 用可访问的一位置中的一个或多个插件中选择的选定插件。配置信息可以是专用于所指定 的应用的应用专用配置信息。例如,配置信息可按照其安装文件和/或指定应用的描述来 定义指定应用的内容供人类消费。在一示例实现中,标识模块1002标识配置信息1026。配 置信息1026指示要响应于指定应用1030正被部署而被安装的从存储在存储1018中的插 件1022选择的选定插件1034。将认识到,在一些示例实施例中,配置信息指示没有选定插 件要被安装和/或执行。
[0061] 在步骤604,使代理插件在指定应用的第一部署(例如,跨云环境中的机器或"内 部部署")中运行。指定的应用被封包以包括代理插件。在一示例实现中,因果关系模块 1004使代理插件1032在指定应用1030的第一部署中运行。根据这一实现,指定应用1030 被封包成包括代理插件1032。
[0062] 在步骤606,代理插件被用于基于配置信息来动态(例如,当指定应用正在运行的 同时在进行中)安装选定插件。在一示例实现中,安装模块使用代理插件1032来基于配置 信息1026动态安装选定插件1034。
[0063] 在示例实施例中,步骤602包括标识馈源,馈源包括选定插件、关于选定插件的位 置的位置信息、以及包括用于安装选定插件的指令的安装信息。例如,标识模块1002可标 识馈源。根据这一实施例,代理插件被用于基于位置信息和安装信息在步骤606处动态安 装选定插件。例如,安装模块1006可使用代理插件1032基于位置信息和安装信息来动态 安装选定插件1034。将认识到馈源还可包括指定应用的一个或多个依赖关系。例如,指定 应用的一个或多个依赖关系可以是选定插件的超集。
[0064] 在某些示例实施例中,可以不执行流程图600的一个或多个步骤602、604和/或 606。此外,可以执行除步骤602、604、和/或606以外的或代替这些步骤的步骤。例如,在 一示例实施例中,配置信息还指示指定应用的一个或多个依赖关系。将认识到,一个或多个 依赖关系中的任何一个可具有一个或多个依赖关系,而这些依赖关系中的任何一个可具有 一个或多个依赖关系,以此类推。从而,每一依赖关系可具有它自己的一个或多个依赖关 系。根据这一实施例,流程图600的方法还包括使用代理插件基于配置信息来安装一个或 多个依赖关系。在一不例实现中,安装模块1006使用代理插件1032来基于配置信息1026 安装一个或多个依赖关系。
[0065] 在另一示例实施例中,配置信息还指示选定插件的一个或多个依赖关系。根据这 一实施例,流程图600的方法还包括使用代理插件基于配置信息来安装选定插件的一个或 多个依赖关系。例如,一个或多个依赖关系可被存储在存储1018中。
[0066] 在又一示例实施例中,选定插件中的每一个包括相应的可执行二进制代码的集 合。可执行二进制代码是可执行的二进制代码。根据这一实施例,配置信息为每一选定插 件指示相应的可执行二进制代码的集合的相应的子集。相应的可执行二进制代码的集合的 每一子集可包括相应的集合中的任何一个或多个可执行二进制代码(例如,少于全部可执 行二进制代码、全部可执行二进制代码、没有可执行二进制代码等等)。进一步根据这一实 施例,流程图600的方法还包括使用代理插件基于配置信息来执行每一子集。在一示例实 现中,执行模块1008使用代理插件1032来基于配置信息1026执行每一子集。在一个示例 中,安装模块1006可响应于选定插件1034正被安装而生成安装指示符1020。例如,安装指 示符1020可指示选定插件1034被安装。根据这一实施例,执行模块1008可响应于从安装 模块1006接收安装指示符1020来使用代理插件1032执行每一子集。
[0067] 注意到,选定插件中的任何一个或多个可包括单个可执行二进制代码。还注意到, 选定插件中的任何一个或多个除可执行二进制代码以外可包括一个或多个补充(例如, 库)二进制代码。
[0068] 在又一示例实施例中,步骤602包括标识预定配置文件。预定配置文件可被包括 在配置信息中,尽管示例实施例的范围在这一方面不受限制。例如,标识模块1002可标识 预定配置文件(例如,配置文件10036),该文件可被包括在配置信息1026中。根据这一实 施例,预定配置文件为每一选定插件指示至少一个配置设置。例如,配置信息1026可为每 一选定插件1034指示配置设置。在一个示例中,配置设置可指定为监视目的要访问指定应 用的频率。根据这一示例,配置设置可指定要每10秒、或每5毫秒或每30分钟等等访问该 应用,进一步根据这一实施例,流程图600的方法还包括响应于使用代理插件来安装选定 插件,使用代理插件基于预定配置文件来执行选定插件。在一示例实现中,执行模块1008 使用代理插件1032来基于预定配置文件执行选定插件1034。在一个示例中,预定配置文件 可不同于指示要响应于指定应用正被部署而被安装的至少一个选定插件的另一文件。在另 一示例中,指示要响应于指定应用正被部署而被安装的至少一个选定插件的配置信息可被 包括在预定配置文件中。
[0069] 在又一示例实施例中,步骤602包括向经由其生成配置文件的web应用请求对应 于指定应用的第一部署的配置文件。例如,标识模块1002提供文件请求1028,该文件请求 向web应用请求对应于指定应用1030的第一部署的配置文件1036。根据这一实施例,步骤 602还包括从web应用接收配置文件。配置文件可被包括在配置信息中,尽管示例实施例 的范围在这一方面不受限制。配置文件为选定插件中的每一个指示至少一个配置设置。例 如,执行模块1008可从web应用接收配置文件1036。进一步根据这一实施例,流程图600 的方法还包括响应于使用代理插件来安装选定插件,使用代理插件基于配置文件来执行选 定插件。在一示例实现中,执行模块1008使用代理插件1032来基于配置文件1036执行选 定插件1034。在一个示例中,配置文件可不同于指示要响应于指定应用正被部署而被安装 的至少一个选定插件的另一文件。在另一示例中,指示要响应于指定应用正被部署而被安 装的至少一个选定插件的配置信息可被包括在配置文件中。
[0070] 在一示例实施例中,流程图600的方法包括如图7中所示的步骤中的一个或多个。 如图7所示,流程图700的方法在步骤702处开始。在步骤702,提供接口,用户经由该接 口上传一个或多个插件。在一示例实现中,接口模块1010提供接口 1038。例如,接口 1038 可被用户用来上传插件1022。
[0071] 在步骤704,基于指定选定插件的第一用户发起的指令从一个或多个插件中选择 选定插件。在示例实现中,选择模块1012基于第一用户发起的指令从插件1022选择选定 插件1034。例如,选择模块1012可基于第一用户发起的指令生成选择请求1040来指定选 定插件1034。根据这一示例,选择模块1012可向存储1018提供选择请求1040以从插件 1022中选择选定插件1034。
[0072] 在步骤706,生成配置信息以包括选定插件的配置设置。配置设置由第二用户发起 的指令指示。在一示例实现中,生成模块1014生成配置信息1026以包括选定插件1034的 配置设置,配置设置由第二用户发起的指令指定。
[0073] 在步骤708,基于指定一个或多个依赖关系的第三用户发起的指令来选择指定应 用的一个或多个依赖关系。在一示例实现中,选择模块1012基于第三用户发起的指令选择 指定应用1030的一个或多个依赖关系。
[0074] 在另一示例实施例中,流程图600的方法包括如图8中所示的步骤中的一个或多 个。如图8所示,流程图800的方法在步骤802处开始。在步骤802,确定配置信息在指定 应用正在运行时被改变以提供经改变的配置信息。经改变的配置信息指示要被安装的第二 选定插件。在被改变之前的配置信息不指示要被安装的第二选定插件。在一示例实现中, 确定模块1016确定配置信息1026在指定应用1030正在运行时被改变以提供经改变的配 置信息。
[0075] 在步骤804,代理插件被用于基于经改变的配置信息在指定应用正在运行的同时 动态地安装第二选定插件。在一示例实现中,安装模块1006使用代理插件1032在指定应 用1030正在运行的同时动态安装第二选定插件。
[0076] 在又一示例实施例中,流程图600的方法包括如图9中所示的步骤中的一个或多 个。如图9所示,流程图900的方法在步骤902处开始。在步骤902,代理插件被用于执行 选定插件的第一执行。例如,步骤902可响应于在流程图600的步骤606处使用代理插件 来安装选定插件而被执行。在一示例实现中,执行模块1008使用代理插件1032来执行指 定插件1034的第一执行。
[0077] 在步骤904,第一执行的状态被标识。例如,状态与选定插件的某些配置设置相关 联。在一示例实现中,标识模块1002标识第一执行的状态。
[0078] 在步骤906,确定要再利用指定应用。在一示例实现中,确定模块1016确定要再利 用指定应用。将认识到,"要再利用"意味着"要重新启动"。例如,指定应用要再利用的判 断可基于一个或多个因素,包括但不限于:确定其上部署指定应用的机器(例如,物理机器 或虚拟机)要被重新启动(或已经被重新启动)、检测到关于其上部署指定应用的机器的硬 件故障、检测到关于指定应用的故障、确定与指定应用相关联的操作系统要被升级、确定指 定应用正在其上运行的平台已经请求再利用指定应用等等。
[0079] 在步骤908,使代理插件在指定应用的后续部署中运行。后续部署在第一部署启动 之后被启动。在一不例实现中,因果关系t旲块1004使代理插件1032在指定应用1030的后 续部署中运行。
[0080] 在步骤910,代理插件被用于基于配置信息动态重新安装选定插件。在一示例实现 中,安装模块1006使用代理插件1032来基于配置信息1026动态重新安装选定插件1034。
[0081] 在步骤912,代理插件被用于在第一执行状态中启动选定插件的第二执行。例如, 代理插件可被用于使用与第一执行的状态相关联的选定插件的某些配置设置来启动第二 执行。在一示例实现中,执行模块1008使用代理插件在第一执行的状态中启动选定插件 1034的第二执行。
[0082] 将认识到,动态插件安装模块1000可不包括标识模块1002、因果关系模块1004、 安装模块1006、执行模块1008、接口模块1010、选择模块1012、生成模块1014、确定模块 1016和/或存储1018中的一个或多个。而且,动态插件安装模块1000可包括除标识模块 1002、因果关系模块1004、安装模块1006、执行模块1008、接口模块1010、选择模块1012、生 成模块1014、确定模块1016和/或存储1018以外或代替这些模块的模块。
[0083] 动态插件安装模块108、动态代理门户202、标识模块1002、因果关系模块1004、 安装模块1006、执行模块1008、接口模块1010、选择模块1012、生成模块1014、确定模块 1016、流程图600、流程图700、流程图800和流程图900可用硬件、软件、固件或其任何组合 来实现。
[0084] 例如,动态插件安装模块108、动态代理门户202、标识模块1002、因果关系模块 1004、安装模块1006、执行模块1008、接口模块1010、选择模块1012、生成模块1014、确定模 块1016、流程图600、流程图700、流程图800和/或流程图900可被实现为被配置成在一个 或多个处理器中执行的计算机程序代码。
[0085] 在另一示例中,动态插件安装模块108、动态代理门户202、标识模块1002、因果 关系模块1004、安装模块1006、执行模块1008、接口模块1010、选择模块1012、生成模块 1014、确定模块1016、流程图600、流程图700、流程图800和/或流程图900可被实现为硬 件逻辑/电子电路。
[0086] 例如,在一实施例中,动态插件安装模块108、动态代理门户202、标识模块1002、 因果关系模块1004、安装模块1006、执行模块1008、接口模块1010、选择模块1012、生成模 块1014、确定模块1016、流程图600、流程图700、流程图800和/或流程图900中的一个或 多个可在片上系统(SoC)中实现。SoC可包括集成电路芯片,该集成电路芯片包括以下一个 或多个:处理器(如微控制器、微处理器、数字信号处理器(DSP)等等)、存储器、一个或多 个通信接口、和/或用于执行其功能的更多的电路和/或嵌入的固件。
[0087] 图11描绘其中可实现各实施例的示例计算机1100。图1中所示的客户机 102A-102M中的任何一个或多个、插件源110中的任何一个或多个或服务器106A-106N中 的任何一个或多个(或其在图2-5和10中示出的任何一个或多个子组件)可使用计算机 1100实现,包括计算机1100的一个或多个特征和/或替换特征。计算机1100可以是例如 常规个人计算机、移动计算机或工作站形式的通用计算设备,或者计算机1100可以是专用 计算设备。此处所提供的对计算机1100的描述只是为了说明,并不是限制性的。实施例也 可以在相关领域的技术人员所知的更多类型的计算机系统中实现。
[0088] 如图11所示,计算机1100包括处理单元1102、系统存储器1104和总线1106,总 线1106将包括系统存储器1104在内的各种系统组件耦合到处理单元1102。总线1106表 示若干类型的总线结构中的任何一种总线结构类型的一个或多个,包括存储器总线或存储 器控制器、外围总线、加速图形端口,以及处理器或使用各种总线体系结构中的任何一种的 局部总线。系统存储器1104包括只读存储器(ROM) 1108和随机存取存储器(RAM) 1110。基 本输入/输出系统1112 (BIOS)储存在ROM 1108中。
[0089] 计算机1100还具有一个或多个以下驱动器:用于读和写硬盘的硬盘驱动器1114、 用于读或写可移动磁盘1118的磁盘驱动器1116、以及用于读或写诸如⑶ROM、DVD ROM 或其他光介质之类的可移动光盘1122的光盘驱动器1120。硬盘驱动器1114、磁盘驱动器 1116,以及光驱动器1120分别通过硬盘驱动器接口 1124、磁盘驱动器接口 1126,以及光盘 驱动器接口 1128连接到总线1106。驱动器以及它们相关联的计算机可读存储介质为计算 机提供了对计算机可读指令、数据结构、程序模块,及其他数据的非易失存储器。虽然描述 了硬盘、可移动磁盘和可移动光盘,但是,也可以使用诸如闪存卡、数字视频盘、随机存取存 储器(RAM)、只读存储器(ROM)等等之类的其他类型的计算机可读存储介质来储存数据。
[0090] 数个程序模块可被储存在硬盘、磁盘、光盘、ROM或RAM上。这些程序包括操作系统 1130、一个或多个应用程序1132、其他程序模块1134以及程序数据1136。应用程序1132 或程序模块1134可例如包括用于实现如本文所述的动态插件安装模块108、动态代理门户 202、标识模块1002、因果关系模块1004、安装模块1006、执行模块1008、接口模块1010、选 择模块1012、生成模块1014、确定模块1016、流程图600 (包括流程图600的任何步骤)、流 程图700 (包括流程图700的任何步骤)、流程图800 (包括流程图800的任何步骤)和/或 流程图900 (包括流程图900的任何步骤)的计算机程序逻辑。
[0091] 用户可以通过诸如键盘1138和定点设备1140之类的输入设备向计算机1100中 输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天 线、扫描仪、触敏屏、相机、加速度计、陀螺仪等等。这些及其他输入设备常常通过耦合到总 线1106的串行端口接口 1142连接到处理单元1102,但是,也可以通过其他接口,诸如并行 端口、游戏端口或通用串行总线(USB),来进行连接。
[0092] 显示设备1144(例如监视器)也通过诸如视频适配器1146之类的接口连接到总 线1106。除了显示设备1144之外,计算机1100还可包括其他外围输出设备(未示出),如 扬声器和打印机。
[0093] 计算机1100通过网络接口或适配器1150、调制解调器1152、或用于通过网络建立 通信的其他装置连接到网络1148(例如,因特网)。调制解调器1152(可以是内置的或外置 的)通过串行端口接口 1142连接到总线1106。
[0094] 如此处所用的,术语"计算机程序介质"以及"计算机可读介质"被用于泛指非瞬态 介质,诸如与硬盘驱动器1114相关联的硬盘、可移动磁盘1118、可移动光盘1122,以及其他 非易失性介质,诸如闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等。这 些计算机可读存储介质与通信介质相区别且不重叠。通信介质通常在诸如载波等已调制数 据信号中承载计算机可读指令、数据结构、程序模块或者其它数据。术语"已调制数据信号" 是指使得以在信号中编码信息的方式来设置或改变其一个或多个特征的信号。作为示例而 非限制,通信介质包括无线介质,如声学、RF、红外和其它无线介质。示例实施例也针对这些 通信介质。
[0095] 如上文所指示的,计算机程序和模块(包括应用程序1132及其他程序模块1134) 可被储存在硬盘、磁盘、光盘、ROM或RAM上。这样的计算机程序也可以通过网络接口 1150或 串行端口接口 1142来接收。这些计算机程序在由应用程序执行或加载时使得计算机1100 能够实现此处所讨论的实施例的特征。相应地,这样的计算机程序表示计算机1100的控制 器。
[0096] 示例实施例还涉及包括存储在任何计算机可用介质上的软件(例如计算机可读 指令)的计算机程序产品。这样的软件,当在一个或多个数据处理设备中执行时,使数据处 理设备如此处所描述的那样操作。实施例可使用现在已知或将来知晓的任何计算机可使用 或计算机可读介质。计算机可读介质的例子包括但不限于存储设备,诸如RAM、硬盘、软盘、 CD ROM、DVD ROM、Zip盘、磁带、磁存储设备、光存储设备、基于MEMS的存储设备、基于纳米 技术的存储设备,等等。
[0097] III.示例性代码片段
[0098] 以下是分别标记为"示例代码片段#1"、"示例代码片段#2"和"示例代码片段#3" 的三个示例代码片段。
[0099] A.示例性代码片段#1
[0100] 以下代码片段阐明用于插件的示例馈源:
[0101]

【权利要求】
1. 一种方法,包括: 标识关于指定应用的配置信息,所述配置信息指示要响应于所述指定应用正被部署而 被安装的从存储在所部署的应用可访问的一位置中的一个或多个插件中选择的至少一个 选定插件; 使代理插件在指定应用的第一部署中运行,所述指定应用被封包以包括所述代理插 件;以及 响应于使所述代理插件在所述指定的应用的第一部署中运行,使用所述代理插件基于 所述配置信息动态安装所述至少一个选定插件。
2. 如权利要求1所述的方法,其特征在于,所述至少一个选定插件中的每一个包括相 应的多个可执行二进制代码; 其中所述配置信息为所述至少一个选定插件中的每一个指示相应的多个可执行二进 制代码的相应的子集;以及 其中所述方法还包括: 使用所述代理插件来基于所述配置信息执行每一子集。
3. 如权利要求1所述的方法,其特征在于,标识配置信息包括: 标识为所述至少一个选定插件中的每一个指示至少一个配置设置的预定配置文件;以 及 其中所述方法还包括: 响应于使用所述代理插件安装所述至少一个选定插件,使用所述代理插件基于所述预 定配置文件来执行所述至少一个选定插件。
4. 如权利要求1所述的方法,其特征在于,标识所述配置信息包括: 向经由其生成所述配置文件的web应用请求对应于所述指定应用的第一部署的配置 文件;以及 从所述web应用接收所述配置文件,所述配置文件为所述至少一个选定插件中的每一 个指示至少一个配置设置;以及 其中所述方法还包括: 响应于使用所述代理插件安装所述至少一个选定插件,使用所述代理插件基于所述配 置文件来执行所述至少一个选定插件。
5. 如权利要求1所述的方法,其特征在于,还包括: 提供接口,一个或多个用户经由所述接口来上传所述一个或多个插件; 基于指定所述至少一个选定插件的第一用户发起的指令,从所述一个或多个插件中选 择所述至少一个选定插件;以及 生成所述配置信息以包括所述至少一个选定插件的配置设置,所述配置设置由第二用 户发起的指令指定。
6. 一种系统,包括: 被配置成标识关于指定应用的配置信息的标识模块,所述配置信息指示要响应于所述 指定应用正被部署而被安装的从存储在所部署的应用可访问的一位置中的一个或多个插 件中选择的至少一个选定插件; 因果关系模块,所述因果关系模块被配置成使代理插件在所述指定应用的第一部署中 运行,所述指定应用被封包以包括所述代理插件;以及 安装模块,所述安装模块被配置成响应于使所述代理插件在所述指定的应用的第一部 署中运行,使用所述代理插件基于所述配置信息动态安装所述至少一个选定插件。
7. 如权利要求6所述的系统,其特征在于,所述配置信息还指示所述指定应用的一个 或多个依赖关系;以及 其中,所述安装模块还被配置成使用所述代理插件来基于所述配置信息安装所述一个 或多个依赖关系。
8. 如权利要求7所述的系统,其特征在于,所述配置信息还指示所述至少一个选定插 件的至少一个依赖关系;以及 其中,所述安装模块还被配置成使用所述代理插件来基于所述配置信息安装所述至少 一个选定插件的所述至少一个依赖关系。
9. 如权利要求6所述的系统,其特征在于,所述标识模块被配置成标识馈源,所述馈源 包括所述至少一个选定插件、关于所述至少一个选定插件的位置的位置信息以及包括用于 安装所述至少一个选定插件的指令的安装信息;以及 其中所述安装模块被配置成基于所述位置信息和所述安装信息来使用所述代理插件 来动态安装所述至少一个选定插件。
10. -种包括计算机可读介质的计算机程序产品,计算机可读介质上记录有用于使得 基于处理器的系统能够动态安装关于指定应用的至少一个选定插件的计算机程序逻辑,所 述计算机程序产品包括: 用于使所述基于处理器的系统标识关于所述指定应用的配置信息的第一程序逻辑模 块,所述配置信息指示要响应于所述指定应用正被部署而被安装的从存储在所部署的应用 可访问的一位置中的一个或多个插件中选择的所述至少一个选定插件; 用于使所述基于处理器的系统使代理插件跨云环境中的多个机器在所述指定应用的 第一部署中运行的第二程序逻辑模块,所述指定应用被封包以包括所述代理插件; 用于使所述基于处理器的系统确定所述配置信息在所述指定应用正在运行的同时是 否被改变的第三程序逻辑模块;以及 第四程序逻辑模块,所述第四程序逻辑模块用于使所述基于处理器的系统响应于使所 述代理插件正在所述指定应用的第一部署中运行而使用所述代理插件基于所述配置信息 来动态安装所述至少一个选定插件,以及用于使所述基于处理器的系统响应于确定所述配 置信息被改变以提供经改变的配置信息来使用所述代理插件基于所述经改变的配置信息 在所述指定应用正在运行的同时动态安装一个或多个第二选定插件,所述经改变的配置信 息指示要被安装的所述一个或多个第二选定插件,而改变之前的所述配置信息不指示要被 安装的所述一个或多个第二选定插件。
【文档编号】G06F9/44GK104246699SQ201380017043
【公开日】2014年12月24日 申请日期:2013年3月12日 优先权日:2012年3月27日
【发明者】P·M·霍夫, A·L·克赖德, S·H·吴, L·I·比罗夫, J·A·坎宁安 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1