对于数据表示项目返回的占位符的制作方法

文档序号:6440407阅读:258来源:国知局
专利名称:对于数据表示项目返回的占位符的制作方法
对于数据表示项目返回的占位符
背景技术
诸如用户接口控制(即独立的可重复使用的用户接口组件)之类的软件应用和软件组件可以充当数据来源的客户端,所述数据来源可以包括本地数据来源或者通过计算机网络到达的远程数据来源。一些数据来源(诸如本地数据来源)可以同步地对数据请求做出响应。换句话说,这种对数据请求的响应所花费的时间少于某一响应时间阈值,所述响应时间阈值通常低到足以使得响应的呈现可以看起来是与相应的请求实时的。举例来说,这样的响应可能花费大约数十毫秒或更少。其他数据来源(诸如远程数据来源)可以异步地做出响应。换句话说,对数据请求的响应所花费的时间多于前面所讨论的响应时间阈值。

发明内容
根据这里所描述的工具和技术,至少在某些情况下,被称作项目管理器的模块可以向数据来源的客户端返回占位符以替代返回所请求的数据表示项目。当所请求的数据表示项目变为可用时,项目管理器可以向客户端通知将要利用数据表示项目来替换占位符。 这样可以提供一项或更多项不同的好处,诸如允许客户端与可以被用于同步和异步数据来源的单个接口进行交互。这里所使用的占位符是替代所请求的数据表示项目被返回给客户端的对象。占位符可以采取任一不同形式。举例来说,由项目管理器保持的高速缓存中的 (一个或多个)占位符和实际数据表示项目可以具有经过渲染的用户接口单元的形式。可选地,占位符和/或数据表示项目可以采取某种其他形式,诸如非透明句柄的形式或者某种其他数据类型。此外,由项目管理器使用的本地数据表示中的占位符的形式可以不同于响应于来自客户端的请求而被返回给客户端的占位符。这里所使用的数据项目是由数据来源提供的项目。所述数据项目的格式可以与相应的数据项目被存储在数据来源中的格式相同或不同。数据表示项目是对数据项目的表示,并且数据表示项目的格式可以与由所述数据表示项目所表示的数据项目的格式相同或不同。在一个实施例中,所述工具和技术可以包括项目管理器,其接收来自客户端的针对多个数据表示项目的一个或更多请求的集合。数据表示项目可以表示数据来源中的数据项目。项目管理器可以通过对数据表示项目执行动作来对(一个或多个)请求做出响应。所述动作可以包括以下动作生成对应于数据表示项目的占位符;响应于(一个或多个)请求向客户端返回占位符;从数据来源请求数据项目;从数据来源接收回数据项目;向客户端提供数据表示项目;以及向客户端通知将要利用数据表示项目来替换占位符。在所述工具和技术的另一个实施例中,可以由项目管理器接收来自客户端的针对多个数据表示项目的一个或更多请求的集合。数据表示项目可以表示数据来源中的数据项目。项目管理器可以通过对每一个数据表示项目执行动作来对(一个或多个)请求做出响应。这些动作可以包括确定数据表示项目是否可用来响应于一个或更多请求的集合而被同步地返回给客户端。如果项目管理器确定数据表示项目可用来被同步地返回给客户端,则所述动作包括同步地将数据表示项目返回给客户端。如果项目管理器确定数据表示项目不可用来被同步地返回给客户端(这例如是因为数据来源可以同步地向项目管理器返回由数据表示项目所表示的数据项目,以及/或者是因为项目管理器已经高速缓存了数据表示项目),则所述动作可以包括对于该数据表示项目执行以下动作生成对应于数据表示项目的占位符;向客户端返回占位符;从数据来源获取由数据表示项目所表示的数据项目;向客户端提供数据表示项目;以及向客户端通知将要利用数据表示项目来替换占位符。提供本发明内容从而以简化形式介绍所选的概念。下面在具体实施方式
中进一步描述这些概念。本发明内容不意图标识所要求保护的主题内容的关键特征或本质特征,也不意图被用来限制所要求保护的主题内容的范围。类似地,本发明不限于针对在背景技术具体实施方式
或附图中所讨论的特定技术、工具、环境、缺点或优点的实现方式。


图1是可以在其中实施一个或更多所描述的实施例的适当计算环境的方框图。图2是用于返回数据表示项目的占位符的环境的示意图。图3是响应于客户端请求和所接收到的数据项目而被修改的本地数据表示的一部分的示意图。图4是用于返回数据表示项目的占位符的一种技术的流程图。图5是用于返回数据表示项目的占位符的另一种技术的流程图。图6是用于返回数据表示项目的占位符的又一种技术的流程图。
具体实施例方式这里所描述的工具和技术在处理由对数据请求的同步和/或异步响应造成的问题方面可能是有益的。这里所描述的实施例是针对用于通过项目管理器改进数据来源与其客户端之间的交互的技术和工具。这样的改进可以通过单独地或组合地使用各种技术和工具而获得。项目管理器是一个可以执行各种操作的模块,诸如在客户端与数据来源之间中继针对数据表示项目和由这些数据表示项目所表示的数据项目的请求和响应、以及生成(可能利用一个或更多渲染器生成)占位符并且向客户端返回占位符。项目管理器还可以在接收自数据来源的数据项目与提供给客户端的数据表示项目之间改变格式。举例来说,项目管理器可以使用一个或更多渲染器来生成经过渲染的数据表示项目。可以按照多种方式来编写或配置项目管理器。举例来说,可以用脚本化语言来编写项目管理器的代码,诸如在 ECMAScript文本文件中编写。可选地,项目管理器的代码可以具有某种其他格式,诸如具有动态链接库,或者可以将项目管理器更加紧密地合并到应用本身中,诸如合并在静态库中。项目管理器可以是可重复使用的模块。术语“可重复使用”是指项目管理器是可以被插入到多种不同环境中以便与客户端和数据来源交互的模块。在这样的不同环境中, 客户端和/或数据来源可能被不同地配置,但是项目管理器仍然能够提供用于客户端和数据管理器的接口。举例来说,项目管理器可以被包括在客户端应用的代码中,项目管理器可以是与客户端分开的组件但是运行在与客户端相同的处理器中,项目管理器可以被包括在其中所述项目管理器运行在与相应客户端分开的处理中的环境中等等。项目管理器可以向客户端给出一个表现为好像数据来源支持同步交互的接口,而不管数据来源实际上是否支持。当请求数据表示项目时,如果数据表示项目不可用于同步响应,则可以替换地返回占位符。举例来说,可以同步地返回占位符。当最终获取到数据表示项目所表示的数据项目时,项目管理器可以向客户端通知将要利用数据表示项目来替换占位符。占位符的这样使用可以提供一项或更多项不同益处。举例来说,所述工具和技术可以允许客户端与项目管理器进行交互好像客户端正应对提供同步响应的数据来源,而不管数据来源实际上是否提供这样的同步响应。项目管理器可以包括用以改进性能的附加特征和操作。在下面的段落中将讨论这些特征和操作中的一些。项目管理器可以与一个或更多渲染器相结合地操作。渲染器是接受一些数据并且返回所生成的用户接口单元的功能。举例来说,在一种实现方式中,所述数据具有 ECMAScript对象的形式,诸如JSON (JavaScript对象标注)可串行化ECM/^cript对象,以及具有充当所述项目的关键字的字符串的形式。每一个这样的关键字可以是对于该数据项目不改变的一个数值,并且其与数据来源中的数据集中的其他数据项目的关键字不同。举例来说,所述关键字可以是由数据来源制成的用于记录保持的关键字,或者其可以是诸如驾驶者的证件号码、社会保险号码等的标识符。在这样的关键字表示敏感信息的情况下,可以利用适当的安全性措施(诸如加密技术)对其进行保护。所述关键字可以由项目管理器使用来进行记录保持,诸如区分和/或匹配相应的数据项目和/或数据表示项目。用户接口单元可以具有许多形式当中的一种形式,诸如HTML文档对象模型(DOM)对象的形式,其例如可以是HTML文本或者DOM元素子树的根部。客户端可以提供两个渲染器——一个渲染实际的数据表示项目而一个可以在数据可用(其可能被传递一个索引参数或者没有参数)之前被用来生成空的占位符。渲染器可以允许项目管理器和客户端将用户接口单元用作占位符。用户接口单元的这样使用可以简化对于客户端和项目管理器的占位符身份的跟踪。举例来说,客户端可以在无需很多工作量的情况下跟踪占位符的身份从而在客户端被项目管理器告知这样做时将一个用户接口单元(占位符)替换成另一个(数据表示项目)。项目管理器还可以确定数据来源是否同步响应。如果数据来源异步响应,则项目管理器可以返回占位符,正如这里所讨论的那样。然而如果数据来源同步响应,则项目管理器可以返回所请求的数据表示项目而不返回占位符。这样可以在提供同步响应时改进性能,诸如通过避免在客户端将要显示占位符并且随后立即在同一显示区域上显示数据表示项目的情况下可能存在的闪烁来改进性能。项目管理器可以将针对接收自客户端的数据的多个请求分批在一起。然而,项目管理器也可以采取步骤来尝试避免发送针对相同数据的冗余请求。举例来说,项目管理器可以采取步骤来在第一个请求有机会完成之前避免发送针对“项目20及其10个后继者”的请求、后面立即是针对“项目21及其10个后继者”的请求。项目管理器可以允许数据来源返回比该项目管理器所请求的更多(或更少)的项目。此外,项目管理器可以请求多于客户端所请求的项目。在来自数据来源的这种响应中所接收到的附加数据项目可以由项目管理器高速缓存为数据表示项目(其可以具有与获取自数据来源的数据项目和/或被提供给客户端的数据表示项目相同的形式或不同的形式), 并且被用于利用来自所述高速缓存的实际数据表示项目对来自客户端的针对这些项目的未来请求做出同步响应(再次避免产生一些占位符)。在某些情况下,项目管理器可以在知道数据来源是否包括这些占位符的相应数据之前“推测性地”向客户端返回一些占位符。举例来说,项目管理器可以在它不知道是否已达到数据来源处的数据集的边沿时返回占位符。项目管理器可以随后指示客户端删除不最终对应于实际数据项目的这种额外占位符。项目管理器还可以向客户端通知所述占位符是 “幻影”(即就项目管理器确定而言不对应于并且从未对应于实际数据项目的占位符)。推测性占位符的返回及删除可以允许项目管理器返回占位符而不等待查明是否有将从数据来源返回的实际的相应数据项目。此外,将占位符标记为幻影可以允许客户端在删除占位符时以不同方式对待这样的占位符(例如在显示器上渐隐而不是突然将其从显示器上去除)。相应地,通过这里所描述的工具和技术可以实现一项或更多项显著的益处。然而在所附权利要求书中限定的主题内容不一定限于这里所描述的益处。本发明的一种特定实现方式可以提供这里所描述的全部或一些益处或者不提供任何益处。虽然为了呈现起见这里按照一种特定的顺序描述了各种技术的操作,但是应当理解的是,除非需要特定排序,否则这种描述方式涵盖了操作顺序方面的重新安排。举例来说,被顺序地描述的操作在某些情况下可以被重新安排或者同时执行。在这里参照流程图所描述的技术可以与这里所描述的一种或更多种系统一起使用,并且/或者可以与一种或更多种其他系统一起使用。举例来说,这里所描述的各种规程可以用硬件或软件或者二者的组合来实施。此外,为了简洁起见,流程图可能没有示出其中可以结合其他技术实施特定技术的各种方式。I.示例性计算环境
图1示出了可以在其中实施一个或更多所描述的实施例的适当计算环境(100)的一般化实例。举例来说,一个或更多这样的计算环境可以被用作客户端、项目管理器和/或数据来源的环境。一般来说,可以使用各种不同的通用或专用计算系统配置。可能适用于这里所描述的工具和技术的公知的计算系统配置的实例包括(但不限于)服务器场和服务器群集、 个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费电子装置、网络PC、小型计算机、大型计算机、包括任何前述系统或设备的分布式计算环境等等。计算环境(100)不意图暗示关于本发明的使用或功能的范围的任何限制,这是因为本发明可以被实施在多种通用或专用计算环境中。参照图1,计算环境(100)包括至少一个处理单元(110)和存储器(120)。在图1 中,这一最基本的配置(130)被包括在虚线内。处理单元(110)执行计算机可执行指令,并且可以是真实或虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行指令以便提高处理能力。存储器(120)可以是易失性存储器(例如寄存器、高速缓存、RAM)、非易失性存储器(例如R0M、EEPR0M、闪存)或者二者的某种组合。存储器(120)存储实施对于数据表示项目返回的占位符的软件(180 )。虽然图1的各个方框出于清楚起见是用线条示出的,但是在实际情况中描绘各个组件并不是如此清楚的,并且比方来说图1和下面讨论的其他附图的线条更准确地将是灰色且模糊的。举例来说,可以把诸如显示设备之类的呈现组件视为I/O组件。此外,处理器也具有存储器。本发明的发明人认识到这正是本领域的性质,并且重申图1的图示仅仅说明可以结合本发明的一个或更多实施例使用的示例性计算设备。在诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等等的这些种类之间不做区分,这是因为所有这些都被设想在图1的范围内并且被称作“计算机”、“计算环境”或“计算设备”。计算环境(100)可以具有附加的特征。在图1中,计算环境(100)包括存储装置(140)、一个或更多输入设备(150)、一个或更多输出设备(160)以及一个或更多通信连接 (170)。诸如总线、控制器或网络之类的互连机构(未示出)互连计算环境(100)的各个组件。通常来说,操作系统软件(未示出)为执行在计算环境(100)中的其他软件提供操作环境,并且协调计算环境(100)的各组件的活动。存储装置(140)可以是可移除或不可移除的,并且可以包括非瞬时性计算机可读存储介质,诸如磁盘、磁带或磁盒、CD-R0M、CD-RW、DVD或者任何可以被用来存储信息并且可以在计算环境(100)内被访问的其他介质。存储装置(140)存储针对软件(180)的指令。(一个或多个)输入设备(150)可以是诸如键盘、鼠标、笔或轨迹球之类的触摸输入设备;语音输入设备;扫描设备;网络适配器;⑶/DVD读取器;或者向计算环境(100)提供输入的其他设备。(一个或多个)输出设备(160)可以是显示器、打印机、扬声器、⑶/DVD 写入器、网络适配器或者从计算环境(100)提供输出的另一设备。(一个或多个)通信连接(170)允许通过通信介质与另一个计算实体进行通信。因此,计算环境(100)可以利用去到一个或更多远程计算设备的逻辑连接而操作在联网环境中,所述远程计算设备诸如是个人计算机、服务器、路由器、网络PC、对等设备或者另一共同网络节点。通信介质在已调数据信号中传送诸如数据或计算机可执行指令或者请求之类的信息。已调数据信号是如下信号其一项或更多项特性被以使得在该信号中编码信息的方式设定或改变。作为举例而非限制,通信介质包括利用电气、光学、RF、红外、声学或其他载体实施的有线或无线技术。可以在计算机可读存储介质的一般情境中描述所述工具和技术。计算机可读存储介质是可以在计算环境内访问的任何可用的非瞬时性存储介质。作为举例而非限制,对于计算环境(100),计算机可读存储介质包括存储器(120)、存储装置(140)以及前述各项的组合。可以在计算机可执行指令的一般情境中描述所述工具和技术,诸如包括在程序模块中并且在计算环境中的目标真实或虚拟处理器上执行的那些计算机可执行指令。一般来说,程序模块包括执行特定任务或者实施特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等等。在各个实施例中可以按照期望在各程序模块之间组合或分解各程序模块的功能。程序模块的计算机可执行指令可以在本地或分布式计算环境内执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储介质中。出于表述起见,详细描述使用比如“确定”、“选择”、“调节”和“操作”之类的术语来描述计算环境中的计算机操作。这些术语和其他类似术语是对由计算机执行的操作的高级抽象,而不应当与人类执行的动作混淆,除非明确提到由人类(诸如“用户”)执行某一项动作。对应于这些术语的实际计算机操作根据实现方式而不同。II.用于返回数据表示项目的占位符的系统和环境 A.项目管理器的一般环境和操作
图2是用于返回数据表示项目的占位符的环境(200)的示意图,与之相结合可以实施一个或更多所描述的实施例。环境(200)可以包括项目管理器(210),其可以是诸如软件组件之类的模块。项目管理器(210)可以与客户端(220)以及与数据来源(230)进行通信,数据来源(230)可以是多种不同类型的数据来源(由图2中的其他数据来源示出)之一。项目管理器(210)可以通过适配器(240)与数据来源(230)进行通信,可以针对特定类型的数据来源来配置所述适配器。如果项目管理器(210 )将要向客户端(220 )发送数据表示项目的经过渲染的版本,则项目管理器(210 )还可以与项目渲染器(242 )和占位符渲染器(M5 )进行通信。图2中所示的各个组件可以处在诸如前面所讨论的计算环境(100)之类的单个计算环境中,或者其可以分布在采用多种不同配置之一的多个计算环境上。项目管理器(210)可以从客户端(220)接收针对表示来自数据来源(230)的一个或更多项目的(一个或多个)表示项目的一个或更多请求(250)。作为响应,项目管理器 (210)可以获取数据表示项目(260),这是通过经由适配器(240)从数据来源(230)或者从本地数据表示(265)获取数据项目(262)而实现的(如果针对所请求的数据表示项目(260) 的数据项目(262)已经从数据来源(230)被接收到的话)。举例来说,项目管理器(210)可以向数据来源(230 )发送一个或更多请求,并且数据来源(230 )可以通过适配器(240 )向项目管理器(210)返回数据项目(262)。数据项目U62)在它们作为数据项目(262)从数据来源(230 )被发送并且最终作为数据表示项目(260 )由客户端(220 )接收到时可以改变形式。仅仅作为一个实例,适配器(240)可以将数据项目(260)转换成ECMAkript对象阵列, 并且将这些对象作为数据项目(262)转发到项目管理器(210)。项目管理器(210)可以向项目渲染器(242)发送所述ECMAkript对象,并且项目渲染器可以向项目管理器返回作为 DOM元素的数据表示项目(260),并且项目管理器(210)可以将这些DOM元素转发到客户端 (220)。数据表示项目(260)可以采取多种其他形式当中的任一种。举例来说,项目管理器 (210)可以向客户端(220)发送数据表示项目(260)的未经渲染的版本,并且客户端(220) 可以将数据表示项目(260)用于除显示之外的其他用途。项目管理器(210 )可以保持表示由数据来源(230 )所保持的更大数据集的一个子集的本地数据表示(265)。举例来说,本地数据表示(265)可以只包括针对当前由客户端 (220)显示在列表(其可以按照多种形式被显示,诸如显示在垂直延伸的列表中、显示在栅格中、显示为缩略图等等)中的项目的数据表示项目(260)以及可能包括一些相关的数据表示项目(260)。举例来说,本地数据表示(265)还可以包括针对当前所显示的项目的相邻项目、近期被显示的项目等等的数据表示项目(260)。然而,项目管理器(210)可以虚拟化本地数据表示(265),从而使其对于客户端(220)而言就好像项目管理器(210)已经从数据来源(230)下载了整个数据集一样。这一虚拟化可以允许客户端枚举数据表示项目(260)的列表,就好像数据集中的所表示的数据项目(262)的整个列表都被从数据来源(230)获取一样,尽管只有数据集的一部分被获取。举例来说,这可以包括项目管理器(210)获取并且向客户端(220)提供关于数据来源(230)的数据集中的项目总数的信息,从而使得客户端 (220)可以采取适当的行动,诸如适当地确定针对表示数据来源(230)的总体数据集的列表的滚动条的尺寸和位置。B.返回数据表示项目的占位符
如果客户端(220)向项目管理器(210)发送针对项目管理器(210)尚未从数据来源 (230)取回的项目表示的请求(250),则项目管理器(210)可以向客户端(220)返回占位符 (280),直到项目管理器(210)成功地从数据来源(230)获取相应的数据项目(262)为止。 项目管理器(210 )还可以在本地数据表示(265 )中包括占位符(280 ),其中占位符(观0 )可以被用于记录保持目的,以便当从数据来源(230)返回相应的数据项目(262)时与相应的数据表示项目(260)相匹配。此外,客户端(220)可以将占位符用于多种目的,诸如记录保持以及替代实际的数据表示项目(260)进行显示,直到数据表示项目U60)被返回为止。在一种实现方式中,项目管理器(210)可以向客户端(220)显露接口,其允许响应于来自客户端(220)的不同类型的请求(250)通过各种方式获取单独的数据表示项目 (260)。举例来说,请求(250)可以具有针对某一种方法的调用的形式,诸如以下各项之一 "firstltem (第一个项目)”(一种用于返回具有最低索引编号的项目的方法),“lastltem (最后一个项目)”(一种用于返回具有最高索引编号的项目的方法),“neXtItem (下一个项目)”(一种用于返回具有从指定项目算起接下来的最高索引编号的项目的方法),“preVItem (前一个项目)”(一种用于返回具有从指定项目算起接下来的最低索引编号的项目的方法),“itemAtIndex (索引项目)”(一种用于返回具有指定索引编号的项目的方法),或者 "itemFromDescription (描述项目)”(一种用于返回具有指定的特定于域的描述的项目的方法)。响应于针对这些请求方法当中的每一种的调用,项目管理器(210)可以返回所请求的数据表示项目(260 )作为由项目渲染器(242 )生成的用户接口单元。当调用这些项目请求方法之一时,项目管理器(210)可以首先检查以便确定项目管理器(210)是否已经把针对给定项目的数据高速缓存在可能处在存储器内的本地数据表示(265)中。如果是,则项目管理器(210)可能已经调用过项目渲染器(242),在这种情况下项目管理器(210)可以再次返回相同的用户接口单元作为数据表示项目(260),否则项目管理器(210)可以立即调用项目渲染器(242)并且向客户端(220)返回实例化(例如被渲染为可以被发送到客户端的UI描述)的项目作为数据表示项目(260)。否则,项目管理器(210)可以在适配器(240)上调用适当方法从而向适配器(240) 传递回调函数,适配器(240)可以同步或异步调用该回调函数以便返回所请求的数据项目 (沈2)。数据来源(230)可以能够快速返回数据项目(262)(诸如在数据来源(230)是本地数据来源的情况下),从而使得适配器(240)可以通过立即回调到项目管理器(210)中(即通过同步调用所述回调函数)来同步报告所得到的数据项目(262)。项目管理器(210)可以检测这样的同步回调何时发生。举例来说,项目管理器 (210)传递到适配器的回调可以将数据表示项目U60)存储在为所述项目创建的槽数据结构中。项目管理器(210)可以执行调用函数以便调用到适配器中。在执行了调用函数之后, 项目管理器(210)可以审查所述槽数据结构以便查看数据表示项目(260)是否已被存储在该处。如果还没有,则项目管理器(210)可以知道所述请求将被异步完成,并且可以创建占位符(280 )。这一确定可以对于每一个项目请求再次做出,或者这一确定可以对于特定数据来源(230)仅仅做出一次或者仅仅周期性地做出。可选地,适配器(240)和/或数据来源 (230)可以向项目管理器(210)通知数据来源(230)是否能够同步返回项目。对于数据来源(230)或者数据项目U62)群组的这种总体确定可以被视为对于所述确定所适用的每一个数据项目(262)的确定。如果已经同步回调了回调函数,则项目管理器(210)可以调用项目渲染器(242) 并且将实例化项目返回到客户端(220)作为数据表示项目(260)。这一点可以在不生成或提供占位符(280)的情况下实现。如果项目管理器(210)还没有接收到所请求的数据项目(262),并且将不会同步返回所请求的数据项目,则可以使用异步调用来获取数据项目(262)。为了避免针对相同数据项目(262)的冗余调用,当发起数据获取时,可以生成针对该获取的标识符并且将其添加到杂散表中。可以把针对预期将由特定获取所返回的数据项目(262)的占位符(280)添加到本地数据表示(265)中的各槽,并且利用该获取标识符对其加标记。当获取完成时,不管其成功还是失败,都可以从杂散表中去除其标识符。相应地,当客户端(220 )从异步返回相应数据项目(262 )的数据来源(230 )请求尚未实例化的数据表示项目(260)时,可能存在至少三种子情况。第一,客户端(220)可能已经请求过所述数据表示项目(260),在这种情况下可能已经存在所述项目的占位符(280), 并且可以返回该占位符(280)。第二,客户端(220)可能正在第一次请求某一数据表示项目(260),并且来自客户端(220)的请求(250)可以发起针对数据来源(230)的异步请求; 也可以生成并返回新的占位符(280)。第三,客户端(220)可能正在第一次请求数据表示项目(260 ),但是所述请求(250 )可能使得直到针对数据来源(230 )的早前请求得以履行才向数据来源(230)发送相应的请求(例如项目管理器(210)将获取给定项目之后的相应数据项目(262),但是该给定项目本身仍然仅仅是占位符(280));可以创建并返回新的占位符 (280),并且等到适当时间才发起新的获取。当数据项目(262)从数据来源(230)到达时,项目管理器(210)可以把数据项目 U62)匹配到占位符,并且可以针对现在可以被实例化的任何数据项目(262)调用项目渲染器(242)。对于每一次实例化,项目管理器(210)可以向客户端(220)发送“项目可用”通知,从而向客户端(220)传递对现有的用户接口单元(占位符(280))和替换用户接口单元 (数据表示项目(260 ))的引用。客户端(220 )可以通过利用数据表示项目(260 )替换占位符(280)来做出响应。这一替换可以导致客户端(220)利用数据表示项目(260)的呈现(例如显示)来替换占位符(280)的呈现(例如显示)。项目管理器(210)还可以检查与从数据来源(230)接收回的结果相邻的占位符(280),并且可以发起针对相应数据项目(262)的新的获取(如果这些项目尚未被请求的话)。项目管理器(210)可以尝试减少去到数据来源(230)的网络往返的数目,因此项目管理器(210)可以对相邻占位符(280)进行计数并且成批地请求数据项目(262)。相应地,来自项目管理器(210)的一个请求可以是请求在来自客户端(220)的多个请求中所请求的数据项目(262)。如果从数据来源(230)接收回的数据项目U62)集合延伸超出当前的占位符(280 )集合,则可以把额外的数据项目(262 )存储在本地数据表示(沈5 )内的各槽中,从而使得可以利用表示这些高速缓存的数据项目(262)的数据表示项目(260)同步地满足某些未来的请求。数据来源(230)可以被允许返回比项目管理器(210)所请求的更多或更少的项目。前面描述的方法可以允许这一点,但是有可能的是可能由项目管理器(210)发起一些不必要的获取。为了降低这一可能性,项目管理器(210)可以通常在提出下一个请求之前等待来自一个请求的数据项目(262 )被返回。这样也可以允许通过其关键字而非以其他方式(诸如只通过索引)请求较多数据项目(262)。举例来说,只要请求是针对相邻数据项目 (262)(其中“相邻”由索引值确定),项目管理器(210)就可以按照这种方式等待。在这种情况下,例如如果项目管理器(210)接收过具有关键字“A”的数据项目(262),则项目管理器(210)可以随后请求具有关键字“A”的数据项目(以便在请求中提供一些重叠,从而例如检测在请求之间是否对数据来源(230)中的数据做了改变)以及接下来的10个项目。但是如果一个请求及其之后的下一个请求所请求的数据项目(262)彼此不相邻,则项目管理器(210)可以选择不等待,这是因为那么针对第一个请求的响应将不太可能包括将在下一个请求中所请求的数据项目(262)。在某些情况下,客户端(220 )和项目管理器(210 )可能不知道数据来源(230 )处的数据集中的数据项目总数。取代在显示任何占位符(280)之前需要末端用户等待网络往返以确定数据的范围,项目管理器(210)可以“推测性地”返回占位符(280)。换句话说,项目管理器(210)可以返回这样的占位符(280),其中在确立计数之前推测数据来源(230)处的数据集中的项目数目多于客户端(220)将请求的数目。如果这一推测被证明是错误的,则可以去除一些占位符(280),这是因为其实际上不对应于数据项目(262)。如果某一个项目被实际从数据集中删除,则项目管理器(210)可以向客户端(220)发送与项目管理器(210) 所将发送的相同的“已去除”通知。然而,为了向客户端(220)给出对于这种情况显示独特动画的选项(例如微妙的渐隐而不是突然的飞走效果),可以随着所述通知一起传递附加的布尔型参数(例如被称作“幻影”的参数)。这样的幻影参数可以向客户端(220)表明就项目管理器(210)所确定的情况来说,没有对应于相关联的占位符(280)的数据项目(262)。该幻影布尔量可以用于其他情况,诸如当数据项目(262)的两个非邻接区段已被实例化为数据表示项目(260)并且扩展直到所述区段“相撞”但是在所述区段之间已经创建了过多占位符(280)。通过把项目管理器(210)的占位符特征与占位符渲染器(245)和项目渲染器 (242)的数据模板化特征相组合,可以简化客户端(220)与项目管理器(210)之间的编程接口,这是因为客户端(220)和项目管理器(210)可以在没有用以跟踪身份的单独句柄的情况下操作。相反,项目管理器(210)可以向客户端(220)传递针对占位符(280)的引用以及针对所请求的数据表示项目(260)的引用,从而指示客户端(220)利用数据表示项目 U60)来替换占位符(280)(例如通过“项目可用”通知)。客户端(220)可以无条件地在客户端(220)的用户接口数据结构(例如DOM树)中的适当位置处插入通过调用请求方法之一 (firstltem等)而返回的数值(数据表示项目U60)和/或占位符(280)),并且后来在项目管理器(210)通知这样做时换出任何占位符(280)。因此,客户端(220)可以与项目管理器 (210)进行交互,就好像客户端(220)正与同步数据来源进行交互那样,而不管实际的数据来源(230)是否可以提供针对数据请求的同步响应。在一种替换设计中,项目管理器(210)(而不是客户端(220))可以保持一种用户接口数据结构。举例来说,在用户接口数据结构是DOM树的情况下,客户端(220)可以接收数据表示项目(260 )作为一个DOM元素,并且可以假设该DOM元素在该DOM元素下方具有对应于一个完整列表中的各项目的子代。客户端(220)可以使用项目管理器(210)而不是DOM 接口来从一个子代导航到下一个子代。项目管理器(210)可以包括占位符(280),并且利用 DOM树本身中的数据表示项目(260)来替换所述占位符。按照这种方式,项目管理器(210) 可以沿着各子代来回导航,并且可以利用占位符(280)以及后来当数据表示项目(260)变得可用时利用数据表示项目(260)来更新各子代。环境(200)还可以包括用于记录保持的一个或更多数据结构,诸如用以跟踪数据表示项目(260)的列表中的一个或更多位置的数据结构。C.返回数据表示项目的占位符的实例
下面是如下技术的一种实现方式的描述项目管理器(210)可以使用该技术来更新本地数据表示(265)以便在项目管理器(210)接收到请求(250)和数据项目(262)时跟踪占位符(280)和数据表示项目(260)。总体来说,这种技术可以包括将占位符(280)插入到本地数据表示(265)中的各槽中,以及在相应的数据项目(262)被接收并且与相关联的占位符(280)匹配(例如通过所述数据表示具有匹配的索引编号、具有一个或更多匹配的相邻索引编号等等)时在所述槽中利用相应的数据表示项目(260)来替换占位符(280)。下面将参照图3描述这种技术,该图示出了原始本地数据表示(310)的一部分、响应于来自项目管理器的请求获取的所接收到的数据(320)的一部分、在利用数据表示项目替换了原始本地数据表示(310)中的占位符之后所得到的更新后的本地数据表示(330)的一部分以及进一步更新后的本地数据表示(340)的一部分的具体实例。在图3中,按照其索引的顺序列出了各项目,这可能是或者可能不是其在本地数据表示中的实际顺序。在图3中,带有问号的三角形图示占位符,带有大写字母的三角形图示已被客户端请求并且实例化的数据表示项目,并且带有字母的方框图示已从数据来源返回但是未被客户端请求并且尚未实例化的数据项目。问号或大写字母下方的数字表明所述项目在数据来源中的总体数据集中的索引编号。此外,大写字母可以表示数据项目和相应的数据表示项目的关键字。原始本地数据表示(310)图示在进行获取时的本地数据表示的一个实例。原始本地数据表示(310)被图示为包括索引为85、86、87和88的四个占位符(其表示已被客户端请求但是尚未被项目管理器返回的项目),其后是具有对应的索引89和90的实例化数据表示项目F和G,随后是具有对应的索引91和92的未被请求(即尚未被客户端请求)的数据项目H和J。原始本地数据表示(310)的该图示表明,客户端至此请求了六个项目,但是仅有F和G连同未被请求的项目H和J已到达。所接收到的数据(320)图示更多已到达的数据项目,包括对应的索引为86、87、88 和89的项目C、D、E和F。所接收到的数据(320)中的项目可以被渲染并且与原始本地数据表示(310)中的占位符相匹配,并且可以替换本地数据表示中和客户端处的那些占位符。这样可以产生更新后的本地数据表示(330),其图示在所接收到的项目C、D和E已被渲染并且被包括在本地数据表示中的槽中之后的本地数据表示。可以发起例如针对C及其直接先驱者的另一次获取。此外,客户端可以请求G的后继者。作为响应,H可以被实例化并且被同步提供到客户端,其中在本地数据表示中做出相关联的改变,从而产生进一步更新后的本地数据表示(340)。III.用于返回数据表示项目的占位符的技术
现在将讨论用于返回数据表示项目的占位符的几种技术。可以在计算环境中执行这些技术当中的每一种。举例来说,可以在包括至少一个处理器和存储器的计算机系统中执行每一种技术,所述存储器包括其上存储的指令,所述指令当由所述至少一个处理器执行时使得该至少一个处理器执行所述技术(存储器存储指令(例如对象代码),并且当(一个或多个)处理器执行这些指令时,(一个或多个)处理器执行所述技术)。类似地,一项或更多项计算机可读存储介质可以在其上具体实现计算机可执行指令,所述计算机可执行指令当由至少一个处理器执行时使得该至少一个处理器执行所述技术。下面将参照图4描述一种用于返回数据表示项目的占位符的技术。所述技术可以包括项目管理器从客户端接收(410)针对多个数据表示项目的一个或更多请求的集合,其中数据表示项目可以表示数据来源中的数据项目。响应于(一个或多个)请求,项目管理器可以执行动作,其可以包括生成(420)对应于数据表示项目的占位符。所述动作还可以包括项目管理器响应于(一个或多个)请求而向客户端返回(430)占位符以及从数据来源请求 (440 )并接收(450 )数据项目。此外,所述动作还可以包括项目管理器向客户端提供(460 ) 数据表示项目并且向客户端通知(470)将要利用数据表示项目来替换占位符。这一通知 (470)可以按照多种方式当中的任一种来进行,诸如通过发送“项目可用”指令、发送“删除” 和相应的“插入”指令或者按照不大明确的方式来进行。举例来说,项目管理器可以在没有明确指令的情况下根据某一种正式协议或者不大正式的技术提供数据表示项目(例如通过包括针对所述项目的引用)和针对相应占位符的引用,但是其方式使得客户端理解将要利用相应的数据表示项目来替换占位符。可以响应于来自客户端的(一个或多个)相应请求同步地执行向客户端返回(430) 占位符,同时可以响应于来自客户端的相应请求异步地执行接收(450)来自数据来源的数据项目以及向客户端提供(460)表示项目。占位符可以包括用户接口单元。此外,所述动作还可以包括从渲染器获取对应于数据表示项目的用户接口单元。相应地,向客户端提供(460)表示项目可以包括向客户端提供这些用户接口单元。图4的技术还可以包括响应于占位符被返回到客户端,客户端利用输出设备呈现占位符。此外,所述技术还可以包括响应于客户端被通知将要利用数据表示项目来替换占位符,客户端利用输出设备呈现数据表示项目以替代占位符。从数据来源请求(440 )数据项目可以包括将来自客户端的多个请求分批在一起并且向数据来源发送针对由在所述多个请求中所请求的数据表示项目表示的数据项目的一个请求。此外,来自客户端的(一个或多个)请求可以包括多个请求,并且从数据来源请求 (440)数据项目可以包括项目管理器向数据来源发送多个请求。项目管理器的动作还可以包括从数据来源接收客户端尚未请求其(一个或多个) 数据表示的一个或更多附加数据项目;将一个或更多高速缓存的项目存储在高速缓存中, (一个或多个)高速缓存的项目是从一个群组中选择的,所述群组包括(一个或多个)附加数据项目、表示所述(一个或多个)附加数据项目的一个或更多数据表示项目及其组合;从客户端接收针对所述(一个或多个)附加数据表示项目的后续请求;以及利用所述(一个或多个)高速缓存的项目向客户端返回所述(一个或多个)附加数据表示项目当中的所请求的一个。项目管理器的动作还可以包括其他动作,包括以下各项从客户端接收针对所请求的一个或更多附加数据表示项目的一个或更多附加请求;向客户端返回与所述(一个或多个)附加数据表示项目相对应的一个或更多占位符;确定数据来源是否包括对应于所请求的(一个或多个)附加数据表示项目当中的每一个的数据项目;以及对于所请求的(一个或多个)附加数据表示项目当中的、项目管理器为其确定数据来源不包括与该附加数据表示项目相对应的数据项目的每一个所请求的附加数据表示项目,向客户端通知将要删除相应的占位符。此外,对于项目管理器没有与该附加数据表示项目相对应的数据来源中的数据项目的记录的每一个所请求的附加数据表示项目,项目管理器可以向客户端通知将要把相应的占位符作为幻影来对待。
现在将参照图5描述用于返回数据表示项目的占位符的另一种技术。所述技术可以包括在项目管理器处从客户端接收(510)针对多个数据表示项目的一个或更多请求的集合,其中数据表示项目表示数据来源中的数据项目。项目管理器可以对于每一个数据表示项目执行(515)动作。这样的动作可以对数据表示项目群组执行,并且/或者可以单独地对数据表示项目执行。所述动作可以包括确定(520 )数据表示项目是否可用来响应于一个或更多请求的集合而被同步返回到客户端。这一确定(520)可以包括确定数据来源是否可以将由数据表示项目所表示的数据项目同步返回到项目管理器,并且/或者确定数据表示项目是否可用来被同步返回到客户端包括确定项目管理器是否高速缓存了数据表示项目。 如果是,则所述动作可以包括将数据表示项目同步返回(530)到客户端。如果不是,则所述动作可以包括以下各项生成(540 )对应于数据表示项目的占位符;向客户端返回(550 )占位符;从数据来源获取(560)由数据表示项目所表示的数据项目;向客户端提供(570)数据表示项目;以及向客户端通知(580 )将要利用数据表示项目来替换占位符。所述占位符可以是包括占位符用户接口单元的经过渲染的占位符,并且被提供到客户端的每一个数据表示项目可以是包括项目用户接口单元的经过渲染的数据表示项目。如果项目管理器确定数据表示项目不可用于被同步返回到客户端,则对于每一个数据表示项目执行的动作可以附加地包括以下各项响应于占位符被返回到客户端,客户端利用输出设备呈现占位符;以及响应于客户端被通知将要利用数据表示项目来替换占位符,客户端利用输出设备呈现数据表示项目以替代占位符。此外,从数据来源获取(560)数据项目可以包括作为针对由来自客户端的多个请求中所请求的数据表示项目所表示的项目的一个请求的一部分而请求数据项目。图5的技术还可以包括项目管理器从数据来源接收尚未被客户端请求的一个或更多附加数据项目。可以由项目管理器把表示所述(一个或多个)附加数据项目的附加数据表示项目存储在高速缓存中(诸如存储在前面所讨论的本地数据表示中)。所述技术还可以包括项目管理器从客户端接收针对所述(一个或多个)附加数据表示项目之一的后续请求以及从高速缓存向客户端返回所述(一个或多个)附加数据表示项目当中的所请求的一个。所述技术还可以包括项目管理器执行以下动作从客户端接收针对所请求的一个或更多附加数据表示项目的一个或更多附加请求;向客户端返回与所述(一个或多个)附加数据表示项目相对应的一个或更多占位符;确定数据来源是否包括对应于所请求的(一个或多个)附加数据表示项目当中的每一个的数据项目;以及对于项目管理器针对其确定数据来源不包括与该附加数据表示项目相对应的数据项目的每一个所请求的附加数据表示项目,向客户端通知将要删除相应的占位符。此外,对于项目管理器确定数据来源不包括与该附加数据表示项目相对应的数据项目的每一个所请求的附加数据表示项目,项目管理器可以向客户端通知相应的占位符是幻影。现在将参照图6描述用于返回数据表示项目的另一种技术。图5的技术可以由项目管理器执行,其被配置成与多种不同客户端当中的任一种一起使用并且与多种不同数据来源当中的任一种一起使用。所述技术可以包括在项目管理器处从客户端接收(610)针对多个数据表示项目的一个或更多请求的集合,其中数据表示项目可以表示数据来源中的数据项目。项目管理器可以对于每一个所请求的数据表示项目执行(615)动作。所述动作可以包括确定(620)数据表示项目是否可用来响应于包括所述(一个或多个)请求的集合而被同步返回到客户端。如果是,则项目管理器可以将数据表示项目同步返回(630)到客户端而不向向客户端发送数据表示项目的占位符。如果项目管理器确定(620 )数据表示项目不可用于被同步返回到客户端,则项目管理器可以执行以下动作生成(640)对应于数据表示项目的占位符;向客户端返回(650)占位符;从数据来源获取(660)由数据表示项目所表示的数据项目;向客户端提供(670)数据表示项目;以及向客户端通知(680)将要利用数据表示项目来替换占位符。所述占位符可以是包括占位符用户接口单元的经过渲染的占位符。 此外,可以按照包括项目用户接口单元的经过渲染的数据表示项目的形式将数据表示项目提供(670)给客户端。项目管理器可以从客户端接收(685 ) 一个或更多附加数据项目,尽管相应的(一个或多个)数据表示项目尚未被客户端请求。项目管理器可以把表示所述(一个或多个)附加数据项目的(一个或多个)附加数据表示项目存储(688)在高速缓存中。项目管理器可以从客户端接收(690)后续请求,从而请求所述(一个或多个)附加数据表示项目之一。可以从高速缓存向客户端返回(692)所请求的附加数据表示项目。图6的技术还可以包括项目管理器从客户端接收针对数据表示项目的附加请求。 项目管理器可以向客户端返回占位符,其中所述占位符对应于在所述附加请求中所请求的数据表示项目。项目管理器可以确定数据来源是否包括对应于在所述附加请求中所请求的每一个数据表示项目的数据项目。对于项目管理器为其确定数据来源不包括与该数据表示项目相对应的数据项目的、在所述附加请求中所请求的每一个数据表示项目,可以向客户端通知相应的占位符是幻影并且将要被删除。虽然所述主题内容是在特定于结构特征和/或方法动作的语言中描述的,但是要理解的是,在所附权利要求书中限定的主题内容不一定限于前面所描述的具体特征或动作。相反,前面所描述的具体特征和动作是作为实施权利要求的示例形式而公开的。
权利要求
1.一种计算机实施的方法,包括项目管理器(210)接收来自客户端(220)的针对多个数据表示项目(260)的一个或更多请求(250 )的集合,数据表示项目(260 )表示数据来源(230 )中的数据项目(262 );以及响应于所述一个或更多请求(250),项目管理器(210)执行包括以下的动作 生成对应于数据表示项目(260)的占位符(280); 响应于所述一个或更多请求(250)向客户端(220)返回占位符(280); 从数据来源(230 )请求数据项目(262 ); 从数据来源(230 )接收数据项目(262 ); 向客户端(220 )提供数据表示项目(260 );以及向客户端(220 )通知将要利用数据表示项目(260 )来替换占位符(280 )。
2.权利要求1的方法,其中向客户端返回占位符是响应于一个或更多请求的集合当中的一个或更多相应请求而同步执行的,而从数据来源接收数据项目以及向客户端提供数据表示项目是响应于一个或更多请求的集合当中的相应请求而异步执行的。
3.权利要求1的方法,其中占位符包括用户接口单元。
4.权利要求1的方法,其中所述动作还包括从渲染器获取对应于数据表示项目的用户接口单元,并且其中向客户端提供表示项目包括向客户端提供用户接口单元。
5.权利要求1的方法,其中所述方法还包括响应于占位符被返回到客户端,客户端利用输出设备呈现占位符;以及响应于客户端被通知将要利用数据表示项目来替换占位符,客户端利用输出设备呈现数据表示项目以替代占位符。
6.权利要求1的方法,其中从数据来源请求数据项目包括把来自客户端的多个请求分批在一起并且向数据来源发送针对由在所述多个请求中所请求的数据表示项目所表示的数据项目的一个请求。
7.权利要求1的方法,其中所述动作还包括从数据来源接收由尚未被客户端请求的一个或更多附加数据表示项目所表示的一个或更多附加数据项目;将一个或更多高速缓存的项目存储在高速缓存中,所述一个或更多高速缓存的项目是从一个群组中选择的,所述群组包括所述一个或更多附加数据项目以及表示所述一个或更多附加数据项目的一个或更多数据表示项目;从客户端接收针对所述一个或更多附加数据表示项目之一的后续请求;以及利用所述一个或更多高速缓存的项目的至少一个向客户端返回所述一个或更多附加数据表示项目当中的所请求的一个。
8.权利要求1的方法,还包括项目管理器执行以下动作从客户端接收针对所请求的一个或更多附加数据表示项目的一个或更多附加请求; 向客户端返回与所述一个或更多附加数据表示项目相对应的一个或更多占位符; 确定数据来源是否包括对应于所请求的一个或更多附加数据表示项目当中的每一个的数据项目;以及对于所请求的一个或更多附加数据表示项目当中的、项目管理器为其确定数据来源不包括与该附加数据表示项目相对应的数据项目的每一个所请求的附加数据表示项目,向客户端通知将要删除相应的占位符。
9.在其上具体实现计算机可执行指令的一项或更多项计算机可读存储介质,所述计算机可执行指令当由至少一个处理器执行时使得该至少一个处理器执行包括以下的动作项目管理器(210)接收来自客户端(220)的针对多个数据表示项目(260)的一个或更多请求(250)的集合,数据表示项目(260)表示数据来源(230)中的数据项目(262);以及对于每一个数据表示项目(260 ),项目管理器(210 )执行以下动作 确定数据表示项目(260)是否可用来响应于一个或更多请求(250)的集合而被同步地返回给客户端(220);如果项目管理器(210)确定数据表示项目(260)可用来被同步地返回给客户端(220), 则将数据表示项目(260)同步地返回给客户端;如果项目管理器(210)确定数据表示项目(260)不可用来被同步地返回给客户端 (220),则执行以下动作生成对应于数据表示项目(260)的占位符(280); 向客户端(220)返回占位符(280);从数据来源(230)获取由数据表示项目U60)所表示的数据项目(262); 向客户端(220 )提供数据表示项目(260 );以及向客户端(220 )通知将要利用数据表示项目(260 )来替换占位符(280 )。
10.一项或更多项计算机可读存储介质,包括具体实现在所述一项或更多项计算机可读存储介质上的用于项目管理器(210)的计算机可执行指令,项目管理器(210)被配置成与多种不同客户端(220)当中的任一种一起使用并且与多种不同数据来源(230)当中的任一种一起使用,从而使得当用于项目管理器的计算机可执行指令由至少一个处理器(130)执行时,所述计算机可执行指令使得该至少一个处理器(130)执行包括以下的动作项目管理器(210)接收来自客户端(220)的针对多个数据表示项目(260)的一个或更多请求(250 )的集合,数据表示项目(260 )表示数据来源(230 )中的数据项目(262 );以及对于每一个数据表示项目(260 ),项目管理器(210 )执行以下动作 确定数据表示项目(260)是否可用来响应于一个或更多请求(250)的集合而被同步地返回给客户端(220);如果项目管理器(210)确定数据表示项目(260)可用来被同步地返回给客户端(220), 则将数据表示项目(260)同步地返回给客户端(220)而不向客户端(220)发送数据表示项目(260)的占位符(280);如果项目管理器(210)确定数据表示项目(260)不可用来被同步地返回给客户端 (220),则执行以下动作生成对应于数据表示项目(260)的占位符(280),所述占位符是包括占位符用户接口单元的经过渲染的占位符(280);向客户端(220)返回占位符(280);从数据来源(230)获取由数据表示项目U60)所表示的数据项目(262);按照包括项目用户接口单元的经过渲染的数据表示项目(260)的形式向客户端提供数据表示项目(260);以及向客户端(220 )通知将要利用数据表示项目(260 )来替换占位符(280 ); 从数据来源(230)接收由尚未被客户端(220)请求的一个或更多附加数据表示项目 (260)所表示的一个或更多附加数据项目(262);将一个或更多附加数据表示项目(260)存储在高速缓存中;从客户端(220 )接收后续请求(250 ),所述后续请求(250 )请求所述一个或更多附加数据表示项目(260)之一;以及从高速缓存向客户端(220 )返回所述一个或更多附加数据表示项目(260 )当中的所请求的一个。
全文摘要
本发明涉及对于数据表示项目返回的占位符。可以由项目管理器从客户端接收针对数据表示项目的一个或更多请求。数据表示项目可以表示数据来源中的数据项目。作为响应,项目管理器可以执行以下动作生成对应于数据表示项目的占位符;向客户端返回占位符;从数据来源获取数据项目;向客户端提供数据表示项目;以及向客户端通知将要利用数据表示项目来替换占位符。项目管理器可以确定每一个数据表示项目是否可以被同步地返回给客户端。如果是,则项目管理器可以同步地返回该数据表示项目,并且可以放弃向客户端提供该数据表示项目的占位符。这样可以允许客户端与针对同步和异步数据来源两者的单个接口进行交互。
文档编号G06F17/30GK102521338SQ201110405580
公开日2012年6月27日 申请日期2011年12月8日 优先权日2010年12月8日
发明者A.S.沙, M.A.内尔特, N.布伦, P.A.古斯莫里诺, P.J.奎亚特科夫斯基, S.A.范内斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1