CN104246699A - 云应用的动态插件 - Google Patents
云应用的动态插件 Download PDFInfo
- Publication number
- CN104246699A CN104246699A CN201380017043.4A CN201380017043A CN104246699A CN 104246699 A CN104246699 A CN 104246699A CN 201380017043 A CN201380017043 A CN 201380017043A CN 104246699 A CN104246699 A CN 104246699A
- Authority
- CN
- China
- Prior art keywords
- plug
- unit
- application
- configuration information
- ins
- 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 claims abstract description 87
- 230000004044 response Effects 0.000 claims abstract description 32
- 238000009434 installation Methods 0.000 claims description 73
- 238000004590 computer program Methods 0.000 claims description 17
- 238000010586 diagram Methods 0.000 description 51
- 230000008569 process Effects 0.000 description 47
- 238000003860 storage Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 9
- 239000000047 product Substances 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 210000003484 anatomy Anatomy 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本文描述了能够为应用动态安装插件的技术。使代理插件在指定应用的一部署(例如,跨云环境中的多个机器或“内部部署”)中运行。指定的应用被封包以包括代理插件。代理插件被用于基于关于指定应用的配置信息动态安装选定插件。配置信息指示要响应于指定应用正被部署而被安装的选定插件。
Description
背景
插件是向软件应用添加一个或多个选定能力的软件组件。插件可被用于使得第三方开发者能够创建扩展应用的能力、支持容易添加的新特征(例如,剖析、诊断等等)、减少应用的大小等。开发者传统上在应用的部署之前就在应用中包括插件。关于用于安装插件的常规技术的一个限制是应用所有者(其不必然是应用开发者)通常不能够基于当前需求在无需重构和重新部署应用的情况下添加、移除和/或更新插件。重构和重新部署应用可能是耗时和/或成本高昂的过程。而且,这样的常规技术通常提供在许多不同应用内封包的相同插件的许多副本,这可能会妨碍插件的更新版本的广泛部署。例如,如果插件的新版本解决了一安全性弱点,用该插件封包的每个应用传统上被重新封包并重新部署;这一重新封包和重新部署可能相对缓慢发生。从而,常规技术可导致增加封包大小、存储成本和/或传输成本。
在一些常规技术中,开发者创建他们自己的启动任务,这些启动任务利用现有的安装机制(例如,web平台安装工具)来安装应用的先决条件(即依赖关系)。应用的先决条件是不被包括在应用中、该应用需要以便正确运行的软件组件。例如,如果应用是基于的,则运行时可以是应用的先决条件。例如,如果应用是PHPTM应用,则PHPTM运行时可以是应用的先决条件。每一启动任务通常使用脚本来调用命令行实用程序来安装应用所需的特定产品。尽管以这种方式使用脚本对于各个应用而言不会过度繁重,但是脚本通常是每个开发者为每一应用手写和测试的。对于安装这样的组件,还没有标准、通用、稳健的机制为人所知。而且,如果应用需要一组不同的先决条件(例如,先决条件的新版本),则可能有必要重构和重新部署应用以便安装和执行该组不同的先决条件。再一次,对于在部署后安装这样的组件,不存在标准、通用、稳健的机制。
发明内容
本文描述了为应用动态安装插件的各种方案等等。描述了其中标识了关于指定应用的配置信息的方法。配置信息指示要响应于指定应用正被部署而被安装的从存储在所部署的应用可访问的一位置中的一个或多个插件中选择的选定插件。使代理插件在指定应用的部署中运行。例如,部署可跨云环境中的多个机器执行。在另一示例中,部署可“内部部署(on premises)”(即,在一个或多个本地机上)执行。指定的应用被封包以包括代理插件。代理插件被用于基于配置信息动态安装选定插件。从而,这样的选定插件在本文中可被互换地称为“动态插件”。
描述了包括标识模块、因果关系模块和安装模块的系统。安装模块被配置成标识关于指定应用的配置信息。配置信息指示要响应于指定应用正被部署而被安装的从存储在所部署的应用可访问的一位置中的一个或多个插件中选择的选定插件。因果关系模块被配置成使代理插件在指定应用的部署(例如,跨云环境中的多个机器或“内部部署”)中运行。指定的应用被封包以包括代理插件。安装模块被配置成使用代理插件来基于配置信息动态安装选定插件。
描述了包括计算机可读介质的计算机程序产品,计算机可读介质上记录有用于使得基于处理器的系统能够关于指定应用动态安装选定插件的计算机程序逻辑。计算机程序产品包括第一、第二,和第三程序逻辑模块。第一程序逻辑模块用于使得基于处理器的系统能够标识关于指定应用的配置信息。配置信息指示要响应于指定应用正被部署而被安装的从存储在所部署的应用可访问的一位置中的一个或多个插件中选择的选定插件。第二程序逻辑模块用于使得基于处理器的系统能够使代理插件在指定应用的部署(例如,跨云环境中的多个机器或“内部部署”)中运行。指定的应用被封包以包括代理插件。第三程序逻辑模块用于使得基于处理器的系统能够使用代理插件来基于配置信息动态安装选定插件。
提供本概述是为了以简化的形式介绍将在以下具体实施方式中进一步描述的概念选择。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。此外,注意到本发明不限于在详细描述和/或本文的其它章节中所述的特定实施例。本文呈现这些实施例仅用于说明性的用途。基于本文所包含的描述,其它实施例对于相关领域的技术人员将是显而易见的。
附图说明
本文结合的并且组成本说明书的一部分的附图示出了本发明的各实施例,并且还与本描述一起用于解释所涉及的原理以及使相关领域的技术人员能够实现和使用所公开的技术。
图1是根据一实施例的示例计算机系统的框图。
图2是根据一实施例的图1中所示的动态插件安装模块的示例实现的框图,示出了提交插件供开发者在应用中使用。
图3是根据一实施例的图1中所示的动态插件安装模块的示例实现的框图,示出了开发者选择应用的依赖关系。
图4是根据一实施例的图1中所示的动态插件安装模块的示例实现的框图,示出了开发者为应用选择插件。
图5是根据一实施例的图1中所示的动态插件安装模块的示例实现的框图,示出了如分别在图3和4中所示的、所选依赖关系和插件的安装和执行。
图6-9描绘了根据各实施例的用于为应用动态安装插件的示例方法的流程图。
图10是根据一实施例的图1所示的动态插件安装模块的另一示例实现的框图。
图11描绘了其中可实现各实施例的示例计算机。
通过下面的结合附图对本发明进行的详细说明,所公开的技术的特点和优点将变得更加显而易见,在附图中,类似的附图标记在整个说明书中标识对应的元素。在附图中,相同的参考标号一般指相同的、功能上相似的和/或结构上相似的元素。其中元素第一次出现的附图由对应的参考标号中最左侧的数字指示。
具体实施方式
I.引言
以下详细描述参考示出本发明的示例性实施例的附图。但是,本发明的范围不限于这些实施例,而是由所附权利要求书定义。因此,诸如所示实施例的修改版本之类的在附图所示之外的实施例仍然由本发明所包含。
本说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指的是所述实施例可包括特定的特征、结构或特点,但是每一实施例不一定包括该特定的特征、结构或特点。此外,这些短语不一定指相同的实施例。此外,当结合实施例描述具体特征、结构或特性时,应当理解在相关领域的技术人员的知识范围内能够结合其他实施例来实现具体特征、结构或特性,无论是否被显式地描述。
II.示例实施例
本文描述的示例实施例能够为应用动态安装插件。根据示例实施例,使代理插件在指定应用的部署中运行。例如,部署可跨云环境中的多个机器执行。在另一示例中,部署可“内部部署(on premises)”(即,在一个或多个本地机上)执行。指定的应用被封包以包括代理插件。代理插件被用于基于关于指定应用的配置信息动态安装选定插件。从而,这样的选定插件在本文中可被互换地称为“动态插件”。配置信息指示要响应于指定应用正被部署而被安装的选定插件。
与用于安装插件的常规技术相比,本文描述的示例技术具有各种益处。例如,示例技术可使得用户(例如,应用开发者、应用所有者等)能够基于当前的需求在不需要应用的重构和/或重新部署的情况下关于应用的部署添加、移除和/或更新插件和/或应用的依赖关系。例如,示例技术可提供用于(例如,在应用已被部署之后)安装插件和/或依赖关系的标准、通用、稳健的机制。从而,示例技术与常规技术相比,可消费更少的时间和/或更少的资源。例如,使用本文所述的技术可导致与常规技术相比的较小的封包大小、较少的存储成本、和/或较少的传输成本。
图1是根据一实施例的示例计算机系统100的框图。一般来说,计算机系统100操作来响应于从用户(例如,应用开发者)接收的请求(如超文本传输协议(HTTP)请求)向所述用户提供信息。信息可包括文档(如网页、图像、视频文件等等)、可执行程序的输出、和/或任何其他合适类型的信息。根据本文所述的示例实施例,计算机系统100为应用动态安装插件。例如,如果应用开发者使用计算机系统100开发应用,计算机系统100可使代理插件在应用的部署中运行,然后使用代理插件为应用动态安装所选插件。关于用于为应用动态安装插件的技术的细节在以下讨论中提供。
如图1所示,计算机系统100包括多个用户计算机系统102A-102M、网络104、多个服务器106A-106N以及插件源110。使用公知的网络通信协议通过网络104实现用户系统102A-102M、服务器106A-106N以及插件源110之间的通信。网络104可以是广域网(如因特网)、局域网(LAN)、另一类型的网络、或它们的组合。
插件源110是能够与服务器106A-106N通信的处理系统。处理系统的示例是包括能够根据指令集操纵数据的至少一个处理器的系统。例如,处理系统可以是计算机、个人数字助理等。插件源110被配置成提供插件112供动态插件安装模块108进一步处理,所述处理将在以下更详细讨论。例如,插件源110可响应于从动态插件安装模块108接收到对插件112的请求而提供插件112。
用户系统102A-102M是能够与服务器106A-106N通信的处理系统。用户系统102A-102M被配置成向服务器106A-106N提供请求来请求存储在服务器106A-106N上(或经服务器以其他方式可访问)的信息。例如,用户可使用用户所拥有的或以其他方式用户可访问的用户系统102上部署的客户端(如web浏览器、web爬行器、或其他类型的客户端)来发起执行计算机程序的请求。根据一些示例实施例,用户系统102A-102M能够访问由服务器104A-104N托管(host)的域(如网站),使得用户系统102A-102M可访问通过所述域可用的信息。这样的域可包括网页,所述网页可作为超文本标记语言(HTML)文档和在其中被链接的对象(如文件)来提供。
将认识到,任何一个或多个用户系统102A-102M都可与任何一个或多个服务器106A-106N通信。尽管图1中用户系统102A-102M被描绘为台式计算机,但是相关领域的技术人员将理解用户系统102A-102M可包括任何启用客户端的系统或设备,包括但不限于台式计算机、膝上型计算机、平板计算机、个人数字助理、蜂窝电话等等。
Servers 106A-106N are processing systems that are capable of communicatingwith user systems 102A-102M and plugin source(s)110.服务器106A-106N是能够与用户系统102A-102M和插件源110通信的处理系统。服务器106A-106N被配置成执行响应于从用户接收到请求而向用户提供信息的计算机程序。例如,信息可包括文档(如网页、图像、视频文件等等)、可执行程序的输出、或任何其他合适类型的信息。根据某些示例实施例,服务器106A-106N被配置成托管各个网站,使得网站可由计算机系统100的用户访问。
第一服务器106a被示为包括动态插件安装模块108。动态插件安装模块108被配置成将从插件源110接收的插件112转发到所部署的应用可访问的一位置。例如,动态插件安装模块108可响应于向插件源110提供对插件112的请求而接收插件112。动态插件安装模块108还被配置成标识关于指定应用的配置信息。配置信息指示要响应于指定应用正被部署而被安装的从存储在所部署的应用可访问的位置中的插件112选择的选定插件。动态插件安装模块108还被配置成使代理插件在指定应用的部署(例如,跨云环境中的多个机器或“内部部署”)中运行。指定的应用被封包以包括代理插件。动态插件安装模块108还被配置成使用代理插件来基于配置信息动态安装选定插件。以下参考图2-10更详细讨论用于为应用动态安装插件的一些示例技术。
应注意,动态插件安装模块108的实例被包括在包含指定应用的每一服务器上。动态插件安装模块108的每一实例使代理插件在在其上包括动态插件安装模块108的机器上安装并运行动态插件。
出于说明的目的而不旨在为限制,动态插件安装模块108被示为容纳在第一服务器106A中。将认识到,动态插件安装模块108的实例可被容纳在服务器106A-106N的任何一个或多个中。
动态插件安装模块108可按照各种方式实现,以便为应用动态安装插件,包括被实现为硬件、软件、固件或其任何组合。例如,动态插件安装模块108可被实现为配置成在一个或多个处理器中执行的计算机程序代码。在另一示例中,动态插件安装模块108可被实现为硬件逻辑/电子电路。在一实施例中,动态插件安装模块108可被实现为片上系统(SoC)。每个SoC可包括一集成电路芯片,该集成电路芯片包括以下一个或多个:处理器(如微控制器、微处理器、数字信号处理器(DSP)等等)、存储器、一个或多个通信接口、和/或用于执行其功能的进一步的电路和/或嵌入的固件。
图2-5描绘了根据各实施例的动态插件安装模块200、300、400和500,它们是图1中所示的动态插件安装模块108的示例实现。图2示出了根据一实施例提交插件供开发者在应用中使用。如图2中所示,动态插件安装模块200包括动态代理门户202、块(blob)存储204和封包工具206。动态代理门户202截取来自开发者的向块存储204添加插件的请求(例如指令)、更新安装在块存储204中的插件和/或基于请求从块存储204移除插件。例如,动态代理门户202可根据来自第一开发者的上传请求来向块存储204添加选定插件。动态代理门户202可根据来自第一开发者和/或其他开发者的更新请求,更新选定插件。动态代理门户202可根据来自第一开发者或另一开发者的移除请求从块存储204移除选定插件。插件中的每一个可具有任何合适的功能。例如,插件中的一个或多个可执行关于应用的诊断操作(例如,监视问题、标识问题根源、调试、剖析、控制等)。
插件可包括任何合适数目的组件(例如文件)。例如,插件可包括一个或多个可执行二进制代码、一个或多个支持库、插件清单等。插件清单是描述插件的配置(例如,设置)的文件(例如,可扩展标记语言(XML)文件)。例如,插件清单可指示对插件需要哪些配置值。动态代理门户202可提供用户接口,该用户接口使得用户能够指定对应于插件的相应配置的配置值。
如图2中所示,出于说明目的,标记为“Plugin.cspluginx”的插件212包括标记为“PluginAgent.exe”的第一文件208和标记为“Plugin.csplugin”的第二文件210。封包工具206能够组合文件208和210以创建插件212,如图2中所示。然而,将认识到开发者可组合文件208和210来创建插件212。
无论如何,经由动态代理门户202来上传插件212。例如,开发者可使用部署在用户系统(例如,用户系统102A-102M之一)上的客户端来上传插件212。插件212可被配置成具有任何合适的格式(例如,基于开放封包约定的格式)。封包工具206可在插件212经由动态代理门户202上传之前将插件212封包成前述格式。在一个示例实施例中,封包工具206在插件212经由动态代理门户202上传之前提供在线形式供开发者完成。在另一示例实施例中,动态代理门户202向开发者提供在线形式。
动态代理门户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。
块存储204是公共的、网络可访问(例如web可访问)存储。块存储204存储插件212和馈源214以及经由动态代理门户202上传的任何其它插件及其相应的馈源。块存储204可以是任何合适类型的存储。存储的一种类型是数据库。例如,块存储204可以是关系数据库、实体关系数据库、对象数据库、对象关系数据库、可扩展标记语言(XML)数据库等。
图3示出了根据一实施例的开发者选择应用的依赖关系。如图3中所示,动态插件安装模块300包括动态代理门户202、块存储204和接口320。动态代理门户202和块存储204能够如以上参考图2所述地操作。动态代理门户202截取来自开发者的关于应用的安装依赖关系的请求(例如,指令)。
接口320提供可用于关于应用的安装的依赖关系的视觉表示。例如,接口320示出了依赖关系A、B和C的相应的视觉表示322A、322B和322C。选择框324A-324C对应于相应的依赖关系A、B和C。用户可选择选择框324A来使依赖关系A关于应用来被安装;用户可选择选择框324B来使依赖关系B关于应用来被安装,以此类推。
如图3中所示,选择框324A和324C被选择,且选择框324B不被选择。从而,动态代理门户202生成标记为“ProductFeed.xml”的产品馈源316,以包括依赖关系A和C而不包括依赖关系B。动态代理门户202生成标记为“AggregatedFeed.xml”的聚集的馈源318,以包括馈源214和316。馈源316和318可以是web平台安装工具兼容的,尽管示例实施例的范围在这一方面不受限制。动态代理门户202向块存储204提供馈源316和318。
块存储204存储馈源316和318以及插件212和馈源214。块存储204所存储的每一馈源可对应于一已知的依赖关系或一未知的依赖关系。已知的依赖关系是在应用开发时已知的依赖关系。例如,诸如执行框架的执行框架是已知依赖关系的一个示例类型。未知的依赖关系是在应用开发时不知道的依赖关系。例如,性能测量插件可构成未知的依赖关系。应注意到,可在应用的部署被启动之后,为关于应用的安装选择未知的依赖关系。
图4示出了根据一实施例的开发者为应用选择插件。如图4中所示,动态插件安装模块400包括动态代理门户202、块存储204和接口420。动态代理门户202和块存储204能够如以上参考图2和3所述地操作。动态代理门户202截取来自开发者的关于应用安装插件的请求(例如,指令)。
接口420提供可用于关于应用的安装的插件的视觉表示。例如,接口420示出了插件A、B和C的相应的视觉表示422A、422B和422C。选择框424A-424C对应于相应的插件A、B和C。用户可选择选择框424A来使插件A关于应用来被安装;用户可选择选择框424B来使插件B关于应用来被安装,以此类推。用户还可配置插件(例如,指定插件的设置)。
如图4中所示,选择框424A和424C被选择,且选择框424B不被选择。从而,动态代理门户202修改产品馈源316以包括插件A和C的插件馈源。注意,插件B的插件馈源不被添加到产品馈源316,因为选择框424B未被选择。动态代理门户202响应于选择框424A和424C被选择和/或响应于从用户接收配置指令生成关于插件A和C的标记为“Settings.xml”的设置426。动态代理门户202向块存储204提供设置426以便存储在其中。
动态代理门户202不在显式公开的位置中存储设置426。例如,设置426可包括敏感数据(例如,数据库连接串)。在用于维护这样的敏感数据的安全的一个示例技术中,在非可浏览的容器中使用基于全局唯一标识符(基于GUID)的URI来存储设置426。尽管URI技术是公开的,但用蛮力方法访问URI是相对不可行的。将认识到,这仅是一个示例技术,且可采用其它技术来补充或代替这一示例技术。
出于说明目的,定义通过对两个插件的选择而生成的馈源的代码片段的非限定性示例在以下的章节III.B中提供。出于说明目的,定义通过对两个插件的选择而生成的配置文件的代码片段的非限定性示例在以下的章节III.C中提供。
图5示出了根据一实施例的如分别在图3和4中所示的所选依赖关系和插件的安装和执行。如图5中所示,动态插件安装模块500包括动态代理门户202和块存储204,它们能够如以上参考图2-4所述地操作。应用528在图5中被示为包括角色530和代理插件532。角色530定义应用528的操作。代理插件532担当应用528的代理。例如,代理插件532提供动态理解其上安装应用528的网络的拓扑的能力。因为云环境中的机器(例如,物理机器和/或虚拟机)通常位于防火墙之后,应用528的拓扑可能相当难以直接确定。从而,代理插件532负责确定与应用528相关联的虚拟机包括什么构成部分。一旦应用528的拓扑被确定,代理插件532可部署其它插件、这些插件的依赖关系以及应用与相关位置的依赖关系,然后初始化并运行这些插件和依赖关系。
出于说明目的,且不旨在限制,代理插件532包括WebPI代理534和动态代理536。WebPI代理534被配置成安装如分别在图3和4中所示的所选依赖关系和插件。动态代理536被配置成执行如分别在图3和4中所示的所选插件。
WebPI代理534使用web平台安装工具的库和应用编程接口(API)来读取聚集的馈源318,来确定要下载和安装哪些依赖关系和插件。例如,WebPI代理534向动态代理门户202提供查询(例如,查询538)。查询包括对聚集的馈源318和与应用528的部署相关联的部署标识符(ID)的请求。动态代理门户202将查询重定向到块存储204中对应于基于查询中的部署ID的统一资源标识符(URI,诸如统一资源定位符(URL)或统一资源名(URN))的存储位置。WebPI代理534从对应于URI的存储位置下载聚集的馈源318用于安装如分别在图3和4中所示的所选依赖关系和插件。
在一个示例中,WebPI代理534可在应用528内被配置成使用预定馈源来安装来自该馈源的预定的一组产品(例如,一个或多个依赖关系和/或一个或多个插件)或在预定馈源中没有指定产品时安装“默认”产品。默认的产品可由预定馈源内“默认”关键词到产品的关联来指示。
在另一示例中,如果WebPI代理534未被特别配置,则WebPI代理534可向web应用请求馈源。WebPI代理534可提供与应用528的部署相关联的部署ID,使得web应用将WebPI代理534重定向到与部署相关联的馈源。如果未指定馈源或没有馈源与应用528的部署相关联,则WebPI代理534可不安装如分别在图3和4中所示的所选依赖关系和/或插件。
动态代理536向动态代理门户202提供查询(例如,查询538)。查询包括对设置426和与应用528的部署相关联的部署标识符(ID)的请求。动态代理门户202将查询重定向块存储204中对应于基于查询中的部署ID的URI的存储位置。动态代理536从对应于URI的存储位置下载设置426以用于如图4中所示的所选插件的执行。设置426可以(或可以不)包括关于依赖关系的设置。
在一个示例中,动态代理536可在应用528内被配置成使用标识要执行的插件和这些插件的配置设置的预定配置文件。在另一示例中,如果动态代理536未被特别配置,则动态代理536可向web应用请求配置文件。动态代理536可提供与应用528的部署相关联的部署ID,使得web应用将动态代理536重定向到与部署相关联的配置文件。如果未指定配置文件或没有配置文件与应用528的部署相关联,则动态代理536可不执行如分别在图3和4中所示的所选插件。
在一示例实施例中,对于每一被配置的插件,动态代理536定位相应的插件清单(例如,在本地机上)。动态代理536然后执行在清单内指示的每一二进制代码。如果存在与插件相关联的配置设置,动态代理536就经由环境变量将配置设置传递给插件。如果在插件清单中指定等待插件停止执行的指令,则动态代理536等待该插件停止执行。否则,动态代理536移动至下一配置的插件。当所有配置的插件已被执行时,动态代理536停止执行。
在另一示例实施例中,动态代理536的操作模拟平台的启动加载器进程的行为,启动加载器进程运行随应用528封包的插件。动态代理536从而可减少(例如最小化)作为应用528的一部分运行的插件和作为这一动态情形的一部分运行的插件之间的体系结构差异。一些插件可能能够在两种环境中执行而无需对插件的改变。
应注意,其上安装了应用528的网络的拓扑可从动态代理门户202拉取信息,然后基于动态代理门户202中的设置配置其本身。这不同于传统上用于试图发现网络拓扑的推送技术。
图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的讨论,进一步的结构及操作实施例对于相关领域的技术人员将是显而易见的。
如图6所示,流程图600的方法在步骤602处开始。在步骤602,标识关于指定应用的配置信息。配置信息指示要响应于指定应用正被部署而被安装的从存储在所部署的应用可访问的一位置中的一个或多个插件中选择的选定插件。配置信息可以是专用于所指定的应用的应用专用配置信息。例如,配置信息可按照其安装文件和/或指定应用的描述来定义指定应用的内容供人类消费。在一示例实现中,标识模块1002标识配置信息1026。配置信息1026指示要响应于指定应用1030正被部署而被安装的从存储在存储1018中的插件1022选择的选定插件1034。将认识到,在一些示例实施例中,配置信息指示没有选定插件要被安装和/或执行。
在步骤604,使代理插件在指定应用的第一部署(例如,跨云环境中的机器或“内部部署”)中运行。指定的应用被封包以包括代理插件。在一示例实现中,因果关系模块1004使代理插件1032在指定应用1030的第一部署中运行。根据这一实现,指定应用1030被封包成包括代理插件1032。
在步骤606,代理插件被用于基于配置信息来动态(例如,当指定应用正在运行的同时在进行中)安装选定插件。在一示例实现中,安装模块使用代理插件1032来基于配置信息1026动态安装选定插件1034。
在示例实施例中,步骤602包括标识馈源,馈源包括选定插件、关于选定插件的位置的位置信息、以及包括用于安装选定插件的指令的安装信息。例如,标识模块1002可标识馈源。根据这一实施例,代理插件被用于基于位置信息和安装信息在步骤606处动态安装选定插件。例如,安装模块1006可使用代理插件1032基于位置信息和安装信息来动态安装选定插件1034。将认识到馈源还可包括指定应用的一个或多个依赖关系。例如,指定应用的一个或多个依赖关系可以是选定插件的超集。
在某些示例实施例中,可以不执行流程图600的一个或多个步骤602、604和/或606。此外,可以执行除步骤602、604、和/或606以外的或代替这些步骤的步骤。例如,在一示例实施例中,配置信息还指示指定应用的一个或多个依赖关系。将认识到,一个或多个依赖关系中的任何一个可具有一个或多个依赖关系,而这些依赖关系中的任何一个可具有一个或多个依赖关系,以此类推。从而,每一依赖关系可具有它自己的一个或多个依赖关系。根据这一实施例,流程图600的方法还包括使用代理插件基于配置信息来安装一个或多个依赖关系。在一示例实现中,安装模块1006使用代理插件1032来基于配置信息1026安装一个或多个依赖关系。
在另一示例实施例中,配置信息还指示选定插件的一个或多个依赖关系。根据这一实施例,流程图600的方法还包括使用代理插件基于配置信息来安装选定插件的一个或多个依赖关系。例如,一个或多个依赖关系可被存储在存储1018中。
在又一示例实施例中,选定插件中的每一个包括相应的可执行二进制代码的集合。可执行二进制代码是可执行的二进制代码。根据这一实施例,配置信息为每一选定插件指示相应的可执行二进制代码的集合的相应的子集。相应的可执行二进制代码的集合的每一子集可包括相应的集合中的任何一个或多个可执行二进制代码(例如,少于全部可执行二进制代码、全部可执行二进制代码、没有可执行二进制代码等等)。进一步根据这一实施例,流程图600的方法还包括使用代理插件基于配置信息来执行每一子集。在一示例实现中,执行模块1008使用代理插件1032来基于配置信息1026执行每一子集。在一个示例中,安装模块1006可响应于选定插件1034正被安装而生成安装指示符1020。例如,安装指示符1020可指示选定插件1034被安装。根据这一实施例,执行模块1008可响应于从安装模块1006接收安装指示符1020来使用代理插件1032执行每一子集。
注意到,选定插件中的任何一个或多个可包括单个可执行二进制代码。还注意到,选定插件中的任何一个或多个除可执行二进制代码以外可包括一个或多个补充(例如,库)二进制代码。
在又一示例实施例中,步骤602包括标识预定配置文件。预定配置文件可被包括在配置信息中,尽管示例实施例的范围在这一方面不受限制。例如,标识模块1002可标识预定配置文件(例如,配置文件10036),该文件可被包括在配置信息1026中。根据这一实施例,预定配置文件为每一选定插件指示至少一个配置设置。例如,配置信息1026可为每一选定插件1034指示配置设置。在一个示例中,配置设置可指定为监视目的要访问指定应用的频率。根据这一示例,配置设置可指定要每10秒、或每5毫秒或每30分钟等等访问该应用,进一步根据这一实施例,流程图600的方法还包括响应于使用代理插件来安装选定插件,使用代理插件基于预定配置文件来执行选定插件。在一示例实现中,执行模块1008使用代理插件1032来基于预定配置文件执行选定插件1034。在一个示例中,预定配置文件可不同于指示要响应于指定应用正被部署而被安装的至少一个选定插件的另一文件。在另一示例中,指示要响应于指定应用正被部署而被安装的至少一个选定插件的配置信息可被包括在预定配置文件中。
在又一示例实施例中,步骤602包括向经由其生成配置文件的web应用请求对应于指定应用的第一部署的配置文件。例如,标识模块1002提供文件请求1028,该文件请求向web应用请求对应于指定应用1030的第一部署的配置文件1036。根据这一实施例,步骤602还包括从web应用接收配置文件。配置文件可被包括在配置信息中,尽管示例实施例的范围在这一方面不受限制。配置文件为选定插件中的每一个指示至少一个配置设置。例如,执行模块1008可从web应用接收配置文件1036。进一步根据这一实施例,流程图600的方法还包括响应于使用代理插件来安装选定插件,使用代理插件基于配置文件来执行选定插件。在一示例实现中,执行模块1008使用代理插件1032来基于配置文件1036执行选定插件1034。在一个示例中,配置文件可不同于指示要响应于指定应用正被部署而被安装的至少一个选定插件的另一文件。在另一示例中,指示要响应于指定应用正被部署而被安装的至少一个选定插件的配置信息可被包括在配置文件中。
在一示例实施例中,流程图600的方法包括如图7中所示的步骤中的一个或多个。如图7所示,流程图700的方法在步骤702处开始。在步骤702,提供接口,用户经由该接口上传一个或多个插件。在一示例实现中,接口模块1010提供接口1038。例如,接口1038可被用户用来上传插件1022。
在步骤704,基于指定选定插件的第一用户发起的指令从一个或多个插件中选择选定插件。在示例实现中,选择模块1012基于第一用户发起的指令从插件1022选择选定插件1034。例如,选择模块1012可基于第一用户发起的指令生成选择请求1040来指定选定插件1034。根据这一示例,选择模块1012可向存储1018提供选择请求1040以从插件1022中选择选定插件1034。
在步骤706,生成配置信息以包括选定插件的配置设置。配置设置由第二用户发起的指令指示。在一示例实现中,生成模块1014生成配置信息1026以包括选定插件1034的配置设置,配置设置由第二用户发起的指令指定。
在步骤708,基于指定一个或多个依赖关系的第三用户发起的指令来选择指定应用的一个或多个依赖关系。在一示例实现中,选择模块1012基于第三用户发起的指令选择指定应用1030的一个或多个依赖关系。
在另一示例实施例中,流程图600的方法包括如图8中所示的步骤中的一个或多个。如图8所示,流程图800的方法在步骤802处开始。在步骤802,确定配置信息在指定应用正在运行时被改变以提供经改变的配置信息。经改变的配置信息指示要被安装的第二选定插件。在被改变之前的配置信息不指示要被安装的第二选定插件。在一示例实现中,确定模块1016确定配置信息1026在指定应用1030正在运行时被改变以提供经改变的配置信息。
在步骤804,代理插件被用于基于经改变的配置信息在指定应用正在运行的同时动态地安装第二选定插件。在一示例实现中,安装模块1006使用代理插件1032在指定应用1030正在运行的同时动态安装第二选定插件。
在又一示例实施例中,流程图600的方法包括如图9中所示的步骤中的一个或多个。如图9所示,流程图900的方法在步骤902处开始。在步骤902,代理插件被用于执行选定插件的第一执行。例如,步骤902可响应于在流程图600的步骤606处使用代理插件来安装选定插件而被执行。在一示例实现中,执行模块1008使用代理插件1032来执行指定插件1034的第一执行。
在步骤904,第一执行的状态被标识。例如,状态与选定插件的某些配置设置相关联。在一示例实现中,标识模块1002标识第一执行的状态。
在步骤906,确定要再利用指定应用。在一示例实现中,确定模块1016确定要再利用指定应用。将认识到,“要再利用”意味着“要重新启动”。例如,指定应用要再利用的判断可基于一个或多个因素,包括但不限于:确定其上部署指定应用的机器(例如,物理机器或虚拟机)要被重新启动(或已经被重新启动)、检测到关于其上部署指定应用的机器的硬件故障、检测到关于指定应用的故障、确定与指定应用相关联的操作系统要被升级、确定指定应用正在其上运行的平台已经请求再利用指定应用等等。
在步骤908,使代理插件在指定应用的后续部署中运行。后续部署在第一部署启动之后被启动。在一示例实现中,因果关系模块1004使代理插件1032在指定应用1030的后续部署中运行。
在步骤910,代理插件被用于基于配置信息动态重新安装选定插件。在一示例实现中,安装模块1006使用代理插件1032来基于配置信息1026动态重新安装选定插件1034。
在步骤912,代理插件被用于在第一执行状态中启动选定插件的第二执行。例如,代理插件可被用于使用与第一执行的状态相关联的选定插件的某些配置设置来启动第二执行。在一示例实现中,执行模块1008使用代理插件在第一执行的状态中启动选定插件1034的第二执行。
将认识到,动态插件安装模块1000可不包括标识模块1002、因果关系模块1004、安装模块1006、执行模块1008、接口模块1010、选择模块1012、生成模块1014、确定模块1016和/或存储1018中的一个或多个。而且,动态插件安装模块1000可包括除标识模块1002、因果关系模块1004、安装模块1006、执行模块1008、接口模块1010、选择模块1012、生成模块1014、确定模块1016和/或存储1018以外或代替这些模块的模块。
动态插件安装模块108、动态代理门户202、标识模块1002、因果关系模块1004、安装模块1006、执行模块1008、接口模块1010、选择模块1012、生成模块1014、确定模块1016、流程图600、流程图700、流程图800和流程图900可用硬件、软件、固件或其任何组合来实现。
例如,动态插件安装模块108、动态代理门户202、标识模块1002、因果关系模块1004、安装模块1006、执行模块1008、接口模块1010、选择模块1012、生成模块1014、确定模块1016、流程图600、流程图700、流程图800和/或流程图900可被实现为被配置成在一个或多个处理器中执行的计算机程序代码。
在另一示例中,动态插件安装模块108、动态代理门户202、标识模块1002、因果关系模块1004、安装模块1006、执行模块1008、接口模块1010、选择模块1012、生成模块1014、确定模块1016、流程图600、流程图700、流程图800和/或流程图900可被实现为硬件逻辑/电子电路。
例如,在一实施例中,动态插件安装模块108、动态代理门户202、标识模块1002、因果关系模块1004、安装模块1006、执行模块1008、接口模块1010、选择模块1012、生成模块1014、确定模块1016、流程图600、流程图700、流程图800和/或流程图900中的一个或多个可在片上系统(SoC)中实现。SoC可包括集成电路芯片,该集成电路芯片包括以下一个或多个:处理器(如微控制器、微处理器、数字信号处理器(DSP)等等)、存储器、一个或多个通信接口、和/或用于执行其功能的更多的电路和/或嵌入的固件。
图11描绘其中可实现各实施例的示例计算机1100。图1中所示的客户机102A-102M中的任何一个或多个、插件源110中的任何一个或多个或服务器106A-106N中的任何一个或多个(或其在图2-5和10中示出的任何一个或多个子组件)可使用计算机1100实现,包括计算机1100的一个或多个特征和/或替换特征。计算机1100可以是例如常规个人计算机、移动计算机或工作站形式的通用计算设备,或者计算机1100可以是专用计算设备。此处所提供的对计算机1100的描述只是为了说明,并不是限制性的。实施例也可以在相关领域的技术人员所知的更多类型的计算机系统中实现。
如图11所示,计算机1100包括处理单元1102、系统存储器1104和总线1106,总线1106将包括系统存储器1104在内的各种系统组件耦合到处理单元1102。总线1106表示若干类型的总线结构中的任何一种总线结构类型的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及处理器或使用各种总线体系结构中的任何一种的局部总线。系统存储器1104包括只读存储器(ROM)1108和随机存取存储器(RAM)1110。基本输入/输出系统1112(BIOS)储存在ROM 1108中。
计算机1100还具有一个或多个以下驱动器:用于读和写硬盘的硬盘驱动器1114、用于读或写可移动磁盘1118的磁盘驱动器1116、以及用于读或写诸如CD ROM、DVD ROM或其他光介质之类的可移动光盘1122的光盘驱动器1120。硬盘驱动器1114、磁盘驱动器1116,以及光驱动器1120分别通过硬盘驱动器接口1124、磁盘驱动器接口1126,以及光盘驱动器接口1128连接到总线1106。驱动器以及它们相关联的计算机可读存储介质为计算机提供了对计算机可读指令、数据结构、程序模块,及其他数据的非易失存储器。虽然描述了硬盘、可移动磁盘和可移动光盘,但是,也可以使用诸如闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等等之类的其他类型的计算机可读存储介质来储存数据。
数个程序模块可被储存在硬盘、磁盘、光盘、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的任何步骤)的计算机程序逻辑。
用户可以通过诸如键盘1138和定点设备1140之类的输入设备向计算机1100中输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、触敏屏、相机、加速度计、陀螺仪等等。这些及其他输入设备常常通过耦合到总线1106的串行端口接口1142连接到处理单元1102,但是,也可以通过其他接口,诸如并行端口、游戏端口或通用串行总线(USB),来进行连接。
显示设备1144(例如监视器)也通过诸如视频适配器1146之类的接口连接到总线1106。除了显示设备1144之外,计算机1100还可包括其他外围输出设备(未示出),如扬声器和打印机。
计算机1100通过网络接口或适配器1150、调制解调器1152、或用于通过网络建立通信的其他装置连接到网络1148(例如,因特网)。调制解调器1152(可以是内置的或外置的)通过串行端口接口1142连接到总线1106。
如此处所用的,术语“计算机程序介质”以及“计算机可读介质”被用于泛指非瞬态介质,诸如与硬盘驱动器1114相关联的硬盘、可移动磁盘1118、可移动光盘1122,以及其他非易失性介质,诸如闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等。这些计算机可读存储介质与通信介质相区别且不重叠。通信介质通常在诸如载波等已调制数据信号中承载计算机可读指令、数据结构、程序模块或者其它数据。术语“已调制数据信号”是指使得以在信号中编码信息的方式来设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括无线介质,如声学、RF、红外和其它无线介质。示例实施例也针对这些通信介质。
如上文所指示的,计算机程序和模块(包括应用程序1132及其他程序模块1134)可被储存在硬盘、磁盘、光盘、ROM或RAM上。这样的计算机程序也可以通过网络接口1150或串行端口接口1142来接收。这些计算机程序在由应用程序执行或加载时使得计算机1100能够实现此处所讨论的实施例的特征。相应地,这样的计算机程序表示计算机1100的控制器。
示例实施例还涉及包括存储在任何计算机可用介质上的软件(例如计算机可读指令)的计算机程序产品。这样的软件,当在一个或多个数据处理设备中执行时,使数据处理设备如此处所描述的那样操作。实施例可使用现在已知或将来知晓的任何计算机可使用或计算机可读介质。计算机可读介质的例子包括但不限于存储设备,诸如RAM、硬盘、软盘、CD ROM、DVD ROM、Zip盘、磁带、磁存储设备、光存储设备、基于MEMS的存储设备、基于纳米技术的存储设备,等等。
III.示例性代码片段
以下是分别标记为“示例代码片段#1”、“示例代码片段#2”和“示例代码片段#3”的三个示例代码片段。
A.示例性代码片段#1
以下代码片段阐明用于插件的示例馈源:
B.示例性代码片段#2
以下代码片段阐明由对两个插件的选择生成的示例馈源:
C.示例性代码片段#3
以下代码片段阐明由对两个插件的选择生成的示例配置文件:
IV.结论
虽然以上描述了不同的实施例,但应当理解的是它们只是作为示例而非限制。对于相关领域的技术人员显而易见的是,可以对其做出各种改变而不背离本发明的精神和范围。因此,本发明的宽度和范围不应被上述所公开的示例性实施例所限制,而应当仅根据所附权利要求书及其等同替换来定义。
Claims (10)
1.一种方法,包括:
标识关于指定应用的配置信息,所述配置信息指示要响应于所述指定应用正被部署而被安装的从存储在所部署的应用可访问的一位置中的一个或多个插件中选择的至少一个选定插件;
使代理插件在指定应用的第一部署中运行,所述指定应用被封包以包括所述代理插件;以及
响应于使所述代理插件在所述指定的应用的第一部署中运行,使用所述代理插件基于所述配置信息动态安装所述至少一个选定插件。
2.如权利要求1所述的方法,其特征在于,所述至少一个选定插件中的每一个包括相应的多个可执行二进制代码;
其中所述配置信息为所述至少一个选定插件中的每一个指示相应的多个可执行二进制代码的相应的子集;以及
其中所述方法还包括:
使用所述代理插件来基于所述配置信息执行每一子集。
3.如权利要求1所述的方法,其特征在于,标识配置信息包括:
标识为所述至少一个选定插件中的每一个指示至少一个配置设置的预定配置文件;以及
其中所述方法还包括:
响应于使用所述代理插件安装所述至少一个选定插件,使用所述代理插件基于所述预定配置文件来执行所述至少一个选定插件。
4.如权利要求1所述的方法,其特征在于,标识所述配置信息包括:
向经由其生成所述配置文件的web应用请求对应于所述指定应用的第一部署的配置文件;以及
从所述web应用接收所述配置文件,所述配置文件为所述至少一个选定插件中的每一个指示至少一个配置设置;以及
其中所述方法还包括:
响应于使用所述代理插件安装所述至少一个选定插件,使用所述代理插件基于所述配置文件来执行所述至少一个选定插件。
5.如权利要求1所述的方法,其特征在于,还包括:
提供接口,一个或多个用户经由所述接口来上传所述一个或多个插件;
基于指定所述至少一个选定插件的第一用户发起的指令,从所述一个或多个插件中选择所述至少一个选定插件;以及
生成所述配置信息以包括所述至少一个选定插件的配置设置,所述配置设置由第二用户发起的指令指定。
6.一种系统,包括:
被配置成标识关于指定应用的配置信息的标识模块,所述配置信息指示要响应于所述指定应用正被部署而被安装的从存储在所部署的应用可访问的一位置中的一个或多个插件中选择的至少一个选定插件;
因果关系模块,所述因果关系模块被配置成使代理插件在所述指定应用的第一部署中运行,所述指定应用被封包以包括所述代理插件;以及
安装模块,所述安装模块被配置成响应于使所述代理插件在所述指定的应用的第一部署中运行,使用所述代理插件基于所述配置信息动态安装所述至少一个选定插件。
7.如权利要求6所述的系统,其特征在于,所述配置信息还指示所述指定应用的一个或多个依赖关系;以及
其中,所述安装模块还被配置成使用所述代理插件来基于所述配置信息安装所述一个或多个依赖关系。
8.如权利要求7所述的系统,其特征在于,所述配置信息还指示所述至少一个选定插件的至少一个依赖关系;以及
其中,所述安装模块还被配置成使用所述代理插件来基于所述配置信息安装所述至少一个选定插件的所述至少一个依赖关系。
9.如权利要求6所述的系统,其特征在于,所述标识模块被配置成标识馈源,所述馈源包括所述至少一个选定插件、关于所述至少一个选定插件的位置的位置信息以及包括用于安装所述至少一个选定插件的指令的安装信息;以及
其中所述安装模块被配置成基于所述位置信息和所述安装信息来使用所述代理插件来动态安装所述至少一个选定插件。
10.一种包括计算机可读介质的计算机程序产品,计算机可读介质上记录有用于使得基于处理器的系统能够动态安装关于指定应用的至少一个选定插件的计算机程序逻辑,所述计算机程序产品包括:
用于使所述基于处理器的系统标识关于所述指定应用的配置信息的第一程序逻辑模块,所述配置信息指示要响应于所述指定应用正被部署而被安装的从存储在所部署的应用可访问的一位置中的一个或多个插件中选择的所述至少一个选定插件;
用于使所述基于处理器的系统使代理插件跨云环境中的多个机器在所述指定应用的第一部署中运行的第二程序逻辑模块,所述指定应用被封包以包括所述代理插件;
用于使所述基于处理器的系统确定所述配置信息在所述指定应用正在运行的同时是否被改变的第三程序逻辑模块;以及
第四程序逻辑模块,所述第四程序逻辑模块用于使所述基于处理器的系统响应于使所述代理插件正在所述指定应用的第一部署中运行而使用所述代理插件基于所述配置信息来动态安装所述至少一个选定插件,以及用于使所述基于处理器的系统响应于确定所述配置信息被改变以提供经改变的配置信息来使用所述代理插件基于所述经改变的配置信息在所述指定应用正在运行的同时动态安装一个或多个第二选定插件,所述经改变的配置信息指示要被安装的所述一个或多个第二选定插件,而改变之前的所述配置信息不指示要被安装的所述一个或多个第二选定插件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/431,131 | 2012-03-27 | ||
US13/431,131 US9158563B2 (en) | 2012-03-27 | 2012-03-27 | Dynamic plugin(s) for cloud application(s) |
PCT/US2013/030307 WO2013148144A1 (en) | 2012-03-27 | 2013-03-12 | Dynamic plugin(s) for cloud application(s) |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104246699A true CN104246699A (zh) | 2014-12-24 |
CN104246699B CN104246699B (zh) | 2018-04-10 |
Family
ID=49236824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380017043.4A Active CN104246699B (zh) | 2012-03-27 | 2013-03-12 | 云应用的动态插件 |
Country Status (5)
Country | Link |
---|---|
US (3) | US9158563B2 (zh) |
EP (1) | EP2831726B1 (zh) |
CN (1) | CN104246699B (zh) |
BR (1) | BR112014023828B1 (zh) |
WO (1) | WO2013148144A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104506628A (zh) * | 2014-12-25 | 2015-04-08 | 深圳市科漫达智能管理科技有限公司 | 一种插件仓库管理方法与系统 |
CN108052336A (zh) * | 2017-12-08 | 2018-05-18 | 国云科技股份有限公司 | 一种分布式软件升级系统及其实现方法 |
CN108551464A (zh) * | 2018-03-08 | 2018-09-18 | 网宿科技股份有限公司 | 一种混合云的连接建立、数据传输方法、装置和系统 |
CN110825395A (zh) * | 2019-10-23 | 2020-02-21 | 中冶赛迪重庆信息技术有限公司 | 多插件分层部署系统、设备及介质 |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8756617B1 (en) * | 2010-05-18 | 2014-06-17 | Google Inc. | Schema validation for secure development of browser extensions |
US9158563B2 (en) * | 2012-03-27 | 2015-10-13 | Microsoft Technology Licensing, Llc | Dynamic plugin(s) for cloud application(s) |
US8769059B1 (en) * | 2012-05-23 | 2014-07-01 | Amazon Technologies, Inc. | Best practice analysis, third-party plug-ins |
US10740765B1 (en) | 2012-05-23 | 2020-08-11 | Amazon Technologies, Inc. | Best practice analysis as a service |
US9626710B1 (en) | 2012-05-23 | 2017-04-18 | Amazon Technologies, Inc. | Best practice analysis, optimized resource use |
US8954574B1 (en) | 2012-05-23 | 2015-02-10 | Amazon Technologies, Inc. | Best practice analysis, migration advisor |
US8856740B2 (en) * | 2012-07-31 | 2014-10-07 | Hewlett-Packard Development Company, L.P. | Implementing multiple versions of a plug-in concurrently |
FR3000339A1 (fr) * | 2012-12-20 | 2014-06-27 | France Telecom | Procede de traitement de requetes d'acces a des services de virtualisation informatique, passerelle de virtualisation et navigateur web |
US9753714B1 (en) * | 2013-03-12 | 2017-09-05 | Ca, Inc. | Software package management systems including multiple modules for supporting multiple software package types |
US10628578B2 (en) | 2013-03-15 | 2020-04-21 | Imagine Communications Corp. | Systems and methods for determining trust levels for computing components using blockchain |
US9785767B2 (en) * | 2013-03-15 | 2017-10-10 | Imagine Communications Corp. | Systems and methods for determining trust levels for computing components |
US9959019B1 (en) * | 2013-04-23 | 2018-05-01 | Amazon Technologies, Inc. | Customizable media player framework |
US20150052607A1 (en) * | 2013-08-15 | 2015-02-19 | Immun.io Inc. | Method and system for protecting web applications against web attacks |
CN103631619B (zh) * | 2013-11-15 | 2016-11-23 | 北京奇虎科技有限公司 | 一种软件安装方法和一种终端 |
CN103631587B (zh) * | 2013-11-15 | 2017-01-18 | 北京奇虎科技有限公司 | 一种软件安装包的定制方法和一种服务器 |
US9450820B2 (en) * | 2014-02-26 | 2016-09-20 | International Business Machines Corporation | Dynamic extensible application server management |
CA2946067A1 (en) * | 2014-04-24 | 2015-10-29 | Barclays Bank Plc | Instant messaging systems and methods |
CN104219226B (zh) * | 2014-08-12 | 2017-10-27 | 重庆大学 | 一种确定云平台中最优通信代理节点数目的方法 |
US10446268B2 (en) * | 2014-08-18 | 2019-10-15 | Optum, Inc. | Systems and methods for maintaining and processing proprietary or sensitive data in a cloud-hybrid application environment |
US9823847B2 (en) * | 2015-02-24 | 2017-11-21 | International Business Machines Corporation | Optimized copy algorithm selection |
US10447812B2 (en) | 2015-06-05 | 2019-10-15 | Apple Inc. | On demand resources |
CN104951339B (zh) * | 2015-06-05 | 2018-03-20 | 烽火通信科技股份有限公司 | 一种基于Bundle依赖关系的自动搜索安装系统及方法 |
US9880824B2 (en) * | 2015-06-05 | 2018-01-30 | Apple Inc. | On demand resources |
US10140140B2 (en) | 2015-06-30 | 2018-11-27 | Microsoft Technology Licensing, Llc | Cloud virtual machine customization using extension framework |
US10270885B2 (en) | 2016-05-13 | 2019-04-23 | Servicenow, Inc. | System and method for deploying resources within a computing infrastructure |
TWI583294B (zh) * | 2016-05-31 | 2017-05-11 | Chenbro Micom Co Ltd | The built-in accessory of the chassis is hot-swappable |
EP3451341A1 (en) * | 2017-08-31 | 2019-03-06 | Siemens Healthcare GmbH | Uploading a data record to a cloud repository |
US10467063B2 (en) * | 2017-12-29 | 2019-11-05 | Cerner Innovation, Inc. | Tool for the automatic configuration of interoperability |
US11301280B2 (en) * | 2019-01-23 | 2022-04-12 | Vmware, Inc. | System and method for managing a monitoring agent in an operating system of a virtual computing instance |
CN113778543B (zh) * | 2020-09-03 | 2024-04-05 | 北京沃东天骏信息技术有限公司 | 一种应用于插件的页面内容更新方法和装置 |
US11841731B2 (en) * | 2021-09-24 | 2023-12-12 | Sap Se | Cloud plugin for legacy on-premise application |
US20230102514A1 (en) * | 2021-09-24 | 2023-03-30 | Sap Se | Container plugin for legacy on-premise application |
US11922163B2 (en) | 2021-09-24 | 2024-03-05 | Sap Se | Cloud version management for legacy on-premise application |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6871345B1 (en) * | 2000-04-04 | 2005-03-22 | Motive, Inc. | Self managing software agents with introspection |
US20070245356A1 (en) * | 2006-04-12 | 2007-10-18 | Sap Portals Israel Ltd. | Method and apparatus for a support platform |
CN101110951A (zh) * | 2007-08-08 | 2008-01-23 | 南京联创网络科技有限公司 | 视频监控系统的通信插件的动态加载方法 |
US20080127076A1 (en) * | 2006-11-27 | 2008-05-29 | Mcardle James Michael | jmx bean custom service extension plugin agent for an application server |
US20110041140A1 (en) * | 2009-08-13 | 2011-02-17 | Google Inc. | Event-Triggered Server-Side Macros |
US20110209144A1 (en) * | 2010-02-19 | 2011-08-25 | International Business Machines Corporation | Application runtime expert for deployment of an application on multiple computer systems |
US20120030672A1 (en) * | 2010-04-26 | 2012-02-02 | Vmware, Inc. | Microcloud platform delivery system |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6874143B1 (en) * | 2000-06-21 | 2005-03-29 | Microsoft Corporation | Architectures for and methods of providing network-based software extensions |
US7047518B2 (en) * | 2000-10-04 | 2006-05-16 | Bea Systems, Inc. | System for software application development and modeling |
US7861252B2 (en) * | 2001-03-21 | 2010-12-28 | Andrzej Uszok | Intelligent software agent system architecture |
US20030020948A1 (en) * | 2001-07-27 | 2003-01-30 | Jarvis Daniel Cook | Dynamically loaded applications in a printer |
US8708828B2 (en) * | 2001-09-28 | 2014-04-29 | Igt | Pluggable modular gaming modifiers and configuration templates for gaming environments |
US20040083474A1 (en) * | 2001-10-18 | 2004-04-29 | Mckinlay Eric | System, method and computer program product for initiating a software download |
US7536695B2 (en) * | 2003-03-28 | 2009-05-19 | Microsoft Corporation | Architecture and system for location awareness |
EP1725932A4 (en) * | 2004-03-10 | 2009-09-23 | Handmark Inc | DATA ACCESS ARCHITECTURE |
US7509638B2 (en) * | 2004-08-02 | 2009-03-24 | International Business Machines Corporation | Method and apparatus for providing a pluggable and extendable J2EE architecture |
US7810089B2 (en) * | 2004-12-30 | 2010-10-05 | Citrix Systems, Inc. | Systems and methods for automatic installation and execution of a client-side acceleration program |
US7822851B2 (en) * | 2007-01-18 | 2010-10-26 | Internet Probation and Parole Control, Inc. | Remote user computer control and monitoring |
US20080184135A1 (en) * | 2007-01-26 | 2008-07-31 | Microsoft Corporation | Web authoring plugin implementation |
US8561058B2 (en) | 2007-06-20 | 2013-10-15 | Red Hat, Inc. | Methods and systems for dynamically generating installation configuration files for software |
EP2248366A4 (en) | 2008-01-29 | 2014-04-09 | Qualcomm Inc | SECURE APPLICATION SIGNATURE |
US20090259940A1 (en) | 2008-02-14 | 2009-10-15 | Moraes Ian M | Mobile video application service creation tool |
US7596620B1 (en) | 2008-11-04 | 2009-09-29 | Aptana, Inc. | System and method for developing, deploying, managing and monitoring a web application in a single environment |
US8914783B2 (en) * | 2008-11-25 | 2014-12-16 | Fisher-Rosemount Systems, Inc. | Software deployment manager integration within a process control system |
US8769482B2 (en) * | 2008-12-16 | 2014-07-01 | International Business Machines Corporation | Method and system for building an application |
US8498302B2 (en) * | 2009-06-29 | 2013-07-30 | Oracle International Corporation | System and method for exposing third party call functions of the intelligent network application part (INAP) as a web service interface |
US8635534B2 (en) * | 2009-08-12 | 2014-01-21 | Ebay Inc. | Reservation of resources and deployment of applications using an integrated development environment |
US8898627B2 (en) * | 2010-05-11 | 2014-11-25 | Smartshift Gmbh | Systems and methods for applying rules to transform objects of an application |
US8584120B2 (en) * | 2009-11-23 | 2013-11-12 | Julian Michael Urbach | Stream-based software application delivery and launching system |
JP5552942B2 (ja) * | 2010-07-28 | 2014-07-16 | 富士通株式会社 | 情報送信装置、ネットワークシステム、情報送信方法および情報送信プログラム |
JP5192577B2 (ja) | 2010-10-19 | 2013-05-08 | パナソニック株式会社 | 接触検知センサ、駆動装置、及び、介護用ベッド |
US20130145361A1 (en) * | 2011-12-01 | 2013-06-06 | International Business Machines Corporation | Discovering and installing web application plugins |
US9158563B2 (en) * | 2012-03-27 | 2015-10-13 | Microsoft Technology Licensing, Llc | Dynamic plugin(s) for cloud application(s) |
-
2012
- 2012-03-27 US US13/431,131 patent/US9158563B2/en active Active
-
2013
- 2013-03-12 BR BR112014023828-6A patent/BR112014023828B1/pt active IP Right Grant
- 2013-03-12 CN CN201380017043.4A patent/CN104246699B/zh active Active
- 2013-03-12 WO PCT/US2013/030307 patent/WO2013148144A1/en active Application Filing
- 2013-03-12 EP EP13768540.0A patent/EP2831726B1/en active Active
-
2015
- 2015-10-11 US US14/880,270 patent/US9740469B2/en active Active
-
2017
- 2017-08-01 US US15/665,728 patent/US10740078B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6871345B1 (en) * | 2000-04-04 | 2005-03-22 | Motive, Inc. | Self managing software agents with introspection |
US20070245356A1 (en) * | 2006-04-12 | 2007-10-18 | Sap Portals Israel Ltd. | Method and apparatus for a support platform |
US20080127076A1 (en) * | 2006-11-27 | 2008-05-29 | Mcardle James Michael | jmx bean custom service extension plugin agent for an application server |
CN101110951A (zh) * | 2007-08-08 | 2008-01-23 | 南京联创网络科技有限公司 | 视频监控系统的通信插件的动态加载方法 |
US20110041140A1 (en) * | 2009-08-13 | 2011-02-17 | Google Inc. | Event-Triggered Server-Side Macros |
US20110209144A1 (en) * | 2010-02-19 | 2011-08-25 | International Business Machines Corporation | Application runtime expert for deployment of an application on multiple computer systems |
US20120030672A1 (en) * | 2010-04-26 | 2012-02-02 | Vmware, Inc. | Microcloud platform delivery system |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104506628A (zh) * | 2014-12-25 | 2015-04-08 | 深圳市科漫达智能管理科技有限公司 | 一种插件仓库管理方法与系统 |
CN104506628B (zh) * | 2014-12-25 | 2018-02-13 | 深圳市科漫达智能管理科技有限公司 | 一种插件仓库管理方法与系统 |
CN108052336A (zh) * | 2017-12-08 | 2018-05-18 | 国云科技股份有限公司 | 一种分布式软件升级系统及其实现方法 |
CN108551464A (zh) * | 2018-03-08 | 2018-09-18 | 网宿科技股份有限公司 | 一种混合云的连接建立、数据传输方法、装置和系统 |
CN108551464B (zh) * | 2018-03-08 | 2020-12-22 | 网宿科技股份有限公司 | 一种混合云的连接建立、数据传输方法、装置和系统 |
CN110825395A (zh) * | 2019-10-23 | 2020-02-21 | 中冶赛迪重庆信息技术有限公司 | 多插件分层部署系统、设备及介质 |
CN110825395B (zh) * | 2019-10-23 | 2023-04-07 | 中冶赛迪信息技术(重庆)有限公司 | 多插件分层部署系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US20160034266A1 (en) | 2016-02-04 |
WO2013148144A1 (en) | 2013-10-03 |
US9740469B2 (en) | 2017-08-22 |
EP2831726B1 (en) | 2023-12-20 |
US20170329592A1 (en) | 2017-11-16 |
EP2831726A4 (en) | 2016-05-04 |
CN104246699B (zh) | 2018-04-10 |
BR112014023828A8 (pt) | 2017-12-26 |
EP2831726A1 (en) | 2015-02-04 |
US20130263088A1 (en) | 2013-10-03 |
US10740078B2 (en) | 2020-08-11 |
BR112014023828B1 (pt) | 2022-07-12 |
US9158563B2 (en) | 2015-10-13 |
BR112014023828A2 (zh) | 2017-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104246699A (zh) | 云应用的动态插件 | |
CN101470621B (zh) | 虚拟机配置系统 | |
US9665469B2 (en) | System and method of runtime downloading of debug code and diagnostics tools in an already deployed baseboard management controller (BMC) devices | |
US8402123B2 (en) | Systems and methods for inventorying un-provisioned systems in a software provisioning environment | |
CN106415480B (zh) | 用于安装在移动设备上的用于允许对该移动设备进行远程配置的高速应用 | |
US20070283344A1 (en) | Programming model generic application deployment | |
US20100223607A1 (en) | Systems and methods for abstracting software content management in a software provisioning environment | |
US9184991B2 (en) | Method and apparatus for developing service processor solutions | |
US20070282801A1 (en) | Dynamically creating and executing an application lifecycle management operation | |
CN103902265A (zh) | 一种应用实现方法及相关装置 | |
EP2863281A2 (en) | System and method to configure a field device | |
EP2277108A1 (en) | Mobile device software management method and apparatus | |
JP2007157165A (ja) | 自律的なシステム構成を支援する状況認知基盤システム及び運用方法 | |
US20120254859A1 (en) | Method and apparatus for downloading software updates to place user terminal into a desired configuration state | |
WO2021092502A1 (en) | Just-in-time containers | |
US20210141632A1 (en) | Automated software patching for versioned code | |
US20100268925A1 (en) | System and method for populating a dedicated system service repository for an information handling system | |
US9141321B1 (en) | Configurable printer server device | |
CN102707942B (zh) | 操作系统体验状态 | |
CN115994003A (zh) | 操作系统中共享对象的处理方法及处理装置 | |
CN116795679A (zh) | 一种Web应用测试方法、装置、电子设备及存储介质 | |
US8423584B2 (en) | Conditional inclusion of resources in a computer system configuration | |
CN115952007B (zh) | 一种应用运行方法、计算设备及存储介质 | |
KR100677932B1 (ko) | 전자기기 업그레이드 시스템과 그 제어방법 | |
JP2017084123A (ja) | 動作環境再構築プログラム、動作環境再構築システム、動作環境再構築方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20171023 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |