首页 / 专利库 / 软件 / 可联网软件 / 用于基于离线对象的存储和模拟REST响应的系统

用于基于离线对象的存储和模拟REST响应的系统

阅读:47发布:2020-05-12

专利汇可以提供用于基于离线对象的存储和模拟REST响应的系统专利检索,专利查询,专利分析的服务。并且示例系统和方法通过选择性地截获和碎化和/或解碎化服务响应消息,促进联网的 软件 应用(即在间歇网络连接期间与网络资源(例如,web服务)通信的客户端应用)的操作。在特定 实施例 中,示例系统包括一个或多个可插拔的碎化机和解碎化机,其用于将复杂的具象状态传输(REST)有效 载荷 炸裂成其组成结构化基元对象,以易于客户端应用的 用户界面 (UI)使用。所述炸裂的(即碎化的)响应消息有效载荷存储在本地缓存中,其中,与所述接收的REST有效载荷相比,所述缓存的数据被策略性地构造。如果客户端在离线时重新发出相应的REST 请求 消息,则一个或多个解碎化机有选择地重建一个或多个REST响应消息有效载荷。因此,所述客户端不需要根据所述客户端是在线还是离线来改变其活动。相反,所述客户端可以如同总是在线一样操作,并且所述系统将提供一个或多个模拟响应,其包含无法到达 服务器 (即,当客户端离线时)的场景的最后已知数据集。,下面是用于基于离线对象的存储和模拟REST响应的系统专利的具体信息内容。

1.一种有形的处理器可读介质,包括可由一个或多个处理器运行的指令,并且当被运行时可操作用于:
选择性地截获来自网络资源的一个或多个请求消息响应,所述一个或多个请求消息响应已经由网络资源响应于客户端软件应用发出的一个或多个请求消息而发出;
通过将所述一个或多个请求消息响应解析为一个或多个预定的结构化格式来碎化所述一个或多个请求消息响应;
将所述一个或多个预定的结构化格式中的每一个存储在本地缓存中;以及通过发出用于格式化所述一个或多个请求消息响应的一个或多个有效载荷中的数据的相应的一个或多个预定的结构化格式,向所述客户端软件应用发出所述一个或多个请求消息响应。
2.如权利要求1所述的有形的处理器可读介质,其中,所述一个或多个预定的结构化格式包括所述一个或多个请求消息响应中的每个有效载荷的组成结构化基元对象的组织。
3.如权利要求1所述的有形的处理器可读介质,其中,选择性地截获还包括:
确定所述客户端软件应用在线;以及
当所述客所述户端软件应用在线时截获所述一个或多个请求消息响应。
4.如权利要求1所述的有形的处理器可读介质,还包括:
确定所述客户端软件应用离线;
检测由所述客户端软件应用发出的一个或多个请求消息;以及
使用所述一个或多个预定的结构化格式和相关联的数据来生成对所述一个或多个请求消息的一个或多个模拟响应;以及
向所述客户端软件应用发出所述一个或多个模拟响应。
5.如权利要求4所述的有形的处理器可读介质,其中,使用还包括将所述一个或多个预定的结构化格式解碎化成与原始请求消息响应一致的格式。
6.如权利要求1所述的有形的处理器可读介质,其中,所述网络资源包括具象状态传输(REST)应用编程接口(API)或服务。
7.如权利要求6所述的有形的处理器可读介质,其中,所述一个或多个请求消息响应包括一个或多个REST响应消息。
8.如权利要求1所述的有形的处理器可读介质,其中,所述可由一个或多个处理器运行的指令还可操作用于:
从在客户端设备上运行的客户端应用接收请求消息,其中,所述请求消息与对象的数据有关;
确定所述客户端设备是在线还是离线,并且:
当所述客户端设备在线时,使用所述请求消息从服务器检索响应消息,所述响应消息包括与所述对象有关的数据,得到检索到的数据,所述数据是根据所述请求消息检索到的;
碎化所述响应消息,得到所述检索到的数据的碎化版本;
将所述检索到的数据的碎化版本本地存储在客户端设备上;以及
当所述客户端设备离线时,响应于所述请求消息,通过检索到的数据的碎化版本生成模拟响应消息,所述模拟响应消息看起来好像是来自服务器的REST响应消息。
9.如权利要求8所述的有形的处理器可读介质,其中,所述可由一个或多个处理器运行的指令还可操作用于:
将所述检索到的数据的碎化版本存储在客户端设备的对象存储器中。
10.如权利要求9所述的有形的处理器可读介质,其中,所述客户端设备包括移动计算设备,并且其中,所述请求消息包括用于创建、检索、更新或删除计算对象的数据的REST请求消息。
11.一种用于促进联网的计算环境中的客户端软件应用的操作的方法,所述方法包括:
选择性地截获来自网络资源的一个或多个请求消息响应,所述一个或多个请求消息响应已经由所述网络资源响应于由客户端软件应用发出的一个或多个请求消息而发出;
通过将所述一个或多个请求消息响应解析为一个或多个预定的结构化格式来碎化所述一个或多个请求消息响应;
将所述一个或多个预定的结构化格式中的每一个存储在本地缓存中;以及通过发出用于格式化所述一个或多个请求消息响应的一个或多个有效载荷中的数据的相应的一个或多个预定的结构化格式,向所述客户端软件应用发出所述一个或多个请求消息响应。
12.如权利要求11所述的方法,其中,所述一个或多个预定的结构化格式包括所述一个或多个请求消息响应中的每个有效载荷的组成结构化基元对象的组织。
13.如权利要求11所述的方法,其中,选择性地截获还包括:
确定所述客户端软件应用在线;以及
当所述客户端软件应用在线时截获所述一个或多个请求消息响应。
14.如权利要求11所述的方法,还包括:
确定所述客户端软件应用离线;
检测由所述客户端软件应用发出的一个或多个请求消息;以及
使用所述一个或多个预定的结构化格式和相关联的数据来生成对所述一个或多个请求消息的一个或多个模拟响应;以及
向所述客户端软件应用发出所述一个或多个模拟响应。
15.如权利要求14所述的方法,其中,使用还包括将所述一个或多个预定的结构化格式解碎化成与原始请求消息响应一致的格式。
16.如权利要求11所述的方法,其中,所述网络资源包括具象状态传输(REST)应用编程接口(API)或服务。
17.如权利要求16所述的方法,其中,所述一个或多个请求消息响应包括一个或多个REST响应消息。
18.如权利要求11所述的方法,还包括:
从在客户端设备上运行的客户端应用接收请求消息,其中,所述请求消息与对象的数据有关;
确定所述客户端设备是在线还是离线,并且:
当所述客户端设备在线时,使用所述请求消息从服务器检索响应消息,所述响应消息包括与对象有关的数据,得到检索到的数据,所述数据是根据所述请求消息检索到的;
碎化所述响应消息,得到所述检索到的数据的碎化版本;
将所述检索到的数据的碎化版本本地存储在客户端设备上;以及
当所述客户端设备离线时,响应于所述请求消息,经由检索到的数据的碎化版本生成模拟响应消息,所述模拟响应消息看起来好像是来自服务器的REST响应消息。
19.如权利要求18所述的方法,还包括:
将所述检索到的数据的所述碎化版本存储在所述客户端设备的对象存储器中。
20.一种装置,包括:
一个或多个处理器;以及
编码在一个或多个有形的介质中以供所述一个或多个处理器运行的逻辑,并且当所述逻辑被运行时可操作用于:
选择性地截获来自网络资源的一个或多个请求消息响应,所述一个或多个请求消息响应已经由所述网络资源响应于客户端软件应用发出的一个或多个请求消息而发出;
通过将所述一个或多个请求消息响应解析为一个或多个预定的结构化格式来碎化所述一个或多个请求消息响应,其中,所述预定的结构化格式包括所述一个或多个请求消息响应的每个有效载荷的组成结构化基元对象的组织;
将所述一个或多个预定的结构化格式中的每一个存储在本地缓存中;以及通过发出用于格式化所述一个或多个请求消息响应的一个或多个有效载荷中的数据的相应的一个或多个预定的结构化格式,向所述客户端软件应用发出所述一个或多个请求消息响应。
21.一种用于在联网的计算环境中实现客户端软件应用的用户设备,包括:
显示器,用于显示用户界面,使用户能够与所述客户端软件应用交互;
一个或多个处理器,耦接到所述显示器,并且当运行时可操作用于:
使得所述客户端软件应用能够通过所述用户界面接收一个或多个请求消息;
使所述显示器显示一个或多个请求消息响应,
其中,通过发出用于格式化所述一个或多个请求消息响应的一个或多个有效载荷中的数据的相应的一个或多个预定的结构化格式,向所述客户端软件应用发出所述一个或多个请求消息响应。
22.如权利要求21所述的用户设备,其中,所述一个或多个预定的结构化格式包括所述一个或多个请求消息响应的每个有效载荷的组成结构化基元对象的组织。
23.如权利要求21所述的用户设备,其中:
确定所述客户端软件应用是否在线;以及
当所述客户端软件应用在线时,从网络资源截获所述一个或多个请求消息响应。
24.如权利要求21所述的用户设备,其中:
确定所述客户端软件应用是否离线;
所述一个或多个预定的结构化格式和相关联的数据用于生成对所述一个或多个请求消息的一个或多个模拟响应;以及
将所述一个或多个模拟响应发出到所述客户端软件应用。
25.如权利要求21所述的用户设备,其中,所述一个或多个预定的结构化格式中被解碎化为与原始请求消息响应一致的格式。
26.如权利要求23所述的用户设备,其中,所述网络资源包括具象状态传输(REST)应用编程接口(API)或服务。
27.如权利要求26所述的用户设备,其中,所述一个或多个请求消息响应包括一个或多个REST响应消息。
28.如权利要求21所述的用户设备,其中,
所述请求消息与对象的数据有关;
确定所述用户设备是在线还是离线,并且:
当所述用户设备在线时,所述请求消息用于从服务器检索响应消息,所述响应消息包括与对象有关的数据,得到检索到的数据,所述数据是根据所述请求消息检索到的;
碎化所述响应消息,得到所述检索到的数据的碎化版本;
所述检索到的数据的碎化版本本地存储在用户设备上;以及
当所述用户设备离线时,响应于所述请求消息,经由所述检索到的数据的碎化版本生成模拟响应消息,所述模拟响应消息看起来好像是来自服务器的REST响应消息。
29.如权利要求28所述的用户设备,还包括:
对象存储器,用于存储所述检索到的数据的碎化版本。

说明书全文

用于基于离线对象的存储和模拟REST响应的系统

[0001] 相关申请的交叉引用
[0002] 本申请要求于2019年6月12日提交的题为“SYSTEM FOR OFFLINE OBJECT BASED STORAGE AND MOCKING OF REST RESPONSES”的序列号为16/439,420美国专利申请以及于2018年10月4日提交的题为“SYSTEM FOR OFFLINE OBJECT BASED STORAGE AND MOCKING OF REST RESPONSES”的序列号为62/741,135的美国临时专利申请的权益,通过引用并入本文,如同出于所有目的完全在本申请中阐述一样。
[0003] 本申请还涉及于2018年10月1日提交的题为“OFFLINE CLIENT REPLAY AND SYNC”的序列号为62/739,536的美国临时专利申请,通过引用并入本文,如同出于所有目的完全在本申请中阐述一样。

技术领域

[0004] 本申请涉及计算,并且更具体地,涉及用于促进可以有效地处理间歇网络连接(intermittent network connectivity)的联网的软件应用(application)的开发和操作的系统和方法。

背景技术

[0005] 用于适于(accommodating)间歇或有限网络连接的软件机制被采用于各种要求高的应用中,包括移动企业应用、汽车计算应用等。这些应用通常需要有效的机制来适于网络断开和重连场景。
[0006] 例如,某些现场服务工作者使用的移动应用可能在长时间内丢失网络连接。传统上,浏览器可以在本地缓存给定网页或应用的一些数据,但是缓存的数据可能对某些所需的软件操作或功能的用处有限。
[0007] 例如,如果现场工作者必须访问未包括在给定缓存页面中的其他链接或数据,则必须首先建立网络连接。但是,等待移动应用重连到网络可能是耗时且适得其反的。发明内容
[0008] 示例性方法通过选择性地碎化(shred)和解碎化(unshred)(也称为去碎化(de-shred))消息有效载荷来促进在离线和在线操作期间网络计算环境中的客户端软件应用的有效操作。该示例方法包括:选择性地截获来自网络资源的一个或多个请求消息响应,该一个或多个请求消息响应已经由网络资源响应于客户端软件应用发出的一个或多个请求消息而发出;通过将一个或多个请求消息响应解析为一个或多个预定的结构化格式来碎化一个或多个请求消息响应;将所述一个或多个预定的结构化格式中的每一个存储在本地缓存(可以包括对象存储器)中;通过发出用于格式化所述一个或多个请求消息响应的一个或多个有效载荷中的数据的相应的一个或多个预定的结构化格式,向客户端软件应用发出一个或多个请求消息响应。
[0009] 在更具体的实施例中,预定的结构化格式包括一个或多个请求消息响应的每个有效载荷的组成结构化基元对象的组织。选择性截获的步骤还包括:确定客户端软件应用在线;当客户端软件应用在线时截获一个或多个请求消息响应。
[0010] 该示例方法还可以包括:确定客户端软件应用离线;检测客户端软件应用发出的一个或多个请求消息;并使用一个或多个预定的结构化格式和相关联的数据来生成对一个或多个请求消息的一个或多个模拟响应;并向客户端软件应用发出所述一个或多个模拟响应。
[0011] 使用一个或多个预定的结构化格式的步骤还可以包括,将一个或多个预定的结构化格式解碎化成与原始请求消息响应一致的格式。
[0012] 因此,本文讨论的某些实施例可以经由具有可插拔的碎化机和解碎化机的系统来实现,该系统用于选择性地炸裂(explode)或解炸裂(unexplode)(即,碎化或解碎化)复杂的REST有效载荷到其组成结构化基元对象中以易于客户端的UI使用。碎化的消息以比整个REST有效负载被简单缓存的格式更加结构化的格式在本地缓存。当客户端在离线时重新发出请求时,解碎化促进重建有效载荷,使得客户端不需要基于在线/离线状态做出关于做什么的决定。相反,客户端可以像在线一样操作。系统可以提供对请求消息的一个或多个模拟响应,其中一个或多个模拟响应包含客户端无法到达服务器(托管网络资源)(即客户端离线时)的场景的最后已知数据集。
[0013] 示例用户设备促进在离线和在线操作期间在联网的计算环境中有效地操作客户端软件应用。用于在联网的计算环境中实现客户端软件应用的用户设备包括:显示器,用于显示使用户能够与客户端软件应用交互的用户界面;一个或多个处理器,耦接到显示器,并且当被运行时可操作用于:使客户端软件应用能够通过用户界面接收一个或多个请求消息;使显示器能够显示一个或多个请求消息响应,并且通过发出用于格式化一个或多个请求消息响应的一个或多个有效载荷中的数据的相应的一个或多个预定的结构化格式,将一个或多个请求消息响应发出到客户端软件应用。
[0014] 此外,本文讨论的实施例提供了用于将HTTP请求/响应转换为结构化数据的框架,该结构化数据易于持久化并且容易被客户端软件查询,从而使得业务对象和业务逻辑之间能够易于转换。
[0015] 通过参考说明书的其余部分和附图,可以实现对本文公开的特定实施例的本质和优点的进一步理解。

附图说明

[0016] 图1是显示第一示例系统和伴随计算环境的框图,该第一示例系统和伴随计算环境用于促进根据客户端是离线还是在线,选择性碎化和解碎化REpresentational State Transfer(具象状态传输,REST)应用编程接口(API)或web服务对由客户端软件应用(例如,浏览器,本文也简称为客户端)发出的请求消息的响应。
[0017] 图2是显示第二示例系统和伴随计算环境的框图,该第二示例系统和伴随计算环境进一步示出了图1的离线持久性工具包的实现的示例细节,包括可插拔的碎化机(shredder)、解碎化机(unshredder)和用于存储来自碎化的REST响应消息有效负载的结构化数据的缓存。
[0018] 图3是可与图1-图2的实施例一起使用的第一示例方法的流程图
[0019] 图4是显示图1的持久性工具包的实现的第三示例实施例的框图,其进一步示出了客户端应用和持久性工具包之间的示例交互,该交互涉及生成对从客户端应用发送的请求消息的模拟响应。
[0020] 图5是可与图1-图4的实施例一起使用的第二示例方法的流程图。
[0021] 图6是可用于实现图1-图3的实施例的系统和伴随计算环境的总体框图。
[0022] 图7是可用于实现图1-图3的实施例的计算设备的总体框图。

具体实施方式

[0023] 出于本讨论的目的,计算环境可以是用于执行涉及计算机处理的一个或多个任务的任何计算资源集合。计算机可以是与存储器通信的任何处理器。计算资源可以是计算环境的任何组件、机制或能或其数量,包括但不限于处理器、存储器、软件应用、用户输入设备和输出设备、服务器等。
[0024] 企业计算环境可以是用于业务或组织的任何计算环境。示例企业计算环境包括分布在网络上的各种计算资源,并且还可以包括Intranet Web服务器上的私有和共享内容、数据库、本地硬盘或文件服务器上的文件、电子邮件系统、文档管理系统、户等。
[0025] 给定的软件应用可以包括(但不一定)组成软件应用或模(例如,服务、功能、过程、计算对象等)。因此,术语“软件应用”还可以包括联网的软件应用或其集成的组。
[0026] 软件系统可以是实现机器可读指令(即计算机代码)的任何计算资源集合。因此,术语“软件系统”可以指代软件应用,并且取决于使用该术语的上下文,还可以指代用于运行软件应用的伴随的计算机(多个)和相关联的计算资源。
[0027] 根据使用该术语的上下文,软件系统还可以包括硬件固件和其他能够运行软件应用的计算资源。注意,某些软件系统可以包括不同服务的集合,其根据处理模板和伴随的逻辑以特定顺序实现。因此,术语“软件系统”、“系统”和“软件应用”在本文中可互换使用,以指代用于计算机处理的模块或模块组或计算资源。
[0028] 出于本讨论的目的,服务器可以是任何计算资源,诸如被适配为向请求内容的另一计算资源或实体(即客户)提供内容(例如,数据和/或功能)的计算机和/或软件。客户端可以是被适配为从另一计算机或系统(称为服务器)接收内容的任何计算机或系统。面向服务的体系结构(Service Oriented Architecture,SOA)服务器可以是被适配为促进提供对耦接到网络的一个或多个客户端计算机可访问的服务的任何服务器。
[0029] 应用服务器可以是包括用于运行可以向一个或多个客户端设备提供数据和/或功能的软件应用的计算资源的任何服务器。应用服务器可以支持在一个或多个web服务器上运行的一个或多个web页面,其中web页面促进提供UI控件以使得客户端设备的用户能够使用客户端与底层应用服务器提供的功能和在其上运行和/或由其存储的应用和/或数据进行交互。因此,可以经由软件框架(和/或支持软件框架的硬件,取决于使用该术语的上下文)来实现应用服务器,以提供计算资源用于支持创建和运行包括Web服务、API、数据库应用等的软件应用,例如,Web应用,这些软件应用提供数据和/或功能给其他软件应用,称为客户端应用(或简称客户端)。
[0030] 联网的计算环境可以是包括相互通信计算机的任何计算环境,即计算机网络。类似地,联网的软件应用可以是计算机代码,其被适配为促进经由网络与一个或多个计算资源(例如,服务器)通信或以其他方式使用。类似地,联网的软件应用可以是经由计算机网络与一个或多个计算资源通信的任何软件应用(例如,移动应用、桌面浏览器插件等)。
[0031] Web服务可以是任何计算机代码和相关联的功能,其被适配为由其代码存储在单独于软件服务的位置(例如,在另一计算机或存储器存储位置或设备上)并且其与软件服务的接口包括Web服务描述语言(Web Services Description Language,WSDL)接口的应用或其他服务或进程调用。
[0032] 通常,web服务(在本文也简称为服务)提供可由不同应用、进程或web服务(可以分布在网络上)重用的功能,例如,能力,其经由与Web服务的描述一致的WSDL接口访问功能。Web服务模型可以表示松散耦接的集成模型,以允许灵活地集成各种网络分布式应用或进程。
[0033] 用户界面可以是被适配为便于说明数据和/或提供对与用户界面相关联的软件功能的访问的任何硬件和/或软件集合。软件用户界面可以是与软件相关联的一个或多个用户界面显示屏幕的任何集合,其可以显示在诸如用户设备或服务器设备的计算设备的显示器上。软件UI通常以UI框架或体系结构为特征,其指定软件应用的数据和功能的组织,并且还可以包括用于导航软件UI的特征。
[0034] 为清楚起见,某些众所周知的组件,如硬盘驱动器、处理器、操作系统、电源、路由器、互联网(Internet)、互联网服务提供商(Internet Service Providers,ISP)、虚拟机中间件、JavaServer Faces(JSF)框架和Java小程序(servlet)、某些类型的元数据服务提供程序、运行时服务连接器、持久性管理器、元数据转换实用程序、身份验证模块、身份提供程序、令牌验证程序、异步JavaScript和XML(AJAX)引擎、后端数据库等,未必在图中明确指出。然而,能够访问本教导的本领域技术人员将知道要实现哪些组件以及如何实现它们以满足给定实现的需要。
[0035] 图1是显示第一示例系统和伴随计算环境的框图,该第一示例系统和伴随计算环境用于促进根据客户端12是离线还是在线,选择性碎化和解碎化具象状态传输(REpresentational State Transfer,REST)应用编程接口(API)或web服务对由客户端软件应用(例如,浏览器,本文也简称为客户端)12发出的请求消息的响应。
[0036] 示例系统包括连接客户端12和服务器系统14的离线持久性工具包16。客户端12向后端服务器系统12的计算资源28发出HTTP请求消息,后端服务器系统12是较大服务器系统14(例如,)的一部分。网络服务器20托管网站26和相关联的网络应用(即网页代码)。网页代码26促进在客户端12上呈现的UI的生成(例如,基于HTML和JavaScript)。用户通过UI与客户端12的交互可以生成得到发出HTTP请求的事件,其可以包括使用JavaScript对象表示(JavaScript Object Notation,JSON)有效负载的XHR(XML HTTP请求)请求。
[0037] 通常,当客户端12在线时,即连接到使得客户端能够与服务器系统14通信的网络(诸如因特网)时,请求消息经由来自网页代码26的相应的REST消息被路由到REST服务28。然后,REST服务28发出响应,该响应被传递回客户端12。
[0038] 当客户端12转变到离线状态时,例如,客户端12与相关联的网络断开连接,将客户端12与服务器系统14接口的离线持久性工具包16促进处理客户端响应,就好像离线持久工具包16充当服务器系统14一样,例如,通过响应于来自客户端应用12的截获的请求消息来建模服务器响应消息(经由模拟响应(mock response)),如下面更全面地讨论的。
[0039] 离线持久性工具包16可以在客户端实现,即在客户端12运行的客户端设备上实现。在某些实现中,离线持久性工具包16作为客户端软件应用12的插件运行。
[0040] 离线持久性工具包16包括消息碎化和解碎化系统18,其具有用于选择性地碎化来自服务器系统14的传入响应消息的功能。响应消息被碎化成促进客户端12和相关联的UI使用的结构化形式。可以通过碎化和解碎化系统18缓存碎化消息,从而使系统18的解碎化机能够访问碎化消息并重建它们,例如,以便当客户端12离线时生成用于传递到客户端12的模拟响应。
[0041] 注意,出于本讨论的目的,缓存可以是用于本地存储数据以促进给定软件操作、任务或目标的任何装置。因此,缓存(cache)(如本文使用的术语)可以包括描述用于请求/响应消息对的头信息的消息元数据的存储器(例如,本地缓存存储器);可以包括碎化和结构化消息有效载荷数据的存储器(例如,对象存储器);可以包括尚未被碎化的请求和响应消息对的存储器(例如,同步日志)。通常,可以认为所有这些存储器都表示所谓的持久存储。当数据放在其中一个本地存储器时,它被称为缓存。
[0042] 可以经由一个或多个编程语言类和伴随方法来实现碎化和解碎化系统18。这些方法包括用于检测、消息截获、消息有效负载结构和存储、模拟响应消息生成、离线客户端请求消息重放和同步等的代码。
[0043] 图2是显示第二示例系统50和伴随计算环境的框图,其进一步示出了图1的离线持久性工具包16的实现的示例细节,包括可插拔的碎化机56、解碎化机58和本地缓存60,用于存储来自碎化的REST响应消息有效载荷等的结构化数据,如下面更全面地讨论的。
[0044] 注意,在实践中,碎化机56和解碎化机58通常成对地工作,使得如果实现碎化机,则也实现解碎化机。通常,图2的模块可以与所示的不同地分组,并且模块之间的连接可以变化,而不脱离本教导的范围。例如,碎化机和解碎化机58可以是同一模块的一部分。此外,在某些实现中,客户端软件12不需要直接与本地缓存60或可插拔的解碎化机58通信,而是可以主要经由发出经由持久性管理器截获的请求消息来与图1的离线持久性工具包功能16进行通信,如下面参考图4更全面地讨论的。
[0045] 在本示例实施例中,示出客户端12包括UI 70,其促进请求消息的生成(例如,响应于用户与UI 70的交互,其触发然后触发请求消息的事件)并消耗从服务器系统14托管的REST服务28返回的相应请求消息响应。
[0046] 在本示例实施例中,客户端12可以至少间接地与可插拔的碎化机56、本地缓存60和可插拔的解碎化机58通信。示例可插拔的碎化机56与REST消息有效载荷炸裂机72通信,其实现当客户端12在线时,用于炸裂(explode)——即,碎化——传入的REST响应消息和伴随有效载荷的功能。REST消息有效负载炸裂机72对响应消息的碎化得到组成结构化基元对象64。
[0047] 通常,HTTP响应通过碎化机56发送,碎化机56拆分相关联的JavaScript对象表示(JSON)对象,然后将其持久保存在本地缓存60中,即,可查询的本地数据库中。有效负载炸裂机72实现解析消息请求的查询处理机(query handler)。查询处理机72可以使用后面传入的HTTP请求的查询参数来根据需要查询本地存储器60以选择性地满足请求而无需访问服务器系统14。
[0048] 可以经由在线/离线状态检测模块62来确定客户端12的在线/离线状态。注意,在本示例实施例中,在线/离线状态检测模块62被显示为与网络连接功能66进行通信以确定客户端在线/离线状态,在线/离线状态检测模块62还可以或者可选地与客户端12通信,客户端12可以维护其自身的在线/离线状态检测模块,该在线/离线状态检测模块可以通知在线/离线状态检测模块62关于客户端12是在线还是离线。
[0049] 响应消息有效载荷的基元或基本对象64被构造,即以组织化的格式排列,并存储在本地缓存60中,和/或转发到客户端UI 70以方便使用。注意,结构化基元对象64的确切结构或格式可以是特定于实现的并且可以变化,以满足给定实现的需要。通常,选择基元对象64的结构以促进客户端UI 70的增强的性能。
[0050] 当客户端12转变到离线状态,即客户端12和服务器系统14之间的通信链路断开时,客户端12可以继续工作(act)就像客户端12仍在线。在这种情况下,一个或多个可插拔(如可以插入到图1的离线持久工具包16中)解碎化机58选择性地截获来自客户端12的请求消息,然后将对请求消息的模拟响应返回给客户端12。
[0051] 示例性解碎化机58访问在本地缓存60中维护的碎化消息,并使用REST消息有效载荷重建器将碎化的消息有效载荷合并回响应消息中,然后将响应消息作为模拟响应传递给客户端12。
[0052] 图3是可与图1-图2的实施例一起使用的第一示例方法80的流程图。示例方法80促进客户端软件应用(例如,图1-图2的客户端12)在联网的计算环境中的操作。
[0053] 参考图2和图3,方法80包括第一步骤82,其涉及选择性地截获来自网络资源(例如,图2的REST服务28)的一个或多个请求消息响应,其中一个或多个请求消息响应已经由网络资源响应于由客户端软件应用(例如,图2的客户端12)发出的一个或多个请求消息发出。
[0054] 第二步骤84包括通过将一个或多个请求消息响应解析为一个或多个预定的结构化格式(例如,对应于图2的结构化基元对象64)来碎化一个或多个请求消息响应(例如,通过图2的REST消息有效载荷炸裂机72)。
[0055] 第三步骤86包括将一个或多个预定的结构化格式中的每一个存储在本地缓存(例如,图2的缓存60)中。
[0056] 第四步骤88包括通过发出用于格式化一个或多个请求消息响应的一个或多个有效载荷中的数据的相应的一个或多个预定的结构化格式,向客户端软件应用发出一个或多个请求消息响应。预定的结构化格式包括一个或多个请求消息响应的每个有效载荷的组成结构化基元对象的组织。
[0057] 注意,可以改变方法80,而不脱离本教导的范围。例如,第一步骤82还可以包括确定客户端软件应用在线;当客户端软件应用在线时截获一个或多个请求消息响应。
[0058] 示例方法80还可以包括使用图2的一个或多个可插拔解碎化机58、缓存60和在线/离线状态检测模块62来确定客户端软件应用离线;检测客户端软件应用发出的一条或多条请求消息;使用一个或多个预定的结构化格式和相关联的数据来生成对一个或多个请求消息的一个或多个模拟响应;并向客户端软件应用发出一个或多个模拟响应。使用一个或多个预定的结构化响应的步骤还可以包括将一个或多个预定的结构化格式解碎化成与原始请求消息响应一致的格式。
[0059] 因此,方法80和相关联的变体可以经由可插拔的碎化机和解碎化机的系统来实现,该系统用于将复杂的REST有效载荷“炸裂”成其组成结构化基元对象,以方便客户端UI的使用。所得到的结构化数据的本地缓存包括结构化数据,该结构化数据比原始REST消息有效负载更结构化。解碎化使得能够重建有效载荷,例如,当客户端软件应用在离线时重新发出请求时。因此,客户端应用不需要基于在线或离线状态做出关于做什么的决定,而是可以像总是在线一样操作。伴随工具包(例如,图1的套件16)将提供模拟响应,该模拟响应包含如果实际上不能到达服务器的场景的最后已知数据集。
[0060] 图4是显示图1的持久性工具包16的实现的第三示例实施例的框图,其还示出了客户端应用12和持久性工具包16之间的示例性交互,其涉及生成对从客户端应用12发送的请求消息(1.)的模拟响应。
[0061] 在本示例实施例中,显示了客户端应用12与持久性工具包16的持久性管理器102通信。持久性工具包16还包括与持久性管理器102通信的缓存控制器(也称为缓存管理器)106,并且还与碎化机/解碎化机模块110和本地缓存存储器112通信。
[0062] 碎化机/解碎化机110还与本地对象存储器114通信。当持久性工具包16要与REST服务器22同步时,持久性管理器102还可以与同步管理器和相关联的同步日志104通信,如在下面更全面地讨论的。
[0063] 在示例场景中,客户端应用12刚刚启动并且尚未向远程REST服务器系统22发出任何请求消息。客户端应用12可以具有用于访问(例如,检索、发出、更新、删除等等)经由REST服务器系统22维护的服务器端数据的代码。注意,实际上,相同的代码可以经由REST调用(即,请求消息)访问对象存储器114的数据,该REST调用可以包括用于检索、定位、更新、删除等存储数据的操作。然而,客户端应用12可能不知道与对象存储器114的数据交互和与由REST服务器系统22远程维护的数据交互之间的差异。
[0064] 当前,客户端应用12在线并且能够与REST服务器系统22通信,例如,通过向其发出请求并从其接收响应。因此,客户端应用12发送寻址到REST服务器系统22的初始请求消息(1.)。然后,持久性工具包16的持久性管理器102截获该消息以进行处理。
[0065] 持久性管理器102确定应该将请求消息转发(2.)到REST服务器系统22。该转发可以在持久性管理器102已经检查本地缓存存储112(经由与缓存控制器106的通信)确定是否可以从已经本地缓存的数据生成对请求消息的响应之后发生。这种所谓的缓存优先策略(cache-first strategy)可以由包括在缓存控制器106中(或与缓存控制器106通信)的自定义响应代理模块116实现。
[0066] 注意,自定义响应代理116可以实现其他实现特定功能,而不脱离本教导的范围。例如,由客户端应用12进行并本地存储(例如,在对象存储器114中)的数据更新以及由来自REST服务器系统22的一个或多个响应消息所建议的数据更新之间的冲突解决可以经由自定义响应代理(custom response proxy)116来实现。
[0067] 在本示例实施例中,持久性管理器将请求(2.)转发到REST服务器系统22,然后REST服务器系统22用包括数据有效载荷108的消息来响应(3.),该数据有效载荷108包括关于几个国家的信息。
[0068] 然后,得到的响应消息(4.)由持久性管理器102传送(passed by)到缓存控制器106,以准备用来自响应消息的数据更新本地缓存存储112和对象存储器114。响应(4)也可以被转发到客户端应用12,取决于给定实现的需要,这可以在更新本地缓存存储112和对象存储器114之前、期间或之后发生。
[0069] 响应消息的元数据(5.),例如,诸如统一资源定位符(URL)118和相关联的元数据120之类的报头信息,被包括在本地缓存存储112中。此外,响应消息有效载荷108从响应消息中碎化(并且与标题信息118、120分离)并被存储(6.)在对象存储器114中,例如,作为数据库行122和列124。
[0070] 现在,响应消息有效载荷108已经被碎化并包括在对象存储器114中,并且响应消息头信息已经包括在本地缓存存储112中。该信息现在可以用于选择性地响应一些附加请求消息。
[0071] 例如,在本示例场景中,客户端应用12向REST服务器系统22发出第二请求消息(7.)。然而,这次,为了便于讨论,假设客户端应用12离线,或者REST服务器系统22因为其他原因不可用。
[0072] 然后,持久性管理器102使用第二请求(8.)来检查缓存控制器106以确定是否可以基于请求消息为第二请求消息(8.)生成模拟响应。然后,缓存控制器106查询(9.)本地缓存存储器和碎化机/解碎化机110,以确定该请求消息是否与在本地存储器112、114之间维护的响应消息匹配。
[0073] 如果检测到匹配,则来自对象存储器114的数据被传递到碎化机/解碎化机110以准备解碎化以及并入到模拟响应消息(10)中以被传递到客户端应用12。模拟响应消息可以由自定义响应代理116在从碎化机/解碎化机110接收到解碎化的响应消息数据和来自本地缓存存储112的相应头部数据时构建。
[0074] 注意,得到的模拟响应(10.)消息和初始响应(4.)消息的副本可以被加时间戳并记录在同步日志104中,用于当客户端应用12和伴随持久性工具包16上线或以其他方式变得能够访问REST服务器系统22的所需资源时,与REST服务器系统22选择性地重放和同步。
[0075] 总之,假设缓存优先策略(cacheFirst):
[0076] 1.从客户端应用12发出请求以从后端REST服务器22检索数据。
[0077] 2.该请求被持久性管理器102截获,持久性管理器102向缓存存储112检查匹配。但是,由于缓存存储112中还是空的,所以请求被转发到REST服务器22。
[0078] 3.REST服务器22返回具有有效载荷(例如,消息有效载荷108)的响应。
[0079] 4.响应被持久性管理器102截获,例如,出于本地缓存等目的。
[0080] 5.缓存存储112保存用于请求/响应消息对的元数据(例如,头信息)(没有实际的有效载荷数据)。另外,缓存控制器106使用碎化机110来碎化响应消息,然后将响应的得到的个体记录122、124存储在对象存储器114中。
[0081] 6.当缓存控制器/管理器106工作时,来自服务器22的响应被返回到客户端应用12。
[0082] 7.现在,从客户端应用12发送另一个请求。
[0083] 8.该请求被持久性管理器102截获,持久性管理器102向缓存控制器106请求匹配。
[0084] 9.然后,缓存控制器106向缓存存储器112查询匹配,并且还向碎化机/解碎化机110请求来自对象存储器114的消息有效载荷数据。然后使用在对象存储器114中的数据
112、124的解碎化版本创建模拟响应。
[0085] 10.然后,模拟响应被返回到客户端应用12。
[0086] 图5是可与图1-图4的实施例一起使用的第二示例方法130的流程图。第二示例方法130促进客户端应用(例如移动应用)的离线操作。
[0087] 第二示例方法130包括第一消息接收步骤132,包括接收来自在客户端设备上运行的客户端应用(例如,图4的应用12)的请求消息,其中该请求消息与对象的数据有关(pertain to)(例如,由消息有效负载108表示的数据对象和图4的对象存储器114的存储内容122、124)。
[0088] 接下来,在线/离线确定步骤134包括确定客户端设备和相关联的客户端应用是在线还是离线。
[0089] 在在线步骤136中,当客户端设备在线时,第二示例方法130还包括使用请求消息从服务器(例如,图4的REST服务器系统22)检索响应消息,响应消息包括与对象有关的数据,得到检索到的数据,其中根据请求消息和/或响应于请求消息检索数据。
[0090] 在在线步骤136之后,执行碎化步骤138,其涉及碎化响应消息,得到检索到的数据的碎化版本;并且在客户端设备上本地存储检索到的数据的碎化版本。
[0091] 在离线步骤140中,当设备离线时,方法130涉及(响应于请求消息)经由检索到的数据的碎化版本的模拟响应消息(例如,对应于在图4的对象存储器(object store)114中维护的数据),模拟响应消息看起来好像是来自服务器(例如,图4的REST服务器22)的REST响应消息。
[0092] 注意,可以修改第二示例方法130,而不脱离本教导的范围。例如,方法130还可以指定碎化步骤138还包括不仅在客户端设备上本地存储检索到的数据的碎化版本,还包括将检索到的数据的碎化版本存储在客户端设备的对象存储器中。
[0093] 图6是可用于实现图1-图5的实施例的系统900和伴随的计算环境的总体框图。示例系统900能够使能用于web应用的动态UI显示屏幕的有效配置和生成。实施例可以实现为独立应用(例如,驻留在用户设备中)或者实现为使用客户端和服务器端代码的组合实现的基于web的应用。
[0094] 通用系统900包括用户设备960-990,包括台式计算机960、笔记本计算机970、智能手机980、移动电话985和平板计算机990。通用系统900可以与任何类型的用户设备接口,例如作为瘦客户端计算机、支持因特网的移动电话、移动因特网访问设备、平板电脑、电子书或个人数字助理,能够显示和导航网页或其他类型的电子文档和UI,和/或运行应用。尽管示出了具有五个用户设备的系统900,但是可以支持任何数量的用户设备。
[0095] Web服务器910用于处理来自Web浏览器和其他独立应用对网页、电子文档、企业数据或其他内容的请求,以及来自用户计算机的其他数据。网络服务器910还可以提供与企业操作有关的数据的推送数据或联合内容,例如RSS提要。
[0096] 应用服务器920操作一个或多个应用。应用可以实现为以任何编程语言编写的一个或多个脚本或程序,例如Java、C、C++、C#或任何脚本语言,例如JavaScript或ECMAScript(欧洲计算机制造商协会脚本)、Perl、PHP(超文本预处理器)、Python、Ruby或TCL(工具命令语言)。可以使用库或应用框架构建应用,例如Rails、Enterprise JavaBeans或.NET。Web内容可以使用HTML(超文本标记语言)、CSS(层叠样式表)和其他Web技术(包括模板语言和解析器)创建。
[0097] 在应用服务器920上运行的数据应用适于处理输入数据和用户计算机请求,并且可以存储或检索来自数据存储设备或数据库930的数据。数据库930存储由数据应用创建和使用的数据。在一个实施例中,数据库930包括关系数据库,其适于响应于SQL格式命令或其他数据库查询语言来存储、更新和检索数据。其他实施例可以使用非结构化数据存储架构和NoSQL(不仅是SQL)数据库。
[0098] 在一个实施例中,应用服务器920包括能够运行程序或脚本的一个或多个通用计算机。在一个实施例中,web服务器910被实现为在一个或多个通用计算机上运行的应用。Web服务器910和应用服务器920可以在相同的计算机上组合和运行。
[0099] 电子通信网络940-950使能用户计算机960-990、网络服务器910、应用服务器920和数据库930之间的通信。在一个实施例中,网络940-950还可包括任何形式的电或光通信设备。网络940-950还可以包括一个或多个局域网,例如以太网、广域网,例如因特网;蜂窝载波数据网络;以及虚拟网络,例如虚拟专用网络。
[0100] 该系统是根据本申请实施例的用于运行应用的一个示例。在另一个实施例中,应用服务器910、web服务器920和可选的数据库930可以组合成单个服务器计算机应用和系统。在另一实施例中,虚拟化和虚拟机应用可用于实现应用服务器910、web服务器920和数据库930中的一个或多个。
[0101] 在更进一步的实施例中,web和应用服务功能的全部或一部分可以集成到在用户计算机中的每一个上运行的应用中。例如,用户计算机上的JavaScript应用可用于检索或分析数据并显示应用的部分。
[0102] 图7示出了示例计算设备500的框图,该示例计算设备500可以用于本文描述的实现。例如,计算设备500可以用于实现图6的服务器设备910、920以及执行本文描述的方法实现;和/或实现图6的用户设备985、960、970、980、990以及执行本文描述的方法实现。在一些实现中,计算设备500可以包括处理器502、操作系统504、存储器506和诸如显示器的输入/输出(I/O)接口508。在各种实现中,处理器502可以用于实现本文描述的各种功能和特征,以及执行本文描述的方法实现。虽然处理器502被描述为执行本文描述的实现,但系统500的任何合适的组件或组件的组合或与系统500或任何合适的系统相关联的任何合适的处理器可以执行所描述的步骤。这里描述的实现可以在用户设备上、在服务器上或两者的组合上执行。
[0103] 计算设备500还包括软件应用510,其可以存储在存储器506上或任何其他合适的存储位置或计算机可读介质上。软件应用510提供使得处理器502能够执行本文描述的功能和其他功能的指令。计算设备500的组件可以由一个或多个处理器或硬件设备的任何组合以及硬件、软件、固件等的任何组合来实现。
[0104] 为了便于说明,图7示出了处理器502、操作系统504、存储器506、I/O接口508和软件应用510中的每一个的一个块。这些块502、504、506、508和510可以表示多个处理器、操作系统、存储器、I/O接口和软件应用。在各种实现中,计算设备500可以不具有所示的所有组件和/或可以具有包括其他类型的组件的其他元件来代替或补充本文所示的那些组件。
[0105] 尽管已经关于其特定实施例描述了描述,但是这些特定实施例仅仅是说明性的而非限制性的。例如,虽然本文讨论的某些实施例用于响应于客户端发出的REST请求消息而选择性地碎化或解碎化重传REST响应消息,但是实施例不限于此。其他类型的联网的软件架构(除了REST之外)和相关联的消息可以受益于用于实现如本文讨论的选择性碎化和解碎化的方法,而不脱离本教导的范围。
[0106] 可以使用任何合适的编程语言来实现特定实施例的例程,包括C、C++、Java、汇编语言等。可以采用不同的编程技术,例如过程的或面向对象的。例程可以在单个处理设备或多个处理器上运行。尽管可能以特定顺序呈现步骤、操作或计算,但是可以在不同的特定实施例中改变该顺序。在一些特定实施例中,可以同时执行在本说明书中按顺序示出的多个步骤。
[0107] 特定实施例可以在计算机可读存储介质中实现,以供指令执行系统、装置、系统或设备使用或与其结合使用。特定实施例可以在软件或硬件或两者的组合中以控制逻辑的形式来实现。当由一个或多个处理器运行时,控制逻辑可以是可操作的,以执行在特定实施例中描述的控制逻辑。例如,诸如硬件存储设备之类的非暂时性介质可用于存储控制逻辑,该控制逻辑可包括可运行的指令。
[0108] 可以通过使用编程的通用数字计算机,通过使用专用集成电路可编程逻辑器件现场可编程门阵列、光学系统、化学系统、生物系统、量子系统或纳米工程系统等来实现特定实施例。可以使用其他组件和机制。通常,特定实施例的功能可以通过本领域已知的任何手段来实现。可以使用分布式联网系统、组件和/或电路。可以采用云计算或云服务。数据的通信或传输可以是有线的、无线的或通过任何其他手段。
[0109] 还应当理解,附图/图中描绘的元件中的一个或多个也可以以更加分离或集成的方式实现,或者甚至在某些情况下被移除或呈现为不可操作,如根据特定的应用是有用的。实现可以存储在机器可读介质中以允许计算机执行上述任何方法的程序或代码也在本申请的精神和范围内。
[0110] “处理器”包括处理数据、信号或其他信息的任何合适的硬件和/或软件系统、机制或组件。处理器可以包括具有通用中央处理单元、多个处理单元、用于实现功能的专用电路的系统或其他系统。处理不必限于地理位置,或具有时间限制。例如,处理器可以以“实时”、“离线”、“批处理模式”等执行其功能。可以由不同(或相同)处理系统在不同时间和不同位置执行处理的部分。处理系统的示例可以包括服务器、客户端、终端用户设备、路由器、交换机、联网存储装置等。计算机可以是与存储器通信的任何处理器。存储器可以是任何合适的处理器可读存储介质,例如随机存取存储器(RAM)、只读存储器(ROM)、磁盘或光盘,或适合于存储由处理器运行的指令的其他有形介质。
[0111] 除非上下文另有明确规定,否则如本文的说明书和随后的权利要求中所使用的,“一”、“一个”和“所述(the)”包括复数指代。此外,除非上下文另有明确规定,如本文的描述和随后的权利要求中所使用的,“在...中”的含义包括“在......中”和“在......上”。
[0112] 因此,虽然本文已经描述了特定实施例,但是在前述公开内容中意图进行一定范围(latitudes)的修改、各种改变和替换,并且应当理解,在某些情况下,将采用特定实施例的一些特征而不相应使用其他特征,而不脱离所阐述的范围和精神。因此,可以进行许多修改以使特定情况或材料适应基本范围和精神。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈