CN112703484A - 连接应用体验 - Google Patents
连接应用体验 Download PDFInfo
- Publication number
- CN112703484A CN112703484A CN201980060519.XA CN201980060519A CN112703484A CN 112703484 A CN112703484 A CN 112703484A CN 201980060519 A CN201980060519 A CN 201980060519A CN 112703484 A CN112703484 A CN 112703484A
- Authority
- CN
- China
- Prior art keywords
- application
- services
- framework
- components
- resources
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 42
- 230000015654 memory Effects 0.000 claims abstract description 38
- 238000004891 communication Methods 0.000 claims abstract description 24
- 230000007704 transition Effects 0.000 claims abstract description 23
- 230000001960 triggered effect Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 description 15
- 238000009877 rendering Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 239000000243 solution Substances 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000036316 preload Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000008921 facial expression Effects 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 210000001525 retina Anatomy 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000008093 supporting effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/986—Document structures and storage, e.g. HTML extensions
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
Abstract
公开了一种用于在应用之间提供无缝转换的方法和系统。该系统包括框架,该框架包括:用于管理系统的操作的应用管理器,与应用管理器进行通信以检索与应用相关联的组件的组件检索器,与应用管理器进行通信以用于检索与应用相关联的数据的数据检索器,用于存储检索到的组件或数据的存储器,以及包括与应用关联的一个或多个服务的服务组。
Description
技术领域
本公开总体上涉及优化应用,并且更具体地,涉及通过经由能够跨应用边界的无缝转换的通用应用框架连接应用来优化应用。
背景技术
近年来,单页应用(SPA)的使用有所增加,因为这些Web应用提供了更令人愉悦的用户体验。当前的SPA单独管理SPA所使用的所有相关资源和数据。这意味着每个SPA都独立于其他SPA来管理其应用资源和状态。结果,它们在应用范围内提供了流畅的用户体验。但是,从一个SPA转换到另一个SPA需要全页加载。因此,在任何像素可以在页面上呈现之前,终端用户在SPA之间转换时的感知等待时间(EUPL)受时间限制的影响,例如与服务器连接、验证、调度Web服务器线程、在页面后执行代码、下载相关资源、引导基本服务和/或获取所需的数据所需的时间量。这不仅增加了加载新SPA所需的时间,而且导致资源使用效率低下。
一种优化EUPL的方式是定义具有粗粒型功能性粒度的应用,在该应用中,许多不连贯的场景都放置在同一SPA中。尽管此方法确实可以在服务器往返时间和资源利用率方面考虑到一些成本降低,但确实有其自身的局限性。这些局限性包括由于应用的粗粒型粒度而导致的迎合特定场景的偏向优化、全包单体应用的维护成本增加、不连贯的场景之间的过拟合约束、内存占用量等。这些因素限制了开发人员有效、高效地扩展和维护应用的能力。
发明内容
在一个总体方面,本申请描述了一种用于从第一应用转换到第二应用的系统。该系统可以包括一个或多个处理器以及存储指令的一个或多个机器可读介质,该指令在由一个或多个处理器执行时使一个或多个处理器建立框架。在一个实现方式中,该框架包括:用于管理系统的一个或多个操作的应用管理器;与该应用管理器通信以检索一个或多个组件的组件检索器,一个或多个组件中的每个与第一应用或第二应用相关联;与应用管理器通信以检索与第一应用或第二应用相关联的数据的数据检索器;用于存储所检索到的一个或多个组件或所检索到的数据中的至少一个的存储器;以及包括一个或多个服务的服务组,一个或多个服务中的每一个与第一应用或第二应用相关联。服务组中的一个或多个服务可以包括可以在第一应用与第二应用之间共享的一个或多个共享服务。
在另一总体方面中,本申请描述了一种用于从第一应用转换到第二应用的方法。该方法可以包括建立用于从第一应用转换到第二应用的框架。在一个实现方式中,该框架包括:用于管理系统的一个或多个操作的应用管理器;与该应用管理器通信以检索一个或多个组件的组件检索器,一个或多个组件中的每个与第一应用或第二应用相关联;与应用管理器通信以检索与第一应用或第二应用相关联的数据的数据检索器;用于存储所检索到的一个或多个组件或所检索到的数据中的至少一个的存储器;以及包括一个或多个服务的服务组,一个或多个服务中的每一个与第一应用或第二应用相关联。服务组中的一个或多个服务可以包括可以在第一应用与第二应用之间共享的一个或多个共享服务。
在又一个总体方面,本申请描述了一种非暂时性计算机可读介质,在其上存储了指令,这些指令在被执行时使可编程设备实例化应用页面。该应用页面可以包括基础页面应用和基础应用,其中基础页面应用定义了当处理应用页面上的链接时应用页面经历的一组生命周期阶段。
提供本发明内容以简化形式介绍一些概念,这些概念将在下面的详细描述中进一步描述。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。此外,要求保护的主题不限于解决在本公开的任何部分中指出的任何或所有缺点的实现方式。
附图说明
附图仅通过示例而非限制的方式描绘了根据本教导的一种或多种实现方式。在附图中,相似的附图标记指代相同或相似的元件。此外,应当理解,附图不必按比例绘制。
图1示出了框图,该框图示出了利用连接应用框架的系统的概况,该框架可用于将各个应用连接到一个虚拟复合应用中。
图2是用于在利用连接应用框架的系统中从源应用转换到目标应用的流程图。
图3是描绘当系统从源应用转换到目标应用时源和目标应用的各个处理阶段的图。
图4是描绘用于由框架提供的、用于在连接的应用之间进行无缝转换的路由服务的操作的示例性方法的流程图。
图5是示出示例软件体系结构的框图,该示例软件体系结构的各个部分可以与本文所述的各种硬件体系结构结合使用。
图6是示出示例性机器的组件的框图,该示例性机器的组件被配置为从机器可读介质读取指令并执行本文所述的任何特征。
具体实施方式
在下面的详细描述中,通过示例的方式阐述了许多具体细节,以提供对相关教导的透彻理解。对于普通技术人员而言,在阅读本说明书后将显而易见的是,可以在没有这些细节的情况下实践各个方面。在其他情况下,为了避免不必要地混淆本教导的各个方面,已经在没有细节的情况下在相对较高的层面描述了公知的方法、过程、组件和/或电路。
该描述涉及用于将各个应用连接到虚拟复合应用中的技术,该虚拟复合应用在用户在不同应用之间转换时提供无缝的用户体验。为此,该解决方案利用一个框架,该框架针对每个应用实施一组定义明确的生命周期阶段,从而确保不同应用之间的一致性,并允许该框架管理和优化不同的生命周期阶段,其中某些生命周期阶段不可知底层应用。除了能够在不同应用之间重用公共资源,例如数据和服务,该框架还规定了应用生命周期的交织,以确保在应用之间进行受控的转换并更高效地管理资源。结果,该解决方案确保了在不同应用之间进行切换类似于在SPA中发生的情况,被视为就地导航,而不需要全页加载。这将连接不同的应用,并提供应用边界之间的会话内转换,这比全页加载更为理想,从而创建了由多个应用组成的虚拟应用的外观。
如本领域技术人员在阅读了本公开内容后将理解的,由此类实现方式提供的益处和优点可包括但不限于解决在加载应用页面时用户感觉到的等待时间以及这些应用页面的资源使用效率低下的技术问题的解决方案。此处提供的技术解决方案和实现方式可优化跨应用的资源、服务和状态的利用率,并实现跨应用边界的无缝转换体验。该解决方案还减少了服务器往返所需的时间量,而不会抑制长期的应用增长和维护。这些解决方案提供的益处使应用开发人员能够专注于特定于核心应用的场景,而不必担心常见的基于页面的应用需求。
图1示出了框图,该框图示出了利用连接应用框架105的系统100的概观,该连接应用框架105可以用于将各个应用连接到虚拟复合应用中。连接应用框架105可以包括:用于管理应用页面的各种功能的应用管理器120,用于导航链接并获取应用页面的数据的导航器125,用于加载应用清单和一个或多个必要组件的加载器130,以及服务组110,该服务组110可用作利用框架105的每个应用页面可用和/或需要的各种服务的服务定位器。
应用管理器120可以与导航器130和加载器125通信,用于管理路由和导航功能。例如,应用管理器120可以依赖加载器125来获取应用清单信息,并且可以指导导航器130加载应用数据。应用管理器120还可以调用应用生命周期阶段来启动应用。在一种实现方式中,在需要时,应用管理器120还可以与服务组110通信以定位服务。尽管未示出,但是应用管理器120也可以连接到存储器190,并且与源应用(源app)165和目标应用(目标app 185)两者进行定向通信。加载器125与存储器190通信以存储和访问所需的信息,并且它也连接到服务组110以将那些服务的位置提供给服务组110。
除了上面讨论的元件之外,系统100还可以包括导航140作为导航器130的一部分,以及清单145和组件存储库150作为加载器125的一部分。导航140可以用作存储以下各项的数据存储库:与源应用、目标应用相关联的数据和/或为极有可能的点击型应用预取的数据,如下所述。在一种实现方式中,导航140可以用作由浏览器会话存储备份的存储器高速缓存。这样,导航140可以是存储器190的一部分。此外,导航140可能不知道数据源(即,数据是否被预取,或者是否属于源应用或目标应用)。只要适用,它就可以简单地获取数据,存储一段时间并从缓存中提供数据。
清单145可以用作包含有关组件(例如,当前应用页面)的元数据的配置文件。除其他事项外,此类信息可能包括组件的类型(例如,应用、库)、组件的标识符(例如,应用的名称)、其版本、依存关系、运行该应用需要下载的必要组件的组成。尽管在此仅显示为一个块,但加载器可以包括多个清单,其中两个清单包括在转换时间期间源应用和目标应用的清单。例如,当框架从源App 165转换到目标App 185时,加载器可以包括源App 165的清单和目标App 185的清单。这允许系统100识别出现在不同的组件清单中的共同组件,从而避免了在切换应用边界时重新加载那些组件的需求,从而优化了加载时间。虽然,在图1中示出为加载器145的一部分,清单可以存储在存储器190中。
组件存储库150可以维护在给定会话中下载的可用组件的库。组件可以包括例如运行应用所需的Java脚本组件。在应用可以运行之前,应先加载应用的初始加载所需的所有组件。在一种实现方式中,组件存储库150还存储组件本身。替代地,可以将组件缓存在存储器190中。另一方面,加载器135可以管理组件下载及其依存关系。通过存储每个页面的组件列表,组件存储库150可帮助确保在源应用和目标应用之间重用共同组件。这允许系统100在同一会话中启动新应用时利用客户端主机层来优化共同组件的加载,从而随着系统在应用边界之间转换而改善了连续的应用加载时间。
服务组110中包括的每个服务可以负责为每个应用页面执行一个或多个功能。服务可以是遵守明确定义的规则的自包含实体。服务组110可以充当向其暴露各种服务的容器。以这种方式,服务组110可以用作服务定位器。在一种实现方式中,当框架实例化时创建服务组110。
每个服务可以由特定服务组件组成,该特定服务组件可以是供应某种功能的特定类型服务的实例。在一个实现方式中,虽然框架105管理服务,但是每个服务负责其自己的组件。例如,当加载服务时,服务可以使用特定的组件配置来初始化其组件。例如,扩展基础页面应用的应用可以提供可用于实例化服务的全局(共享)服务的服务配置。每个服务可以包装服务组件,并将其公开在服务组110中,以便应用可以在需要时获取服务组件。在一种实现方式中,服务彼此独立并且因此是可组合的。框架105可以提供一些默认组件配置,同时在需要时允许消费应用扩展或覆盖默认配置。
在一个实现方式中,框架105负责组成和管理服务组110具有其位置信息的服务。管理服务可以包括,例如,将服务作为应用页面的加载过程的一部分进行加载,并在适当时将其作为卸载过程的一部分进行处置。在一种实现方式中,基础页面应用负责根据应用提供的服务配置来创建服务,并负责暴露服务组中的服务以便易于访问。
由基础页面应用创建的服务可以包括核心服务、共享服务和本地服务。核心服务可以包括一组服务和服务组件,这些服务和服务组件是大多数连接应用所共有的和/或是利用系统100的所有应用所必需或使用的。这些服务作为框架105的一部分来提供,但特定于每个应用,因此在转换到新应用时可能需要再次加载。这些核心服务可以包括例如,可以管理应用路线更改的路由服务,以及可以操纵内部应用状态的存储管理服务。基础页面应用可以依赖于由应用提供的相关服务配置,以实例化这些服务,并将它们作为本地服务暴露于服务组110中。在框架级别管理核心服务可以使优化自动可用于所有应用,并使框架可以提高所有连接应用的性能。
共享服务可以包括并非每个应用都需要的服务。然而,一旦暴露,这些服务就可以在应用之间进行重用。共享服务的示例包括持久性数据服务和可访问性管理服务,持久性数据服务可以暴露Web套接字以服务于应用数据请求,并且可以在应用之间重用以确保应用之间的持久性连接;可访问性管理服务可以用于确保应用是可访问的。因为这些服务是在应用之间共享的,所以它们的默认实现方式可以由框架提供,并在服务组110的全局服务范围内暴露。通过利用共享服务元素115,框架确保了共享服务跨应用是可获得的以供立即使用。
本地服务可以包括特定应用所独有的服务。本地服务的示例包括可以使能够获取应用特定数据的数据提供者服务以及可以协助内部应用导航和数据请求的导航管理服务。
在一种实现方式中,对服务组110暴露了两类服务。一类是本地服务170,其中包括上面讨论的本地服务,另一类是全局服务115(即共享服务)。本地服务可能仅暴露于应用,而全局服务可能跨应用被暴露。全局服务可以提供可以在所有应用之间共享并且因此不绑定到任何特定应用的一组可组合和可配置的全局服务。在一种实现方式中,所有共享服务都是全局服务范围115的一部分,从而确保它们在应用范围内的可用性。这样确保与所有应用的交互模式一致。跨应用共享这些服务还考虑了资源的更好利用。服务组110可以使用存储在组件存储库150中的服务密钥来定位其具有位置信息的所有服务。
将应用服务界定为全局服务和本地服务可提供服务级别的隔离。这是因为全局服务是在全局范围内提供的,因此在会话中转换到新应用时不会加以处置。另一方面,在本地范围内托管的应用特定服务在应用生命周期内可用,并在转换到新应用时被处置掉。不同级别的服务范围提供了对计算和内存资源的高效管理。此外,重用全局服务允许系统减少在启动新应用时的总体计算时间和内存占用量,因为可以将全局服务立即投入使用。这样可以改善应用启动时间,从而改善整体EUPL。
核心服务的路由服务可以管理应用页面的路由,并且可以包括路由器组件。在一种实现方式中,框架105将路由服务作为应用页面加载的一部分来加载。路由服务可以使用由应用页面提供的路由配置来初始化路由器组件。在初始化路由器组件之后,框架105可以随后将路由器组件绑定到应用页面文档对象模型(DOM),作为呈现应用的一部分。
路由服务可以提供至少两个关键功能。这些包括管理内部应用导航和调用导航器130以操纵就地应用导航。内部应用导航可以遵循应用特定配置,以使能应用页面内的导航,而就地应用导航可以提供不同的连接应用之间的导航。
在一种实现方式中,框架105通过以下功能提供就地应用导航:受管路由注入、发起就地导航、确定系统托管的应用、应用交织、以及调用相关的生命周期阶段。
受管路由注入可以包括路由服务将受管路由注入到每个应用的内部路由配置中。尽管每个应用都可以管理应用路由,但应用不支持的外部路由可能会自动回退到路由器组件。
发起就地导航可包括路由服务与导航器125交互以在适用时发起就地应用导航。例如,当用户点击应用链接时,可能会发生这种情况。
确定应用是否为连接应用可以涉及导航器125请求目标应用的清单,以确定底层路由路径是否对应于连接(系统托管的)应用(即兼容的连接应用),如下面进一步讨论的。如果相关清单可用,则导航器125可以发起就地应用转换。如下面进一步讨论的,就地导航可以由应用管理器120通过交织源应用和目标应用的相关生命周期阶段的过程来管理。
每个应用可以提供框架105用来为该应用提供服务所依赖的必要服务配置。这些必要的服务配置可以包括实例化和启动路由服务所需的路由配置,实例化和启动存储管理服务所需的存储配置,以及实例化和启动页面呈现服务所需的呈现配置。提供这些服务配置使应用开发人员可以灵活地专注于应用特定服务,而不必担心核心服务,同时使系统100能够优化使所有应用受益的核心服务。
在一个实现方式中,一旦在客户端设备上下载并实例化了第一连接应用,框架105的所有部分都位于客户端设备上的主机应用层中。为了下载第一应用,客户端设备可能需要通过网络195从诸如图1的服务器198之类的服务器请求组件和数据。但是,一旦在主机应用层中下载了框架,则随后的其他连接应用的加载可能不需要完整的应用加载。此外,一旦加载了主机层(即,应用内核),就可以在连接应用之间重用它。此外,通过在主机层中存储组件和清单存储库,框架可以跨应用重用组件和数据资源。这是因为组件充当库。这样,当应用使用共同库时,可以重用这些库。由于不需要多次加载库,因此可以提高性能。以这种方式,利用底层主机层使得更好地控制资源和状态管理,并为开发人员提供了机会来改善共享框架的基于页面的应用的整体性能。
除了框架105之外,主机应用层还可以托管源应用165,该源应用165扩展了其基础页面应用160,继而扩展了基础应用155。在一种实现方式中,基础应用(例如基础应用)155包括应用运行所需的一些基本组件。基础页面应用将这些组件扩展到完整列表,其中可以包括共享服务和在应用之间提供无缝转换所需的核心服务。但是,在一个实现方式中,基础应用和基础页面应用组合在一起形成单个单元,其包含应用正常运行所需的所有组件。基础应用可以位于包括框架105的共同层上,并且可以与导航器125一起工作,继而与应用管理器120一起工作以在应用之间提供无缝转换。
如图1所示,在转换时段期间,源App 165和目标App 185可以并排存在。这样,目标应用185具有扩展目标基础应用184的基础页面应用182。
基础应用155和184需要它们各自的使用中的应用(即源应用165和目标应用185)来提供一组组件配置,然后使用这些组件配置来引导应用所需的必要页面组件。基础应用155和184提供这些组件的默认实现方式,同时允许在相关时使用中的应用覆盖和/或扩展这些组件。
基础应用155和184还管理服务边界内的页面组件。这确保服务隔离,并实施关注点的明确分离。服务通过系统100的服务范围被暴露于应用。框架在使用服务时实施一致的交互模式,从而使得由共同配置支持的服务能够跨应用边界被重用。这允许系统100在应用之间进行转换时优化服务实例化,并在实施清晰的设计模式时改善启动应用的总体等待时间。
在一个实现方式中,框架105指导所有连接应用遵守一组定义明确的处理阶段,在此将其称为应用的生命周期。生命周期的实施确保了不同应用之间的一致性,并允许应用管理器120在跨越应用边界时在两个应用之间交错生命周期阶段。这些生命周期阶段可以包括页面加载前阶段、页面加载后阶段、页面呈现前阶段、页面呈现后阶段和页面卸载前阶段。
页面加载前阶段是当应用启动应用加载阶段但在框架实际开始加载底层应用资源之前的处理阶段。在此阶段,应用可以执行特定的操作,例如预加载组件,等待应用上下文可用,等等。
在加载了应用的资源和服务之后,但在应用发起呈现之前,触发页面加载后阶段。在此阶段期间,框架105向应用通知所有核心服务均可用,并且它可以承担特定的操作,例如日志遥测、分段体验等等。
当应用已经被指示开始呈现应用时,但是在呈现过程开始之前,触发页面呈现前阶段。在此阶段,应用可以承担特定的操作,包括将浏览器特定的行为分阶段。
页面呈现后阶段在应用触发了呈现操作以呈现底层应用之后被触发。在此阶段,应用可以承担特定的操作,例如日志参与等。
页面卸载前阶段在应用被卸载及其资源被处置之前被触发。在此阶段,应用可以承担诸如删除应用侦听器之类的操作。
应该注意的是,尽管这些生命周期阶段是由框架105设置的,并强加于所有已连接应用,但是在一种实现方式中,应用开发人员可以在他们认为适当的时候覆写应用的生命周期的一些特定阶段。
图2是描述用于在利用连接应用框架的系统中从源应用转换到目标应用的示例性方法200的流程图。在205,方法200通过接收应当加载新应用的指示而开始。当链接是应用本身未操纵的链接时,在用户点击客户端设备的显示设备上显示的源应用上的链接后,可能会发生这种情况。在一个实现方式中,在从用户接收到对应用的链接的点击的指示之后,当前(源)应用的路由器在210向框架的导航器发送请求以导航该链接。在215,例如,通过验证导航器是否具有与链接相关联的清单,导航器可以确定目标应用(即,与链接相关联的应用)是否与框架兼容。
如果在215处确定目标应用与连接应用框架不兼容,则导航器然后在220处通知源应用该链接不能由该框架供应。然后,在275,源应用将以全页加载的形式加载该应用。对于框架不支持的应用和/或不同来源上的应用,可能会发生这种情况。但是,如果在215确定目标应用与连接应用框架兼容并且在同一来源上,则导航器在225获取目标应用的数据,该数据可以包括其清单。导航器可以通过一个或多个网络从服务器检索数据资源。
在此阶段,在235向应用管理器发送请求以启动目标应用之前,在230,导航器向加载器登记目标应用的清单。在接收到请求时,应用管理器继而在240向加载器发送指令以检索目标应用的组件。
然后,加载器可以通过首先加载包含组件依赖关系的清单,然后检索清单中不可获得的组件及其关联的依赖关系,来检索差异组件资源。在一种实现方式中,所检索的组件和数据被缓存在一个或多个本地存储设备中。与核心服务相关的组件可能已经缓存在与框架关联的存储设备中,因此可能不需要检索。可以从服务器获得组件存储库(即本地服务)中不可获得的组件。跨应用重用组件使得优化组件下载,从而导致加快应用加载时间。
在一种实现方式中,某些所需资源可能已经由加载器和导航器预取。这可能发生在以下情况下:当前正在运行的应用识别极有可能的点击型目标应用(源应用具有到其的链接),并指示导航器预取这些资源。在这种情况下,导航器可能会获取针对潜在目标应用的底层数据,并将数据保留在清单中。但是,在这种情况下,导航器在检索到关联数据时不会向应用管理器发送用于启动目标应用的请求。在应用预取将来很有可能被加载的一个或多个组件的情况下,也可能会发生预取功能。这可以通过向加载器发送用于预加载那些组件的请求来完成。然后,加载器可以首先从清单存储库中获取与组件关联的清单,然后将组件清单中提到的组件及其依赖关系加载到组件存储库中。然后,当点击链接并发起就地导航时,将从本地高速缓存中供应预取的数据和组件资源。通过为极有可能的点击型目标应用预取资源,该框架显著地减少了转换到新页面所需的时间,从而减少了EUPL,并提供了应用页面之间的更无缝的转换。
一旦检索到所需的组件和数据,则应用管理器可以在250实例化目标应用。这可以通过创建新的chrome(即,一个或多个DOM占位符)并发起就地导航来完成。
在这种状态下,应用管理器具有针对源应用和目标应用的句柄。这在图1中示出,其中并排呈现了源App 165和目标App 185二者。通过允许应用管理器具有针对两个应用的句柄,该框架使应用管理器可以交织源和目标应用的特定生命周期阶段,以允许就地应用转换。这在图3中示出,其中y轴显示会话时间,x轴显示转换时间。可以看出,在转换时间段期间,源应用已卸载,但直到目标应用加载后才进行处置。在此阶段期间,源应用可能仍在显示设备上可见。这允许源应用向用户提供转换体验。一旦处置了源应用,则在呈现目标应用之前,将隐藏并删除显示器上的源应用的实例。
返回参考图2,一旦应用管理器实例化目标应用并开始交织过程,它就开始在255处卸载源应用。在一种实现方式中,作为源应用卸载过程的一部分,在源应用上调用页面加载前、卸载时生命周期。然后,应用管理器在260处发起加载目标应用。在一种实现方式中,作为目标应用加载过程的一部分,在目标应用上调用加载前、卸载和加载后的生命周期。
在加载目标应用之后,在265,应用管理器发起对源应用的处置。在此阶段期间,将移除特定于源应用的所有服务和数据,并隐藏和删除源应用的显示时刻。在一种实现方式中,作为源应用的处置过程的一部分,在源应用上调用页面处置前以及处置加载时的生命周期。一旦移除了源应用,则将应用目标应用的主题,并在270呈现该目标应用,此时,完成向新应用的转换。在一种实现方式中,作为目标应用的呈现过程的一部分,在目标应用上调用呈现前、呈现时和呈现后的生命周期。因为该框架能够重用共享服务和共享数据,容易地访问核心服务并为很有可能的目标应用预取资源,所以通过使用较少的资源,可以更快且更高效地进行转换到新页面的过程。
图4是描述用于由框架提供的用于在连接应用之间进行无缝转换的核心路由服务的操作的示例性方法400的流程图。在405,方法400开始于接收对源应用内的链接的点击的指示。点击会触发核心路由服务通过先在410处拦截该链接而开始操作。此拦截是为了覆写浏览器的默认链接点击行为(即,导航到另一个页面),而不是将新的应用页面统一资源定位符(URL)推送到浏览器历史记录状态来进行的,从而导致在415中无需强制导航即可更新URL。
在更新了浏览器URL之后,在420,路由服务重写与该链接关联的路由。这是因为应用通常将多个复杂的路由映射到应用内的同一逻辑路径。重写功能允许路由服务修改点击到单个路径的所有链接,以供应用执行。在一个实现方式中,框架首先确定应用中的路由是否足够简单到在加载页面时能跟随,如果是,则可以不执行重写步骤。
一旦执行了重写链接,路由服务就在425向导航器发送请求,以确定链接所指向的应用是否是连接应用页面,如果是,则发起从源应用转换到目标应用的过程。这可以包括执行以上关于图2讨论的步骤。
图5是示出示例软件体系结构502的框图500,示例软件体系结构502的各个部分可以与本文所述的各种硬件体系结构结合使用,该硬件体系结构可以实现任何上述特征。图5是软件体系结构的非限制性示例,并且将意识到,可以实现许多其他体系结构以促进本文描述的功能。软件体系结构502可以在诸如客户端设备、本地应用提供商、Web服务器、服务器群集、外部服务和其他服务器的硬件上执行。代表性的硬件层504包括处理单元506和相关联的可执行指令508。可执行指令508代表软件体系结构502的可执行指令,包括本文描述的方法、模块等的实现方式。
硬件层504还包括存储器/存储装置510,其还包括可执行指令508和附带的数据。硬件层504还可以包括其他硬件模块512。由处理单元508保存的指令508可以是由存储器/存储装置510保存的指令508的一部分。
示例软件体系结构502可以被概念化为层,每个层提供多种功能。例如,软件体系结构502可以包括诸如操作系统(OS)514、库516、框架518、应用520和展示层524的层和组件。在操作上,这些层内的应用520和/或其他组件可以调用对其他层的API调用524并接收相应的结果526。所示的层本质上是代表性的,并且其他软件体系结构可以包括额外的或不同的层。例如,某些移动或专用操作系统可以不提供框架/中间件518。
OS 514可以管理硬件资源并提供公共服务。OS 514可以包括例如内核528、服务530和驱动器532。内核528可以充当硬件层504与其他软件层之间的抽象层。例如,内核528可以负责存储器管理、处理器管理(例如,调度)、组件管理、联网、安全设置等等。服务530可以为其他软件层提供其他公共服务。驱动器532可以负责控制底层硬件层504或与底层硬件层504对接。例如,取决于硬件和/或软件配置,驱动器532可以包括显示驱动器、照相机驱动器、存储器/存储装置驱动器、外围设备驱动器(例如,经由通用串行总线(USB))、网络和/或无线通信驱动器、音频驱动器等。
库516可以提供可以由应用520和/或其他组件和/或层使用的共同基础结构。库516通常提供可供其他软件模块用来执行任务的功能,而不是直接与OS 514交互。库516可以包括系统库534(例如,C标准库),其可以提供诸如存储器分配、字符串操纵、文件操作的功能。另外,库516可以包括API库536,诸如媒体库(例如,支持图像、声音和/或视频数据格式的呈现和操纵)、图形库(例如,用于在显示器上呈现2D和3D图形的OpenGL库)、数据库库(例如SQLite或其他关系数据库功能)和Web库(例如,可以提供Web浏览功能的WebKit)。库516还可以包括各种各样的其他库538,以为应用520和其他软件模块提供许多功能。
框架518(有时也称为中间件)提供可以由应用520和/或其他软件模块使用的高层共同基础结构。例如,框架518可以提供各种图形用户界面(GUI)功能、高级资源管理或高级位置服务。框架518可以为应用520和/或其他软件模块提供广泛的其他API。
应用520包括内置应用520和/或第三方应用522。内置应用520的示例可以包括但不限于联系人应用、浏览器应用、位置应用、媒体应用、消息传递应用和/或游戏应用。第三方应用522可以包括由除特定系统的卖方以外的实体开发的任何应用。应用520可以使用经由OS 514、库516、框架518和展示层524可获得的功能来创建用户界面以与用户交互。
一些软件体系结构使用虚拟机,如虚拟机528所示。虚拟机528提供了一个执行环境,其中应用/模块可以像在硬件机器(例如图6的机器600)上执行一样执行。虚拟机528可以由主机OS(例如,OS 514)或系统管理程序托管,并且可以具有管理虚拟机528的操作以及与主机操作系统的互操作的虚拟机监视器526。可以与虚拟机外部的软件体系结构502不同的软件体系结构在虚拟机528内执行,例如OS 550、库552、框架554、应用556和/或展示层558。
图6是示出了示例机器600的组件的框图,该示例机器600被配置为从机器可读介质(例如,机器可读存储介质)读取指令并执行本文所述的任何特征。示例性机器600是计算机系统的形式,在其中可以执行用于使机器600执行本文所述的任何特征的指令616(例如,以软件组件的形式)。这样,指令616可以用于实现本文描述的方法或组件。指令616使未编程和/或未配置的机器600作为被配置为执行所描述的特征的特定机器来操作。机器600可以被配置为作为独立设备操作,或者可以被耦合(例如,联网)到其他机器。在网络部署中,机器600可以在服务器-客户端网络环境中作为服务器机器或客户端机器运行,或者在对等或分布式网络环境中作为节点运行。机器600可以体现为例如服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、游戏和/或娱乐系统、智能电话、移动设备、可穿戴设备(例如,智能手表)和物联网(IoT)设备。此外,尽管仅示出了单个机器600,但是术语“机器”包括单独地或共同地执行指令616的机器的集合。
机器600可以包括处理器610、存储器630和I/O组件650,它们可以经由例如总线602通信地耦合。总线602可以包括经由各种总线技术和协议耦合机器600的各个元件的多个总线。在示例中,处理器610(包括例如中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、ASIC或它们的适当组合)可以包括可以执行指令616并处理数据的一个或多个处理器612a至612n。在一些示例中,一个或多个处理器610可以执行由一个或多个其他处理器610提供或标识的指令。术语“处理器”包括多核处理器,该多核处理器包括可以同时执行指令的多个核。虽然图6示出了多个处理器,但机器600可以包括具有单个核的单处理器,具有多个核的单处理器(例如,多核处理器),每个具有单个核的多个处理器,每个具有多个核的多个处理器,或其任何组合。在一些示例中,机器600可以包括分布在多个机器之间的多个处理器。
存储器/存储装置630可以包括主存储器632、静态存储器634或其他存储器,以及存储单元636,对于处理器602诸如经由总线602均是可访问的。存储单元636和存储器632、634存储体现本文所述功能中的任何一个或多个功能的指令616。存储器/存储装置630还可以存储用于处理器610的临时、中间和/或长期数据。在执行期间,指令616也可以完全或部分地驻留在存储器632、634内,在存储单元636内,处理器610中的至少一个内(例如,在命令缓冲器或高速缓冲存储器内),I/O组件650中的至少一个的存储器内,或其任何合适的组合。因此,存储器632、634、存储单元636、处理器610中的存储器和I/O组件650中的存储器是机器可读介质的示例。
如本文所使用的,“机器可读介质”是指能够临时或永久地存储使机器600以特定方式操作的指令和数据的设备。如本文所用的,术语“机器可读介质”本身不包括瞬时电信号或电磁信号(例如,在通过介质传播的载波上);因此,术语“机器可读介质”可以被认为是有形的和非暂时性的。非暂时性有形机器可读介质的非限制性示例可以包括但不限于非易失性存储器(例如闪存或只读存储器(ROM))、易失性存储器(例如静态随机存取存储器(RAM)或动态RAM)、缓冲存储器、高速缓冲存储器、光学存储介质、磁性存储介质和设备、网络可访问或云存储、其他类型的存储和/或其任何合适的组合。术语“机器可读介质”适用于单个介质或多个介质的组合,用于存储指令(例如,指令616)以供机器600执行,以使指令在由机器600的一个或多个处理器610执行时使机器600执行本文所述的一个或多个特征。因此,“机器可读介质”可以指单个存储设备,以及包括多个存储装置或设备的“基于云的”存储系统或存储网络。
I/O组件650可以包括广泛的各种硬件组件,其适于接收输入,提供输出,产生输出,发送信息,交换信息,捕获测量结果,等等。包括在特定机器中的特定I/O组件650将取决于机器的类型和/或功能。例如,诸如移动电话的移动设备可以包括触摸输入设备,而无头服务器或IoT设备可以不包括这种触摸输入设备。图6中示出的I/O组件的特定示例绝不是限制性的,并且机器600中可以包括其他类型的组件。I/O组件650的分组仅仅是为了简化该讨论,并且分组决不是限制性的。在各种示例中,I/O组件650可以包括用户输出组件652和用户输入组件654。用户输出组件652可以包括例如用于显示信息的显示组件(例如,液晶显示器(LCD)或投影仪),声学组件(例如扬声器),触组件(例如振动马达或力反馈设备)和/或其他信号发生器。用户输入组件654可以包括例如字母数字输入组件(例如,键盘或触摸屏),指示组件(例如,鼠标设备、触摸板或另一种指示工具)和/或触觉输入组件(例如,提供触摸或触摸手势的位置和/或力的物理按钮或触摸屏),它们被配置为接收各种用户输入,例如用户命令和/或选择。
在一些示例中,I/O组件650可以包括广泛的各种各样的其他环境传感器组件中的生物特征组件656和/或定位组件662。生物特征组件656可以包括例如用于检测身体表情(例如面部表情、声音表情、手或身体姿势或眼睛跟踪)、测量生物信号(例如心率或脑电波)以及识别人(例如,通过基于语音、基于视网膜和/或基于面部的标识)的组件。定位组件662可以包括例如位置传感器(例如,全球定位系统(GPS)接收器)、高度传感器(例如,可以从中得出高度的气压传感器)和/或方位传感器(例如磁力计)。
I/O组件650可包括通信组件664,其实现可操作以经由相应的通信耦合器672和682将机器600耦合到网络670和/或设备680的广泛的多种技术。通信组件664可以包括一个或多个网络接口组件或其他合适的设备以与网络670对接。通信组件664可以包括例如适于提供有线通信、无线通信、蜂窝通信、近场通信(NFC)、蓝牙通信、Wi-Fi和/或通过其他方式进行的通信的组件。设备680可以包括其他机器或各种外围设备(例如,经由USB耦合)。
在一些示例中,通信组件664可以检测标识符或包括适于检测标识符的组件。例如,通信组件664可以包括射频识别(RFID)标签读取器、NFC检测器、光学传感器(例如,一维或多维条形码或其他光学代码)和/或声学检测器(例如,识别标记的音频信号的麦克风)。在一些示例中,可以基于来自通信组件662的信息来确定位置信息,例如但不限于经由互联网协议(IP)地址的地理位置,经由Wi-Fi、蜂窝、NFC、蓝牙或其他无线站识别和/或信号三角测量的位置。
注意,尽管相对于在web浏览器应用中执行的单页面应用讨论了图1-4中的示例,所描述的技术也可以适用于向在web浏览器应用、本机应用、其他具有网络功能的应用和服务器系统中执行的多页面web应用提供对计算机实现的服务的访问。
尽管已经描述了各种实施例,但是该描述旨在是示例性的,而不是限制性的,并且应当理解,在实施例的范围内,可能有更多的实施例和实现方式。尽管在附图中示出了特征的许多可能组合并且在本详细描述中进行了讨论,但是所公开特征的许多其他组合也是可能的。除非特别限制,否则任何实施例的任何特征可以与任何其他实施例中的任何其他特征或元素组合使用或替代任何其他实施例中的任何其他特征或元素。因此,将理解的是,本公开中示出和/或讨论的任何特征可以以任何合适的组合一起实现。因此,除了根据所附权利要求及其等同物之外,不对实施例进行限制。此外,可以在所附权利要求的范围内进行各种修改和改变。
通常,可以使用软件、固件、硬件(例如,固定逻辑、有限状态机和/或其他电路)或这些实现方式的组合来实现本文描述的功能(例如,图1-4中示出的特征)。在软件实现的情况下,程序代码在处理器(例如,一个或多个CPU)上执行时执行指定的任务。程序代码可以存储在一个或多个机器可读存储器设备中。本文描述的技术的特征是与系统无关的,这意味着可以在具有各种处理器的各种计算系统上实现这些技术。例如,实现方式可以包括使硬件执行操作的实体(例如,软件),例如,处理器功能块,等等。例如,硬件设备可以包括机器可读介质,该机器可读介质可以被配置为维护使硬件设备(包括在其上执行的操作系统和相关联的硬件)执行操作的指令。因此,指令可用于配置操作系统和相关联的硬件以执行操作,从而配置或以其他方式适配硬件设备以执行上述功能。机器可读介质可以通过各种不同的配置将指令提供给执行指令的硬件元件。
尽管前面已经描述了被认为是最佳模式的内容和/或其他示例,但是应当理解,可以在其中进行各种修改,并且可以以各种形式和示例来实现本文公开的主题,并且这些教导可以应用于许多应用中,这里仅描述了其中的一些。所附权利要求书旨在要求落入本教导的真正范围内的任何和所有应用、修改和变化。
除非另有说明,否则本说明书(包括所附权利要求书)中阐述的所有测量结果、数值、额定值、位置、大小、尺寸和其他规格均为近似值,并不精确。它们旨在具有与它们所涉及的功能以及它们所涉及的领域中的习惯相一致的合理范围。
保护范围仅由现在跟随的权利要求限制。该范围旨在并且应解释为与在根据本说明书和随后的申请过程解释时的权利要求中使用的语言的普通含义相一致宽的范围,并且涵盖所有结构和功能上的等同物。尽管如此,所有权利要求书都不旨在涵盖不满足专利法第101、102或103条要求的主题,也不应该以这种方式解释它们。特此拒绝对此类主题的任何非预期的涵盖。
除以上所述外,已经陈述或图示出的任何内容不意图或不应解释为使得任何成分、步骤、特征、目的、利益、优势或等同物被奉献给公众,不论其是否在权利要求书中有记载。
应当理解,本文使用的术语和表达方式具有关于其相应的各自询问和研究领域的与该术语和表达方式相一致的普通含义,除非本文另外阐述了特定含义。
诸如第一和第二等等的关系术语可以仅用于区分一个实体或动作与另一个实体或动作,而不必要求或暗示在这些实体或动作之间的任何实际的这种关系或顺序。术语“包括”、“包含”及其任何其他变体旨在覆盖非排他性包含,使得包括一系列元素的过程、方法、物品或装置不仅仅包括那些元素,还可以包括未明确列出或此类过程、方法、物品或装置所固有的其他元素。在没有其他限制的情况下,以“一”或“一个”开头的元素不排除在包含该元素的过程、方法、物品或装置中存在其他相同元素。
提供本公开的摘要以允许读者快速地识别技术公开的本质。提交本释义,其不会被用来解释或限制权利要求的范围或含义。另外,在前述具体实施方式中,可以看出,为了简化本公开,在各个示例中将各个特征组合在一起。本公开的方法不应被解释为反映以下意图:任何权利要求均需要比权利要求明确叙述的特征更多的特征。相反,如所附权利要求所反映的,发明主题在于少于单个公开示例的所有特征。因此,以下权利要求据此被合并到具体实施方式中,其中每个权利要求独立地作为单独要求保护的主题。
Claims (15)
1.一种用于从第一应用转换到第二应用的系统,所述系统包括:
一个或多个处理器;以及
一个或多个机器可读介质,其存储指令,所述指令在由所述一个或多个处理器执行时使所述一个或多个处理器建立框架,所述框架包括:
应用管理器,用于管理所述框架的一个或多个操作;
组件检索器,与所述应用管理器通信以检索一个或多个组件,所述一个或多个组件中的每一个与所述第一应用或所述第二应用相关联;
数据检索器,与所述应用管理器通信以检索与所述第一应用或所述第二应用相关联的数据;
存储器,用于存储检索到的一个或多个组件或检索到的数据中的至少一项;以及
服务组,包括一个或多个服务,所述一个或多个服务中的每一个与所述第一应用或所述第二应用相关联;
其中,所述服务组中的所述一个或多个服务包括能够在所述第一应用与所述第二应用之间共享的共享服务中的至少一个。
2.根据权利要求1所述的系统,其中,所述指令还使所述一个或多个处理器通过以下操作从所述第一应用转换到所述第二应用:
接收关于所述第二应用应该被加载的指示;
确定所述第二应用是否与所述框架兼容;
在确定所述第二应用与所述框架兼容时,识别与所述第二应用相关联的未用于所述第一应用的一个或多个资源;
获取与所述第二应用相关联的所述一个或多个资源;
实例化所述第二应用;
卸载所述第一应用的未用于所述第二应用的一个或多个资源;
加载与所述第二应用相关联的所述一个或多个资源;
处置所述第一应用;以及
呈现所述第二应用。
3.根据权利要求2所述的系统,其中,与所述第二应用相关联的所述一个或多个资源包括所述一个或多个组件和所述数据中的至少一项。
4.根据权利要求3所述的系统,其中,所述指令还使所述一个或多个处理器在相同的用户会话内操纵所述第一应用和所述第二应用。
5.根据权利要求2所述的系统,其中,一旦所述系统从所述第一应用转换到所述第二应用,则所述共享服务就重用于所述第二应用。
6.根据权利要求5所述的系统,其中,所述指令还使所述一个或多个处理器通过在所述存储器中缓存与所述第二应用相关联的所述一个或多个资源来从所述第一应用转换到所述第二应用。
7.根据权利要求5所述的系统,其中,当从所述第一应用转换到所述第二应用时,将与所述第二应用相关联的也用于所述第一应用的一个或多个资源从所述存储器重用。
8.根据权利要求1所述的系统,其中,所述组件检索器包括清单文件和组件存储库中的至少一项,所述清单文件包含所述第一应用所需的一个或多个资源的列表,所述组件存储库包含会话中可获得的组件的库。
9.根据权利要求1所述的系统,其中,所述数据检索器包括导航存储库。
10.一种用于从第一应用转换到第二应用的方法,包括:
建立用于从所述第一应用转换到所述第二应用的框架,所述框架包括:
应用管理器,用于管理所述框架的一个或多个操作;
组件检索器,与所述应用管理器通信以用于检索一个或多个组件,所述一个或多个组件中的每一个与所述第一应用或所述第二应用相关联;
数据检索器,与所述应用管理器通信以用于检索与所述第一应用或所述第二应用相关联的数据;
存储器,用于存储检索到的一个或多个组件或检索到的数据中的至少一项;以及
服务组,包括一个或多个服务,所述一个或多个服务中的每一个与所述第一应用或所述第二应用相关联;
其中,所述服务组中的所述一个或多个服务包括能够在所述第一应用与所述第二应用之间共享的共享服务中的至少一个。
11.根据权利要求10所述的方法,还包括:
接收关于所述第二应用应该被加载的指示;
确定所述第二应用是否与所述框架兼容;
在确定所述第二应用与所述框架兼容时,识别与所述第二应用相关联的未用于所述第一应用的一个或多个资源;
获取与所述第二应用相关联的所述一个或多个资源;
实例化所述第二应用;
卸载所述第一应用的未用于所述第二应用的一个或多个资源;
加载与所述第二应用相关联的所述一个或多个资源;
处置所述第一应用;以及
呈现所述第二应用。
12.根据权利要求10所述的方法,还包括:预取与所述第二应用相关联的一个或多个资源。
13.根据权利要求12所述的方法,其中,预取的所述一个或多个资源包括与所述第二应用相关联的未由所述第一应用使用的资源。
14.根据权利要求10所述的方法,还包括:
接收应该加载第二应用的指示;
拦截与所述第二应用相关联的链接;
更新浏览器统一资源(URL)链接;
重写所述URL;以及
触发针对所述第二应用的回退路由。
15.根据权利要求14所述的方法,其中,在触发所述回退路由时,所述应用管理器发送用于检索与所述第二应用相关联的清单的请求。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/138,116 | 2018-09-21 | ||
US16/138,116 US10839037B2 (en) | 2018-09-21 | 2018-09-21 | Connected application experience |
PCT/US2019/039105 WO2020060630A1 (en) | 2018-09-21 | 2019-06-26 | Connected application experience |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112703484A true CN112703484A (zh) | 2021-04-23 |
Family
ID=67480282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980060519.XA Pending CN112703484A (zh) | 2018-09-21 | 2019-06-26 | 连接应用体验 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10839037B2 (zh) |
EP (1) | EP3853725A1 (zh) |
CN (1) | CN112703484A (zh) |
WO (1) | WO2020060630A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11418621B2 (en) | 2018-09-21 | 2022-08-16 | Microsoft Technology Licensing, Llc | Cloud-based composable data layer |
US12061918B2 (en) * | 2021-07-20 | 2024-08-13 | Capital One Services, Llc | Complex, dynamic routing for nested runtime micro front ends |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105308590A (zh) * | 2013-05-29 | 2016-02-03 | 微软技术许可有限责任公司 | 通过操作系统和联网存储服务对用于多个应用、计算机和资源的链接数据的集中式管理 |
CN105453077A (zh) * | 2013-05-29 | 2016-03-30 | 微软技术许可有限责任公司 | 用于应用启动的搜索结果上下文 |
WO2018132303A1 (en) * | 2017-01-13 | 2018-07-19 | Microsoft Technology Licensing, Llc | Fast page loading in hybrid applications |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6141686A (en) | 1998-03-13 | 2000-10-31 | Deterministic Networks, Inc. | Client-side application-classifier gathering network-traffic statistics and application and user names using extensible-service provider plugin for policy-based network control |
US6622168B1 (en) | 2000-04-10 | 2003-09-16 | Chutney Technologies, Inc. | Dynamic page generation acceleration using component-level caching |
US7437707B2 (en) | 2003-12-12 | 2008-10-14 | International Business Machines Corporation | Systems and methods for generating applications that are automatically optimized for network performance |
US7546335B2 (en) | 2004-09-02 | 2009-06-09 | Broadway Technology, Llc | System and method for a data protocol layer and the transfer of data objects using the data protocol layer |
US7716399B2 (en) | 2007-05-25 | 2010-05-11 | Red Hat, Inc. | Method and system for data management interface with intelligent plugins that determine whether to perform the requested data operation received from an application |
US9652210B2 (en) * | 2007-08-28 | 2017-05-16 | Red Hat, Inc. | Provisioning a device with multiple bit-size versions of a software component |
US8311900B1 (en) | 2009-10-29 | 2012-11-13 | Amazon Technologies, Inc. | Providing separate views for items |
US9229980B2 (en) | 2010-02-23 | 2016-01-05 | Yahoo! Inc. | Composition model for cloud-hosted serving applications |
US9864611B2 (en) | 2010-12-15 | 2018-01-09 | Microsoft Technology Licensing, Llc | Extensible template pipeline for web applications |
US8533336B1 (en) | 2011-02-04 | 2013-09-10 | Google Inc. | Automated web frontend sharding |
US9336060B2 (en) | 2011-06-17 | 2016-05-10 | Microsoft Technology Licensing, Llc | Middleware services framework for on-premises and cloud deployment |
US20130166692A1 (en) | 2011-12-27 | 2013-06-27 | Nokia Corporation | Method and apparatus for providing cross platform audio guidance for web applications and websites |
US10386827B2 (en) | 2013-03-04 | 2019-08-20 | Fisher-Rosemount Systems, Inc. | Distributed industrial performance monitoring and analytics platform |
US9280338B1 (en) | 2013-03-11 | 2016-03-08 | Amazon Technologies, Inc. | Dynamic application updates |
US9477774B2 (en) | 2013-09-25 | 2016-10-25 | Akamai Technologies, Inc. | Key resource prefetching using front-end optimization (FEO) configuration |
JP2017517063A (ja) | 2014-04-24 | 2017-06-22 | バークレイズ バンク ピーエルシー | インスタントメッセージングシステムおよび方法 |
US9311053B2 (en) | 2014-04-30 | 2016-04-12 | The Boeing Company | Integrated information exchange management and control of design configurations |
WO2015171549A2 (en) | 2014-05-05 | 2015-11-12 | Citrix Systems, Inc. | Facilitating communication between mobile applications |
EP3152752A4 (en) * | 2014-06-05 | 2019-05-29 | Nuance Communications, Inc. | SYSTEMS AND METHOD FOR GENERATING LANGUAGE OF MULTIPLE STYLES OF TEXT |
WO2016032532A1 (en) | 2014-08-29 | 2016-03-03 | Hewlett Packard Enterprise Development Lp | Scaling persistent connections for cloud computing |
US9967309B2 (en) | 2014-10-06 | 2018-05-08 | Microsoft Technology Licensing, Llc | Dynamic loading of routes in a single-page application |
US20170034306A1 (en) | 2015-07-30 | 2017-02-02 | Nasdaq, Inc. | Software application architecture |
US9948521B2 (en) | 2016-01-11 | 2018-04-17 | Equinix, Inc. | Architecture for data center infrastructure monitoring |
US20170230457A1 (en) | 2016-02-05 | 2017-08-10 | Microsoft Technology Licensing, Llc | Idempotent Server Cluster |
US10545624B2 (en) | 2016-03-21 | 2020-01-28 | Microsoft Technology Licensing, Llc | User interfaces for personalized content recommendation |
US10114519B2 (en) | 2016-05-03 | 2018-10-30 | Microsoft Technology Licensing, Llc | Contextual content presentation based on microenvironment interactions |
US10469611B2 (en) | 2016-05-03 | 2019-11-05 | Microsoft Technology Licensing, Llc | Reduced page load time utilizing cache storage |
US10305861B2 (en) | 2016-08-29 | 2019-05-28 | Microsoft Technology Licensing, Llc. | Cross-tenant data leakage isolation |
US10404765B2 (en) | 2016-11-01 | 2019-09-03 | Microsoft Technology Licensing, Llc | Re-homing embedded web content via cross-iframe signaling |
US10536446B2 (en) | 2017-01-31 | 2020-01-14 | Microsoft Technology Licensing, Llc. | Single authentication to a multi-tenancy single-page cloud application |
US20180246859A1 (en) | 2017-02-24 | 2018-08-30 | Microsoft Technology Licensing, Llc | Representing position of graphical user interface elements with hierarchical identifiers |
CN108491206A (zh) | 2018-04-12 | 2018-09-04 | 江南大学 | 一种spa单页面实现方法及系统 |
US11418621B2 (en) | 2018-09-21 | 2022-08-16 | Microsoft Technology Licensing, Llc | Cloud-based composable data layer |
-
2018
- 2018-09-21 US US16/138,116 patent/US10839037B2/en active Active
-
2019
- 2019-06-26 CN CN201980060519.XA patent/CN112703484A/zh active Pending
- 2019-06-26 EP EP19746210.4A patent/EP3853725A1/en active Pending
- 2019-06-26 WO PCT/US2019/039105 patent/WO2020060630A1/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105308590A (zh) * | 2013-05-29 | 2016-02-03 | 微软技术许可有限责任公司 | 通过操作系统和联网存储服务对用于多个应用、计算机和资源的链接数据的集中式管理 |
CN105453077A (zh) * | 2013-05-29 | 2016-03-30 | 微软技术许可有限责任公司 | 用于应用启动的搜索结果上下文 |
WO2018132303A1 (en) * | 2017-01-13 | 2018-07-19 | Microsoft Technology Licensing, Llc | Fast page loading in hybrid applications |
Also Published As
Publication number | Publication date |
---|---|
WO2020060630A1 (en) | 2020-03-26 |
US20200097611A1 (en) | 2020-03-26 |
EP3853725A1 (en) | 2021-07-28 |
US10839037B2 (en) | 2020-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11799984B2 (en) | Installable web applications | |
US10162624B1 (en) | Web shell for dynamically generated cross-platform applications | |
US9307342B2 (en) | Dynamic rendering for software applications | |
KR101793306B1 (ko) | 가상 애플리케이션 확장 포인트 | |
US10521447B2 (en) | Container application execution using image metadata | |
US11936747B2 (en) | Cloud-based composable data layer | |
CN105830017B (zh) | 零停机时间部署和回滚 | |
US10684838B2 (en) | Dynamic application deployment | |
US20140208326A1 (en) | File presenting method and apparatus for a smart terminal | |
US11023558B1 (en) | Executing functions on-demand on a server utilizing web browsers | |
CN112703484A (zh) | 连接应用体验 | |
US9785560B2 (en) | Scene-isolated internet application | |
US11797315B2 (en) | Automatic acquisition and integration of supplemental software programs | |
EP4028909B1 (en) | Method and system of re-associating location mappings for uniform resource identifier named objects | |
US11455318B2 (en) | Data replication using probabilistic replication filters | |
CN111831842A (zh) | Nbmp中处理媒体内容的方法、装置和存储介质 | |
CN110663026A (zh) | 用于减少软件应用的启动时间的系统和方法 | |
US11630681B2 (en) | Integrated system for localization of resources tailored for translations by setting a flag | |
US11733988B2 (en) | Application deployment for applications offered by multiple deployment sources | |
US11537682B1 (en) | Experience convergence for multiple platforms | |
US20240069697A1 (en) | System and method of rendering user interface components based on user interaction |
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 |