CN110971655A - 离线客户端重放和同步 - Google Patents
离线客户端重放和同步 Download PDFInfo
- Publication number
- CN110971655A CN110971655A CN201910915128.3A CN201910915128A CN110971655A CN 110971655 A CN110971655 A CN 110971655A CN 201910915128 A CN201910915128 A CN 201910915128A CN 110971655 A CN110971655 A CN 110971655A
- Authority
- CN
- China
- Prior art keywords
- software application
- request messages
- offline
- client
- application
- 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
Images
Classifications
-
- 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/50—Network services
- H04L67/54—Presence management, e.g. monitoring or registration for receipt of user log-on information, or the connection status of the users
-
- 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/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- 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
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- 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
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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/142—Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5683—Storage of data provided by user terminals, i.e. reverse caching
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/59—Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
-
- 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/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
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
示例系统和方法促进在间歇网络连接期间与网络资源通信的联网的软件应用的操作,并且包括确定所述联网的软件应用何时离线以及何时在线;当所述软件应用离线时,选择性地截获来自所述联网的软件应用的寻址到所述网络资源的一个或多个请求消息,得到截获的请求消息的存储;检测所述联网的软件应用何时从离线转换为在线;并且以所述一个或多个请求消息在所截获的请求消息的储存器中存储的顺序,选择性地向网络资源发出一个或多个请求消息。在更具体的实施例中,所述系统经由离线工具包实现,所述离线工具包用于在所述联网的软件应用(客户端)离线时捕获具象状态传输(REpresentational State Transfer,REST)调用;然后在所述客户端重新连接(即上线)时选择性地重放所述调用。
Description
相关申请的交叉引用
本申请要求于2019年6月12日提交的题为OFFLINE CLIENT REPLAY AND SYNC的序列号为16/439,398的美国专利申请和于2018年10月1日提交的题为OFFLINE CLIENTREPLAY AND SYNC的序列号为62/739,536的美国临时专利申请的权益,通过引用并入本文,如同出于所有目的完全在本申请中阐述一样。
本申请还涉及于2018年10月4日提交的题为SYSTEM FOR OFFLINE OBJECT BASEDSTORAGE AND MOCKING OF REST RESPONSES的序列号为62/741,135的美国临时专利申请,通过引用并入本文,如同出于所有目的完全在本申请中阐述一样。
技术领域
本申请涉及计算,并且更具体地,涉及促进可以有效地处理间歇网络连接的联网的软件应用的开发和操作的系统和方法。
背景技术
用于处理间歇或有限网络连接的软件机制被用于各种要求高的应用中,包括移动企业应用、汽车计算应用等。这些应用通常需要有效的机制来适应网络断开和重连场景。
例如,某些现场服务工作者使用的移动应用可能在长时间内失去网络连接。传统上,浏览器可以在本地缓存给定网页或应用的一些数据,但是缓存的数据可能对某些所需的软件操作或功能的使用有限。
此外,在某些情况下,如果重新建立连接,则现场服务工作者使用本地缓存的数据执行的任何工作可能丢失或者不相关,并且浏览器在重新连接时刷新页面。
发明内容
示例性方法促进在间歇网络连接期间与网络资源(例如,web服务)通信的联网的软件应用(称为客户端软件应用,或简称为客户端)的操作。示例方法包括确定联网的软件应用何时离线以及何时在线;当软件应用离线时,选择性地截获来自联网的软件应用的寻址到网络资源的一个或多个请求消息,得到截获的请求消息的储存器;检测联网的软件应用何时从离线转换为在线;以及以一个或多个请求消息在所截获的请求消息的储存器(store)中存储的顺序,选择性地向网络资源发出一个或多个请求消息。
在更具体的实施例中,客户端包括浏览器,并且网络资源包括具象状态传输(REpresentational State Transfer,REST)服务或应用编程接口(API)。客户端充当(actas)REST服务的REST客户端或API,并且可以经由运行与REST服务或API通信的网页代码的中间网站来实现。类似地,当表示原始请求客户端与后端REST服务或API通信时,网页代码还可以配备有用于实现本文讨论的实施例的功能。
请求消息可以包括超文本传输协议(HTTP)请求消息,其可以包括XHR请求(XMLHTTP请求)。截获的请求消息的存储可以经由同步日志来实现,该同步日志包括存储在同步日志中的每个截获的请求消息的时间戳。
选择性截获的步骤还可以包括仅截获满足经由配置的范围指定的一个或多个预定条件的请求消息。选择性地发出的步骤还可以包括:生成对一个或多个截获的请求消息中的每一个的一个或多个模拟响应;响应于截获的一个或多个请求消息,向联网的软件应用发出一个或多个模拟响应。
具体示例实施例可以经由JavaScript扩展工具包(JET)来实现,该JET充当用于在客户端离线时捕获REST调用的离线工具包;然后,一旦客户端重新连接,即上线,就以保证的顺序重放捕获的REST调用。
同步日志中的存储/缓存的请求消息可以表示满足一个或多个预定标准的消息,即满足所配置的范围。在其他实施例中,系统可以在客户端离线时向客户端提供模拟响应。
因此,这里讨论的离线持久工具包(toolkit)和相关联的实施例极大地简化了应用开发,例如,通过提供在所有现代浏览器中都良好工作的响应缓存解决方案。该工具包涵盖了常见的缓存案例,只需少量特定于应用的编码,但也可以灵活地覆盖非平凡的案例。除了提供缓存完整响应有效负载的能力之外,该工具包还支持将REST响应有效负载“碎化(shredding)”为可在离线时在客户端设备上存储、查询和更新的对象。
通过参考说明书的剩余部分和附图,可以实现对本文公开的特定实施例的本质和优点的进一步理解。
附图说明
图1是显示了第一示例系统和伴随的计算环境的框图,其用于在客户端软件应用离线时促进处理来自客户端软件应用(例如,浏览器)的请求消息,然后在客户端软件应用从离线转换为在线之后,以保证的同步顺序选择性地重放请求消息到与每个请求消息相关联的端点(endpoint)计算资源。
图2是显示第二示例系统和伴随的计算环境的框图,其进一步示出了示例性离线软件开发工具包(SDK)、库或其他接口,其适于实现在离线时选择性客户端请求消息捕获和存储,并且当重新建立网络连接时,即当客户端软件应用上线时,随后的重放和与所寻址的计算资源的同步。
图3是可与图1-图2的实施例一起使用的示例方法的流程图。
图4是显示其中客户端应用离线的示例场景期间,客户端应用、持久性管理器、响应代理、同步(sync)管理器和本地持久性存储装置之间的示例通信的第一序列图。
图5是显示当图4的客户端应用转换为在线时,即,与服务器连接以与之进行交互时,客户端应用、同步管理器、持久性存储装置和远程服务器之间的示例通信的第二序列图。
图6是适用于图1-图5的实施例的第二示例方法的流程图。
图7是可用于实现图1-图6的实施例的系统和伴随的计算环境的总体框图。
图8是可用于实现图1-图7的实施例的计算设备的总体框图。
具体实现
在示例用例场景中,当软件应用离线和在线时,工作者(例如,商业代表)使用实施例来处理客户端软件应用的消息传递。在示例场景中,客户端UI(例如,包括客户端软件应用的一个或多个用户界面显示屏幕)和相关联的交互属于(pertain to)涉及行进到维护库存(inventories)的各个位置(例如,库位置)的代表的场景,其中该代表的任务是跟踪库存,例如,某个库处仍有多少特定产品可用。相关联的业务也有仓库位置。代表正在使用移动设备,该移动设备在各个目标位置可能会或不会有因特网(Internet)访问连接(access)。
在示例用例场景中,代表使用移动设备和伴随的客户端软件应用来记录库存量。当代表返回办公室时,代表可以与服务器同步。该代表将能够(使用他们的移动设备)订购那些供应短缺的产品。当代表返回其建立了Internet连接的办公室时,订单也将(与服务器)同步。代表还可以负责获得给定订单上的商店经理的批准或签名。签名可以存储在二进制文件中,一旦重新建立因特网连接,该二进制文件也经由移动设备同步。
出于本讨论的目的,计算环境可以是用于执行涉及计算机处理的一个或多个任务的任何计算资源集合。计算机可以是与存储器通信的任何处理器。计算资源可以是计算环境的任何组件、机制或能力或其数量,包括但不限于处理器、存储器、软件应用、用户输入设备和输出设备、服务器等。
企业计算环境可以是用于企业或组织的任何计算环境。示例企业计算环境包括分布在网络上的各种计算资源,并且还可以包括内部网(Intranet)Web服务器上的私有和共享内容、数据库、本地硬盘或文件服务器上的文件、电子邮件系统、文档管理系统、门户等。
给定的软件应用可以包括(但不一定)组成软件应用或模块(例如,服务、功能、过程、计算对象等)。因此,术语“软件应用”还可以包括联网的软件应用或其集成组。
软件系统可以是实现机器可读指令(即计算机代码)的任何计算资源集合。因此,术语“软件系统”可以指代软件应用,并且取决于使用该术语的上下文,还可以指代用于运行软件应用的伴随的计算机和相关联的计算资源。
根据使用该术语的上下文,软件系统还可以包括使得能够运行软件应用的硬件、固件和其他计算资源。注意,某些软件系统可以包括不同服务的集合,其根据处理模板和伴随的逻辑以特定顺序实现。因此,术语“软件系统”、“系统”和“软件应用”在本文中可互换使用,以指代用于计算机处理的模块或模块组或计算资源。
出于本讨论的目的,服务器可以是任何计算资源,诸如被适配于向请求的另一计算资源或实体(即,客户端)提供内容(例如,数据和/或功能)的计算机和/或软件。客户端可以是被适配用于从另一计算机或系统(称为服务器)接收内容的任何计算机或系统。面向服务的体系结构(Service Oriented Architecture,SOA)服务器可以是被适配用于促进向可耦接到网络的一个或多个客户端计算机提供可访问的服务的任何服务器。
应用服务器可以是包括用于运行可以向一个或多个客户端设备提供数据和/或功能的软件应用的计算资源的任何服务器。应用服务器可以支持在一个或多个web服务器上运行的一个或多个web页面,其中web页面促进提供UI控件以使得客户端设备的用户能够使用客户端与底层应用服务器提供的功能和在其上运行和/或由其存储的应用和/或数据进行交互。因此,可以经由软件框架(和/或支持软件框架的硬件,取决于使用该术语的上下文)来实现应用服务器,以提供计算资源用于支持创建和运行包括Web服务、API、数据库应用等的软件应用,例如,Web应用,这些软件应用提供数据和/或功能给其他软件应用,称为客户端应用(或简称客户端)。
联网的计算环境可以是包括相互通信计算机的任何计算环境,即计算机网络。类似地,联网的软件应用可以是计算机代码,其被适配为促进经由网络与一个或多个计算资源(例如,服务器)通信或以其他方式使用。类似地,联网的软件应用可以是经由计算机网络与一个或多个计算资源通信的任何软件应用(例如,移动应用、桌面浏览器插件等)。
Web服务可以是任何计算机代码和相关联的功能,其被适配为由其代码存储在单独于软件服务的位置(例如,在另一计算机或存储器存储位置或设备上)并且其与软件服务的接口包括Web服务描述语言(Web Services Description Language,WSDL)接口的应用或其他服务或进程调用。
通常,web服务(在本文也简称为服务)提供可由不同应用、进程或web服务(可以分布在网络上)重用的功能,例如,能力,其经由与Web服务的描述一致的WSDL接口访问功能。Web服务模型可以表示松散耦接的集成模型,以允许灵活地集成各种网络分布式应用或进程。
用户界面可以是被适配为便于说明数据和/或提供对与用户界面相关联的软件功能的访问的任何硬件和/或软件集合。软件用户界面可以是与软件相关联的一个或多个用户界面显示屏幕的任何集合。软件UI通常以UI框架或体系结构为特征,其指定软件应用的数据和功能的组织,并且还可以包括用于导航软件UI的特征。
为清楚起见,某些众所周知的组件,如硬盘驱动器、处理器、操作系统、电源、路由器、互联网(Internet)、互联网服务提供商(Internet Service Providers,ISP)、虚拟机、中间件、JavaServer Faces(JSF)框架和Java小程序(servlet)、某些类型的元数据服务提供程序、运行时服务连接器、持久性管理器、元数据转换实用程序、身份验证模块、身份提供程序、令牌验证程序、异步JavaScript和XML(AJAX)引擎等,未必在图中明确指出。然而,能够访问本教导的本领域技术人员将知道要实现哪些组件以及如何实现它们以满足给定实现的需要。
图1是显示了第一示例系统10和伴随的计算环境的框图,其用于在客户端软件应用离线时促进处理来自客户端软件应用(例如,浏览器、移动应用或其他客户端联网的软件应用)12的请求消息(例如,REST调用),然后在客户端软件应用12从离线转换为在线之后,以保证的同步顺序选择性地将请求消息重放到与每个请求消息相关联的端点计算资源(例如,REST API或web服务)28。
在本示例实施例中,客户端软件应用12经由接口模块16-22和网站以及伴随的网页代码26与服务器端计算资源28通信,即,由一个或多个服务器(例如,网络服务器和应用服务器)14托管的具象状态传输(REpresentational State Transfer,REST)应用编程接口(API)或web服务28。
示例性接口模块16-22被实现为将客户端软件应用12与服务器系统14接口的软件库或工具包(也称为软件开发工具包(SDK))的一部分。
接口模块16-22包括选择性REST调用捕获模块16,其与在线/离线确定模块18、因特网连接20(例如,可包括调制解调器、路由器等)、以及本地缓存24通信,本地缓存24也称为持久性存储装置(storage),其包括用于捕获REST调用的同步日志(也称为同步日志),REST调用例如,超文本传输协议(HTTP)请求消息,诸如与时间戳相关联的XML HTTP请求(XHR)消息,或者用于随后以特定顺序(即,同步的顺序)重放捕获的消息的其他装置。REST调用同步重放模块22还与在线/离线确定模块18、本地缓存24和因特网连接20通信。
注意,通常,系统10的各种模块的分组是说明性的并且可以变化,例如,某些模块可以与其他模块组合或者在其他模块内部实现,或者模块可以以其他方式在网络中或在一个或多个计算设备或虚拟机内不同地分布(相比示出的),而不脱离本教导的范围。例如,选择性REST调用捕获模块16和REST调用同步重放模块22可以是同一同步管理器(也称为同步管理器)模块或类的一部分。
在操作中,客户端软件应用(在此也简称为客户端)12向网页代码26和关联的后端REST API或web服务28(其由服务器系统14托管)发出请求消息,例如,去获得响应于一个或多个事件的数据,该一个或多个事件响应于与客户端软件应用的用户界面(UI)的用户交互而检测到。例如,当经由浏览器实现客户端软件应用12时,与经由与网站和网页代码26相关联的HTML和JavaScript实现的UI交互的用户可以生成触发JavaScript调用的一个或多个事件,所触发的JavaScript调用然后通过异步JavaScript和XML(AJAX)引擎(或其他合适的接口软件)路由(routed)并转换为相关联的REST调用。REST调用通过选择性REST调用捕获模块16路由。
在某些实现中,REST调用捕获模块16可以充当交换机(switch),当互联网连接20是活动的(active),即可操作并且耦接到网络(例如,因特网)时,其实现客户端12和服务器系统14之间的通信,该交换机经由因特网连接20选择性地将请求消息传递到服务器系统14。当因特网连接20关闭,或者客户端12不能使用因特网连接20经由网络与服务器系统14通信时,选择性REST调用捕获模块16被激活并开始捕获从客户端12发出的REST调用,即请求消息,如下面更全面地讨论的。然而,注意,实施例不限于在客户端软件应用12离线时捕获REST调用,并且还可以在客户端软件应用12在线时捕获REST调用和相关联的服务器响应,例如,当给定的REST调用可以在本地处理而无需与服务器系统14交互时,促进网络资源的优化。
当因特网连接20是活动的并且客户端12正在使用因特网连接20时,客户端12被称为在线。类似地,当因特网连接20关闭或者当客户端12不能访问因特网连接20时,客户端12被称为离线。
在线/离线确定模块18包括用于检测客户端12何时在线或离线,以及向选择性REST调用捕获模块16发出相应的在线/离线状态指示的代码。这些状态指示使能REST调用捕获模块16确定何时捕获并存储(在本地缓存24中)从客户端12发出的REST调用。
类似地,这些状态指示使得REST调用同步重放模块22能够确定何时从缓存24重放捕获的REST调用,即,以精确的顺序将它们转发到服务器系统14。精确的顺序,即,同步的顺序,可以是在缓存24中捕获REST调用的相同顺序。同步日志数据(例如,时间戳或其他合适的机制)标记REST调用被捕获并存储在缓存24中的顺序。这样促进将捕获的REST调用同步重放到服务器端计算资源26、28。
通常,当服务器端REST API或web服务28经由客户端12使用的网页代码26检测到REST调用时,它生成相应的响应消息。响应消息可以包括例如从后端数据库检索的数据,其中数据将被提供给网页代码26以供客户端12经由客户端12上显示的UI显示屏幕(其可以包括或表示一个浏览器)访问。
注意,系统10的各种模块16、18、22可以经由可以作为可插入库或工具包的一部分插入客户端12的软件来实现。该库可以包括用于实现各种类型的软件功能的持久性管理器,包括用于实现在线/离线确定18等的功能。该功能可以经由计算语言类的方法来实现,例如JavaScript类。
可以经由持久性管理器类实现的方法的示例包括:构造新的持久性管理器的方法;使用浏览器API调用浏览器获取,选择性地绕过持久性框架;选择性地强制持久性管理器离线;获取持久性管理器缓存24的内容;获取服务URL(REST API或Web服务28的)的注册对象;获取所有注册对象;实例化同步管理器;检查浏览器(例如,客户端12)和持久性管理器是否在线(即,实现在线/离线确定18),等等。
通常,用于实现REST调用同步重放模块22的同步管理器和选择性REST调用捕获模块16支持在离线时进行的请求的同步能力。可以经由持久性管理器类实现的示例方法包括使同步日志24与服务器系统14同步的方法;构造新的持久性同步管理器;添加事件监听器(event listener);删除事件监听器;选择性地处理同步日志24;重放请求(即REST调用,也称为HTTP请求、HTTP请求消息、REST请求或REST请求消息);将请求插入同步日志24;从同步日志24中检索数据;从同步日志中删除请求24;更新同步日志中的请求,从而替换它,等等。
因此,同步管理器实例可以经由持久性管理器(persistenceManager.getSyncManager()API)的方法获得,并支持各种操作,包括:检索同步日志;调用sync()API来重放离线时发出的请求;插入/删除来自同步日志24的请求,为同步操作添加事件监听器;对由于这些请求而产生的碎化的(shredded)本地数据执行撤消/重做操作,等等。
图2是显示了第二示例系统50和伴随的计算环境的框图,其进一步示出了示例离线软件开发工具包(SDK)、库、API或其他工具包或接口机制,其适合于实现当离线时选择性客户端请求消息的捕获和存储,以及当重新建立网络连接时——即当客户端12上线时——随后的重放和与寻址的计算资源的同步。
出于说明的目的,显示了客户端12包括用于实现各种类型的REST调用56的功能,包括获取、放置、删除、发布和补丁。定制逻辑监听器58可以检测由用户与与客户端12相关联或由客户端12使用的UI(例如,网页的UI)的一个或多个UI控件交互而触发的事件。
客户端被示为与公共离线JavaScript(JS)软件开发工具包(SDK)52通信,其充当客户端12和web服务器72之间的接口,其中web服务器72与具有后端服务器(例如应用服务器74)的公共离线JS SDK 52接口。服务器72、74可以形成图1的服务器系统14的一部分。
示例公共离线JS SDK 52包括与同步管理器62和持久性存储装置54通信的持久性管理器60,持久性存储装置54可以对应于图1的本地缓存24。持久性管理器60接收通过经由客户端12采用的一个或多个REST方法56发出的REST调用。包括获取API 66和XHR适配器64的获取功能64、66,促进向Web服务器72发出HTTP请求。
还显示了持久性管理器60包括默认获取事件监听器68(例如,具有检测对应于请求消息的获取事件何时发生的功能)和用于使能和维护活动(例如,获取、缓存等)、策略和端点(例如,经由与端点相关联的URL)的注册的注册模块70。端点可以指代例如REST API或web服务28。
图3是可与图1-图2的实施例一起使用的示例方法80的流程图。示例性方法80促进在间歇网络连接期间(包括客户端离线时)与网络资源通信的联网的软件应用(例如,图1和图2的客户端12)的操作。
参考图1和图3,示例方法80包括第一步骤82,其涉及确定联网的软件应用何时离线以及何时在线。可以通过图1的在线/离线确定模块18进行确定。
第二步骤84包括当软件应用离线时,从寻址到网络资源(例如,图1的REST API或web服务28)的联网的软件应用(例如,图1的客户端12)选择性地截获一个或多个请求消息(例如,经由图1的选择性REST调用捕获模块16),得到截获的请求消息的存储(例如,图1的本地缓存24)。
第三步骤86包括检测联网的软件应用何时从离线转换为在线(例如,经由图1的在线/离线确定模块18)。
第四步骤88包括以截获的请求消息的储存器中存储一个或多个请求消息的顺序向网络资源选择性地发出(例如,经由图1的REST调用同步重放模块22)一个或多个请求消息。
注意,可以修改第一示例方法80而不脱离本教导的范围。例如,方法80还可以指定联网的软件应用包括浏览器,并且网络资源包括REST服务或API(例如,对应于图1和图2的框28)。联网的软件应用可以充当(或表示)REST服务或API的REST客户端。
请求消息可以包括超文本传输协议(HTTP)请求消息,例如,XHR(Xml HTTP请求)消息。截获请求消息的存储可以包括同步日志,该同步日志包括在同步日志中存储的每个截获的请求消息的时间戳。
第二步骤84还可以包括仅截获满足经由配置的范围指定的一个或多个预定条件的请求消息。
第四步骤88还可以包括生成对一个或多个截获的请求消息中的每一个的一个或多个模拟响应;以及响应于截获一个或多个请求消息,向联网的软件应用发出一个或多个模拟响应。
第一示例方法80还可以指定该方法经由JavaScript扩展工具包(JET)在线工具包实现,用于在客户端离线时捕获REST调用,然后在应用重新连接(即,上网)后以保证的顺序重放捕获的消息。满足一个或多个预定标准的HTTP请求,即配置的范围可以保持在同步日志中,并且当客户端离线时,可以由工具包向客户端提供模拟响应。
因此,本文讨论的离线持久工具包和相关联的实施例极大地简化了应用开发,例如,通过提供在所有现代浏览器中良好工作的响应缓存解决方案。该工具包涵盖了常见的缓存案例,只需少量特定于应用的编码,但也可以灵活地覆盖非平凡的案例。除了提供缓存完整响应有效负载的能力之外,该工具包还支持将REST响应有效负载“碎化”为可在离线时在客户端设备上存储、查询和更新的对象。
图4是显示了在其中客户端应用12离线,例如,不与远程服务器通信的示例场景期间,在客户端应用12、持久性管理器60、响应代理100、同步(sync)管理器62和本地持久性存储装置54之间的示例通信的第一序列图。
在本示例场景中,客户端应用12发出初始请求消息102,在该示例中,初始请求消息102是POST 102。然后,持久性管理器60截获请求消息102,然后持久性管理器60传递截获的POST消息104到响应代理100进行处理。
注意,响应代理100可以包括当客户端应用12离线时和/或基于其他上下文参数(例如,连接速度、位置、将要提交的特定数据类型、检索等)用于确定应如何处理给定请求消息的定制代码。
在本示例实施例中,响应代理100已经被配置为根据客户端应用12当前是离线还是在线,向客户端应用12提供模拟响应或者从远程REST服务器(即,图5的服务器74,请求消息102由客户端应用12导向其)检索响应,并将检索到的响应分别提供给客户端应用12。
因此,响应代理100返回响应108,其可以是或可以不是模拟响应。出于本讨论的目的,如果使用本地存储和碎化的数据构造REST响应消息,则响应被称为模拟响应。响应消息的构造可以涉及访问包括碎化的和存储的(例如,在本地数据库中)请求消息有效载荷和响应有效载荷的本地持久性存储(例如,持久性存储装置54)。
为了生成对给定请求消息的模拟响应,响应代理100可以从本地持久性存储装置54激活去碎化机(de-shredder)(也称为解碎化机)以用于解碎化响应消息有效载荷。用于构造模拟响应的头信息可以从本地元数据缓存获得,本地元数据缓存也可以是本地持久性存储装置54的一部分。
在本示例实施例中,来自响应代理100的响应108表示使用作为持久性存储装置54的一部分的本地对象存储创建的模拟响应110。持久性管理器60将模拟响应110转发到客户端应用12。
注意,客户端应用12可以将模拟响应110视为来自远程服务器的实际响应,客户端应用12打算经由请求消息102调用该远程服务器。
然后,持久性管理器60将响应112传递给持久性存储装置54以进行存储。然而,请注意,持久性管理器60首先利用(leverage)碎化机功能(例如,来自包含在持久性管理器60中或与持久性管理器60通信的碎化机)来碎化响应消息110,以促进在持久性存储装置54中存储响应消息的有效载荷数据。
然后,持久性存储装置54向持久性管理器60发出碎化的响应112被成功存储在持久性存储装置54中的确认114。
然后,持久性管理器60向同步管理器62发出操作记录信号116,以便记录操作,包括向客户端应用发出响应消息110。响应消息110可以与操作记录信号116一起被转发到同步管理器62。
然后,同步管理器62将响应消息110的带时间戳的副本记录在本地持久性存储装置54中包括的同步日志中。响应消息110被记录在同步日志中的确认120被从本地持久性存储装置54转发到同步管理器62。然后,同步管理器62通知同步日志和相关联的持久存储装置54已被成功更新。
图5是显示当图4的客户端应用12转换为在线(即,可以与服务器74连接以与其交互)时客户端应用12、同步管理器62、持久性存储装置54和远程REST服务器74之间的示例通信的第二序列图。
在本示例实施例中,客户端应用12向同步管理器62发出命令以开始客户端-服务器同步操作。例如,当运行客户端应用12的移动设备对接到台式计算机时,当重新建立网络连接时,和/或基于其他标准,这可能发生。
此外,注意,虽然客户端应用12被显示为向同步管理器62发送同步请求,但是可替代地或另外地,同步信号130可以由图2和图4的持久性管理器60基于与图1的在线/离线确定机制18的通信发出。
然后,同步管理器62向持久性存储装置54发出日志检索信号132,以从其同步日志中检索所有同步日志条目。注意,持久性存储装置54的同步日志中的同步日志条目包括带时间戳(或以其他方式排序)的请求消息和相应的响应消息。
来自持久性存储装置54的同步日志的每个请求消息被回放到REST服务器74,然后REST服务器74生成服务器响应138。可以将服务器响应138与客户端生成的任何对应的模拟响应进行比较,并且可以作为响应进行任何同步调整(例如,根据用于执行步骤150的客户端清理软件,如下面更全面地讨论的)。
在同步管理器62接收到属于特定同步日志条目136的服务器响应138之后,在步骤140从持久性存储装置54的同步日志中删除相应的同步日志条目,并且持久性存储装置54经由确认信号确认删除该日志条目。注意,执行步骤136-146,直到从持久性存储装置54中删除所有同步日志请求消息条目,或者直到确定同步过程已经完成为止。
然后,同步管理器62向客户端应用12发出监听器调用信号148以调用同步请求监听器(syncRequestlistener)并执行任何另外的清除逻辑150。监听器调用信号148可以由图4的客户端应用12和/或持久性管理器60作为特定同步过程已完成并且同步管理器62准备好处理附加的同步请求的指示来使用。
清除逻辑步骤150还可以包括例如实现冲突解决算法。例如,在某些情况下,特定数据字段可能已经在客户端(例如,当客户端应用12离线时)和服务器端(例如,当另一用户正在访问数据库时)两者处更新。在重新连接和同步时,协调和/或以其他方式选择应保留哪些数据的步骤可以根据给定实现的需要而变化。例如,在一些实现中,企业可以提示用户在发生冲突时选择要保留哪些数据。
图6是适用于图1-图5的实施例的第二示例方法160的流程图。第二示例方法160促进在间歇网络连接期间操作客户端应用。
初始存储-保持步骤162包括在运行客户端应用的客户端设备(例如,智能电话、平板电脑、膝上型电脑等)上维护(maintain)本地存储装置,其中本地存储装置包括从客户端应用和服务器之间交换的一个或多个消息获得的数据。
接下来,框架使用步骤包括使用软件框架来对客户端设备上的本地数据存储装置(例如,图4和图5的持久性存储装置54)建模,就像它表示服务器的远程存储数据一样(例如,图2和图5的REST服务器74),用于当客户端应用离线时,或根据另一预定条件,选择性地提供本地生成的响应消息以请求由客户端应用(例如,图4的客户端应用12)发出的消息。
随后,改变日志记录步骤166包括基于请求消息以日志记录对本地存储装置的任何改变(例如,碎化对对象储存器中的本地存储装置的响应)。
接下来,记录收集步骤168包括收集本地处理的请求消息的排序记录(例如,同步日志条目)。
随后,同步检测步骤170包括检测同步信号(例如,当客户端应用已经从离线转换为在线时可以生成)。
最后的同步步骤172包括,响应于检测,通过向服务器(例如,图5的服务器74)回放请求消息的排序记录,来至少部分地同步远程存储的服务器数据与本地存储装置。
注意,可以修改第二示例方法160,而不脱离本教导的范围,例如,可以改变、互换、删除、添加等步骤。例如,方法160还可以包括各种附加步骤,例如:截获寻址到服务器的一个或多个请求消息;处理请求消息以基于本地存储装置中的数据生成模拟响应消息,包括根据请求消息根据需要操纵本地存储装置中的数据;将模拟响应消息传递给客户端应用;并在同步日志中记录生成的模拟响应消息的记录。
图7是可用于实现图1-图6的实施例的系统900和伴随的计算环境的总体框图。示例系统900能够使能用于web应用的动态UI显示屏幕的有效配置和生成。实施例可以实现为独立应用(例如,驻留在用户设备中)或者实现为使用客户端和服务器端代码的组合实现的基于web的应用。
通用系统900包括用户设备960-990,包括台式计算机960、笔记本计算机970、智能手机980、移动手机985和平板电脑990。通用系统900可以与任何类型的用户设备接口,例如作为瘦客户端计算机、支持因特网的移动电话、移动因特网访问设备、平板电脑、电子书或个人数字助理,能够显示和导航网页或其他类型的电子文档和UI,和/或运行应用。尽管示出了具有五个用户设备的系统900,但是可以支持任何数量的用户设备。
Web服务器910用于处理来自Web浏览器和其他独立应用对网页、电子文档、企业数据或其他内容的请求,以及来自用户计算机的其他数据。网络服务器910还可以提供与企业操作有关的数据的推送数据或联合内容,例如RSS提要。
应用服务器920操作一个或多个应用。应用可以实现为以任何编程语言编写的一个或多个脚本或程序,例如Java、C、C++、C#或任何脚本语言,例如JavaScript或ECMAScript(欧洲计算机制造商协会脚本)、Perl、PHP(超文本预处理器)、Python、Ruby或TCL(工具命令语言)。可以使用库或应用框架构建应用,例如Rails、Enterprise JavaBeans或.NET。Web内容可以使用HTML(超文本标记语言)、CSS(层叠样式表)和其他Web技术(包括模板语言和解析器)创建。
在应用服务器920上运行的数据应用适于处理输入数据和用户计算机请求,并且可以存储或检索来自数据存储设备或数据库930的数据。数据库930存储由数据应用创建和使用的数据。在一个实施例中,数据库930包括关系数据库,其适于响应于SQL格式命令或其他数据库查询语言来存储、更新和检索数据。其他实施例可以使用非结构化数据存储架构和NoSQL(不仅是SQL)数据库。
在一个实施例中,应用服务器920包括能够运行程序或脚本的一个或多个通用计算机。在一个实施例中,web服务器910被实现为在一个或多个通用计算机上运行的应用。Web服务器910和应用服务器920可以在相同的计算机上组合和运行。
电子通信网络940-950使能用户计算机960-990、网络服务器910、应用服务器920和数据库930之间的通信。在一个实施例中,网络940-950还可包括任何形式的电或光通信设备。网络940-950还可以包括一个或多个局域网,例如以太网、广域网,例如因特网;蜂窝载波数据网络;以及虚拟网络,例如虚拟专用网络。
该系统是根据本申请实施例的用于运行应用的一个示例。在另一个实施例中,应用服务器910、web服务器920和可选的数据库930可以组合成单个服务器计算机应用和系统。在另一实施例中,虚拟化和虚拟机应用可用于实现应用服务器910、web服务器920和数据库930中的一个或多个。
在更进一步的实施例中,web和应用服务功能的全部或一部分可以集成到在用户计算机中的每一个上运行的应用中。例如,用户计算机上的JavaScript应用可用于检索或分析数据并显示应用的部分。
图8示出了示例计算设备500的框图,该示例计算设备500可以用于本文描述的实现。例如,计算设备500可以用于实现图7的服务器设备910、920以及执行本文描述的方法实现。在一些实现中,计算设备500可以包括处理器502、操作系统504、存储器506和输入/输出(I/O)接口508。在各种实现中,处理器502可以用于实现本文描述的各种功能和特征,以及执行本文描述的方法实现。虽然处理器502被描述为执行本文描述的实现,但系统500的任何合适的组件或组件的组合或与系统500或任何合适的系统相关联的任何合适的处理器可以执行所描述的步骤。这里描述的实现可以在用户设备上、在服务器上或两者的组合上执行。
计算设备500还包括软件应用510,其可以存储在存储器506上或任何其他合适的存储位置或计算机可读介质上。软件应用510提供使得处理器502能够执行本文描述的功能和其他功能的指令。计算设备500的组件可以由一个或多个处理器或硬件设备的任何组合以及硬件、软件、固件等的任何组合来实现。
为了便于说明,图8示出了处理器502、操作系统504、存储器506、I/O接口508和软件应用510中的每一个的一个块。这些块502、504、506、508和510可以表示多个处理器、操作系统、存储器、I/O接口和软件应用。在各种实现中,计算设备500可以不具有所示的所有组件和/或可以具有包括其他类型的组件的其他元件来代替或补充本文所示的那些组件。
尽管已经关于其特定实施例描述了说明书,但是这些特定实施例仅仅是说明性的而非限制性的。例如,虽然本文讨论的各种实施例采用JavaScript库来实现对服务器端计算资源的请求消息截获、缓存和同步重放,但是实施例不限于此。可以采用其他类型的编程语言(除了JavaScript之外),并且可以采用其他接口机制(除软件库之外)来实现根据本教导的实施例,而不脱离其范围。
可以使用任何合适的编程语言来实现特定实施例的例程,包括C、C++、Java、汇编语言等。可以采用不同的编程技术,例如过程或面向对象。例程可以在单个处理设备或多个处理器上运行。尽管可能以特定顺序呈现步骤、操作或计算,但是可以在不同的特定实施例中改变该顺序。在一些特定实施例中,可以同时执行在本说明书中按顺序示出的多个步骤。
特定实施例可以在计算机可读存储介质中实现,以供指令运行系统、装置、系统或设备使用或与其结合使用。特定实施例可以在软件或硬件或两者的组合中以控制逻辑的形式来实现。当由一个或多个处理器运行时,控制逻辑可以是可操作的,以执行在特定实施例中描述的控制逻辑。例如,诸如硬件存储设备之类的有形介质可用于存储控制逻辑,该控制逻辑可包括可运行指令。
可以通过使用编程的通用数字计算机,通过使用专用集成电路、可编程逻辑器件、现场可编程门阵列、光学系统、化学系统、生物系统、量子系统或纳米工程系统等来实现特定实施例。可以使用其他组件和机制。通常,特定实施例的功能可以通过本领域已知的任何手段来实现。可以使用分布式联网系统、组件和/或电路。可以使用云计算或云服务。数据的通信或传输可以是有线的、无线的或通过任何其他手段。
用于促进在间歇网络连接期间与网络资源通信的联网的软件应用的操作的示例装置包括:用于确定联网的软件应用何时离线以及何时在线的装置;用于在软件应用离线时选择性地截获来自联网的软件应用的寻址到网络资源的一个或多个请求消息、得到截获的请求消息的储存器的装置;用于检测联网的软件应用何时从离线转换为在线的装置;用于以一个或多个请求消息在截获的请求消息的储存器中存储的顺序选择性地向网络资源发出一个或多个请求消息的装置。
还应当理解,附图/图中描绘的元件中的一个或多个也可以以更加分离或集成的方式实现,或者甚至在某些情况下被移除或呈现为不可操作,如根据特定的应用有用的那样。实现可以存储在机器可读介质中以允许计算机执行上述任何方法的程序或代码也在本申请的精神和范围内。
“处理器”包括处理数据、信号或其他信息的任何合适的硬件和/或软件系统、机制或组件。处理器可以包括具有通用中央处理单元、多个处理单元、用于实现功能的专用电路的系统或其他系统。处理不必限于地理位置,或具有时间限制。例如,处理器可以以“实时”、“离线”、“批处理模式”等执行其功能。可以由不同(或相同)处理系统在不同时间和不同位置执行处理的部分。处理系统的示例可以包括服务器、客户端、终端用户设备、路由器、交换机、联网存储装置等。计算机可以是与存储器通信的任何处理器。存储器可以是任何合适的处理器可读存储介质,例如随机存取存储器(RAM)、只读存储器(ROM)、磁盘或光盘,或适合于存储由处理器运行的指令的其他有形介质。
除非上下文另有明确规定,否则如本文的说明书和随后的权利要求中所使用的,“一”、“一个”和“所述(the)”包括复数指代。此外,除非上下文另有明确规定,如本文的描述和随后的权利要求中所使用的,“在...中”的含义包括“在......中”和“在......上”。
因此,虽然本文已经描述了特定实施例,但是在前述公开内容中意图进行一定范围(latitudes)的修改、各种改变和替换,并且应当理解,在某些情况下,将采用特定实施例的一些特征而不相应使用其他特征,而不脱离所阐述的范围和精神。因此,可以进行许多修改以使特定情况或材料适应基本范围和精神。
Claims (32)
1.一种有形的处理器可读介质,包括可由一个或多个处理器运行的指令,并且当所述指令被运行时可操作用于:
确定联网的软件应用何时离线以及何时在线;
当所述软件应用离线时,选择性地截获来自所述联网的软件应用的寻址到网络资源的一个或多个请求消息,得到截获的请求消息的储存器;
检测所述联网的软件应用何时从离线转换为在线;以及
以所述一个或多个请求消息在所截获的请求消息的储存器中存储的顺序,选择性地向所述网络资源发出所述一个或多个请求消息。
2.如权利要求1所述的有形的处理器可读介质,其中,所述联网的软件应用包括浏览器。
3.如权利要求1所述的有形的处理器可读介质,其中,所述网络资源包括:
具象状态传输(REST)服务或应用编程接口(API),并且其中,所述联网的软件应用是REST服务的REST客户端或API。
4.如权利要求3所述的有形的处理器可读介质,其中,所述请求消息包括:
超文本传输协议(HTTP)请求消息。
5.如权利要求4所述的有形的处理器可读介质,其中,所述HTTP请求消息包括:
可扩展标记语言(XML)HTTP请求(XHR)。
6.如权利要求1所述的有形的处理器可读介质,其中,所截获的请求消息的储存器包括:
同步日志,其包括存储在所述同步日志中的每个截获的请求消息的时间戳。
7.如权利要求1所述的有形的处理器可读介质,其中,选择性地截获还包括:
仅截获满足经由配置范围指定的一个或多个预定条件的请求消息。
8.如权利要求1所述的有形的处理器可读介质,其中,选择性地发出还包括:
生成对所述一个或多个截获的请求消息中的每一个的一个或多个模拟响应;以及
响应于截获所述一个或多个请求消息,向所述联网的软件应用发出所述一个或多个模拟响应。
9.如权利要求1所述的有形的处理器可读媒体,其中,所述软件应用包括客户端应用,并且其中,所述可由一个或多个处理器运行的指令还可操作用于:
在运行客户端应用的客户端设备上维护本地存储装置,其中,所述本地存储装置包括从在客户端应用和服务器之间交换的一个或多个消息获得的数据;
使用软件框架对客户端设备上的所述本地存储装置进行建模,就像它表示服务器的远程存储数据一样,以便在所述客户端应用离线时选择性地提供本地生成的对所述客户端应用发出的请求消息的响应消息;
根据所述请求消息记录对所述本地存储装置的任何改变;以及
收集本地处理的所述请求消息的排序记录。
10.如权利要求1所述的有形的处理器可读媒体,其中,所述可由一个或多个处理器运行的指令还可操作以用于:
检测同步信号;以及
响应于所述检测,通过向所述服务器回放所述请求消息的排序记录,至少部分地来使所述服务器的远程存储数据与本地存储装置同步。
11.如权利要求10所述的有形的处理器可读媒体,其中,所述同步信号在所述客户端应用从离线转换为在线时生成。
12.一种促进在间歇网络连接期间与网络资源通信的联网的软件应用的操作的方法,所述方法包括:
确定所述联网的软件应用何时离线以及何时在线;
当所述软件应用离线时,选择性地截获来自所述联网的软件应用的寻址到网络资源的一个或多个请求消息,得到截获的请求消息的储存器;
检测所述联网的软件应用何时从离线转换为在线;以及
以所述一个或多个请求消息在所截获的请求消息的储存器中存储的顺序,选择性地向所述网络资源发出所述一个或多个请求消息。
13.如权利要求12所述的方法,其中,所述联网的软件应用包括浏览器。
14.如权利要求12所述的方法,其中,所述网络资源包括:
具象状态传输(REST)服务或应用编程接口(API),并且其中,所述联网的软件应用是REST服务的REST客户端或API。
15.如权利要求14所述的方法,其中,所述请求消息包括:
超文本传输协议(HTTP)请求消息。
16.如权利要求15所述的方法,其中,所述HTTP请求消息包括:
可扩展标记语言(XML)HTTP请求(XHR)。
17.如权利要求12所述的方法,其中,所截获的请求消息的储存器包括:
同步日志,其包括存储在所述同步日志中的每个截获的请求消息的时间戳。
18.如权利要求12所述的方法,其中,选择性地截获还包括:
仅截获满足经由配置范围指定的一个或多个预定条件的请求消息。
19.如权利要求12所述的方法,其中,选择性地发出还包括:
生成对所述一个或多个截获的请求消息中的每一个的一个或多个模拟响应;以及
响应于截获一个或多个请求消息,向所述联网的软件应用发出所述一个或多个模拟响应。
20.如权利要求12所述的方法,其中,所述软件应用包括客户端应用,并且其中,所述方法还包括:
在运行所述联网的软件应用的客户端设备上维护本地存储装置,所述客户端设备包括客户端应用,其中,所述本地存储装置包括从在所述客户端应用和服务器之间交换的一个或多个消息获得的数据;
使用软件框架对客户端设备上的所述本地存储装置进行建模,就像它表示服务器的远程存储数据一样,以便在所述客户端应用离线时选择性地提供本地生成的对客户端应用发出的请求消息的响应消息;
根据所述请求消息记录对所述本地存储装置的任何改变;以及
收集本地处理的请求消息的排序记录;
检测同步信号;以及
响应于所述检测,通过向所述服务器回放所述请求消息的排序记录,至少部分地来使所述服务器的远程存储数据与本地存储装置同步。
21.如权利要求20所述的方法,其中,所述同步信号在所述客户端应用从离线转换为在线时生成。
22.一种用于促进在间歇网络连接期间与网络资源通信的联网的软件应用的操作的装置,该装置包括:
一个或多个处理器;以及
编码在一个或多个有形的介质中以供所述一个或多个处理器运行的逻辑,并且当所述逻辑被运行时可操作用于:
确定所述联网的软件应用何时离线以及何时在线;
当所述软件应用离线时,选择性地截获来自联网的软件应用的寻址到网络资源的一个或多个具象状态传输(REST)请求消息,得到截获的请求消息的储存器,其中,所截获的请求消息的储存器维护存储所述一个或多个截获的REST请求消息的顺序的记录;
检测所述联网的软件应用何时从离线转换为在线;以及
响应于所述检测,以所述一个或多个REST请求消息在所截获的请求消息的储存器中存储的顺序,选择性地向所述网络资源发出所述一个或多个请求消息。
23.一种用于促进在间歇网络连接期间与网络资源通信的联网的软件应用的操作的设备,所述设备包括:
用于确定联网的软件应用何时离线以及何时在线的装置;
用于在所述软件应用离线时选择性地截获来自所述联网的软件应用的寻址到网络资源的一个或多个请求消息,得到截获的请求消息的储存器的装置;
用于检测所述联网的软件应用何时从离线转换为在线的装置;以及
用于以所述一个或多个请求消息在所截获的请求消息的储存器中存储的顺序,选择性地向所述网络资源发出所述一个或多个请求消息的装置。
24.如权利要求23所述的设备,其中,所述联网的软件应用包括浏览器。
25.如权利要求23所述的设备,其中,所述网络资源包括:
具象状态传输(REST)服务或应用编程接口(API),并且其中,所述联网的软件应用是REST服务的REST客户端或API。
26.如权利要求25所述的设备,其中,所述请求消息包括:
超文本传输协议(HTTP)请求消息。
27.如权利要求26所述的设备,其中,所述HTTP请求消息包括:
可扩展标记语言(XML)HTTP请求(XHR)。
28.如权利要求23所述的设备,其中,所截获的请求消息的储存器包括:
同步日志,其包括存储在所述同步日志中的每个截获的请求消息的时间戳。
29.如权利要求23所述的设备,其中,用于选择性地截获的装置还包括:
用于仅截获满足经由配置范围指定的一个或多个预定条件的请求消息的装置。
30.如权利要求23所述的设备,其中,用于选择性地发出的装置还包括:
用于为所述一个或多个截获的请求消息中的每一个生成一个或多个模拟响应的装置;以及
用于响应于截获一个或多个请求消息,向联网的软件应用发出一个或多个模拟响应的装置。
31.如权利要求23所述的设备,其中,所述软件应用包括客户端应用,并且其中,还包括:
用于在运行所述客户端应用的客户端设备上维护本地存储装置的装置,其中,所述本地存储装置包括从在所述客户端应用和服务器之间交换的一个或多个消息获得的数据;
用于使用软件框架对客户端设备上的所述本地存储装置进行建模,就像它表示服务器的远程存储数据一样,以便在客户端应用离线时选择性地提供本地生成的对所述客户端应用发出的请求消息的响应消息的装置,
用于基于所述请求消息记录对本地存储装置的任何改变的装置;以及
用于收集本地处理的请求消息的排序记录的装置;
用于检测同步信号的装置;以及
用于响应于检测,通过向所述服务器回放所述请求消息的排序记录,至少部分地来使所述服务器的远程存储数据与本地存储装置同步的装置。
32.如权利要求31所述的设备,其中,所述同步信号在所述客户端应用从离线转换为在线时生成。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862739536P | 2018-10-01 | 2018-10-01 | |
US62/739,536 | 2018-10-01 | ||
US16/439,398 | 2019-06-12 | ||
US16/439,398 US11070648B2 (en) | 2018-10-01 | 2019-06-12 | Offline client replay and sync |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110971655A true CN110971655A (zh) | 2020-04-07 |
CN110971655B CN110971655B (zh) | 2022-09-30 |
Family
ID=69946747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910915128.3A Active CN110971655B (zh) | 2018-10-01 | 2019-09-26 | 离线客户端重放和同步 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11070648B2 (zh) |
CN (1) | CN110971655B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111881150A (zh) * | 2020-09-24 | 2020-11-03 | 深圳市互联工场科技有限公司 | 一种web应用程序离线数据的处理方法及装置 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10877825B2 (en) | 2018-10-04 | 2020-12-29 | Oracle International Corporation | System for offline object based storage and mocking of rest responses |
US11256556B2 (en) * | 2020-05-05 | 2022-02-22 | Salesforce.Com, Inc. | Systems and methods for generating an API caching library using a shared resource file |
US11178227B1 (en) * | 2020-11-13 | 2021-11-16 | Vmware, Inc. | Efficient resynchronization for stale components of geographically distributed computing systems |
US11216271B1 (en) | 2020-12-10 | 2022-01-04 | Servicenow, Inc. | Incremental update for offline data access |
US11269618B1 (en) | 2020-12-10 | 2022-03-08 | Servicenow, Inc. | Client device support for incremental offline updates |
CN112559220A (zh) * | 2020-12-22 | 2021-03-26 | 广州技象科技有限公司 | 一种物联网离线消息发送方法、装置、设备及存储介质 |
GB202110147D0 (en) | 2021-07-14 | 2021-08-25 | Graphcore Ltd | time deterministic trace |
GB202110155D0 (en) | 2021-07-14 | 2021-08-25 | Graphcore Ltd | GSP trace unit |
CN113726770B (zh) * | 2021-08-30 | 2023-06-30 | 平安国际融资租赁有限公司 | 数据拦截方法、装置、计算机设备及存储介质 |
US11422829B1 (en) | 2021-11-17 | 2022-08-23 | Morgan Stanley Services Group Inc. | Systems and methods for resilient service worker bridge |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1262490A (zh) * | 1999-01-28 | 2000-08-09 | 国际商业机器公司 | 为离线客户请求提供响应的方法及装置 |
US20060004927A1 (en) * | 2004-07-02 | 2006-01-05 | Oracle International Corporation | Systems and methods of offline processing |
CN105144137A (zh) * | 2012-12-19 | 2015-12-09 | 亚马逊科技公司 | 基于重新加载事件对网络资源进行的交互性分析 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020083145A1 (en) * | 2000-12-22 | 2002-06-27 | Nortel Networks Limited | Method and system for online/offline services |
US7818365B2 (en) * | 2002-05-01 | 2010-10-19 | Sybase, Inc. | System, method, and computer program product for online and offline interactive applications on mobile devices |
US20080086540A1 (en) * | 2006-10-06 | 2008-04-10 | James Scott | Method and system for executing a normally online application in an offline mode |
US7899917B2 (en) * | 2007-02-01 | 2011-03-01 | Microsoft Corporation | Synchronization framework for occasionally connected applications |
US8347405B2 (en) * | 2007-12-27 | 2013-01-01 | International Business Machines Corporation | Asynchronous java script and XML (AJAX) form-based authentication using java 2 platform enterprise edition (J2EE) |
US8516080B2 (en) * | 2008-12-03 | 2013-08-20 | Mobophiles, Inc. | System and method for providing virtual web access |
-
2019
- 2019-06-12 US US16/439,398 patent/US11070648B2/en active Active
- 2019-09-26 CN CN201910915128.3A patent/CN110971655B/zh active Active
-
2021
- 2021-06-02 US US17/337,072 patent/US11477298B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1262490A (zh) * | 1999-01-28 | 2000-08-09 | 国际商业机器公司 | 为离线客户请求提供响应的方法及装置 |
US20060004927A1 (en) * | 2004-07-02 | 2006-01-05 | Oracle International Corporation | Systems and methods of offline processing |
CN105144137A (zh) * | 2012-12-19 | 2015-12-09 | 亚马逊科技公司 | 基于重新加载事件对网络资源进行的交互性分析 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111881150A (zh) * | 2020-09-24 | 2020-11-03 | 深圳市互联工场科技有限公司 | 一种web应用程序离线数据的处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US11070648B2 (en) | 2021-07-20 |
US11477298B2 (en) | 2022-10-18 |
US20200106860A1 (en) | 2020-04-02 |
US20210289045A1 (en) | 2021-09-16 |
CN110971655B (zh) | 2022-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110971655B (zh) | 离线客户端重放和同步 | |
US10924574B2 (en) | Systems and methods for managing loading priority or sequencing of fragments of a web object | |
US11436066B2 (en) | System for offline object based storage and mocking of rest responses | |
US10908977B1 (en) | Efficient message queuing service | |
US9961129B2 (en) | Business transaction correlation with client request monitoring data | |
US11233841B2 (en) | Systems and methods for configuration-based optimization by an intermediary | |
CA2943128C (en) | Computer system to support failover in an event stream processing system | |
EP2302509A2 (en) | Synchronization of server-side cookies with client-side cookies | |
JP2017084334A (ja) | 仮想マシンイメージファイルを抽出する方法および装置 | |
US11657582B1 (en) | Precise plane detection and placement of virtual objects in an augmented reality environment | |
US11340970B2 (en) | Distributed queueing over a Redis cluster | |
US20220342518A1 (en) | Card-based information management method and system | |
CN102508843A (zh) | 具有微博发布功能的截图方法及系统 | |
CN111177618A (zh) | 网站搭建方法、装置、设备及计算机可读存储介质 | |
US20150188999A1 (en) | System and method to extend the capabilities of a web browser to improve the web application performance | |
CN108701130A (zh) | 使用自动浏览群集更新提示模型 | |
CN111338893A (zh) | 进程日志处理方法、装置、计算机设备以及存储介质 | |
US11522974B2 (en) | Restful method and apparatus to import content by geo-aware content caching service | |
US10311160B2 (en) | Cloud search analytics | |
US10827035B2 (en) | Data uniqued by canonical URL for rest application | |
US20140189044A1 (en) | Preemptive caching of data | |
US20150089018A1 (en) | Centralized management of webservice resources in an enterprise | |
CN111552643A (zh) | 多浏览器网页访问同步方法、系统 | |
US10949487B2 (en) | Systems and methods for accessing computing device resources | |
CN116962132A (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 |