与视图相关联地对服务项目进行存储转让专利

申请号 : CN201580013664.4

文献号 : CN106104595B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·K·辛哈K·巴拉苏布拉马尼安D·科兹沃夫斯基M·I·博里森科S·T·韦尔斯

申请人 : 微软技术许可有限责任公司

摘要 :

在本文中描述了用于支持基于视图的存储的系统、方法、和软件。提供针对服务的用户界面的服务应用接收由服务所传送的数据并且识别至少一个服务项目以在在用户界面中所渲染的各种视图中的至少一个视图中呈现。接着,所述服务应用识别该服务项目与哪个视图相关联,并且与所识别的视图或多个视图相关联地对该服务项目进行存储。

权利要求 :

1.具有存储在其上的程序指令的一个或多个计算机可读存储介质,包括用于促进针对服务的用户界面的服务应用,其中,当由处理系统执行时,所述程序指令引导所述处理系统至少执行以下操作:从所述服务所传送的数据中至少识别出用于在针对所述服务的所述用户界面中所渲染的多个视图中的至少一个视图中呈现的服务项目;

识别所述服务项目与所述多个视图中的哪个视图相关联;并且

将所述服务项目的格式转换成准备好当在针对所述服务的所述用户界面中被渲染时在所述视图中呈现的呈现格式,所述呈现格式与所述服务项目的所述格式不同;并且将所述服务项目以所述呈现格式而和针对与所述服务项目的关联所识别的所述多个视图中的至少一个视图相关联地进行存储,并且还将与所述多个视图相关联地存储所述服务项目的顺序区分优先次序,并且以从优先级所得出的顺序将所述服务项目存储在对应于所述多个视图的数据结构中。

2.根据权利要求1所述的一个或多个计算机可读存储介质,其中,为了将所述服务项目和所述至少一个视图相关联地进行存储,所述服务应用引导所述处理系统将所述服务项目添加至包括与所述视图相关联的多个组件的数据结构中,并且所述服务项目具有准备好当在针对所述服务的所述用户界面中被渲染时在所述视图中呈现的所述呈现格式。

3.根据权利要求2所述的一个或多个计算机可读存储介质,其中,响应于用户在所述用户界面中从所述多个视图中的之前的视图导航至所述视图,所述服务应用还引导所述处理系统将请求传送至文件系统以取回与所述视图相关联的所述数据结构,并且在所述用户界面中显现所述多个组件,包括所述服务项目。

4.根据权利要求1所述的一个或多个计算机可读存储介质,其中,所述服务应用还引导所述处理系统在将所述服务项目和所述视图相关联地进行存储之前,将所述服务项目转换成所述呈现格式,其中,所述呈现格式包括以其在所述用户界面中呈现所述服务项目的格式。

5.根据权利要求4所述的一个或多个计算机可读存储介质,其中,所述多个视图中的每个视图对应于多个数据结构中的不同的一个数据结构,其中,所述数据结构用于在其中以所述呈现格式而存储针对所述多个视图中的每个视图的多个组件。

6.一种装置,包括:

一个或多个计算机可读存储介质;以及

存储在所述一个或多个计算机可读存储介质上的程序指令,并且包括能够由处理系统执行以至少渲染针对服务的用户界面的电子邮件应用,其中,所述电子邮件应用包括:服务模块,当其被执行时,引导所述处理系统从所述服务中识别包括用于在所述用户界面中的多个视图中的至少一个视图中呈现的电子邮件的数据,并且识别所述电子邮件与所述多个视图中的哪个视图相关联;

存储模块,当其被执行时,引导所述处理系统将服务项目和针对与所述服务项目的关联所识别的所述多个视图中的至少一个视图相关联地进行存储;

所述处理系统,其被配置为执行所述程序指令;以及

用于在所述用户界面中显示所述视图的用户界面系统;

当所述服务模块被执行时,进一步引导所述处理系统将与所述多个视图相关联地存储所述服务项目的顺序区分优先次序;并且当所述存储模块被执行时,进一步引导所述处理系统以从优先级所得出的顺序将所述服务项目存储在对应于所述多个视图的数据结构中。

7.根据权利要求6所述的装置:

其中,为了将所述电子邮件和所述至少一个视图相关联地进行存储,所述存储模块引导所述处理系统将所述电子邮件存储在包括与所述视图相关联的多个组件的数据结构中,并且所述电子邮件被格式化以用于在所述视图中显现;

其中,为了将所述电子邮件和所述视图相关联地进行存储,所述存储模块引导所述处理系统将所述电子邮件以适用于在所述视图中显现所述电子邮件的格式而添加到所述数据结构中的所述多个组件中。

8.根据权利要求7所述的装置,其中,响应于用户在所述用户界面中从所述多个视图中的之前的视图导航至所述视图,所述存储模块还引导所述处理系统将请求传送至文件系统以取回与所述视图相关联的所述数据结构,并且其中,所述程序指令还包括视图模块,当所述视图模块被执行时,引导所述处理系统将所述数据结构传送至在所述用户界面中显现所述多个组件和所述电子邮件的用户界面系统以呈现所述视图。

9.根据权利要求6所述的装置:

其中,所述存储模块还引导所述处理系统在将所述电子邮件和所述视图相关联地进行存储之前,将所述电子邮件转换成呈现格式,其中,所述呈现格式包括以其在所述用户界面中呈现所述电子邮件的格式,并且其中,所述呈现格式与所述电子邮件的所述格式不同;并且其中,所述多个视图中的每个视图对应于多个数据结构中的不同的一个数据结构,其中,所述数据结构用于在其中以所述呈现格式而存储针对所述多个视图中的每个视图的多个组件,并且其中,所述多个视图包括收件箱视图、已发送消息视图、以及预览视图。

说明书 :

与视图相关联地对服务项目进行存储

技术领域

[0001] 本公开的方面涉及计算硬件和软件技术,并且特定而言涉及对服务项目的基于视图的存储。

背景技术

[0002] 在计算硬件和软件技术的领域中,用户越来也多地常规性地访问并参与多种在线服务。他们的访问是至少部分地通过包括各种对象以及用户可以与其交互的其他界面元素的用户界面来提供的。例如,针对电子邮件服务的用户界面可以包括各种对象以及代表电子邮件、菜单项、以及其他界面元素的其他元素。
[0003] 可以在合适的计算设备上渲染用户界面,以使得用户可以与该界面的界面元素进行交互以作为对服务的用户体验的一部分。在一些实例中,用户界面可以是由在浏览器应用的上下文内、或者在帮助响应于用户交互而驱动用户界面的一些其他执行环境内运行的客户端应用渲染的。例如,可以在包括一系列电子邮件的用户界面中呈现电子邮件收件箱,通过该用户界面用户可以进行滚动,因此将应用的焦点改变至收件箱中的不同的位置。在客户端应用内渲染这样的状态转换涉及客户端资源间的协调,这有时可能导致次佳的用户体验。
[0004] 在简单的示例中,与电子邮件应用进行交互的用户可以跳至新的文件夹,而几乎同时从电子邮件服务接收到新的电子邮件。为了在新的文件夹中显示所述电子邮件,客户端应用针对在新的文件夹中所指定的每封电子邮件而发起独立的数据请求。另外,必须取回图形对象和其他内容。将电子邮件数据转换成适用于对用户界面中的图形对象进行渲染的格式。
[0005] 取回每个独立的电子邮件并且将电子邮件转换成适用于呈现的格式可能花费大量的时间,使得在用户界面中对新的文件夹的渲染会明显地延迟。此外,由于新近到达的电子邮件,客户端应用在用户界面中渲染新的文件夹及其内容可能较慢。新近到达的电子邮件必须被处理并存储,这可能会消耗否则将贡献于渲染新的文件夹的资源。

发明内容

[0006] 在本文中所提供的是用于实现对数据的基于视图的存储的系统、方法、和软件,这允许与所识别的视图相关联地存储并取回服务项目,并且增强用户体验。
[0007] 在至少一个实现中,支持针对服务的用户界面的服务应用接收由服务所传送的数据并且识别至少一个服务项目以在在用户界面中所渲染的各种视图中的至少一个视图中呈现。接着,服务应用识别服务项目与哪些视图相关联,并且与所识别的视图或多个视图相关联地对服务项目进行存储。
[0008] 提供了该发明内容以用简化的形式介绍在下文的具体实施方式中所进一步描述的概念的选择。应当理解的是,该发明内容不旨在识别所要求保护的主题的关键特征或本质特征,也不旨在用来限制所要求保护的主题的范围。

附图说明

[0009] 通过参考以下附图可以更好地理解本公开的许多方面。尽管许多实现是结合这些附图来描述的,但本公开不限于在本文中所公开的实现。相反,本公开的目的是要覆盖所有的变型、修改、和等价物。
[0010] 图1A示出了实现中的服务环境和操作场景,在该实现中,与视图相关联地接收并存储服务项目。
[0011] 图1B示出了实现中的服务环境和操作场景,在该实现中,从存储中取回针对视图的服务项目和组件。
[0012] 图2示出了实现中的基于视图的存储过程。
[0013] 图3示出了实现中的基于视图的取回过程。
[0014] 图4示出了实现中的电子邮件环境和应用架构。
[0015] 图5示出了实现中的操作序列。
[0016] 图6示出了实现中的操作序列。
[0017] 图7A示出了实现中的基于视图的存储过程,而图7B示出了实现中的用于处理事件和电子邮件更新的状态感知的过程。
[0018] 图8示出了实现中的数据结构模型。
[0019] 图9示出了实现中的计算系统。

具体实施方式

[0020] 在本文中所公开的实现包括对存储和取回服务项目(例如,电子邮件项目、预约、和任务)的方式的增强。采取专注于视图的方式从而将服务项目与视图相关联地进行存储,以使得当视图被载入到用户界面中时,能够取回与视图相关联的数据结构,并且可以从中访问各种服务项目。通过该方式,可以降低或减轻针对每个单独的服务项目的重复和昂贵的访问尝试,这可以加速在视图间转换和装载视图的过程。
[0021] 在至少一个实现中,服务应用促进针对服务的用户界面。与用户界面进行交互的用户可以在各种视图内或者在各种视图间浏览。例如,用户可以在电子邮件应用的收件箱的视图与已发送消息文件夹的视图之间浏览,或者在会话视图间浏览。在另一个示例中,用户可以在日历的月视图、周视图、和日视图间浏览。在另一个示例中,用户可以在给定的视图内滚动,例如通过向上或向下滚动收件箱中的一系列电子邮件或者博客或社交网络应用中的新闻摘要。
[0022] 在后台中,服务应用与服务进行通信以交换有关服务的信息。例如,电子邮件应用可以与电子邮件服务进行通信以发送和接收电子邮件、或者更新已经接收到的电子邮件的状态(例如,对电子邮件是否被标记、移动、删除等进行更新)。在另一个示例中,日历应用可以与日历服务进行接合以发送和接收预约或者发送和接收对现有的预约的更新。在这些和其他场景中,服务应用从服务中接收数据,并且从中识别出至少一个服务项目,以在在针对服务的用户界面中所渲染的各种视图中的至少一个视图中最终呈现。
[0023] 服务应用将服务项目和与服务项目相对应的视图或多个视图相关联地进行存储,而不是将服务项目作为单独地访问的自包含的数据结构来存储。接着,通过访问与视图相关联的相干数据结构,可以和与视图相关联的其他服务项目一起取回所述服务项目。从而,服务应用识别服务项目与哪个或哪些视图相关联,并且将所述服务项目存储在其对应的数据结构中。在数据结构中可以包括其他元素,例如,当渲染对应的视图时所使用的其他服务项目和其他组件。因此,当渲染视图时,可以针对视图执行较少的访问操作来访问其数据结构,而不是针对视图中的每个服务项目而重复单独的访问操作。
[0024] 在一些场景中,给定的数据结构可以是可以向其写入各种组件和服务项目的文件。服务应用可以向文件系统发起请求以打开服务应用从中可以读出用于渲染视图的组件和服务项目的文件,而不是针对每个服务项目而发出重复的读取请求。可以响应于多种事件而发生对文件系统的这样的请求,例如,响应于用户在用户界面中从之前的视图到另一个视图进行浏览。在一些实现中,将单个视图存储在单个数据结构或文件中,以使得在视图和数据结构之间存在一对一的关系。然而,在一些实现中,可以将多个视图存储在单个数据结构中。应当理解的是,视图和数据结构中的多种关系是可能的,并且被认为在本公开的范围内。
[0025] 在一些实现中,存储在与视图相关联的数据结构中的组件可以是以当在针对服务的用户界面中渲染时准备好在视图中呈现的呈现格式存储的。为了进一步加速视图的装载,可以将存储在数据结构中的服务项目从不是呈现格式的格式转换成呈现格式。接着,服务项目可以被添加至数据结构中的其他组件,并且可以以与其他组件相同的格式被存储在数据结构中。应当理解的是,将服务项目转换成呈现格式可以在将服务项目存储在所识别的数据结构中之前进行。因此,在由用户选择对应的视图的或者是出于其他原因而以其他方式显现对应的视图的情况下,服务项目准备好被处理以用于在用户界面中渲染。
[0026] 在一些实现中,单个的服务项目可以与多个视图相关联。另外,一组视图中的每个视图都可以对应于一组数据结构中的不同的一个数据结构。换句话说,可以给予每个视图其自己的数据结构。因此,可以将与多于一个视图或视图的子集相关联的服务项目存储在多于一个数据结构、或数据结构的子集中。
[0027] 可以通过将与视图相关联地存储服务项目的顺序区分优先次序(prioritize)来提供对基于视图的存储的进一步的增强。在示例中,可以给一组视图中的每个视图分配优先级。接着,可以以从所述优先级所得出的顺序将一组服务项目存储在对应于视图的数据结构中。例如,可以将收件箱视图优先于自定义文件夹的视图。通过该方式,输入服务项目更有可能可用于即时查看。
[0028] 在另一个增强中,当对事件与新的服务项目的到达进行平衡时,可以考虑应用状态。服务应用的状态可以关于用户目前如何与用户界面进行互。如果用户滚动浏览视图或者主动在多个视图间移动,则处理这样的活动所需要的数据操作可以优先于存储新近到达的服务项目所需要的那些数据操作。与之相反,如果服务应用的状态相对稳定、或者关于用户界面也许是静止的,则可以使到来的服务项目优先。
[0029] 现在参考附图,图1A和图1B示出了其中服务应用采用对服务项目的基于视图的存储以增强服务数据的存储的服务环境和操作场景。图2示出了由客户端应用遵循的用于在视图中存储数据过程,而图3示出了用于取回数据的过程。图4示出了电子邮件环境以及可以用于促进与电子邮件服务的用户体验的示例性应用架构。图5和图6示出了各种实现中的示例性数据流,而图7A和图7B示出了用于增强数据存储以改进用户体验的两个更多的过程。图8示出了在实现中的与视图相关联的数据结构的模型。图9示出了代表在本文中所讨论的各种应用平台和服务平台的计算系统。
[0030] 转到图1A,操作场景100A涉及在其上运行服务应用102的应用平台101。服务应用102与在服务平台111上运行的服务112进行通信,以通过用户界面103来给用户或多个用户提供对服务112的访问(在图1B中所示出)。用户界面103包括各种界面元素,其中,用户可以通过诸如鼠标点击、触摸、手势、语音命令、或任何其他类型的用户输入之类的用户输入来与所述各种界面元素进行交互。应当理解的是,在操作场景100A中可以包括额外的应用平台和额外的客户端应用。
[0031] 应用平台101代表能够运行客户端应用102并实现过程200、过程300、或两者的任何物理的或虚拟的计算系统、设备、或其集合。应用平台101的示例包括但不限于:智能电话、膝上型计算机、平板计算机、台式计算机、混合式计算机、游戏机、智能电视机、和虚拟机、及其任何变型或组合,它们由在图9中所示出的计算系统900代表。
[0032] 服务应用102代表能够实现用于增强服务数据如何被存储和取回的过程200、过程300、或两者的任何软件应用、模块、组件、或其集合。服务应用102的示例包括但不限于:电子邮件应用、实时通信应用、博客和微博客应用、社交网络应用、电子商务应用、和游戏应用、以及能够渲染用户界面并采用过程200或过程300的任何其他类型的应用。服务应用102可以是本地安装并执行的应用、流式传输的应用、移动应用、或其任何组合或变型。在一些实现中,服务应用102可以是在浏览器应用的上下文中执行的基于浏览器的应用。服务应用
102可以被实现为独立的应用或者可以跨多个应用分布。
[0033] 服务平台111代表能够托管服务112的全部或一部分的任何物理的或虚拟的计算系统、设备、或其集合。服务平台111的示例包括但不限于:服务器计算机、网络服务器、应用服务器、机架式服务器、刀片式服务器、虚拟机服务器、或者塔式服务器、以及任何其他类型的计算系统,它们由在图9中所示出的计算系统900代表。在一些场景中,可以在数据中心、虚拟数据中心、或一些其他合适的计算设施中实现服务112。服务112的示例包括但不限于:网络服务、电子邮件服务、实时通信服务、博客和微博客服务、社交网络服务、电子商务服务、和游戏服务、以及任何其他类型的服务、服务的组合、或其变型。服务112有时可以被称为云服务、在线服务、互联网服务等。
[0034] 在操作中,当在应用平台101上执行时,服务应用102与服务112进行通信以促进服务的各种方面。例如,服务应用102可以与服务112进行通信以发送和接收电子邮件、安排预约、参加在线游戏、在社交网络或博客上发布和消耗内容、或者出于任何其他有关服务的原因。服务应用102还渲染用户可以通过其与服务112进行交互的用户界面103。用户可以浏览屏幕、菜单、或服务112的其他方面、消耗或构成内容、参加游戏、浏览在线商品、参加通信、或者以一些其他方式体验服务112。
[0035] 为了促进用户体验,在可以包括用户界面元素(例如,图标、图像、菜单、或者用户可以与其进行交互的其他对象)的用户界面103中呈现了各种视图。用户界面103还可以包括与服务122相关联的服务项目(或其图形代表)。但是在可以在用户界面103中呈现服务项目之前,由服务112将所述服务项目传送至服务应用102。例如,可以发生电子邮件更新,在这期间,将新的电子邮件传递至服务应用102。在其他示例中,可以传递新的预约、下载新的联系人、创建新的游戏简档等。
[0036] 当处理在图1A中由服务项目105和服务项目107所表示的到来的服务项目时,服务应用102采用过程200。电子邮件、日历项目、博客帖子、新闻短片、以及即时消息都是服务项目的非限制性示例。服务项目105和服务项目107根据被服务112和服务应用102两者所理解的服务协议而被格式化以允许数据的交换。服务应用102接收服务项目105和服务项目107,并且识别服务项目中的每个服务项目与哪些视图相关联。在该场景中,各种示例性视图包括视图131、视图141、以及视图151。视图可以代表通过其用户可以通过用户界面103与服务112进行交互的视角、窗口、或者范例。视图的示例包括但不限于:收件箱视图、已发送消息视图、自定义文件夹视图、消息预览面板、日历的月视图、周视图、以及日视图。其他类型的视图是可能的,并且可以认为在本公开的范围内。
[0037] 在识别了针对服务项目105和服务项目107中的每个服务项目的相关联的视图或多个视图之后,服务应用102将服务项目存储在与每个视图相关联的给定的数据结构中。在操作场景100A中,数据结构133与视图131相关联、数据结构143与视图141相关联、而数据结构153与视图151相关联。此外在操作场景100A中,出于示例性的目的而假设服务项目105与视图131和视图141相关联,而假设服务项目107仅与视图131相关联。没有服务项目与视图151相关联。由此,将服务项目105与组件135一起存储在数据结构133中,所述组件135代表可以存储在数据结构133中并且当渲染视图131时可以被使用的其他组件。将服务项目107也存储在数据结构133中。
[0038] 因为服务项目105除了与视图131相关联之外,还与视图141相关联,因此也将服务项目105存储在数据结构143中。将服务项目105添加至代表可以被存储在数据结构143中并可以用于渲染视图141的其他组件的组件145和组件147。数据结构153包括代表当渲染视图151时可以使用的其他组件的组件155、组件157、以及组件159。
[0039] 在一些实现中,服务应用102还可以将服务项目105和服务项目107从由服务112所传送的服务格式转换或转变成适用于在用户界面103中呈现的呈现格式。接着,可以以服务项目可以在用户界面103中渲染的格式或协议将服务项目105和服务项目107存储在数据结构133和数据结构143中。通过该方式,可以避免在请求视图时转换服务项目,从而进一步增强用户体验。关于服务项目105和服务项目107的格式的改变是由填充模式的改变来表示的,所述填充模式的改变是从当所述服务项目由服务应用102接收到时相对于当存储在数据结构133和143中时的改变。还应当理解的是,服务项目105和服务项目107的填充模式(或没有)与存储在数据结构133和143中的其他组件相同。
[0040] 图1B示出了操作场景100B,其中,发生从一个视图161到另一个视图131的转换,从而需要从存储中取回数据结构133。在操作中,用户通过用户界面103来体验视图161。视图161可以代表由服务应用102所渲染的并且通过其用户可以与服务112进行交互的任何视图。视图161包括用户可以与其进行交互的各种组件,它们由组件165、组件167、以及组件
169来表示。组件165、167、和169可以是例如图像、链接、或者提供视图161的边界、布局、导航工具、和结构的其他图形项目。组件165、167、和169还可以是数据项目,例如包括供用户消耗的内容的电子邮件或预约。多种组件是可能的,并且可以认为在本公开的范围内。
[0041] 在操作场景100B中,关于组件167而发生触发了到视图131的转换的事件121。事件121可以是鼠标点击、触摸、手势、语音命令、或者经由显示用户界面103的用户接口系统来输入的一些其他类型的用户命令。事件121还可以代表自动触发到视图131的转换的后台处理或一些其他事件。
[0042] 响应于事件121的发生,服务应用102识别事件所涉及的视图。例如,服务应用102可以识别视图161的哪一部分或组件是事件121的主题,并且接着识别哪个视图与该组件相关联。作为事件121的主题的组件可以包括驱动对随后的视图的识别的链接或一些其他指令。
[0043] 在该示例中,关于组件167而发生事件121,出于示例性的目的假设这触发了从视图161到视图131的转换。从而,从存储中取回数据结构143并且数据结构143包括组件145、组件147、以及服务项目105。当在用户界面103中渲染视图131时,在视图131中呈现了组件145、组件147、和服务项目105。
[0044] 从前述的操作场景中应当理解的是,对服务项目的基于视图的存储允许服务应用比过去更快地在用户界面中显现视图。基于视图的存储允许服务应用仅仅取回包括针对给定的视图的组件和服务项目的相干数据结构,而不是发起多个读取请求以获得与视图相关的服务项目,并且接着不得不将该服务项目转换成合适的呈现格式。另外,可以已经以呈现友好的格式存储了服务项目,以使得可以避免转换其格式的步骤。这些技术限制由服务应用发起的读取请求的数量并且加速视图的加载。
[0045] 尽管前述示例示出了服务项目存储在与视图相关联的相干数据结构中,但应当理解的是,在一些场景中,服务项目可以仍然存储在其他类型的数据结构中或独立地存储。例如,可以将服务项目存储在与视图相关联的数据结构中并且以呈现友好的格式来存储,而同时,可以将所述服务项目的复本以其原始的格式存储在不同的数据结构中或者作为其自身的数据结构而独立地存储。
[0046] 图2更加详细地示出了当处理来自服务112的到来的数据是可以由服务应用102采用的过程200。在向服务应用102提供服务的过程中,服务112传送可以包括新的服务项目的数据。当新的服务项目到达时,将它们写入到存储中。但是服务应用102将服务项目存储在与视图相关联的相干数据结构中,而不是仅仅将每个服务项目作为独立的数据结构(并且以对它们进行传送的格式)来存储。
[0047] 从而,服务应用102识别哪个视图或哪些视图与给定的服务项目相关联(步骤201)。服务项目可以仅与一个视图相关联,但在一些场景中,服务项目可以与多个视图相关联。示例包括可以与收件箱视图和会话视图两者相关联的电子邮件。另一个示例包括可以与日历的月视图和日历的周视图相关联的预约。
[0048] 接下来,将每个服务项目的格式转换或转变成适用于在用户界面中进行渲染的呈现格式(步骤203)。执行该操作以使得当从存储中被取回以用于在用户界面中进行渲染时,服务项目不需要被重新格式化。在一些场景中,可以根据通信协议(例如,电子邮件、即时消息传送、或博客协议)来对服务项目进行格式化。因此,呈现友好的格式可以是适用于通过呈现协议来处理并且最终在用户界面中呈现的格式。
[0049] 服务应用102接着与针对服务项目的所识别的视图和多个视图相关联地对每个服务项目进行存储(步骤205)。对服务项目进行存储可以涉及打开与视图相关联的数据结构以及将服务项目写入至数据结构中。在其他实现中,即使没有被定义为离散的数据结构,也可以将服务项目写入到通常与视图相关联的存储器中的块和范围中。用于存储服务项目的其他机制是可能的,并且可以认为在本公开的范围内。
[0050] 图3示出了当从存储中取回数据时可以由服务应用102采用的过程300。在操作中,可以发生触发了服务应用102从存储中取回数据的事件。事件可以是例如鼠标点击、触摸、手势、语音命令、或者关于项目、文件夹、模块、或服务应用102的一些其他方面而发起的用于指示他们对导航到该方面的期望的其他用户输入。其他事件是可能的,例如,由背景处理所发起的触发事件。
[0051] 响应于事件的发生,服务应用102识别哪个视图与事件相关联(步骤301)。在一些情况下,与事件相关联的视图可以是根据事件而不证自明的。例如,文件夹的选集指示导航至文件夹的目的。可以根据事件所涉及的对象或组件而以程序来确定其他情况。例如,悬停或以其他方式选择收件箱中的消息可以触发服务应用在预览面板内对消息预览进行渲染。无论如何,服务应用102都识别相关的视图。
[0052] 在识别了相关的视图之后,服务应用102取回包括待在视图中渲染的各种服务项目和其他组件的相关联的数据结构(303)。取回数据结构可以涉及发起文件打开请求以打开存储器中的数据结构。接着,服务项目和组件可以从数据结构中被读取并且根据用户界面协议被处理以便于在用户界面中对视图进行渲染。
[0053] 最后,服务应用102在用户界面中渲染服务项目和组件以便呈现视图(305)。服务项目和组件一起形成视图。例如,可以一起渲染一系列电子邮件以及图像和其他图形以形成收件箱视图。同样地,可以一起渲染一系列预约、图像、和其他图形以形成日历的月视图。在社交网络的示例中,可以一起渲染一组帖子、图像、和其他图形以形成某人的社交网络的新闻摘要视图。在另一个示例中,可以渲染一组博客帖子、图像、和其他图形以形成博客的视图。
[0054] 图4示出了其中可以采用增强的数据存储和取回的实现中的电子邮件环境400。电子邮件环境400包括在其上分别实现的客户端应用401和客户端设备411的电子邮件应用402和电子邮件应用412。用户404与客户端设备401和411中的至少一个以及电子邮件应用
402和412中的至少一个相关联。电子邮件环境400还包括数据中心421以及经过其通过客户端设备401和客户端设备411而与电子邮件应用402和电子邮件应用412进行通信的通信网络410。电子邮件服务422托管在数据中心421中。
[0055] 客户端设备401代表能够执行电子邮件应用402并通过通信网络410进行通信以允许电子邮件应用402与电子邮件服务422进行交互的任何物理的或虚拟的计算设备。客户端设备401的示例包括但不限于:智能电话、平板计算机、膝上型计算机、台式计算机、跨类别混合式计算机、和虚拟机、及其变型或组合。如在图9中所示的,计算系统900代表一个这样的计算设备。
[0056] 电子邮件应用402代表能够在客户端设备401上运行并通过通信网络410与电子邮件服务422进行通信的任何电子邮件应用、模块、组件、或其集合。电子邮件应用402还能够实现在图7A和图7B中所示出的过程700、过程710、或两者。电子邮件应用402可以被集成在另一个应用中或者可以在由另一个应用(例如,浏览器应用)所提供的执行环境内运行。然而,在一些场景中,电子邮件应用402还可以是本地安装并执行的独立的应用。电子邮件应用402还可以代表任何个人信息管理应用,所述个人信息管理应用包括不同于或者除了电子邮件功能之外还包括其他功能,例如,日历功能、任务功能等。
[0057] 客户端设备411代表能够执行电子邮件应用412并通过通信网络410进行通信以允许电子邮件应用412与电子邮件服务422进行交互的任何物理的或虚拟的计算设备。客户端设备411的示例包括但不限于:智能电话、平板计算机、膝上型计算机、台式计算机、跨类别混合式计算机、和虚拟机、及其变型或组合。如在图9中所示出的计算系统900代表一个这样的计算设备。
[0058] 电子邮件应用412代表能够在客户端设备411上运行并通过通信网络410与电子邮件服务422进行通信的任何电子邮件应用、模块、组件、或其集合。电子邮件应用412还能够实现在图7A和图7B中所示出的过程700、过程710、或两者。电子邮件应用412可以被集成在另一个应用中或者可以在由另一个应用(例如,浏览器应用)所提供的执行环境内运行。然而,在一些场景中,电子邮件应用412还可以是本地安装并执行的独立的应用。电子邮件应用412还可以代表任何个人信息管理应用,所述个人信息管理应用包括不同于或除了电子邮件功能之外的功能,例如,日历功能、任务功能等。
[0059] 数据中心421代表能够托管电子邮件服务422的计算设备的任何集合。数据中心421可以代表物理数据中心、虚拟数据中心、单个数据中心、多个数据中心、或其任何组合或变型。电子邮件服务422代表以软件实现并且可以托管在数据中心421中的任何服务。可以将电子邮件服务422作为单独的服务来提供,或者与其他服务一起或者作为其他服务的集成的部分来提供,例如:日历服务、统一通信服务、社交网络服务、电子商务服务、生产力服务、和游戏服务、以及任何其他合适的服务,它们全部都托管在数据中心421中。
[0060] 通信网络代表通过其客户端设备401和客户端设备411可以与数据中心421进行通信的任何网络或网络的集合。通信网络410的示例包括但不限于:有线和无线网络、互联网和内联网、和因特网、以及任何其他类型的网络、网络的组合、或其变型。
[0061] 图4还示出了代表针对电子邮件应用402和电子邮件应用412的可能的架构的应用架构440。应用架构440包括用户界面模块443、服务模块445、以及存储模块447。应用架构440还包括视图450、收件箱视图451、已发送项目视图452、消息预览视图453、会话视图454、会话视图455、已删除项目视图456、以及文件夹视图457、458和459。
[0062] 服务模块445是能够与电子邮件服务422、用户界面模块443、以及存储模块447进行交互的任何软件组件、模块、或其集合。服务模块445处理电子邮件的发送和接收、与存储模块447进行通信以存储并取回数据、并且与用户界面模块443进行通信以渲染用户界面。
[0063] 用户界面模块443是能够与服务模块445和用于提供用户界面的各种其他软件组件进行通信的任何组件、模块、或其集合。例如,用户界面模块443可以与操作系统组件进行通信以驱动用户接口系统。
[0064] 存储模块447是能够与服务模块445和文件系统、或其他操作系统组件进行通信以促进数据的存储和取回的任何软件组件、模块、或其集合。
[0065] 在操作中,用户界面模块443从较低层的组件中接收指示用户输入的用户输入信息,并且将事件传送至服务模块445。服务模块445对事件进行分析以确定关于电子邮件或多封电子邮件已经发生了什么操作。可以将操作报告至电子邮件服务422以使得电子邮件服务422可以保持邮件存储、邮箱、或者用户404的电子邮件的其他集合的经同步的或者主要的版本。服务模块445还可以将更新传送至存储模块447以对操作影响的视图进行更新。存储模块447经由文件系统与视图450接合以实现该更新。
[0066] 除了对通过用户界面模块443所传送的事件进行响应,服务模块445还可以对由电子邮件服务422所传送的电子邮件更新进行响应。这些可以包括待存储并且很可能在视图中渲染的新的电子邮件,但也可以包括对现有的电子邮件的更新,对于现有的电子邮件其他更新的属性改变将在存储中被实现。
[0067] 图500示出了代表当发生用户输入时可以发生的一个示例性数据流的操作序列500。在操作中,用户界面模块443在用户界面中渲染视图。该视图可以是在图4中所示出的各种视图450中的任何一个视图,例如,收件箱视图451。用户404经由用户界面提供关于在视图中所包括的单个电子邮件的用户输入,例如,被认为是通过用户界面443的事件的鼠标点击、触摸、手势、或者命令。用户界面模块443将事件传送至服务模块445。
[0068] 响应于该事件,服务模块445确定对相关的电子邮件进行什么改变(如果有的化)。在该示例中,服务模块445确定属性改变是按顺序的。例如,已经将电子邮件的状态从经标记状态改变至未标记状态,从已读状态改变至未读状态等。服务模块445将属性改变传送至存储模块447以用于存储在视图450中。
[0069] 存储模块447从服务模块445中接收属性改变并且确定该属性改变可以影响哪些视图。由于主题电子邮件可以被存储在多个视图中,因此可以影响一个或多个视图。接着,存储模块447可以打开与每个所识别的视图相关联的数据结构并存储属性改变。在一些情况下,实现属性改变可以涉及设置一个比特、改变变量的值、或者对存储在数据结构中的指示电子邮件的状态的数据的片段进行一些其他改变。然而,实现属性改变还可以涉及改变图像数据或者针对主题电子邮件以其存储在数据结构中的呈现格式的其他有关呈现的数据。假设相关联的视图当前被装载在用户界面中,可以通过由存储模块447传送至用户界面模块443的视图更新来在所渲染的视图中显现属性改变。
[0070] 除了将属性改变传送至存储模块447,服务模块445还将操作报告至电子邮件服务422。例如,服务模块445可以报告主题电子邮件已经被标记或被去标记、或者从已读状态改变至未读状态。其他示例包括报告电子邮件已经从本地删除、移动至另一个文件夹等。与电子邮件服务422的这样的通信是根据操作报告范例的,该操作报告范例需要报告在用户界面中本地地发生的操作,而不是传送整个对象及其属性。作为回复,电子邮件服务422将可以包括对象以及它们的属性的数据向下传送。尽管没有在图5中示出,但可以对任何新的数据进行处理以用于存储在视图450中的相关联的一个或多个视图中。
[0071] 图6示出了另一个操作序列,但是是关于视图的取回的一个操作序列。在操作中,用户界面443驱动在用户界面中对视图(例如,收件箱视图451)的渲染。用户404与用户界面进行交互以提供指示从初始视图导航至另一个、不同的视图的意图的用户输入。例如,用户404可以点击、触摸、或以其他方式选择另一个文件夹、电子邮件项目、或者触发视图间的转换的一些其他对象或组件。用户界面443将事件传送至服务模块445,服务模块445接着识别已经选择了哪个视图。
[0072] 接着,服务模块445与存储模块447进行通信以请求所识别的视图。可以通过指定特定的视图来发出这样的请求。接着,存储模块447必须识别哪个数据结构与所请求的视图相关联。存储模块447将文件打开请求传送至文件系统以打开保存各种电子邮件项目和针对所识别的视图的其他组件的数据结构。从数据结构中读出服务并提供项目和组件,以用于由用户界面模块443在用户界面中进行渲染。尽管图6示出了新的视图是从存储模块447直接传送至用户界面模块443的,但应当理解的是,服务模块445可以充当中介。另外,可以利用指针或其他数据传输访问技术以使得不需要实际上移动新的视图的组件,而是将对相关的数据结构的访问权授予用户界面模块443。
[0073] 图7A示出了可以由应用架构440、以及扩展电子邮件应用402或电子邮件应用412采用以促进增强的数据存储的过程700。在操作中,服务模块445从电子邮件服务422中接收电子邮件更新(步骤701)。接着,服务模块445识别针对每个电子邮件的相关视图或多个视图(步骤703)。可替代地,存储模块447可以负责执行该步骤。一旦被识别,就将所述电子邮件转换成适用于在视图中渲染的呈现格式(步骤705)。
[0074] 接着,识别与电子邮件将被存储的顺序有关的视图的优先级(步骤707)。可以给予一个视图高于另一个视图或其他视图的优先级,以使得与该视图相关联的电子邮件在与其他视图相关联的其他电子邮件之前被写入到其相关联的数据结构(文件)中。这就使得高优先级的视图超过具有较低优先级的其他视图而准备好进行渲染。例如,由于倾向于使用收件箱比使用自定义文件夹更加频繁,因此给予收件箱视图高于自定义文件夹的优先级。在另一个示例中,由于使用日历的月视图比使用日历的日视图更加频繁,因此给予月视图更高的优先级。由此,将与收件箱视图相关联的电子邮件在与较低优先级的视图相关联的电子邮件之前写入其相关联的数据结构中。
[0075] 接着,可以基于分配至每个视图的优先级的顺序而将每个新的电子邮件存储在针对每个关联视图的数据结构中(步骤709)。因此,可以将与收件箱视图相关联的所有电子邮件存储在其对应的数据结构中,接下来将与下一个视图相关联的所有电子邮件存储在其对应的数据结构中,以此类推。与其他的示例类似,应当理解的是,给定的电子邮件可以属于多个视图并且因此可以被存储在多个数据结构中。
[0076] 图7B示出了可以由应用架构440、以及扩展电子邮件应用402和电子邮件应用412采用以改进数据存储和取回操作的另一个过程710。在操作中,事件可以在用户界面中发生(步骤711)。大体上同时,可以从电子邮件服务422中取回电子邮件更新(步骤712)。在过去,这样的发生可能导致次佳的用户体验,这是因为当电子邮件被存储至磁盘时,视图之间的转换或其他用户界面操作可能会延迟。不同地,在确定是使事件优先于电子邮件更新还是使电子邮件更新优先于事件时,对应用状态进行考虑。从而,由应用架构440来确定应用状态(步骤713)。基于所述应用状态来确定事件和电子邮件的相对优先级(步骤715),接着以事件和电子邮件的优先级的顺序来对它们进行处理(步骤717)。
[0077] 在示例中,事件可以包括在用户界面的视图中向下滚动或滚动浏览。在一些场景中,滚动可以包含快速移动通过一系列电子邮件。当用户滚动浏览一系列电子邮件时,她可以停在任何给定的一封电子邮件上。因此,可以相比于存储新的电子邮件而将更高的优先级给予渲染与滚动浏览相关联的视图。然而,存储到来的电子邮件仍然是重要的。因此,如果电子邮件应用通常在休眠状态,则将优先级给予存储新的电子邮件。在另一个示例中,当接收到新的预约时,用户可以正在在日历中浏览日期。可以将优先级给予取回与日期相关联的视图,而不是存储预约。在另一个示例中,当接收到新的消息或新闻摘要时,用户可以正在在社交网站上浏览照片。可以将优先级给予取回与照片相关联的视图,而不是存储新的消息或新闻摘要。
[0078] 图8示出了一些实现中的根据其可以存储视图的数据结构模型800。数据结构模型800仅允许取回视图的一部分并将其装载到存储器中,而不是处理整个视图。视图801可以包括由视图描述符表803所引用的页面805、807、809的集合。视图描述符表803描述了哪些页面与哪些项目相关。当选择了项目或者在视图中发生了调用还没有从磁盘中取回的项目的导航时,可以访问视图描述符表803以确定装载哪些相关联的页面。当调用与视图相关联的项目时,页面使能够将该视图的一部分从磁盘中装载到存储器中,而不是装载整个视图。
[0079] 在有关电子邮件的示例中,收件箱视图可以包括十五个页面的项目,但一次只需要将其中的几个页面装载到存储器中。因此,可以从磁盘中取回并装载收件箱视图的前三个页面。当用户从收件箱滚动浏览至新的项目时,将需要提取包含那些项目的页面并将其装载到存储器中。通过该方式,可以逐页地从页面中装载项目并且在用户界面中呈现,而不是等待整个视图被装载。关于在上文中所讨论的各种实现应当理解的是,从存储中装载或取回视图可以涉及取回整个视图或者如在本文中关于图8所讨论的那样仅取回视图的一部分或一组页面。
[0080] 图9示出了包括服务应用910计算系统900,并且其代表应用平台101、客户端应用401、和客户端设备411、以及适用于实现服务应用或电子邮件服务的任何其它类型的设备、系统、或其集合。计算系统900的示例包括但不限于:台式计算机、膝上型计算机、平板计算机、笔记本计算机、移动计算设备、智能电话、蜂窝电话、媒体设备、和游戏设备、以及能够实现服务应用910的任何其他类型的物理或虚拟计算机器。
[0081] 计算系统900还可以被实现为单个装置、系统、或设备,或者可以以分布式方式被实现为多个装置、系统、或设备。计算系统900包括但不限于:处理系统901、存储系统903、软件905、通信接口系统907、以及用户接口系统909。处理系统901可操作地与存储系统903、通信接口系统907、以及用户接口系统909相耦合。
[0082] 处理系统901从存储系统903中装载并执行软件905。当由处理系统901执行时,软件905引导处理系统901如在本文中针对服务应用102、电子邮件应用402、电子邮件应用412、以及应用架构440所描述的那样运行。计算系统900可以可选地包括出于简洁的目的而没有被讨论的额外的设备、特征、或功能。
[0083] 仍然参考图9,处理系统901可以包括从存储系统903取回并执行软件905的微处理器以及其它电路。处理系统901可以被实现在单个处理设备内,但也可以跨在执行程序指令时协作的多个处理设备或子系统而分布。处理系统901的示例包括通用中央处理单元、专用处理器、和逻辑设备、以及任何其他类型的处理设备、组合、或其变型。
[0084] 存储系统903可以包括可以由处理系统901读取并且能够存储软件905的任何计算机可读存储介质。存储系统903可以包括以用于存储信息(例如,计算机可读指令、数据结构、程序模块、或其他数据)的任何方法或技术实现的易失性的和非易失性的、可移动的和不可移动的介质。存储介质的示例包括随机存取存储器、只读存储器、磁盘、光盘、闪速存储器、虚拟存储器和非虚拟存储器、盒式磁带、磁带、磁盘存储或其他磁存储设备、或者任何其他合适的存储介质。在任何情况下,计算机可读存储介质都不是传播信号。
[0085] 在一些实现中,除了计算机可读存储介质之外,存储系统903还可以包括软件905可以通过其在内部或向外部进行通信的计算机可读通信介质。存储系统903可以被实现为单个存储设备,但可以跨位于同一位置或相对于彼此分布的多个存储设备或子系统来实现。存储系统903可以包括额外的元件,例如能够与处理系统901或可能的其他系统进行通信的控制器。
[0086] 可以以程序指令以及其他方式来实现软件905,当所述软件905由处理系统901执行时,引导处理系统901如在本文中关于在本文中所公开的各种操作场景那样操作。特别地,程序指令可以包括协作或以其他方式进行交互以实行在本文中所描述的各种处理和操作场景的各种组件或模块。可以以经编译或经解译的指令或者以指令的一些其他变型或组合来实施各种组件或模块。可以以同步或非同步的方式、顺序地或并行地、在单线程的环境中或在多线程的环境中、或者根据任何其他合适的执行范例、变型、或其组合来执行各种组件或模块。软件905可以包括额外的过程、程序、或组件,例如操作系统软件或其他应用软件。软件905也可以包括固件或者可以由处理系统901执行的一些其他形式的机器可读处理指令。
[0087] 通常而言,当被装载到处理系统901中并被执行时,软件905可以将合适的装置、系统、或设备(其由计算系统900所代表)全部从通用计算系统转换成专用计算系统,所述专用计算系统被定制以如在本文中针对每个实现所描述的促进对服务项目的基于视图的存储。事实上,将软件905编码在存储系统903上可以转换存储系统903的物理结构。物理结构的具体的转换可以取决于该说明书的不同的实现中的各种因素。这样的因素的示例包括但不限于:用于实现存储系统903的存储介质的技术和计算机存储介质被表征为主要存储还是次要存储,以及其它因素。
[0088] 例如,如果计算机可读存储介质被实现为基于半导体的存储器,则当程序指令被编码在其中时软件905可以转换半导体存储器的物理状态,例如,通过转换晶体管、电容器、或构成半导体存储器的其他离散电路器件的状态。可以关于磁或光介质而发生类似的转换。物理介质的其他转换是可能的而不脱离本说明的范围,其中,仅仅为了促进本讨论而提供了前述的示例。
[0089] 再一次作为示例而参考图1A,通过计算系统900所代表的计算系统或多个系统的操作,可以关于数据结构133和数据结构143而执行转换。作为示例,将与视图131和视图141相关联的组件分别存储在数据结构133和数据结构143中。在服务应用102中接收新的服务项目,并且响应性地存储在数据结构133和数据结构143中,从而将它们改变至第二、不同的状态。在图1B中所示出的另一个示例中,用户界面103开始包括视图161,但是响应于事件121而转换至视图131。转换的其他示例是可能的并且可以被认为在本公开的范围内。
[0090] 应当理解的是,计算系统900通常旨在表示其上可以部署并执行软件905以便实现基于视图的存储的计算系统或多个计算系统。然而,计算系统900还可以适合作为可以在其上执行软件905并且可以从中分布、传输、下载、或以其他方式将软件905提供至另一个计算系统以用于部署和执行、或额外分配的任意计算系统。
[0091] 通信接口系统907可以包括支持通过通信网络或网络的集合(未示出)与其它计算系统(未示出)进行通信的通信连接和通信设备。共同支持系统间通信的连接的示例可以包括:网络接口卡、天线、功率放大器、RF电路、收发机、以及其它通信电路。连接和设备可以通过通信介质来进行通信以与其它计算系统或系统的网络交换通信,所述通信介质例如金属、玻璃、空气、或任何合适的通信介质。前述的介质、连接、和设备是公知的并且不需要在这里详细讨论。
[0092] 计算系统900和任何其它计算系统(未示出)之间的通信可以通过通信网络或多个网络并且根据各种通信协议、协议的组合、或其变型来进行。计算系统900可以通过其与其它计算系统交换信息的通信网络的示例包括:内联网、互联网、局域网、广域网、无线网络、有线网络、虚拟网络、软件定义的网络、数据中心总线、计算背板、网络、或其任何组合或变型。前述的通信网络和协议是公知的并且不需要在这里详细讨论。然而,可以使用的一些通信协议包括但不限于:互联网协议(IP、IPv4、IPv6等)、传输控制协议(TCP)、和用户数据报协议(UDP)、以及任何其它合适的通信协议、其变型或组合。
[0093] 在交换信息的前述的示例中的任何一个中,可以根据多种协议中的任何一种协议来发生信息的交换,所述多种协议包括FTP(文件传输协议)、HTTP(超文本传输协议)、REST(表述性状态传输)、WebSocket、DOM(文档对象模型)、HTML(超文本标记语言)、CSS(层叠样式表)、HTML5、XML(可扩展标记语言)、JavaScript、JSON(JavaScript Object Notation)、和AJAX(非对称JavaScript和XML)、以及任何其它合适的协议、变型、或其组合。在一些实现中,可以根据多种电子邮件协议中的任何一种来交换信息,所述多种电子邮件协议包括但不限于:POP(邮局协议)、IMAP(互联网消息访问协议)、MAPI(消息传送应用程序接口)、HTTP邮件、或任何其他合适的电子邮件协议。
[0094] 用户接口系统909可以包括键盘、鼠标、语音输入设备、用于从用户接收触摸输入的触摸输入设备、用于检测用户的非触摸手势和其他运动的运动输入设备、和能够从用户接收用户输入的其他可比的输入设备。在用户接口系统909中还可以包括诸如显示器、扬声器、触觉设备、和其他类型输出设备之类的输出设备。在一些情况下,可以将输入和输出组合在单个设备中,例如能够显示图像并且能够接收触摸手势的显示器。前述的用户输入设备和输出设备是在本领域中公知的并且不需要在这里详细讨论。
[0095] 用户接口系统909还可以包括可以由处理系统901执行的、支持在上文中所讨论的各种用户输入和输出设备的相关联的用户界面软件。独立地或彼此并且与硬件元件和软件元件相结合地,用户界面软件和用户界面设备可以支持图形用户界面、自然用户界面、或任何其它类型的用户界面。例如,可以通过用户接口系统909来呈现用户界面103。另外,可以经由用户接口系统909来输入关于用户界面所进行的用户输入。
[0096] 在附图中所提供的功能块图、操作场景和序列、以及流程图代表示用于执行本公开的新颖的方面的示例性系统、环境、和方法。尽管出于简化说明的目的,在本文中所包括的方法可以是以功能图、操作场景或序列、或流程图的形式的,并且可以被描述为一系列操作,但应当理解和领会的是,所述方法不受操作的顺序的限制,这是因为与此对应,一些操作可以以与在本文中所示出和描述的其他操作不同的顺序和/或同时进行。例如,本领域技术人员将理解并领会的是,方法可以可替代地被表示为一系列的相关的状态或事件,例如在状态图中。此外,不是在方法中所示出的所有的操作都针对新颖的实现而被需要。
[0097] 所包括的描述和图描绘了具体的实现以教导本领域技术人员如何制作和使用最佳选项。出于教导发明性原理的目的,已经简化或省略了一些传统的方面。本领域技术人员将从落在本发明的范围内的这些实现中理解变型。本领域技术人员还将理解的是,可以以各种方法组合在上文中所描述的特征以形成多个实现。作为结果,本发明不限于在上文中所描述的具体的实现,而是仅由权利要求极其等价物来限制。