CN108139950B - 分布式扩展执行的方法及计算系统 - Google Patents
分布式扩展执行的方法及计算系统 Download PDFInfo
- Publication number
- CN108139950B CN108139950B CN201680057864.4A CN201680057864A CN108139950B CN 108139950 B CN108139950 B CN 108139950B CN 201680057864 A CN201680057864 A CN 201680057864A CN 108139950 B CN108139950 B CN 108139950B
- Authority
- CN
- China
- Prior art keywords
- extension
- client device
- request
- execution
- computing facility
- 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.)
- Active
Links
Images
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本文中公开了用于扩展的分布式执行的计算系统、设备和相关联的处理。在一个实施例中,一种方法包括在客户端设备处接收用于在web页面中发起与web站点相关联的扩展的用户输入。响应于所接收的用户输入,可以建立客户端设备与远程计算设施之间的通信链路。该方法还可以包括经由建立的通信链路从客户端设备向远程计算设施传输对于发起扩展的请求,以及在客户端设备处从远程计算设施接收表示所请求的扩展的执行结果的数据。
Description
背景技术
web站点通常可以允许进行使得开发人员能够编写“应用”以在 web站点上运行以便添加管理功能或其他特征的扩展。这些扩展也可以被发布到站点扩展库,这允许其他用户也安装和使用扩展。编写扩展通常可以与编写普通web站点类似。一个区别是如何在web站点上安装计算机代码或指令。
发明内容
提供本“发明内容”是为了以简化的形式介绍将在以下“具体实施方式”中进一步描述的一些概念。本“发明内容”并非旨在确定所要求保护的主题的关键特征或必要特征,也并非旨在用于限制所要求保护的主题的范围。
web站点扩展是一种可以以某种方式扩展web站点的功能的有用工具。web站点扩展可以在客户端设备上的web浏览器中作为单独程序执行,该单独程序具有嵌入在web站点的主HTML文档内的对应 HTML文档(通常称为“iFrames”)。在操作期间,响应于用户请求启动扩展,web浏览器从例如扩展服务器下载扩展的代码。web浏览器然后可以执行下载的代码以例如从扩展服务器或其他合适的源获取内容并且处理获取到的内容以提供执行结果。
扩展执行的前述布置可能难以缩放并且可能缺乏执行灵活性。扩展数目的一个限制受到主HTML文档中的iFrame数目的限制。随着活动扩展的数目的增加,web浏览器消耗的客户端设备上的网络带宽、处理器时间、可用存储器和其他计算资源的量不断增加。结果,客户端设备的性能可能会恶化到使得web浏览器停止响应于用户输入的水平。在诸如智能电话或平板计算机等一些设备中,由于缺乏计算资源,这样的扩展执行甚至可能无法实现。
所公开的技术的若干实施例可以通过将一些或全部扩展执行重定位到诸如数据中心中的计算集群等远程计算设施来解决至少一些前述困难。例如,在某些实施例中,客户端设备上的web浏览器可以被配置为响应于发起web站点的扩展的用户输入来建立与远程计算设施的通信链接。然后浏览器可以向计算设施传输对于发起扩展的请求。响应于从浏览器接收到请求,计算设施可以执行各种操作,诸如在服务器上发起虚拟机,将所请求的扩展的代码下载到虚拟机,并且在虚拟机上执行下载的代码。然后计算设施可以将数据作为扩展执行的结果提供给客户端设备上的浏览器。浏览器然后可以将所接收的数据显示给用户。
当与传统技术相比时,所公开的技术的若干实施例可以大大提高可扩展性。远程计算设施可以包括数千或甚至数百万个服务器和其他计算资源,使得扩展的数目不会显著影响计算集群中可用的计算资源。此外,所执行的扩展与扩展服务器之间的通信现在经由远程计算设施与扩展服务器之间的网络信道来进行。因此,这样的通信不会显著影响客户端设备处可用的网络带宽。结果,客户端设备处的浏览器可以提供比传统技术更好的用户体验。
当与传统技术相比时,所公开的技术的若干实施例还可以具有改进的执行灵活性。在某些实施例中,用户可以指定一个或多个特定扩展是要在客户端设备上本地执行还是由计算集群执行。例如,当用户正在开发扩展时,为了便于调试,用户可以有利地在本地执行扩展代码。在另一示例中,当扩展涉及私有或安全信息时,用户可以在本地执行扩展。结果,所公开技术的若干实施例可以允许用户基于各种用户偏好、网络条件等灵活地执行期望的扩展。
附图说明
图1是根据本技术的实施例的适合于实现分布式扩展执行的计算系统的示意图。
图2是示出根据本技术的实施例的图1中的计算系统的某些组件的示意图。
图3是示出根据本技术的附加实施例的图1中的计算系统的某些组件的示意图。
图4是示出根据本技术的另外的实施例的图1中的计算系统的某些组件的示意图。
图5是根据本技术的实施例的用于配置扩展的执行的示例用户界面。
图6是示出根据本技术的实施例的客户端设备处的分布式扩展执行过程的流程图。
图7A至7C是示出根据本技术的实施例的扩展服务器处的分布式扩展执行过程的流程图。
图8是适用于图1至4中的计算系统的某些组件的计算设备。
具体实施方式
下面描述实现分布式扩展执行的计算系统、设备、组件、模块、例程和过程的某些实施例。在下面的描述中,包括组件的具体细节以提供对所公开的技术的某些实施例的透彻理解。相关领域的技术人员也将理解,所公开的技术可以具有附加实施例,或者可以在没有下面参考图1至8描述的实施例的若干细节的情况下实践。
如本文中使用的,术语“扩展”是具有以某种方式扩展web站点的功能的代码的计算机程序。扩展可以使用HTML、JavaScript、CSS 或其他web技术来创作。例如,扩展可以扩展web站点(例如,在“portal.azure.com”的Azure门户)本身的功能。在基本级别,Azure 门户中的扩展为用户提供了一种创建、检查、监测、删除和配置某种类型的云资产或资源的方式。资产可以包括基本组件,诸如虚拟机或公共IP地址、或者一起工作的资产集合,诸如WordPress web站点(需要web服务器、VM、IP、证书、数据库、身份验证等)。这些资产中的每个或这些资产的集合可以使用扩展来管理。
可以为需要其自己的身份以用于计费、安全性或管理目的的任何类型的资产添加扩展。例如,可以为每种类型的数据库(例如,SQL 服务器、MySQL、Oracle、DocumentDB等)添加扩展。这样的扩展针对管理web站点的各种资产和/或组件允许很大的自主权。这样的扩展也可以放置在“沙箱”中,使得扩展不会直接相互影响。web站点门户管理员可以提供JavaScript或其他合适类型的API,以允许web 站点所有者或开发人员能够实现任何期望的逻辑。web站点所有者或开发人员也可以提供声明性用户界面定义,其描述如何将扩展的用户界面集成到web站点的用户界面中。这样的整合可以允许web站点直到用户的界面被呈现时才初始化一个或多个扩展。这样,运行和消耗计算/通信资源的一个或多个扩展的数目可能受到限制。这样的整合还可以允许web站点在预期在web站点中使用一个或多个扩展时预测性地初始化一个或多个扩展。结果,一个或多个扩展可以运行并且在用户试图打开一个或多个扩展的一个或多个接口时准备好接受用户输入。
在web浏览器中执行扩展可能难以缩放并且缺乏执行灵活性。例如,当所执行的扩展的数目增加时,web浏览器可能消耗客户端设备上的越来越多的网络带宽、处理器时间、可用存储器或其他计算资源。结果,客户端设备的性能可能显著恶化,甚至变得不可操作。所公开技术的若干实施例总体上涉及将一些或全部扩展执行重定位到远程计算集群。这样,扩展的执行可以不会显著影响客户端设备处的可用计算能力、通信带宽或其他资源,如下面参考图1至7更详细描述的。
图1是根据本技术的实施例的适合于实现分布式扩展执行的计算系统100的示意图。图1的计算系统的若干实施例可以通过减少在客户端设备上执行的客户端侧代码(例如,JavaScript)的量来提高web 站点扩展执行的性能和可扩展性。如图1所示,计算系统100可以包括客户端设备102、一个或多个web服务器106、具有一个或多个集群服务器110的远程计算设施108、以及经由计算机网络108操作性地彼此耦合的一个或多个扩展服务器114。计算机网络108可以包括因特网、局域网、城域网、广域网和/或其他合适类型的网络。
客户端设备102、web服务器106和集群服务器110以及扩展服务器114每个可以包括处理器和存储器(图1中未示出),该存储器包含用于由处理器执行以提供下面参考图2至4更详细地讨论的某些软件组件的指令。处理器可以包括微处理器、现场可编程门阵列和/或其他合适的逻辑器件。存储器可以包括被配置为存储从处理器接收的数据以及用于处理器的指令(例如,用于执行下面参考图5至7C 讨论的方法的指令)的易失性和/或非易失性介质(例如,ROM;RAM、磁盘存储介质;光存储介质;闪速存储器设备和/或其他合适的存储介质)和/或其他类型的计算机可读存储介质。尽管在图1中示出了计算系统100的特定组件,但是在其他实施例中,计算系统100还可以包括附加和/或不同的组件。例如,计算系统100可以包括附加的web 服务器、附加的客户端设备或其他合适的组件(未示出)。
客户端设备102可以被配置为执行指令以提供web浏览器104,用户101可以通过web浏览器104访问来自一个或多个web服务器 106的内容105(示出为列表用于说明)。web浏览器104可以是由加利福尼亚州的山景市的Mozilla公司提供的Mozilla Firefox、由加利福尼亚州的山景市的Google公司提供的Chrome浏览器、由加利福尼亚州的库比蒂诺市的Apple公司提供的Safari、由华盛顿州的雷德蒙市的Microsoft公司提供的InternetExplorer或Microsoft Edge、或其他合适类型的web浏览器。在所示实施例中,客户端设备102包括台式计算机。在其他实施例中,客户端设备102还可以包括膝上型计算机、平板计算机、智能电话或其他合适类型的计算设备。
web服务器106可以被配置为托管经由计算机网络108可访问的一个或多个web站点。例如,web服务器106可以被配置为根据HTTP 或另一合适的网络协议经由网络连接111向例如客户端设备102提供文本、视频、图片、声音或其他合适类型的内容。web服务器106还可以被配置为提供管理web站点(本文中称为“可移植(portable)”),管理员或其他合适的用户可以通过管理web站点来访问、修改或以其他方式管理被托管在web服务器106上的web站点的内容和/或行为。一个示例性可移植可以是位于“portal.azure.com”的Azure门户。
如图1所示,计算设施108可以包括一个或多个集群服务器110。在一个实施例中,计算设施108可以是具有通过以太网或其他合适类型的网络互连的多个服务器、存储设备、网络设备或其他合适的设备的数据中心。在其他实施例中,计算设施108可以包括数据中心的一部分、数据中心中的服务器的机架、单个服务器或其他合适的计算设施。在所示实施例中,web服务器106和计算设施108被示出为单独的实体。在其他实施例中,单个数据中心或其一部分(未示出)可以为web服务器106和计算设施108两者提供设施。
集群服务器110可以被单独地配置为在来自客户端设备102的请求时为诸如Azure门户等web站点提供和执行一个或多个扩展。例如,如图1所示,第一集群服务器110a可以被配置为发起第一虚拟机 112a,并且第二集群服务器110b可以被配置为在经由通信链路113从客户端设备102接收到请求时发起第二虚拟机112b。通信链路113 可以是物理链路或者使用一个或多个物理链路的逻辑链路。通信链路 113可以具有点对点、广播、组播、点对多点或其他合适类型的操作模式。
第一集群服务器110a和第二集群服务器110b然后可以被配置为分别经由第一扩展链路115a和第二扩展链路115b下载或以其他方式获取与一个或多个扩展相对应的代码、配置数据、元数据或其他合适的指令。第一集群服务器110a和第二集群服务器110b然后可以被配置为执行下载的指令并且经由通信链路113向客户端设备102提供执行结果。在其他实施例中,一个或多个扩展可以在单个集群服务器110 上、在一组集群服务器110上、或以其他合适的方式来提供和/或执行。
扩展服务器114(被单独标识为第一扩展服务器114a和第二扩展服务器114b)被配置为向web站点提供与一个或多个扩展相关联的代码和/或数据。例如,在一个实施例中,第一扩展服务器114a和第二扩展服务器114b每个可以包括分别与第一扩展和第二扩展相关联的代码和数据。在另一实施例中,第一扩展服务器114a可以包括代码,并且第二扩展服务器114b可以包括与第一和第二扩展两者相关联的数据。在其他实施例中,单个扩展服务器114可以包含用于多个扩展的代码和数据。在另外的实施例中,一个或多个扩展服务器114可以以其他合适的方式包含代码和/或数据。
如前所述,管理员或其他合适的用户可以通过为web站点开发扩展来以某种方式“扩展”或增加web站点的功能。例如,Azure门户的扩展可以允许用户创建、检查、监测、删除或配置合适类型的云资产或资源,诸如虚拟机或公共IP地址、或者一起工作的这样的云资产的集合。然而,在客户端设备102上的web浏览器104中执行大量扩展可能消耗大量计算和/或网络资源。如此,客户端设备102的性能可能降级并且用户体验可能因此受到影响。
计算系统100的若干实施例可以通过将与web站点相关联的一些或全部扩展的提供和执行重定位到计算设施108来解决至少一些上述缺陷。例如,在某些实施例中,用户101可以启动客户端设备102上的web浏览器104以访问例如在“portal.azure.com”的Azure门户。作为响应,客户端设备102经由计算机网络108与web服务器106建立网络连接111(例如,TCP/IP连接)。客户端设备102然后可以获取与web站点相关联的内容105并且在web浏览器104中显示获取到的内容105。
在一个实施例中,用户101可以向客户端设备102提供请求对 web站点的某些扩展的远程执行的用户输入。响应于所接收的用户输入,客户端设备102可以与计算设施108中的一个或多个集群服务器 110建立通信链路113。在其他实施例中,web浏览器104可以基于与所请求的web站点相关联的一个或多个默认扩展来自动建立通信链路113。在另外的实施例中,客户端设备102可以基于来自用户101 的功能请求、web站点的先前会话、用户简档或其他合适的标准来发起对扩展的远程执行。
在某些实施例中,在允许建立通信链路113之前,计算设施108 可以要求来自客户端设备102的特定授权证书。在一个示例中,客户端设备102可以使用相同的授权证书来从web服务器106访问web 站点以建立通信链路113。在其他示例中,用户101可以向计算设施108提供密码、对安全问题的答案或其他证书。在其他实施例中,计算设施108可以在没有授权证书的情况下被公开访问。
一旦建立,客户端设备102可以利用通信链路113在计算设施108 中传输对于一个或多个扩展(例如,经由元数据)的远程执行的请求。响应于接收到请求,一个或多个集群服务器110可以提供和执行所请求的一个或多个扩展的代码。例如,如图1所示,第一集群服务器110a 和第二集群服务器110b每个可以分别发起虚拟机111a和111b。第一集群服务器110a和第二集群服务器110b还可以在第一虚拟机111a 和第二虚拟机111b中的每个中发起浏览器仿真器(未示出)。然后,虚拟机111a和111b可以分别从例如第一扩展服务器114a和第二扩展服务器114b下载用于一个或多个扩展的代码,并且使用浏览器仿真器执行下载的代码。
在执行期间,在第一虚拟机111a和第二虚拟机111b上的浏览器仿真器中执行的一个或多个扩展可以经由通信链路113从客户端设备 102上的web浏览器104接收数据(例如,用户输入)。一个或多个扩展还可以分别从例如第一扩展服务器114a和第二扩展服务器114b 或者从其他合适的源访问数据。然后,第一虚拟机111a和第二虚拟机111b可以经由通信链路113向客户端设备102传输表示一个或多个扩展的执行结果的数据。客户端设备102然后可以将执行结果显示在web浏览器104中。在某些实施例中,在第一虚拟机111a和第二虚拟机111b上执行的第一和第二扩展也可以经由例如计算设施108 中的虚拟网络(未示出)彼此通信。在其他实施例中,第一和第二扩展可以经由其他合适的网络信道进行通信
当与传统技术相比时,计算系统100的若干实施例可以具有更大的可扩展性。远程计算设施108可以包括数千或甚至数百万个集群服务器110和其他计算资源,使得所执行的扩展的数目不会显著影响计算设施108中可用的计算资源。而且,在计算设施108和扩展服务器 114中的所执行的扩展之间的数据传输和其他通信现在经由不同于网络连接111或通信链路113的网络信道来进行。因此,这样的通信不会显著地影响客户端设备102处可用的网络带宽。结果,客户端设备102处的web浏览器104可以提供比传统技术更好的用户体验。
图2是示出根据本技术的实施例的图1中的计算系统100的某些组件的示意图。在图2和下文中的其他图中,相似的附图标记表示相似的组件。另外,单独的软件组件、对象、类、模块和例程可以是以 C、C++、C#、Java和/或其他合适的编程语言编写为源代码的计算机程序、过程或进程。
组件可以包括但不限于一个或多个模块、对象、类、例程、属性、进程、线程、可执行文件、库或其他组件。组件可以是源代码或二进制形式。组件可以包括在编译之前的源代码(例如,类、属性、过程、例程)、经编译的二进制单元(例如,库、可执行文件)或在运行时实例化和使用的构件(例如,对象、进程、线程)的各方面。系统内的组件可以在系统内采用不同的形式。作为一个示例,包括第一组件、第二组件和第三组件的系统可以但不限于包含第一组件是源代码的属性、第二组件是二进制编译的库、并且第三组件是在运行时创建的线程的系统。
计算机程序、过程或进程可以被编译成对象、中间或机器代码,并且被呈现用于由个人计算机、网络服务器、膝上型计算机、智能电话和/或其他合适的计算设备的一个或多个处理器来执行。同样,组件可以包括硬件电路。本领域普通技术人员将认识到,硬件可以被认为是固化(fossilize)的软件,并且软件可以被认为是液化(liquefy)的硬件。仅作为一个示例,组件中的软件指令可以被烧录到可编程逻辑阵列电路,或者可以被设计为具有适当的集成电路的硬件电路。同样,硬件可以通过软件来模拟。源、中间和/或目标代码和关联数据的各种实现可以存储在计算机存储器中,该计算机存储器包括只读存储器、随机存取存储器、磁盘存储介质、光存储介质、闪速存储器设备和/ 或其他适合的计算机可读存储介质,而不包括传播信号。
如图2所示,客户端设备102上的web浏览器104可以包括壳组件134和控制组件136。壳组件134可以被配置为从门户或其他合适的web站点加载web页面。例如,壳组件134可以包括被配置为基于用户输入(例如,“portal.azure.com”)来确定web服务器106的 IP地址的域解析器(未示出)。壳组件134还可以包括被配置为基于所确定的IP地址来建立客户端设备102与web服务器106之间的网络连接111的网络接口。然后,壳组件134可以被配置为向web服务器106传输web站点请求122以及从web服务器106获取web站点内容124(例如,HTTP文档)。壳组件134然后可以在web浏览器 104中显示获取到的web站点内容134。
壳组件134还可以被配置为管理web浏览器104与任何远程执行的扩展112之间的通信。例如,一旦远程执行被发起,壳组件134也可以被配置为向集群服务器110传输与一个或多个远程执行的扩展 112相关联的数据。所传输的数据可以包括用户输入、来自获取到的 web站点内容124的数据、来自一个或多个本地执行的扩展的数据、或其他合适类型的数据。壳组件134还可以被配置为从集群服务器 110接收扩展结果128,并且在web浏览器104中显示所接收的执行结果。
控制组件136可以被配置为管理与显示在web浏览器104中的 web站点相关联的一个或多个扩展112的执行。两个扩展112仅出于说明的目的在图2中示出。在其他实施例中,计算系统100可以被配置为远程或本地执行任何合适数目的扩展112。在一个实施例中,控制组件136可以接收请求一个或多个扩展122的远程执行的用户输入。作为响应,控制组件136可以基于例如集群服务器110的硬编码或用户提供的网络地址来在客户端设备102与集群服务器110之间建立通信链路113。控制组件136然后可以向集群服务器110传输对于在集群服务器110上执行一个或多个扩展的扩展请求126。在其他实施例中,例如在传输web站点请求122时,在获取web站点内容124 时,或者基于其他合适的标准,控制组件136可以建立通信链路133 和/或传输对于一个或多个扩展的扩展请求126。
控制组件136还可以被配置为允许用户101在一个或多个扩展的本地或远程执行之间进行选择。例如,在一个实施例中,控制组件136 可以提供允许用户101为每个扩展122选择执行方式的图形用户界面、配置文件或其他合适的组件。响应于用户选择,控制组件136可以向集群服务器110传输请求由用户101选择的扩展的远程执行的扩展请求126。控制组件136还可以被配置为在客户端设备102上本地提供和执行一个或多个扩展,如下面参考图3更详细描述的。
另外,如图2所示,集群服务器110可以包括被配置为从客户端设备102接收扩展请求126的接口组件142。然后,接口组件142可以向处理组件144传输所接收的扩展请求126用于进一步处理。处理组件144可以被配置为提供和执行与一个或多个用户选择的扩展相关联的指令。例如,处理组件144可以引起集群服务器110发起一个或多个虚拟机111(图1),从扩展服务器114下载扩展指令132和其他合适的配置数据,并且例如在浏览器仿真器中执行下载的扩展指令 132。
在执行扩展112期间,扩展112还可以从扩展服务器114获取扩展数据133。扩展112然后可以对获取到的扩展数据133执行计算或其他合适的操作以生成扩展结果128。处理组件144然后可以被配置为将扩展结果128转发给接口组件142,接口组件142继而将扩展结果128转发给客户端设备102。
尽管图2示出了所有扩展112的远程执行,但是在某些实施例中,用户101可以经由图形用户界面、配置文件或经由其他合适的指示来选择要在客户端设备102上(例如,在web浏览器104的iFrame中) 本地执行的一个或多个扩展112。下面参考图5更详细地描述适合于接收用户选择的一个示例用户界面。例如,在图3所示的实施例中,用户101可以指定第一扩展112a和第二扩展112b要远程执行,并且第三扩展112c要在客户端设备102上本地执行。作为响应,控制组件136可以向集群服务器110传输扩展请求126以发起第一扩展112a 和第二扩展112b的执行并且在web浏览器104中显示扩展结果128,如上面参考图2所述。
控制组件136还可以在本地提供和执行第三扩展112c。在一个实施例中,控制组件136可以与一个或多个扩展服务器114建立扩展链路117以获取与第三扩展112c相关联的扩展指令132。在一个实施例中,扩展链路117可以与通信链路113分离并且可以与通信链路113 不同。在其他实施例中,扩展链路117可以与通信链路113组合。这样,控制组件136可以经由集群服务器110从扩展服务器114获取扩展指令132和/或扩展数据133。控制组件136然后可以引起下载的扩展指令132在web浏览器104中(例如,在web浏览器104的iFrame 中)的执行。在其他实施例中,第三扩展112c的执行可以使用其他合适的技术与其他本地扩展(未示出)隔离。
当与传统技术相比时,计算系统100的若干实施例可以具有改进的执行灵活性。在某些实施例中,用户101可以指定一个或多个特定扩展是要在客户端设备102上本地执行还是在集群服务器110上远程执行。例如,当用户101正在开发扩展112时,为了便于调试,用户101可以有利地在本地执行扩展112,以容易地修改扩展112的代码。在另一示例中,当扩展112涉及私有或安全数据时,用户101可以在本地执行扩展112以保护隐私。因此,计算系统100的若干实施例可以允许用户101基于各种偏好、网络条件或其他合适的标准来灵活地执行扩展112。
图4是示出根据本技术的另外的实施例的图1中的计算系统100 的某些组件的示意图。在图1至3中,客户端设备102被配置为为计算设施108(图1)上的多个远程执行的扩展112建立单个通信链路 133。然而,在某些实施例中,客户端设备102还可以被配置为为远程执行的扩展112建立多个通信链路133。例如,如图4所示,控制组件136可以被配置为为第一扩展112a建立第一通信链路133a并且为第二扩展112b建立第二通信链路133b。前述实施例的一个特征是个体扩展112的发起、执行和管理可以彼此隔离。这样,与为所有或多个扩展112利用单个通信链路133相比,可以增加执行可靠性。
图5是根据本技术的实施例的用于配置扩展的执行的示例用户界面160。如图5所示,用户界面160出于说明的目的可以包括扩展列表161(示出为扩展I、II)。每个扩展可以具有相关联的指示符,用于接收每个扩展的远程或本地执行指示。在所示实施例中,指示符162、164和166出于说明的目的被示出为径向按钮。在其他实施例中,指示符162、164和166可以单独地包括下拉列表、文本输入字段或其他合适类型的输入字段。在图5所示的示例中,指示符162、164 和166指示扩展I和II要远程执行,并且扩展III要在本地执行。在其他实施例中,用户可以以其他合适的方式选择扩展的远程或本地执行。
用户界面160还可以包括控制特征,诸如添加按钮167、保存按钮168和取消按钮169。添加按钮167可以被配置为允许用户添加附加扩展。保存按钮167可以被配置为允许用户保存对在输入字段162、 164和166中输入的选择的更改。取消按钮169可以被配置为取消对在输入字段162、164和166中输入的选择的任何更改。尽管在图5 中示出了特定的输入字段和控制特征,但是在其他实施例中,用户界面160可以包括其他合适的输入字段和/或控制特征。
图6是示出根据本技术的实施例的客户端设备处的分布式扩展执行过程200的流程图。尽管下面参考图1至4的计算系统100描述过程200的各种实施例,但是在其他实施例中,过程200可以用其他合适类型的计算框架、系统、组件或模块来执行。
如图6所示,过程200可以包括在阶段202例如经由客户端设备 102(图1)上的web浏览器104接收用于访问web站点的用户输入。过程200然后可以包括在阶段204与远程计算设施108(图1)中的集群服务器110(图1)建立通信链路。在一个实施例中,可以在web 浏览器104在客户端设备102上被启动时建立通信链路。在另一实施例中,可以在从web服务器106获取web站点内容124(图2)和/ 或在web浏览器104中显示web站点内容124时建立通信链接。在其他实施例中,可以在用户请求扩展的执行时或在其他合适的时间建立通信链接。
过程200然后可以包括用于确定通信链路是否建立的判定阶段 206。响应于确定通信链路未建立,过程200在阶段204恢复到建立通信链路。响应于确定通信链路已经建立,过程200继续进行以在阶段208向远程计算设施108传输发起一个或多个扩展的扩展请求108。过程200然后可以包括在阶段210接收表示执行一个或多个扩展的扩展结果的数据。所接收的数据然后可以显示在例如客户端设备102上的web浏览器104上。
图7A是示出根据本技术的实施例的远程服务器处的分布式扩展执行过程300的流程图。如图7A所示,过程300可以包括在阶段302 接收发起一个或多个扩展的请求。响应于所接收的请求,过程300可以包括在阶段304提供一个或多个扩展的执行。在某些实施例中,提供一个或多个扩展的执行可以包括将执行指派给服务器(例如,图2 的集群服务器110),向服务器分配计算和/或存储资源(例如,可用存储器),和/或提供其他合适的资源。在其他实施例中,提供一个或多个扩展的执行可以包括实例化一个或多个虚拟机111(图1)以实现适合于执行一个或多个扩展的浏览器仿真器或其他合适的应用。在另外的实施例中,提供一个或多个扩展的执行可以包括从例如图1的扩展服务器114或其他合适的源为所请求的一个或多个扩展下载或以其他方式获得可执行指令。下面参考图7B更详细地描述一个或多个扩展的执行的提供的示例实施例。
过程300然后可以包括用于确定一个或多个扩展的执行的提供是否完成的判定阶段306。响应于确定提供未完成,过程300在阶段304 恢复提供一个或多个扩展的执行。响应于确定提供完成,过程300继续进行以在阶段308执行所提供的一个或多个扩展。然后,过程300 可以包括在阶段310向客户端设备102(图1)传输表示执行一个或多个扩展的结果的数据。
图7B是示出根据本技术的实施例的提供在远程服务器处的一个或多个扩展的执行的过程304的流程图。如图7B所示,过程304可以包括在阶段322分配执行设施。在某些实施例中,分配执行设施可以包括分配计算资源(例如,处理器时间)、存储空间(例如,可用存储器)或其他合适类型的资源。在其他实施例中,分配设施还可以包括向一个或多个扩展的执行指派优先级,并且相应地分配资源。
过程304然后可以包括在阶段324获得扩展代码或指令。在一个实施例中,扩展代码或指令可以通过从一个或多个扩展服务器114(图 1)下载来获得。在另一实施例中,扩展代码或指令可以通过从web 服务器106下载来获得。在其他实施例中,扩展代码或指令可以通过从网络存储装置或其他合适的源下载来获得。
过程304还可以包括在阶段326准备用于执行的扩展代码。在一个实施例中,准备用于执行的扩展代码可以包括检查扩展代码与所分配的计算设施的其他组件的兼容性。在其他实施例中,准备用于执行的扩展代码还可以包括配置下载的扩展代码或执行其他合适的操作。然后过程304可以包括在阶段328指示一个或多个扩展的执行的提供完成。
图7C是示出根据本技术的实施例的在远程服务器处执行一个或多个扩展的过程308的流程图。如图7C所示,过程308可以包括从一个或多个扩展服务器114(图1)获取要由一个或多个扩展处理的数据。示例数据可以包括操作参数(例如,CPU使用率、可用存储量等)、事件日志、故障报告或与web站点相关联的其他合适的信息。
过程308还可以包括在阶段334处理获取到的数据。在某些实施例中,处理获取到的数据可以包括对获取到的数据执行一个或多个计算。在其他实施例中,处理获取到的数据还可以包括对获取到的数据进行比较、搜索或执行其他合适的逻辑操作。在另外的实施例中,处理获取到的数据可以包括生成获取到的数据的图形表示的数据。在又一些实施例中,处理获取到的数据可以包括排序、过滤或其他合适的操作。
图8是适用于图1至4中的计算系统的某些组件的计算设备400。例如,计算设备400可以适用于图2的客户端设备102、web站点服务器106、集群服务器110或扩展服务器114。在非常基本的配置402 中,计算设备400通常包括一个或多个处理器404和系统存储器406。存储器总线408可以用于处理器404与系统存储器406之间的通信。
取决于期望的配置,处理器404可以是任何类型,包括但不限于微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)或其任何组合。处理器404可以包括一个或多个级别的高速缓存(诸如一级高速缓存410和二级高速缓存412)、处理器核414和寄存器416。示例处理器核414可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSP核)或其任何组合。示例存储器控制器418还可以与处理器404一起使用,或者在一些实现中,存储器控制器418 可以是处理器404的内部部分。
取决于期望的配置,系统存储器406可以是任何类型,包括但不限于易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪速存储器等)或其任何组合。系统存储器406可以包括操作系统420、一个或多个应用422和程序数据424。所描述的这个基本配置402在图6中由内部虚线内的那些组件示出。
计算设备400可以具有附加的特征或功能、以及用于支持基本配置402与任何其他设备和接口之间的通信的附加的接口。例如,总线 /接口控制器430可以用于支持基本配置402与一个或多个数据存储设备432之间经由存储接口总线434的通信。数据存储设备432可以是可移除存储设备436、非可移除存储设备438或其组合。可移除存储装置和非可移除存储设备的示例包括诸如软盘驱动器和硬盘驱动器 (FIDD)等磁盘设备、诸如光盘(CD)驱动器或数字多功能盘(DVD) 驱动器等光盘驱动器、固态驱动器(SSD)和磁带驱动器等。示例计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移除和非可移除介质。
系统存储器406、可移除存储设备436和非可移除存储设备438 是计算机可读存储介质的示例。计算机可读存储介质包括一个或多个存储硬件或设备,其示例包括但不限于RAM、ROM、EEPROM、闪速存储器或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备、或者可以用于存储期望的信息并且可以由计算设备400访问的任何其他介质。任何这样的计算机可读存储介质可以是计算设备400的一部分。术语“计算机可读存储介质”排除了传播的信号和通信介质。
计算设备400还可以包括用于支持经由总线/接口控制器430从各种接口设备(例如,输出设备442、外围接口444和通信设备446) 到基本配置402的通信的接口总线440。示例输出设备442包括可以被配置为经由一个或多个A/V端口452与诸如显示器或扬声器等各种外部设备通信的图形处理单元448和音频处理单元450。示例外围接口444包括可以被配置为经由一个或多个I/O端口458与诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备等)或其他外围设备(例如,打印机、扫描仪等)等外部设备通信的串行接口控制器454或并行接口控制器456。示例通信设备446包括可以被布置为支持经由一个或多个通信端口464通过网络通信链路与一个或多个其他计算设备462的通信的网络控制器460。
网络通信链路可以是通信介质的一个示例。通信介质通常可以通过计算机可读指令、数据结构、程序模块或调制数据信号中的其他数据(诸如载波或其他传输机制)来实施,并且可以包括任何信息传递介质。“调制数据信号”可以是其一个或多个特性以使得能够在信号中编码信息的方式来被设置或改变的信号。作为示例而非限制,通信介质可以包括诸如有线网络或直接有线连接等有线介质以及诸如声学、射频(RF)、微波、红外(IR)和其他无线介质等无线介质。本文中使用的术语计算机可读介质可以包括存储介质和通信介质。
计算设备400可以被实现为诸如蜂窝电话、个人数据助理(PDA)、个人媒体播放器设备、无线web手表设备、个人头戴式耳机设备、专用设备或者包括上述功能中的任何一种的混合装置等小型便携式(或移动)电子设备的一部分。计算设备400也可以被实现为包括膝上型计算机和非膝上型计算机配置两者的个人计算机。
从上文中可以理解,为了说明的目的,本文中已经描述了本公开的特定实施例,但是可以在不偏离本公开的情况下进行各种修改。另外,一个实施例的很多元件可以作为其他实施例的元件的补充或代替而与其他实施例相结合。因此,除了所附权利要求之外,本技术不受限制。
Claims (20)
1.一种用于分布式扩展执行的方法,包括:
在客户端设备处接收用于在web浏览器中启动扩展的用户输入,所述扩展与web站点相关联并且包括计算机程序,所述计算机程序具有扩展所述web站点的功能的代码;以及
响应于接收到的所述用户输入,
确定请求的所述扩展是要在所述客户端设备上被本地执行还是要被远程地执行;以及
响应于确定请求的所述扩展要被远程地执行,
经由计算机网络在所述客户端设备与远程计算设施之间建立通信链路;
经由建立的所述通信链路从所述客户端设备向所述远程计算设施传输对于启动所述扩展的请求;以及
在所述客户端设备处从所述远程计算设施接收表示请求的所述扩展的执行结果的数据。
2.根据权利要求1所述的方法,还包括:在所述客户端设备处,在所述web浏览器中显示表示请求的所述扩展的所述执行结果的接收到的所述数据,而不在所述客户端设备上执行请求的所述扩展。
3.根据权利要求1所述的方法,其中所述用户输入是第一用户输入,并且其中所述方法还包括:
在所述客户端设备处接收与将由所述远程计算设施执行的所述扩展相关联的第二用户输入;以及
经由建立的所述通信链路将接收到的所述第二用户输入传输到所述远程计算设施。
4.根据权利要求1所述的方法,其中:
接收所述用户输入包括接收具有指示符的所述用户输入,所述指示符指示请求的所述扩展是要在所述客户端设备上被本地执行还是要由所述远程计算设施执行,并且其中确定请求的所述扩展是要在所述客户端设备上被本地执行还是要被远程地执行包括:根据所述指示符确定请求的所述扩展是要在所述客户端设备上被本地执行还是要被远程地执行。
5.根据权利要求1所述的方法,其中:
接收所述用户输入包括接收具有指示符的所述用户输入,所述指示符指示请求的所述扩展是要在所述客户端设备上被本地执行还是要由所述远程计算设施执行;以及
确定请求的所述扩展是要在所述客户端设备上被本地执行还是要被远程地执行包括:根据相关联的所述指示符来确定请求的所述扩展是要在所述客户端设备上被本地执行还是要由所述远程计算设施远程地执行;以及
响应于确定请求的所述扩展要被远程执行,经由建立的所述通信链路从所述客户端设备向所述远程计算设施传输对于启动所述扩展的所述请求。
6.根据权利要求1所述的方法,其中:
请求的所述扩展是第一扩展;以及
所述方法还包括:
在所述客户端设备处接收另一用户输入以用于在所述web浏览器中启动第二扩展,所述另一用户输入具有指示所述第二扩展是否要在所述客户端设备上被本地执行或由所述远程计算设施执行的指示符;
根据相关联的所述指示符确定所述第二扩展是要在所述客户端设备上被本地执行还是要由所述远程计算设施执行;以及
响应于确定请求的所述扩展要被本地执行,在所述客户端设备上的所述web浏览器中提供和执行所述第二扩展。
7.一种用于分布式扩展执行的方法,包括:
在具有多个服务器的计算设施处经由计算机网络从客户端设备接收对于启动扩展的请求,所述扩展与所述客户端设备经由web浏览器访问的web站点相关联;
响应于接收到的所述请求,在所述计算设施处提供所述扩展的执行,包括:
启动所述计算设施处的所述多个服务器中的一个服务器上的虚拟机;以及
从扩展服务器下载与所述扩展相对应的计算机代码;
在所述计算设施处执行所述扩展以生成表示所述扩展的执行结果的数据,包括:
在所述虚拟机内启动与所述扩展相对应的、下载的所述计算机代码;
从所述扩展服务器获取扩展数据;以及
在所述虚拟机处处理获取的所述数据,以生成表示所述扩展的执行结果的所述数据;以及
向所述客户端设备传输生成的所述表示所述扩展的执行结果的数据,以在所述客户端设备上的所述web浏览器中被显示。
8.根据权利要求7所述的方法,其中:
接收所述请求包括经由所述客户端设备与所述计算设施之间的通信链路接收所述请求;
执行所述扩展包括经由所述计算设施与所述扩展服务器之间的扩展链路从扩展服务器获取扩展数据;以及
所述扩展链路与所述客户端设备与所述计算设施之间的所述通信链路分离并且不同。
9.根据权利要求7所述的方法,其中:
接收所述请求包括经由所述客户端设备与所述计算设施之间的通信链路接收所述请求;
执行所述扩展包括经由所述计算设施与所述扩展服务器之间的扩展链路从扩展服务器获取扩展数据;以及
传输生成的所述数据包括经由所述通信链路向所述客户端设备传输生成的所述表示所述扩展的执行结果的数据。
10.根据权利要求7所述的方法,其中:
接收所述请求包括经由所述客户端设备与所述计算设施之间的通信链路接收所述请求;
执行所述扩展包括经由所述计算设施与所述扩展服务器之间的扩展链路从扩展服务器获取扩展数据;以及
传输生成的所述数据包括经由与所述扩展链路分离的所述通信链路向所述客户端设备传输生成的所述表示所述扩展的执行结果的数据。
11.根据权利要求7所述的方法,其中:
执行的所述扩展是第一扩展;以及
所述方法还包括:
在所述计算设施处经由所述计算机网络接收来自所述客户端设备的对于启动第二扩展的另一请求,所述第二扩展与所述客户端设备经由所述web浏览器访问的所述web站点相关联;
响应于接收到的所述请求,在所述计算设施处提供所述第二扩展的执行;
在所述计算设施处执行所述第二扩展以生成表示所述第二扩展的执行结果的数据;以及
将生成的所述表示所述第二扩展的执行结果的数据传输到所述客户端设备上,以与表示所述第一扩展的执行结果的接收到的所述数据一起显示在所述客户端设备上的所述web浏览器中。
12.一种用于分布式扩展执行的计算机系统,包括:
处理器和存储器,所述存储器包含由所述处理器可执行的指令,以使得所述计算机系统:
在所述计算机系统处经由计算机网络从客户端设备接收用于启动和执行与web站点相关联的扩展的请求,所述扩展被配置扩展具有在所述客户端设备上显示的一个或多个web页面的所述web站点的功能;
响应于接收到的所述请求,使用所述处理器提供和执行所述扩展以生成表示所述扩展的执行结果的数据,其中:
提供请求的所述扩展的执行包括:
启动所述计算机系统的服务器中的一个服务器上的虚拟机;以及
从扩展服务器下载与所述扩展相对应的计算机代码;并且
执行所述扩展包括:
在所述虚拟机内启动与所述扩展相对应的、下载的所述计算机代码;
从所述扩展服务器获取扩展数据;以及
在所述虚拟机处处理获取的所述数据以生成所述表示所述扩展的执行结果的数据;以及
将生成的所述表示所述扩展的执行结果的数据经由所述计算机网络从所述计算机系统传输到所述客户端设备,以在所述客户端设备上显示的所述一个或多个web页面上被输出,而不在所述客户端设备上执行所述扩展。
13.根据权利要求12所述的计算机系统,其中:
接收所述请求包括经由所述客户端设备和所述计算机系统之间的通信链路接收所述请求;
执行所述扩展包括经由所述计算机系统和所述扩展服务器之间的扩展链路从扩展服务器获取扩展数据;以及
传输生成的所述数据包括经由所述通信链路将生成的所述表示所述扩展的执行结果的数据传输到所述客户端设备。
14.一种用于分布式扩展执行的方法,包括:
在具有多个服务器的计算设施处经由计算机网络从客户端设备接收对于启动扩展的请求,所述扩展与所述客户端设备经由web浏览器访问的web站点相关联,
响应于接收到的所述请求,在所述计算设施处提供所述扩展的执行,包括:
启动所述计算设施处的所述多个服务器中的一个服务器上的虚拟机;以及
从扩展服务器下载与所述扩展相对应的计算机代码;并且在所述计算设施处执行所述扩展以生成表示所述扩展的执行结果的数据,包括:
在所述虚拟机内实例化浏览器仿真器;
在实例化的所述浏览器仿真器中启动下载的与所述扩展相对应的所述计算机代码;
使用所述浏览器仿真器从所述扩展服务器获取扩展数据;以及
在所述虚拟机处处理获取的所述数据,以生成表示所述扩展的执行结果的所述数据;以及
向所述客户端设备传输生成的所述表示所述扩展的执行结果的数据,以在所述客户端设备上的所述web浏览器中被显示。
15.根据权利要求14所述的方法,其中:
接收所述请求包括经由所述客户端设备与所述计算设施之间的通信链路接收所述请求;
执行所述扩展包括经由所述计算设施与所述扩展服务器之间的扩展链路从扩展服务器获取扩展数据;以及
所述扩展链路与所述客户端设备与所述计算设施之间的所述通信链路分离并且不同。
16.根据权利要求14所述的方法,其中:
接收所述请求包括经由所述客户端设备与所述计算设施之间的通信链路接收所述请求;
执行所述扩展包括经由所述计算设施与所述扩展服务器之间的扩展链路从扩展服务器获取扩展数据;以及
传输生成的所述数据包括经由所述通信链路向所述客户端设备传输生成的所述表示所述扩展的执行结果的数据。
17.根据权利要求14所述的方法,其中:
接收所述请求包括经由所述客户端设备与所述计算设施之间的通信链路接收所述请求;
执行所述扩展包括经由所述计算设施与所述扩展服务器之间的扩展链路从扩展服务器获取扩展数据;以及
传输生成的所述数据包括经由与所述扩展链路分离的所述通信链路向所述客户端设备传输生成的所述表示所述扩展的执行结果的数据。
18.根据权利要求14所述的方法,其中:
执行的所述扩展是第一扩展;以及
所述方法还包括:
在所述计算设施处经由所述计算机网络接收来自所述客户端设备的对于启动第二扩展的另一请求,所述第二扩展与所述客户端设备经由所述web浏览器访问的所述web站点相关联;
响应于接收到的所述请求,在所述计算设施处提供所述第二扩展的执行;
在所述计算设施处执行所述第二扩展以生成表示所述第二扩展的执行结果的数据;以及
将生成的所述表示所述第二扩展的执行结果的数据传输到所述客户端设备上,以与表示所述第一扩展的执行结果的接收到的所述数据一起显示在所述客户端设备上的所述web浏览器中。
19.一种用于分布式扩展执行的方法,包括:
在具有多个服务器的计算设施处经由计算机网络从客户端设备接收对于启动第一扩展的第一请求和对于启动第二扩展的第二请求,所述第一扩展与所述客户端设备经由web浏览器访问的web站点相关联,所述第二扩展与所述客户端设备经由所述web浏览器访问的所述web站点相关联;以及
响应于接收到的所述第一请求和所述第二请求,
在所述计算设施处提供所述第一扩展和所述第二扩展的执行;
在所述计算设施处执行所述第一扩展和所述第二扩展以生成表示所述第一扩展和所述第二扩展的执行结果的数据;以及
将生成的所述表示所述第一扩展的执行结果的所述数据传输到所述客户端设备上,以与表示所述第二扩展的执行结果的接收到的所述数据一起显示在所述客户端设备上的所述web浏览器中。
20.根据权利要求19所述的方法,其中:
提供请求的所述扩展的执行包括:从扩展服务器分别下载与所述第一扩展和所述第二扩展相对应的计算机代码;并且
执行所述第一扩展和所述第二扩展包括:
从所述扩展服务器获取扩展数据;以及
在所述计算设施处处理获取的所述数据,以生成表示所述第一扩展和所述第二扩展的执行结果的所述数据。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562239388P | 2015-10-09 | 2015-10-09 | |
US62/239,388 | 2015-10-09 | ||
US15/040,188 | 2016-02-10 | ||
US15/040,188 US10389795B2 (en) | 2015-10-09 | 2016-02-10 | Distributed extension execution in computing systems |
PCT/US2016/054566 WO2017062262A1 (en) | 2015-10-09 | 2016-09-30 | Distributed extension execution in computing systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108139950A CN108139950A (zh) | 2018-06-08 |
CN108139950B true CN108139950B (zh) | 2022-06-17 |
Family
ID=57133439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680057864.4A Active CN108139950B (zh) | 2015-10-09 | 2016-09-30 | 分布式扩展执行的方法及计算系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10389795B2 (zh) |
EP (1) | EP3360042A1 (zh) |
CN (1) | CN108139950B (zh) |
WO (1) | WO2017062262A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220253510A1 (en) * | 2021-02-09 | 2022-08-11 | Bank Of America Corporation | Web Browser Extension Script Obfuscation System |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0853413A2 (en) * | 1997-01-09 | 1998-07-15 | Sun Microsystems Inc. | Special purpose network server |
CN101611422A (zh) * | 2007-02-12 | 2009-12-23 | 微软公司 | web数据使用平台 |
US8402011B1 (en) * | 2011-10-10 | 2013-03-19 | Google Inc. | System and method for managing user web browsing information |
WO2013133916A1 (en) * | 2012-03-09 | 2013-09-12 | Google Inc. | Tiers of data storage for web applications and browser extensions |
US8719365B1 (en) * | 2009-02-12 | 2014-05-06 | Adobe Systems Incorporated | Graphic output from remote execution of applications redirected with dynamically sized virtual screen |
CN104081384A (zh) * | 2012-01-26 | 2014-10-01 | 微软公司 | 用于为在线文档提供计算web服务的系统和方法 |
CN104520816A (zh) * | 2012-03-01 | 2015-04-15 | 谷歌公司 | 使用浏览器作为中间件的跨扩展消息接发 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6393605B1 (en) | 1998-11-18 | 2002-05-21 | Siebel Systems, Inc. | Apparatus and system for efficient delivery and deployment of an application |
EP1208482A4 (en) | 1998-11-30 | 2002-05-29 | Siebel Systems Inc | CLIENT-SERVER SYSTEM WITH CUSTOMER ARCHITECTURE |
US6560607B1 (en) | 1999-05-11 | 2003-05-06 | Microsoft Corporation | Client side bulk updates on the world wide web |
US6643621B1 (en) | 2000-09-14 | 2003-11-04 | Cisco Technology, Inc. | Methods and apparatus for referencing and processing audio information |
US7409349B2 (en) | 2001-05-04 | 2008-08-05 | Microsoft Corporation | Servers for web enabled speech recognition |
US7493397B1 (en) | 2001-06-06 | 2009-02-17 | Microsoft Corporation | Providing remote processing services over a distributed communications network |
US8412791B2 (en) | 2001-09-28 | 2013-04-02 | International Business Machines Corporation | Apparatus and method for offloading application components to edge servers |
JP4593078B2 (ja) | 2003-02-28 | 2010-12-08 | 株式会社日立製作所 | 異なる計算機環境におけるジョブ実行方法及びそのプログラム |
US20070174429A1 (en) | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
US8826411B2 (en) | 2006-03-15 | 2014-09-02 | Blue Coat Systems, Inc. | Client-side extensions for use in connection with HTTP proxy policy enforcement |
US20080127234A1 (en) | 2006-09-19 | 2008-05-29 | International Business Machines Corporation | Methods, systems, and computer program products for a remote request dispatcher extension framework for container based programming models |
US8510371B2 (en) | 2007-01-16 | 2013-08-13 | Gizmox Ltd. | Method and system for creating IT-oriented server-based web applications |
US8245151B2 (en) * | 2007-01-30 | 2012-08-14 | Oracle International Corporation | Web browser window management |
US8291227B2 (en) * | 2007-02-02 | 2012-10-16 | Red Hat, Inc. | Method and apparatus for secure communication |
US8161160B2 (en) * | 2008-02-28 | 2012-04-17 | Microsoft Corporation | XML-based web feed for web access of remote resources |
US8316387B2 (en) * | 2008-08-28 | 2012-11-20 | Microsoft Corporation | Exposure of remotely invokable method through a webpage to an application outside web browser |
US8374949B2 (en) * | 2008-09-26 | 2013-02-12 | Yahoo! Inc. | Integration of open advertisements with e-commerce activities |
US20160057469A1 (en) * | 2010-01-18 | 2016-02-25 | Sitting Man, Llc | Methods, systems, and computer program products for controlling play of media streams |
US20130055070A1 (en) | 2011-08-24 | 2013-02-28 | David Oliver SACKS | Method of generating web pages using server-side javascript |
US10466989B2 (en) | 2011-09-02 | 2019-11-05 | Microsoft Technology Licensing, Llc. | Fast presentation of markup content having script code |
CA2850425A1 (en) | 2011-09-30 | 2013-04-04 | Calgary Scientific Inc. | Coupled application extensions for collaborative remote application sharing |
US9679163B2 (en) * | 2012-01-17 | 2017-06-13 | Microsoft Technology Licensing, Llc | Installation and management of client extensions |
US9485332B2 (en) | 2013-03-15 | 2016-11-01 | Sencha, Inc. | Offloading execution of a portion of a client-side web application to a server |
US20150244835A1 (en) * | 2014-02-21 | 2015-08-27 | Andrew T. Fausak | Transcoding instance with multiple channels |
GB201411912D0 (en) * | 2014-07-03 | 2014-08-20 | Realeyes O | Method of collecting computer user data |
US10545749B2 (en) * | 2014-08-20 | 2020-01-28 | Samsung Electronics Co., Ltd. | System for cloud computing using web components |
US20160299985A1 (en) * | 2015-04-13 | 2016-10-13 | Eric Poindessault | Method for accessing last search |
-
2016
- 2016-02-10 US US15/040,188 patent/US10389795B2/en active Active
- 2016-09-30 WO PCT/US2016/054566 patent/WO2017062262A1/en active Application Filing
- 2016-09-30 EP EP16781626.3A patent/EP3360042A1/en active Pending
- 2016-09-30 CN CN201680057864.4A patent/CN108139950B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0853413A2 (en) * | 1997-01-09 | 1998-07-15 | Sun Microsystems Inc. | Special purpose network server |
CN101611422A (zh) * | 2007-02-12 | 2009-12-23 | 微软公司 | web数据使用平台 |
US8719365B1 (en) * | 2009-02-12 | 2014-05-06 | Adobe Systems Incorporated | Graphic output from remote execution of applications redirected with dynamically sized virtual screen |
US8402011B1 (en) * | 2011-10-10 | 2013-03-19 | Google Inc. | System and method for managing user web browsing information |
CN104081384A (zh) * | 2012-01-26 | 2014-10-01 | 微软公司 | 用于为在线文档提供计算web服务的系统和方法 |
CN104520816A (zh) * | 2012-03-01 | 2015-04-15 | 谷歌公司 | 使用浏览器作为中间件的跨扩展消息接发 |
WO2013133916A1 (en) * | 2012-03-09 | 2013-09-12 | Google Inc. | Tiers of data storage for web applications and browser extensions |
Also Published As
Publication number | Publication date |
---|---|
CN108139950A (zh) | 2018-06-08 |
US10389795B2 (en) | 2019-08-20 |
US20170104814A1 (en) | 2017-04-13 |
EP3360042A1 (en) | 2018-08-15 |
WO2017062262A1 (en) | 2017-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11206304B2 (en) | Access services in hybrid cloud computing systems | |
US10212029B2 (en) | Service provisioning in cloud computing systems | |
US10277582B2 (en) | Application service architecture | |
US20180063226A1 (en) | Distributed steam processing | |
US10225253B2 (en) | Usage tracking in hybrid cloud computing systems | |
US9298928B2 (en) | Mobile device application interaction reputation risk assessment | |
US11579743B2 (en) | Augmenting web applications with optimized workflows supporting user interaction | |
US9342333B2 (en) | Backend custom code extensibility | |
US20210058455A1 (en) | Deployment of Microservices Based on Back-End Resource Affinity | |
EP3374857A1 (en) | Dashboard as remote computing services | |
US10908948B2 (en) | Multiple application instances in operating systems that utilize a single process for application execution | |
US10936747B2 (en) | Privacy annotation from differential analysis of snapshots | |
CN112199567A (zh) | 一种分布式数据采集方法、系统、服务器和存储介质 | |
US20190332375A1 (en) | Source control of custom code in a backend-as-a-service module | |
US20150248276A1 (en) | Api publication on a gateway using a developer portal | |
CN107291481A (zh) | 一种组件更新方法、装置和系统 | |
US20210042148A1 (en) | Dynamic insertion of variablized secrets in a pipeline integration system | |
CN108139950B (zh) | 分布式扩展执行的方法及计算系统 | |
WO2014159883A1 (en) | Modification of compiled applications and application management using retrievable policies | |
US10523591B2 (en) | Discovering resource availability across regions | |
US11941543B2 (en) | Inferencing endpoint discovery in computing systems | |
US11016874B2 (en) | Updating taint tags based on runtime behavior profiles | |
Garg et al. | Xml based lucid web operating system | |
CN112395534A (zh) | 数据采集方法、对象加载方法、系统及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |