首页> 中国专利> 用于管理在客户端设备上生成和渲染用户界面的技术

用于管理在客户端设备上生成和渲染用户界面的技术

摘要

提供了用于处理用户界面内容的技术和系统。例如,服务器计算机可以接收与设备(例如,客户端设备、另一服务器计算机或其它设备)的用户界面相对应的用户界面事件。可以确定与该用户界面事件相关联的应用,并且可以使用与该用户界面事件相关联的应用来生成界面模型。界面模型定义用户界面的一个或多个图形对象的状态信息。状态信息是从用户界面事件得到的。服务器计算机可以将界面模型发送到所述设备,这使得该设备能够渲染用户界面。

著录项

  • 公开/公告号CN113168337A

    专利类型发明专利

  • 公开/公告日2021-07-23

    原文格式PDF

  • 申请/专利权人 耐瑞唯信有限公司;

    申请/专利号CN201980076751.2

  • 发明设计人 李洪亮;A·德尔普奇;

    申请日2019-11-21

  • 分类号G06F9/451(20060101);G06F9/54(20060101);

  • 代理机构11038 中国贸促会专利商标事务所有限公司;

  • 代理人吴信刚

  • 地址 瑞士洛桑

  • 入库时间 2023-06-19 11:55:48

说明书

相关申请的交叉引用

本申请要求于2018年11月23日提交的美国专利申请No.62/770,973的权益,该美国专利申请全文出于所有目的以引用方式并入本文。

技术领域

本公开总体上涉及用于管理用户界面的生成和渲染的技术和系统,更具体地涉及使用基于服务器的系统提高生成和渲染用户界面的效率。

发明内容

在一些示例中,在本文中描述了用于实现用户界面的技术和系统,对于该用户界面,其生成和渲染由远离客户端设备的集中式或基于服务器的计算机系统(例如,基于云的服务器系统、分布式计算机系统或者其它远程的基于计算机的系统)进行管理。基于服务器的系统可以实现管理跨多个设备的用户界面的技术,从而提高跨具有许多客户端设备的系统来对共同的用户界面进行管理的效率。该用户界面可以包括能够促进经由输入设备接收输入的任何适当类型的物理或虚拟用户界面,例如任何类型的图形用户界面(GUI)、电子节目指南(EPG)或用于访问媒体内容的内容指南、游戏应用的用户界面和/或任何其它适当类型的用户界面。在一些情况下,可以为客户端设备上的每个应用生成用户界面。例如,客户端设备可以显示第一应用的第一用户界面、第二应用的第二用户界面、第三应用的第三用户界面等。

基于服务器的用户界面可以部分地由服务器系统、部分地由客户端设备或其组合来实现和/或管理,以便渲染用户界面。例如,服务器系统可以确定要显示的图形元素(也称为图形对象),在何处以及如何显示不同的图形元素,如何对用户界面事件(也称为界面事件)做出反应等用户界面动作。客户端设备可以将界面事件中继到服务器系统,并且可以基于从服务器系统接收到的用户界面布局信息和与用户界面相关联的其它属性(例如,如本文所述的界面模型)来渲染用于用户界面的图形。该服务器系统可以包括一个或多个服务器计算机。在一些示例中,服务器系统可以包括基于云的计算机系统。客户端设备可以包括任何适当的设备,例如,媒体设备(例如,机顶盒或其它控制台设备)、连接到互联网的电视机、移动设备(例如,蜂窝电话、膝上型计算机、平板计算机、可穿戴设备或其它移动设备)。客户端设备可以使用有线或无线网络连接到服务器计算机系统。

客户端设备可以将界面事件发送到服务器系统以进行处理。界面事件可以由客户端设备基于通过用户界面接收到的用户输入(例如,特定于该用户界面所应用于的应用的事件),基于系统级事件(例如,与客户端设备处的用户界面有关的事件,例如音量调整或动态界面的改变),和/或基于应用级事件来生成。服务器系统可以识别接收到的用户界面事件所应用于的应用和/或系统(例如,对于系统级事件),并且可以基于接收到的界面事件来确定该应用和/或系统的用户界面中的任何改变。

在一些示例中,服务器系统可以生成描述用户界面在任何时刻看起来应当如何的用户界面模型(在本文中也称为界面模型)。例如,可以基于接收到的用户界面事件(例如,一次或多次键按压、手指移动、设备定向和/或位置等)来生成界面模型。在一些情况下,界面模型可以基于其它事件,例如,其它远程客户端事件或从除客户端设备以外的设备或系统接收的事件。例如,其它事件可以是基于视频被开始或结束、视频访问控制被拒绝、电话响铃、接收到电子邮件或其它消息等事件。在一些情况下,服务器系统可以生成为用户界面的一个或多个图形对象定义状态信息(例如,一个或多个图形对象的用户界面布局和/或其它属性)的界面模型。在一些实现中,可以通过结构或句法来完全或部分地定义界面模型,该结构或句法可以定义或表示文档的逻辑结构(例如,应用的用户界面的结构),以及文档被访问、生成、渲染和/或操纵的方式。例如,界面模型可以包括文档对象模型(DOM),该文档对象模型(DOM)定义了用于呈现包括用户界面的组件的结构。

在一些情况下,服务器系统可以提高在客户端设备处生成和渲染用户界面的效率。在至少一个实施例中,服务器系统可以在将界面模型发送到客户端设备之前优化该界面模型。例如,服务器系统可以确定当前用户界面(例如,用户界面的当前状态信息,例如当前用户界面、图形元素的当前属性等状态信息)与先前用户界面(例如,在当前用户界面的当前状态信息之前生成的先前状态信息)之间的差异,并且可以生成指示当前用户界面与先前用户界面之间的差异或增量(delta)的中间界面模型(在本文中也称为“增量界面模型”)。服务器系统可以将增量界面模型发送到客户端设备,仅指示差异,而不是发送描述整个用户界面的状态信息的整个界面模型。

界面模型或增量界面模型可以从服务器系统发送到客户端设备。客户端设备的图形渲染引擎可以基于接收到的界面模型来渲染用户界面。例如,客户端设备可以读取针对给定用户界面接收到的界面模型,并且可以渲染由该界面模型定义的界面。客户端设备可以基于指示已改变的用户界面的性质和/或功能的增量来更新用户界面。在一些情况下,如果用户界面改变了一定的量(例如,用户界面的完全改变),则界面模型可以指示可重复使用的用户界面的性质和/或功能。界面模型的使用使得客户端设备能够避免确定用户界面的状态信息(例如,布局等属性)或状态信息的改变的处理,例如,进行布局计算。例如,服务器系统可以预先计算由界面模型表示的图形元素性质(例如,图形元素位置、大小、颜色和/或其它性质),从而使得客户端设备不需要确定用户界面状态信息(例如,进行布局计算、图形属性计算等)以及确定用户界面性质所需的其它处理等。代替地,界面模型被传送到客户端设备,并且客户端设备可以实现例程(例如,图形例程)以基于界面模型来生成用户界面。例如,使用界面模型,客户端可以将来自界面模型的图形对象树转换为图形例程调用列表。

根据至少一个示例,提供了一种处理用户界面内容的方法。该方法包括由服务器计算机接收用户界面事件。用户界面事件对应于客户端设备的用户界面。该方法还包括确定与用户界面事件相关联的应用,并使用与用户界面事件相关联的应用生成界面模型。界面模型为用户界面的一个或多个图形对象定义状态信息。状态信息从用户界面事件得到。该方法还包括由服务器计算机向客户端设备发送界面模型。界面模型使客户端设备能够渲染用户界面。

在另一个示例中,提供了一种用于处理用户界面内容的系统。该系统包括一个或多个处理器以及该一个或多个处理器可访问的并存储有指令的存储器,所述指令在由一个或多个处理器执行时使得一个或多个处理器:接收用户界面事件,该用户界面事件对应于客户端设备的用户界面;确定与用户界面事件相关联的应用;使用与用户界面事件相关联的应用生成界面模型,其中界面模型为用户界面的一个或多个图形对象定义状态信息,该状态信息从用户界面事件得到;以及将界面模型发送给客户端设备,该界面模型使客户端设备能够渲染用户界面。

在另一示例中,一种服务器计算机的非暂态计算机可读介质,其上存储有指令,所述指令在由一个或多个处理器执行时使该一个或多个处理器:接收用户界面事件,该用户界面事件对应于客户端设备的用户界面;确定与用户界面事件相关联的应用;使用与用户界面事件相关联的应用生成界面模型,其中界面模型为用户界面的一个或多个图形对象定义状态信息,该状态信息从用户界面事件得到;以及将界面模型发送给客户端设备,该界面模型使客户端设备能够渲染用户界面。

在一些方面中,上述方法、装置和计算机可读介质还可以包括对界面模型进行压缩。发送到客户端设备的界面模型是压缩的界面模型。

在一些方面中,界面模型是第一界面模型,并且对界面模型进行压缩包括:确定一个或多个图形对象的状态信息与所述一个或多个图形对象的先前状态信息之间的差异;以及生成第二界面模型,该第二界面模型包括具有与先前状态信息不同的状态信息的所述一个或多个图形对象的数据。

在一些情况下,生成界面模型包括生成界面模型的一部分。界面模型的该部分与用户界面的一部分相关联。

在一些方面中,上述方法、装置和计算机可读介质还可以包括:确定应用由客户端设备触发;确定该应用未在服务器计算机上运行;以及将该应用添加到多个客户端设备使用服务器计算机可访问的应用的列表中。

根据至少另一个示例,提供了一种处理用户界面内容的方法。该方法包括由服务器计算机接收用户界面事件。用户界面事件对应于客户端设备的用户界面。该方法还包括确定与用户界面事件相关联的应用,并使用与用户界面事件相关联的应用生成界面模型。界面模型为用户界面的一个或多个图形对象定义状态信息。状态信息从用户界面事件得到。该方法还包括确定一个或多个图形对象的状态信息与所述一个或多个图形对象的先前状态信息之间的差异。该方法还包括生成第二模型,该第二模型包括具有与先前状态信息不同的状态信息的所述一个或多个图形对象的数据。该方法还包括由服务器计算机向客户端设备发送第二界面模型。第二界面模型使客户端设备能够渲染用户界面。

在另一个示例中,提供了一种用于处理用户界面内容的系统。该系统包括一个或多个处理器以及该一个或多个处理器可访问的并存储有指令的存储器,所述指令在由一个或多个处理器执行时使得一个或多个处理器:接收用户界面事件,该用户界面事件对应于客户端设备的用户界面;确定与用户界面事件相关联的应用;使用与用户界面事件相关联的应用生成界面模型,其中界面模型为用户界面的一个或多个图形对象定义状态信息,该状态信息从用户界面事件得到;确定一个或多个图形对象的状态信息与所述一个或多个图形对象的先前状态信息之间的差异;生成第二模型,该第二模型包括具有与先前状态信息不同的状态信息的所述一个或多个图形对象的数据;以及将第二界面模型发送给客户端设备,该第二界面模型使客户端设备能够渲染用户界面。

在另一示例中,一种服务器计算机的非暂态计算机可读介质,其上存储有指令,所述指令在由一个或多个处理器执行时使该一个或多个处理器:接收用户界面事件,该用户界面事件对应于客户端设备的用户界面;确定与用户界面事件相关联的应用;使用与用户界面事件相关联的应用生成界面模型,其中界面模型为用户界面的一个或多个图形对象定义状态信息,该状态信息从用户界面事件得到;确定一个或多个图形对象的状态信息与所述一个或多个图形对象的先前状态信息之间的差异;生成第二模型,该第二模型包括具有与先前状态信息不同的状态信息的所述一个或多个图形对象的数据;以及将第二界面模型发送给客户端设备,该第二界面模型使客户端设备能够渲染用户界面。

在以上任意示例的一些方面中,界面模型(和/或第二界面模型)包括具有一个或多个图形对象的分层数据结构。一个或多个图形对象中的每个图形对象可以具有由状态信息定义的一个或多个属性。在一些方面中,一个或多个图形对象包括要在用户界面中显示的框、线、图像、图标、文本和内容项中的至少一者。在一些方面中,一个或多个图形对象中的每个图形对象包括由状态信息定义的一个或多个属性。一个或多个图形对象的一个或多个属性可以包括图形对象的位置、形状和颜色中的至少一者。

在以上任意示例的一些方面中,上述方法、装置和计算机可读介质还可包括至少基于用户界面事件来确定状态信息。

在以上任意示例的一些方面中,基于服务器计算机与客户端设备之间的连接来确定与用户界面事件相关联的应用。

在以上任意示例的一些方面中,客户端设备包括媒体设备,并且其中用户界面包括媒体内容指南。

在本文中很对示例方法、装置和计算机可读介质公开的示例可以单独地或以任何组合的形式来实现。

本发明内容不旨在标识所要求保护的主题的关键或必要特征,也不旨在孤立地用于确定要求保护的主题的范围。主题应当通过参考本专利的整个说明书的适当部分、任何或所有附图以及每个权利要求来进行理解。

参考以下的说明书、权利要求和附图,前述以及其它特征和实施例将变得更显而易见。

附图说明

下面参考以下附图详细描述本申请的说明性实施例:

图1是示出根据一些实施例的网络环境的示例的框图;

图2是示出根据一些实施例的服务器系统和客户端设备的示例的框图;

图3是示出根据一些实施例的服务器系统与客户端设备之间的消息流的示例的图;

图4是示出根据一些实施例的界面模型的示例的图;

图5是示出根据一些实施例的界面模型的另一个示例的图;

图6是示出根据一些实施例的增量界面模型的示例的图;

图7是示出根据一些实施例的基于增量界面模型的用户界面的改变的示例的图;

图8是示出根据一些实施例的生成增量界面模型的过程的示例的流程图;

图9是示出根据一些实施例的处理用户界面内容的过程的示例的流程图;

图10是示出根据一些实施例的处理用户界面内容的过程的另一示例的流程图;以及

图11是示出根据一些实施例的计算系统架构的示例的框图。

具体实施方式

下面提供本公开的某些方面和实施例。对于本领域技术人员来说显而易见的是,这些方面和实施例中的一些可以独立地应用,并且它们中的一些也可以组合地应用。在以下描述中,出于解释的目的,为了提供对本申请的实施例的透彻理解,阐述了具体细节。然而,显而易见的是,可以在没有这些具体细节的情况下实践各种实施例。附图和描述不应是限制性的。

随后的描述仅提供示例性实施例,并且不旨在限制本公开的范围、适用性或配置。确切地说,对示例性实施例的随后描述将向本领域技术人员提供用于实现示例性实施例的使能描述。应该理解的是,在不脱离所附权利要求书所阐述的本申请的精神和范围的情况下,可以对元件的功能和布置进行各种改变。

在下面的描述中给出具体细节,以提供对实施例的彻底的理解。然而,本领域的普通技术人员将会理解,实施例可以在没有这些具体细节的情况下被实践。例如,为了不因不必要的细节而使实施例模糊,电路、系统、网络、处理和其它组件可以以框图形式被示出为组件。在其它情形中,为了避免使实施例模糊,公知的电路、处理、算法、结构和技术可以在没有不必要的细节的情况中被示出。

另外,请注意,各个实施例可被描述为过程,该过程被描绘为流程图、流程视图、数据流程图、结构图或框图。尽管流程图可以将这些操作描述为序列过程,但是这些操作中的许多操作可以并行地或并发地进行。另外,可以对这些操作的顺序重新进行排列。过程在其操作完成时终止,但是,可以具有在图中没有包含的另外的步骤。过程可以对应于方法、函数、工序、子例程、子程序等。当过程对应于函数时,其终止可以对应于该函数返回到调用函数或主函数。

术语“计算机可读介质”包括但不限于,便携式或非便携式存储设备,光学存储设备,以及能够存储、包含或承载(一种或多种)指令和/或数据的各种其它介质。计算机可读介质可以包括其中可以存储数据并且不包括无线地或者通过有线连接传播的载波和/或暂态电子信号的非暂态介质。非暂态介质的示例可以包括,但不限于,磁盘或磁带、诸如压缩盘(CD)或数字通用磁盘(DVD)之类的光学存储介质、闪存、存储器或存储设备。计算机可读介质可以在其上存储有代码和/或机器可执行指令,所述代码和/或机器可执行指令可以表示工序、函数、子程序、程序、例程、子例程、模块、软件包、类,或指令、数据结构或程序语句的任意组合。通过传递和/或接收信息、数据、自变量、参数或存储器内容,代码段可以被耦合到另一个代码段或硬件电路。信息、自变量、参数、数据等可以通过包括存储器共享、消息传递、令牌传递、网络传输等的任何适当的手段来被传递、转发或传送。

此外,实施例可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现。当以软件、固件、中间件或微代码实现时,执行所需任务的程序代码或代码段(例如,计算机程序产品)可以被存储在计算机可读或机器可读介质中。(一个或多个)处理器可以进行必要的任务。

用户界面可以由设备显示,并且可以允许用户通过与用户界面的图形元素交互来与设备和/或由设备执行的软件应用(在本文中也称为应用)交互。例如,用户可以通过经由能够从用户接收输入的设备提供的一个或多个输入来提供输入以操纵、控制、选择和/或与用户界面的不同图形元素进行交互。输入可以包括例如触摸输入、手势输入、设备辅助输入和/或语音输入等。用户界面可以用于各种目的。例如,用户可以使用用户界面来获得服务或项目(例如,获得新闻文章、通过与应用交互来订购电影或演出、通过与应用进行交互来订购食物等)。在另一个示例中,用户可以通过与游戏应用的用户界面进行交互来与游戏进行交互。

在一些情况下,可以在客户端设备上生成、渲染用户界面或进行两者的组合。客户端设备可以包括连接到有线和/或无线网络的任何设备,例如机顶盒、连接到互联网的电视机、移动设备(例如,蜂窝电话、膝上型计算机、平板计算机或其它移动设备)、台式计算机、可穿戴设备(例如,智能手表、健身追踪器、虚拟现实头戴机、增强现实头戴机或其它可穿戴设备)或其它设备。例如,可以通过在客户端设备上运行客户端用户界面代码(例如,作为原生应用或使用HTML/JavaScript)来实现客户端设备实现的用户界面解决方案,其中用户界面代码生成并渲染用户界面。在这样的实现中,客户端用户界面代码需要进行用户界面的布局计算和其它计算,要求客户端设备处理所有用户界面事件并基于这些事件确定用户界面布局和其它用户界面属性(例如,图形对象的颜色、图形对象的边缘信息、要在用户界面中播放的视频的速度等)。在一些情况下,客户端设备可以与后端服务器交互,以便处理数据和进行数据库访问(例如,对于编程数据、视频点播数据等)。

然而,在一些情况下,这样的客户端设备实现可能会导致用户界面的性能特性较差。在一些示例中,较差的性能可能是由于客户端设备与服务器的信息和/或内容的通信。例如,在用户界面启动时和/或在用户界面部署期间可能会有延迟。在一个示例中,通常会花费大量时间来启动(例如,加载、编译JavaScript等任务)用户界面代码本身。在另一个示例中,用户界面代码还会花费大量时间才准备好进行使用。在一些情况下,用户界面代码还可能需要预取大量数据(例如,为了使应用在使用时更快)。

现有用户界面解决方案的另一个问题是带宽利用率。例如,对于用户界面管理,现有的解决方案需要大量的带宽,这相对于网络资源而言是昂贵的,在具有许多用户的系统中更是如此。在一个说明性示例中,应用的加载时间取决于带宽,当使用慢速网络(例如,非对称数字用户线(ADSL)网络、3G网络或其它网络)时,带宽可能受到限制。带宽延迟导致用户界面的生成和/或渲染的性能降低。由于当按使用量支付(例如,每千兆字节一定量的美元)时需要的成本,带宽会是昂贵的。在一些情况下,为了补偿带宽成本,一种解决方案是使用更多的内存来更好地缓存代码和数据,这也可能是一种昂贵的解决方案。在本文中描述的技术可以减少所需的带宽。针对通信规模的这种减少将提高管理用户界面的效率,从而改善运行时间并减少管理用户界面所需的资源。

具有许多客户端设备的系统会进一步加剧这种问题,其中每个客户端设备在管理它自己的界面,并且对于应用相关的数据等信息,必须维持与服务器的通信。当用户界面快速改变,从而需要许多更新并且与一个或多个服务器的频繁通信时,这些问题甚至会变得更加棘手。

基于客户端设备的用户界面实现也可能引起其它问题。例如,与在服务器系统上开发特征相比,在多个客户端设备上开发特征需要更多的计算资源。例如,各种客户端设备(例如,机顶盒、智能电视机、移动设备等)可能不具有彼此共享资源的能力。在一个说明性示例中,如果对于每个客户端设备,媒体内容提供者需要1千兆字节的存储,并且有一百万个用户(因此至少一百万个客户端设备),则所需的存储量将至少为1千万亿字节(petabyte)。此外,不同的设备限制、平台、所支持代码的版本、用户界面的版本等因素使得难以在客户端侧管理用户界面。

在一些情况下,用户界面可以由一个或多个服务器计算机(在本文中也称为服务器)实现。例如,基于云的系统可以包括一个或多个服务器计算机,所述服务器计算机生成并渲染用户界面,然后其被发送到客户端设备。对于基于媒体的应用(例如,电视应用、流媒体应用、流游戏应用等),可以将用户界面与内容流(例如,媒体流)一起发送或分开发送。基于云的系统可以实现完整的用户界面,包括逻辑、图形渲染、视频转换等。这样的解决方案可以允许在客户端设备上安装更少的软件(也需要更少的软件升级),并且可能要求更少的测试,这有助于缩短上市时间。然而,由于各种原因,将用户界面处理(例如,视图、控制器等)移动到基于云的系统中会是具有挑战性的。例如,对于每个活跃的客户端设备,服务器计算机可能需要具有用于其图形的存储器、渲染图形的处理能力以及压缩图形的处理能力(例如,对于压缩视频、图像,和/或任何其它图形压缩方案)。与实际的应用“逻辑”代码本身相比,这种解决方案的硬件密集度大约要高50-100倍。这种解决方案还可以使用来自一个或多个服务器计算机的大量带宽。此外,可能希望使用户交互保持接近实时(例如,显示跟随用户输入的时间少于20毫秒(ms)、50ms、100ms或其它最小持续时间),这对于基于云的系统很难。在不使用大量的中央处理单元(CPU)和带宽资源来执行期望的功能(例如,通过用户界面管理交互事件)的情况下,基于云的系统也可能难以实现(尤其是实时),并且更难以扩展至更大的部署。实现这种系统所需的CPU和带宽的量(在实时时甚至更高)可能会过分昂贵。在服务器侧定期地发送多个不同的用户界面和用户界面改变也会很难

在本文中描述了用于实现用户界面的系统、方法和计算机可读介质,对于该用户界面,其生成和渲染由包括一个或多个服务器计算机并远离客户端设备的集中式或基于服务器的计算机系统(例如,基于云的服务器系统、分布式计算机系统或者其它远程的基于计算机的系统)进行管理。基于服务器的系统可以实现跨多个设备管理用户界面的技术,从而提高跨具有许多客户端设备的系统来对通用用户界面进行管理的效率。在本文中描述的基于服务器的用户界面可以部分地由服务器系统(包括一个或多个服务器计算机)且部分地由客户端设备或其组合来实现和/或管理,以渲染用户界面。例如,客户端设备可以生成用户界面事件(例如,基于通过用户界面接收的用户输入、基于系统级事件和/或基于应用级事件),并且可以将界面事件发送给服务器系统。服务器系统可以识别要向其应用界面事件的应用和/或系统(例如,对于系统级事件),并且可以确定从任何适用的界面事件得到的用户界面的状态信息(例如,进行确定界用户界面的布局、确定界面的图形对象的其它特征等所需的布局实现)。布局实现可以包括布局计算等功能。在一些情况下,服务器系统可以生成在结构上定义用户界面的状态信息的界面模型,并且可以将界面模型(或界面模型的压缩版本)发送到客户端设备。然后,客户端设备可以读取界面模型,并可以渲染由界面模型定义的界面。

用户界面的状态信息可以包括用户界面的一个或多个对象(例如,图形对象和任何其它对象)的状态信息。状态信息可以定义用户界面中的图形对象的布局(例如,每个图形对象的位置、朝向等)以及图形对象的属性或性质(例如,使用的颜色、字体、图像、视频等)。属性或性质也可以用于改变对象的状态。在使用视频对象作为图形对象的示例的一个说明性示例中,对象模型中的“速度”属性或性质可以控制视频的回放速度(例如,1的值为正常,0为暂停等)。在另一个示例中,对象模型中的“onSpeedChange”性质可以向客户端设备指示服务器系统对诸如视频开始、视频结束、视频失败等视频事件感兴趣。

使用在本文中描述的基于服务器的系统生成的用户界面可以包括能够促进经由输入设备接收输入的任何适当类型的物理或虚拟用户界面。用户界面的说明性示例包括任何类型的图形用户界面(GUI)、用于访问媒体内容的电子节目指南(EPG)或内容指南、用于游戏应用的用户界面、用于银行应用的用户界面和/或任何其它适当类型的用户界面。在一些情况下,客户端设备上可以存储有多个应用。每个应用都可以具有允许用户与该应用进行交互的单独的用户界面。例如,智能电视机或机顶盒可以包括用于第一流服务的第一应用、用于第二流服务的第二应用以及允许用户将移动设备上显示的内容镜像到电视机的第三应用。在这样的示例中,第一应用可以具有第一用户界面,第二应用可以具有第二用户界面,并且第三应用可以具有第三用户界面。

在本文中描述的基于服务器的用户界面系统可以在包括第一设备(例如,充当服务器计算机)和第二设备(例如,客户端设备)的任何类型的系统(例如,客户端-服务器系统)中使用,其中第一设备生成和/或管理界面模型并向第二设备传送(例如,发送或传输)界面模型(或界面模型的压缩版本)或提供对界面模型或界面模型的压缩版本的访问(例如,通过发送引用可从其访问界面模型的位置的链接),从而使得第二设备可以呈现(例如,通过渲染和/或显示)由界面模型定义的用户界面。可以实现基于服务器的用户界面的系统的示例包括:其中内容提供者将内容指南(例如,电子节目指南和/或其它用于与媒体内容交互的用户界面,媒体内容例如为视频内容(视频点播内容、流视频内容和/或其它视频内容)、音频内容(音频点播内容、流音频内容和/或其它音频内容)、增强现实内容、虚拟现实内容和/或其它媒体)提供给媒体系统的订户的媒体系统,向订户提供用户界面以便管理由数据服务提供者所维护的数据库的数据库服务提供者,向订户提供用户界面以便与案卷管理系统交互或调阅由案卷管理系统维护的案卷的案卷管理系统,提供安全管理界面的安全管理系统,提供用于增强现实和/或虚拟现实设备、物联网(IoT)设备、联网设备和/或其它设备的界面、提供客户端视图的任何其它类型的界面等的系统。

图1是示出网络环境100的示例的框图。网络环境100包括服务器系统101和客户端设备110a、110b至110n。服务器系统101可以包括一个或多个可以处理用户界面和/或其它数据以生成用户界面数据的服务器计算机。客户端设备110a、110b至110n可以包括(例如,通过有线或无线网络)连接到服务器系统101的任何适当数量的客户端设备,例如一个或多个客户端设备。下面针对图2描述示例服务器系统201和客户端设备210的进一步细节。

在一些情况下,服务器系统101可以包括向一个或多个客户端设备(例如,客户端设备110a-110n)提供云服务的云基础设施系统(也称为云网络)。在一些情况下,服务器系统101可以包括被配置为提供软件即服务(SaaS)的系统,或者可以与提供SaaS服务的一个或多个服务器通信。在基于SaaS的系统中,第三方提供者可以托管应用,并通过网络使它们对用户可用。例如,如图1所示,服务器系统101可以通过网络136与一个或多个服务器计算机140通信(例如,如本文中所更详细描述的,接收界面事件147以及发送界面模型149)。

服务器系统101可以访问特定于应用和/或网站的用户界面数据。该应用和/或网站可以通过通信网络(例如,互联网、WiFi网络、蜂窝网络和/或使用另一种适当的其它通讯网络)访问由服务器系统101提供的服务(例如,云服务、SaaS服务等)。在某些实施例中,由服务器系统101提供的服务可以包括使得服务器系统的基础设施的用户可以按需使用的很多服务。由服务器系统101提供的服务可以动态缩放以满足其用户的需求。服务器系统101的网络可以包括一个或多个服务器计算机和/或其它设备和/或系统。在一些情况下,构成网络的一个或多个服务器计算机和/或其它设备和/或系统与可能位于现场(例如,用户的家、工作地点、举办活动的地点或其它位置)的处所内(on-premises)计算机、服务器计算机和/或其它设备和/或系统不同。在一些情况下,可以在企业系统中提供构成服务器系统101的网络的一个或多个服务器计算机和/或其它设备和/或系统。在一些情况下,单个实体(例如,云提供者、SaaS提供者等)可以实现服务器系统101,并且服务可以由具有帐户(例如,云帐户、SaaS帐户等)的不同实体来提供,其中多个用户经由客户端设备访问这些服务。

服务器系统101的一个或多个服务器计算机可以使用诸如无线网络、有线网络或有线网络与无线网络的组合的网络134来与一个或多个客户端设备110a-110n通信。无线网络可以包括任何无线接口或无线接口的组合(例如,因特网、诸如3G、长期演进(LTE)或5G的蜂窝,其组合和/或其它适当的无线网络)。有线网络可以包括任何有线接口(例如,光纤、以太网、电力线以太网、同轴电缆上的以太网、数字信号线(DSL)或其它适当的有线网络)。可以使用可以将服务器系统101和客户端设备110a-110n连接到网络的各种路由器、接入点、网桥、网关等来实现有线和/或无线网络。

一个或多个客户端设备110a-110n可以包括可以连接到有线和/或无线网络的任何设备,例如,机顶盒、与互联网连接的电视机、移动设备(例如,蜂窝电话、膝上型计算机或笔记本计算机、平板计算机或其它移动设备)、台式计算机、可穿戴设备(例如,智能手表、健身追踪器、虚拟现实头戴机、增强现实头戴机或其它可穿戴设备)、照相机(例如,数字照相机、IP照相机、摄像机、照相机电话、视频电话或其它适当的捕获设备)、数字媒体播放器、视频游戏机、视频流设备、其它媒体设备和/或任何其它适当类型的设备。在一些情况下,一个或多个客户端设备110a-110n可以被配置为获得或捕获媒体数据。媒体数据可以包括视频、音频、图像、其任何组合和/或任何其它类型的媒体。一个或多个客户端设备110a-110n可以包括本地界面生成器112a、112b至111n和显示设备130a、130b至130n。显示设备130a、130b至130n可以显示基于服务器的用户界面132a、132b至132n。

如上所述,基于服务器的用户界面可以部分地由服务器系统101生成,并且部分地由客户端设备(例如,客户端设备110a-110n之一)生成,该客户端设备最终将显示用户界面或提供用户界面以供另一设备显示。例如,服务器系统101的界面生成器102可以从客户端设备(例如,客户端设备110a、110b至110n中的任何一个或多个)的本地界面生成器(例如,本地界面生成器112a、本地界面生成器112b至本地界面生成器112n中的一个或多个)接收界面事件(例如,界面事件107a、107b至107n中的一个或多个)。例如,界面事件可以由客户端设备基于通过用户界面接收的用户输入(例如,特定于该用户界面所应用于的应用的事件)、基于系统级事件(例如,应用于作为整体的客户端设备的事件,例如音量调整)和/或基于应用级事件来生成。服务器系统可以识别接收到的用户界面事件所应用于的应用和/或系统(例如,对于系统级事件),并且可以确定要显示的图形元素,在何处以及如何显示不同的图形元素,如何对用户界面事件做出反应(例如,基于接收到的界面事件来确定该应用的用户界面中的任何改变)等用户界面动作。在从服务器系统101接收到用户界面信息(例如,界面模型109a、界面模型109b至界面模型109n,如下面更详细地描述的)时,客户端设备可以基于用户界面信息生成并渲染用户界面。用户界面可以在其中识别了用户界面事件的应用中被渲染。

在一些实现中,服务器系统101可以为不同类型的设备维护“全局”系统对象。设备的全局系统对象可以由应用查询,以确定该设备的信息。“全局”系统对象可以向该应用提供关于设备的静态和动态状态的信息。在一些情况下,一些或所有静态和/或动态状态信息可以由服务器系统缓存。服务器系统可以向客户端设备发送信息请求,并且客户端设备可以响应于该请求而回复状态信息。在一些情况下,一些状态信息可以作为事件(例如,智能卡已被移除等)被前摄地发送到服务器系统。对于设备的差异(例如,屏幕尺寸、设备类型等),应用可以基于来自“全局”系统对象的设备信息(例如,屏幕尺寸、设备类型等)来生成不同的用户界面性质(例如,布局等属性)。

在一些示例中,基于服务器的用户界面可以部分地由服务器系统101生成,并且部分地由另一服务器系统(包括一个或多个服务器计算机)生成。在一些实现中,该另一服务器系统可以包括托管对一个或多个用户可用的一个或多个应用的SaaS系统。该另一个服务器系统可以向客户端设备提供与应用相关联的基于服务器的用户界面,以供客户端设备或与客户端设备通信的另一设备(例如,显示器)显示。例如,如上所述且如图1所示,服务器系统101可以通过网络136与一个或多个服务器计算机140进行通信。例如,服务器系统101的界面生成器102可以从一个或多个服务器计算机140中的服务器计算机的本地界面生成器(未示出)接收界面事件(例如,一个或多个界面事件147)。界面事件类似于以上相对于客户端设备110a、110b至110n所描述的界面事件。服务器系统可以识别接收到的用户界面事件所应用于的应用和/或系统(例如,对于系统级事件),并且可以确定要显示的图形元素,在何处以及如何显示不同的图形元素,如何对用户界面事件做出反应(例如,基于接收到的界面事件来确定该应用的用户界面中的任何改变)等用户界面动作。服务器系统101然后可以将用户界面信息提供给(一个或多个服务器计算机140中的)服务器计算机,并且服务器计算机可以基于用户界面信息(例如,界面模型,如下面更详细描述的)来生成和渲染用户界面。虽然在本文中描述了讨论服务器系统(例如,服务器系统101和/或201)与客户端设备(例如,客户端设备110a、110b、110c和/或210)之间的通信的各种示例,但是相同的概念也适用于多个服务器系统之间(例如,服务器系统101与一个或多个服务器计算机140之间)的通信。

在一些示例中,服务器系统101可以生成用来描述用户界面看起来是什么样的界面模型。如图1所示,服务器系统101可以生成界面模型109a并将其发送到客户端设备110a,生成界面模型109b并将其发送至客户端设备110b,直至生成界面模型109n并将其发送至客户端设备110n。例如,可以基于接收到的用户界面事件(例如,一次或多次键按压、手指移动、设备定向和/或位置等)来生成界面模型。在一些情况下,界面模型也可以基于其它事件,例如,可能不是基于显式用户输入的其它远程客户端事件,或者从除客户端设备以外的设备或系统接收到的事件。其它事件的示例可以基于视频被开始或结束、视频访问控制被拒绝、电话响铃、接收到电子邮件或其它消息等事件。在一些情况下,服务器系统可以生成界面模型,该界面模型以结构化方式逻辑地定义用户界面的一个或多个状态(例如,用户界面的一个或多个图形对象的状态)。在一些实现中,可以通过结构或句法来完全或部分地定义界面模型,该结构或句法可以定义或表示文档的逻辑结构(例如,应用的用户界面的结构),以及文档被访问、生成、渲染和/或操纵的方式。例如,界面模型可以包括文档对象模型(DOM),该文档对象模型(DOM)定义用于呈现包括用户界面的组件的结构。

在一些情况下,服务器系统可以提高在客户端设备处生成和渲染用户界面的效率。在至少一个实施例中,服务器系统可以在将界面模型发送到客户端设备之前优化该界面模型。例如,服务器系统101可以生成中间界面模型(在本文中也称为“增量界面模型”),其指示由服务器系统101确定的当前用户界面(例如,当前用户界面的一个或多个图形对象的当前状态信息)与先前的用户界面(例如,之前生成的用户界面的一个或多个图形对象的先前状态信息)之间的差异或增量。服务器系统可以将增量界面模型发送到客户端设备,仅指示差异,而不是发送描述整个用户界面的整个界面模型。

服务器系统101可以将界面模型或与先前界面模型有变化或差异的增量界面模型发送到客户端设备。客户端设备可以基于接收到的界面模型来渲染用户界面。在一些情况下,客户端设备的本地界面生成器中的图形渲染引擎可以读取针对给定应用的用户界面接收的界面模型,并且可以渲染由该界面模型定义的界面。例如,使用界面模型,图形渲染引擎可以将来自界面模型的图形对象树转换为图形例程调用列表。当实现增量界面模型时,客户端设备可以基于指示已改变的用户界面的性质和/或功能的增量来更新用户界面。在一些情况下,如果用户界面改变了一定的量(例如,用户界面的完全改变),则界面模型可以指示可重新使用的用户界面的性质和/或功能。

图2是示出与客户端设备210通信的服务器系统201的示例的图。服务器系统101包括各种组件,包括:用户界面服务器引擎204、应用用户界面引擎206、存储器203和中央处理单元(CPU)205。应用用户界面引擎206与应用域引擎208通信。客户端设备210还包括各种组件,包括:用户界面客户端引擎214、用户输入引擎216、图形渲染引擎218、媒体合成引擎220、解密引擎222和解码引擎224。在一些情况下,媒体合成引擎220、解密引擎222和解码引擎224是仅在需要时可以使用的可选组件。例如,一些用户界面不包括媒体,在这种情况下,可以不使用媒体合成引擎220、解密引擎222和/或解码引擎224。在一些情况下,如图2所示,例如,当由图形渲染引擎218实现的用户界面不包括任何媒体时,可以将图形渲染引擎218的输出直接提供给显示器215。在一些情况下,客户端设备可以不包括媒体合成引擎220、解密引擎222和/或解码引擎224。在一些实现中,取决于设备的类型,客户端设备210还可以包括用户输入设备213和/或显示器215(这些组件的可选性质由表示这些组件的框的虚线轮廓示出)。例如,移动设备和联网电视机可以包括显示器,而机顶盒可以不包括显示器。

服务器系统201和客户端设备210的组件可以包括和/或可以使用电子电路或其它电子硬件来实现,所述电子电路或其它电子硬件可以包括:一个或多个可编程电子电路(例如,微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、中央处理器(CPU)和/或其它适当的电子电路),并且/或者可以包括和/或可以使用计算机软件、固件或其任意组合来实现,以进行在本文描述的各种操作。虽然服务器系统201和客户端设备210被示出为包括某些组件,但是本领域普通技术人员将认识到,服务器系统201和/或客户端设备210可以包括比图2所示的组件更多或更少的组件。例如,在一些情况下,服务器系统201和/或客户端设备210还可包括:一个或多个存储器设备(例如,RAM、ROM、高速缓存、缓冲器等)、处理设备、一条或多条总线和/或未在图2中示出的其它设备。

服务器系统201与图1的服务器系统101类似并且可以执行相同或相似的功能。类似地,客户端设备210类似于图1的客户端设备110a-110n并且可以执行相同或相似的功能。如以上相对于图1所描述的,基于服务器的用户界面可以部分地由服务器系统201生成且部分地由客户端设备210生成。服务器系统201的界面生成器202可以执行用户界面逻辑。例如,界面生成器202的应用用户界面引擎206可以确定要显示什么图形元素,在何处以及如何显示不同的图形元素,这些图形元素的功能,如何处理用户界面事件等用户界面动作。可以假设客户端设备210具有足够的图形处理性能来显示某些内容,例如,显示视频并将视频与一些在屏显示(OSD)合成。例如,客户端设备210可以至少具有可以支持图形加速(例如,二维或三维图形加速)的图形处理单元(GPU)或其它图形软件和/或硬件。在一些情况下,GPU或其它图形软件和/或硬件可以是图形渲染引擎218的一部分。

图3是示出服务器系统201与客户端设备210之间的消息流的示例的图,并且将与图2一起讨论。客户端设备210可以生成界面事件207,其可以(例如,在图3所示的步骤302处)被发送到服务器系统201的界面生成器202以进行处理。界面事件207可以与导航命令(例如,将选择框从第一图形元素移动到第二图形元素,移动到不同菜单等)、选择命令(例如,选择对应于一移动的图形元素、显示音量图形元素等)和/或任何其它适当的命令相关联或包括它们。例如,在一些情况下,界面事件207可以包括低级事件,例如,控制选择、输入交互、手势命令、语音命令、客户端设备210或用户输入设备213的朝向和/或位置、和/或与一个或多个导航命令、选择命令和/或其它命令相对应的其它低级事件。

可以响应于从用户输入设备213接收的输入来生成界面事件207。用户输入设备213可以是客户端设备210的一部分,或者可以是与客户端设备210(有线和/或无线地)通信的单独的设备。用户输入设备213可以包括任何适当的输入设备,例如,遥控器、触摸屏、麦克风、小键盘、鼠标、键盘、可以生成手势输入的设备、头戴式显示器和/或任何其它输入设备。用户可以在用户界面上导航,并可以使用用户输入设备213选择由用户界面呈现的项目。用户输入引擎216可以从用户输入设备213接收输入命令。用户输入引擎216可以包括用于接收输入命令的输入界面。在一些情况下,可以针对不同类型的用户输入设备包括不同的用户输入引擎216。响应于接收到输入命令,用户输入引擎216可以生成界面事件207,并且可以将界面事件207发送给用户界面客户端引擎214。在一些情况下,用户输入引擎216可以将输入命令发送给用户界面客户端引擎214,并且用户界面客户端引擎214可以生成界面事件207。

在一些情况下,界面事件可以是系统级事件。系统级事件是与系统(例如,客户端设备或另一个服务器系统)而不是特定应用相关的界面事件。即使当一个或多个其它应用正在针对该用户运行时,也可以将系统级界面事件路由到系统级应用(例如,智能电视应用)。系统级界面事件的一个示例可以包括通过遥控器按钮提供的音量调节输入。系统级事件的另一个示例可以包括影响由客户端设备显示的项目的颜色的颜色调整。来自设备的系统级事件的其它说明性示例包括:电话从水平取向转到垂直取向和/或从垂直取向转到水平取向,智能卡被移除,设备被关闭(例如,关断电源、在低功率模式下进入休眠等),设备电池电量低(例如,电池电量小于电池电量阈值,例如,小于10%、20%或其它适当的电量级别),设备进入某种模型(例如,夜间模式,其中界面的颜色改变、通知或警报被关闭等),应用被用户暂停,应用被用户继续等。由服务器生成并发送到用户界面客户端引擎214的系统级事件的说明性示例可以包括与客户端设备(和用户)的连接丢失、服务器关闭、应用被暂停、应用被继续等。

在一些情况下,界面事件可以是应用级事件。应用级事件是与应用相关的界面事件。例如,即使当未接收到用户输入时,应用也可以生成应用级事件。在各种说明性示例中,应用级事件可以包括应用的版本的改变、应用的显示设置的改变和/或任何其它应用级事件。

服务器系统201的用户界面服务器引擎204可以从客户端设备210的用户界面客户端引擎214接收界面事件207。然后,用户界面服务器引擎204可以针对客户端设备210的特定用户派发具有由适当的应用(例如,图3中示出的应用1、应用2至应用n中的一个应用)使用的一个或多个界面事件的消息。例如,在图3所示的步骤304处,用户界面服务器引擎204可以将一个或多个界面事件发送给应用用户界面引擎206。在一些实现中,一个界面事件可以被包括在去往服务器系统201的每个消息中。在一些实现中,多个界面事件可以被包括在去往服务器系统201的每个消息中。在一些情况下,界面事件可以被节流或过滤,从而不使去往服务器系统201的消息的量过载。例如,响应于用户在(例如,智能手机的)触摸屏上移动手指上,可以生成许多事件(例如,每秒50个事件)。这些事件可以被过滤为每个时间段一定数量的界面事件(例如,每秒最多六个界面事件)。

客户端设备210与应用之间的当前会话可以使用任何适当的技术(例如,使用套接字、与用户和应用相关联的标识符等)来识别。在一些实现中,服务器系统201可以为每个连接的用户保持套接字打开,例如,针对第一用户的第一套接字、针对第二用户的第二套接字、针对第三用户的第三套接字等。在一些情况下,可以使用多个服务器计算机,并且负载均衡器可以管理从客户端设备到多个服务器计算机的通信。负载均衡器可以在特定的服务器计算机与特定的客户端设备之间保持“粘性连接”。例如,可以使用IP粘性连接来标识托管用户与应用会话的服务器实例,这确保了来自单个用户的请求被分发到它们在其上启动的服务器。然后,服务器系统101可以保持打开的套接字与当前应用以及用户之间的关联。

对于每个用户/连接,用户界面服务器引擎204确定哪个应用是当前应用,以及哪个过程当前正在处理该应用。在一些情况下,应用可以注册该应用感兴趣的事件。在这种情况下,如果用户具有针对该用户运行的多于一个的应用,则服务器系统101可以将事件派发给针对该事件注册的应用。被确定为适用于用户界面事件的应用可以称为活跃应用。在一些情况下,服务器系统201可以具有应用生命周期引擎(未示出),其可以针对给定用户和从其接收事件的客户端设备来过滤界面事件并将界面事件派发到活跃应用。如上所述,一些事件是系统级事件(例如,与系统相关而不是应用本身相关的事件),并且可能不被(默认地)路由到活跃应用。

如上所述,在图3所示的步骤304处,用户界面服务器引擎204可以将一个或多个界面事件发送到应用用户界面引擎206,该应用用户界面引擎206可以解释所述一个或多个事件。在一些实现中,应用用户界面引擎206的用户界面逻辑可以从应用域引擎208异步地请求一个或多个域功能(在图3的步骤306处)。在一个说明性示例中,服务提供者的“支付电话帐单”用户界面可以由服务器系统201实现,但是应用用户界面引擎206可以向服务提供者的应用域引擎208(例如,一个或多个服务器和/或数据库)进行请求(例如,使用服务提供者的URL)以访问用户凭证、用户信用等。在这种情况下,服务器系统201不必存储与应用的提供者相关联的所有数据(但在一些情况下可以缓存某些数据,这可以提供更快的性能)。在另一示例中,媒体流服务应用可以由服务器系统201实现。流服务用户界面应用本身可以不维护要观看的电影的列表,而是可以向流服务提供者的一个或多个服务器和/或数据库请求电影列表。在一些情况下,应用域引擎208的应用域逻辑可以与应用用户界面引擎206的用户界面逻辑物理地分离,例如通过将域逻辑作为单独的服务或微服务运行(例如,在不同的子网中)。例如,对于国际象棋游戏,域逻辑可以处理游戏的人工智能(A.I.)。在一些情况下,应用用户界面引擎206的应用用户界面逻辑可以绕过域逻辑(例如,以提高速度)。在一些示例中,用户界面逻辑可以管理某种形式的缓存。例如,EPG应用不必每秒一千次地向EPG微服务请求(例如,在应用域引擎208中)确定某电视频道上是什么。确切地说,应用用户界面引擎206可以进行缓存以在本地临时维护这种数据。

应用用户界面引擎206可以与存储在服务器系统的存储器或外部存储器中的一个或多个应用进行交互。在图3所示的示例中,一个或多个应用可以包括应用1、应用2至应用n。在一些情况下,应用用户界面引擎206可以包括具有应用用户界面逻辑的应用运行时引擎(例如,沙箱)。沙箱可以提供安全环境。每个安全环境可以是特定于设备、特定于应用、特定于操作系统(OS)等。在一些实现中,每个应用可以具有专用的应用用户界面引擎206。在一些情况下,在其自己的应用用户界面引擎206中运行每个应用可能更安全。在一些实现中,单个应用用户界面引擎206可以与多个应用交互。在一些情况下,在同一应用用户界面引擎206中运行不同的应用可以使用更少的资源。在一些情况下,多个应用用户界面引擎可以并发地运行。在一些情况下,使用率高的应用可以使用多个专用的应用用户界面引擎(例如,当每个运行时引擎有限制时)。在一些示例中,来自共同应用开发者或提供者的应用可以共享共同的应用用户界面引擎。在一些情况下,某个应用用户界面逻辑可以共享进程。例如,EPG应用可以与电视遥控器应用共享相同的应用用户界面进程,以便容易地共享RAM中两个应用的缓存。在另一个示例中,具有少量并发用户的利基应用可以共享进程以节省资金。

在操作期间,在添加、移除和/或更新应用时以及在用户启动和/或停止应用时,可以启动、监视和关闭应用用户界面引擎(例如,沙箱)。应用用户界面进程应当能够处理一定数量的用户(例如,几千个并发用户)。当应用进程接近其用户限制时,用户界面服务器引擎204可以针对下一个数量的用户(例如,接下来的几千个用户)启动用于该应用的额外进程。例如,使用应用的第一用户可以令应用用户界面引擎启动,然后在该应用用户界面引擎中有太多用户运行该应用时,可以启动另一个应用用户界面引擎。

基于一个或多个接收的界面事件(例如,一个或多个键按压、手指移动、设备或输入设备定向和/或位置等),应用用户界面引擎206可以确定与应用相关联的用户界面的图形元素(或图形对象)应当如何显示。例如,应用用户界面引擎206可以确定用户界面的各种状态,例如,用户界面的图形对象的布局、图形对象的颜色、字体、图像信息、视频信息等功能。改变可以包括图形改变、控件和/或功能的改变(例如,添加或移除控件和/或功能)、整个用户界面的改变等。可以由应用用户界面引擎206在应用级别确定特定的界面事件(例如,触摸输入、键按压等)是导航命令、选择命令还是其它适当的命令。在一些情况下,可以基于其它远程客户端事件来确定用户界面的各种状态,所述事件可以基于也可以不基于用户输入,例如视频被开始或结束、视频访问控制被拒绝、电话响铃等事件。例如,可以响应于视频结束而移除包括视频的图形元素。可以从服务器系统201可访问的存储器(例如,服务器系统201上的存储器203或一个或多个其它本地和/或远程服务器上的存储器)获得针对每个应用的可用图形元素和其它用户界面内容。使用可用的图形元素和其它用户界面内容,应用用户界面引擎206可以基于接收的一个或多个界面事件来确定要显示什么,例如,针对图形资产的框、线、文本、图像、地址信息(例如,统一资源定位符(URL)等)等图形内容。

应用用户界面引擎206可以基于特定的界面事件来确定要显示、移除和/或改变哪些用户界面图形对象(或元素)。例如,应用可以注册某些事件(例如键按压、滚动事件、缩放、播放视频等),从而使得在发生某个界面事件时将调用特定函数。响应于接收到的事件和被调用的对应函数,应用用户界面引擎206可以改变应用的状态,并且可以根据状态改变来生成定义用户界面的性质的新界面模型。可以使用任何适当的框架基于接收到的界面事件来实现应用改变。在下面的表1中示出了由服务器系统201实现的框架的一个说明性示例。

使用表1中的框架,基于界面事件,UI应用可以在它接收到界面事件时生成DOM或更新DOM,并且可以将DOM或增量DOM发送到客户端设备或服务器系统。表1中使用的名称“event handler”、“reducer”和“renderer”是UI框架(例如React框架)中的标准。在一个说明性示例中,在下面的表1中所示的框架可以用于UI云应用。客户端设备可以包括客户端设备210,表1的最右列中的服务器系统可以包括一个或多个服务器计算机140,UI系统对应于用户界面服务器引擎204,并且UI应用对应于应用用户界面引擎206。

图8是示出用于生成增量界面模型的过程800的示例的流程图。将与表1中所示的框架一起描述过程800。在框802处,过程800包括接收界面事件。例如,参考表1中的框架,客户端设备或服务器系统可以接收与界面事件相对应的输入。客户端设备或服务器系统可以将界面事件发送到UI系统。在框804处,过程800可以确定与界面事件相关联的应用。例如,参考表1,UI系统可以找到正确的事件处理程序和正确的应用/用户上下文(包括与用户相关联的信息)。应用可以针对该应用所注册的每个界面事件维护不同的事件处理程序。例如,可以针对第一界面事件(例如,键按压、鼠标移动、触摸屏上的触摸事件等)维护第一事件处理程序,可以针对第二界面事件维护第二事件处理程序,可以针对第三个界面事件维护第三事件处理程序,依此类推。事件处理程序可以是应用的函数,其中当与该事件处理程序相对应的界面事件发生时调用该函数(例如,在服务器系统接收到键按压事件时与键按压相关的事件处理程序函数被调用)。事件处理程序可以基于事件生成动作。UI系统可以派发或实现该动作。动作的派发可以使得基于该动作来更新用户界面,这可以使得用户界面的状态改变。例如,UI系统可以将先前状态和动作发送到UI应用,并且UI应用可以实现缩减器以更新状态。缩减器将新状态(基于动作)返回到UI系统。

在框806处,过程800可以基于界面事件来确定用户界面状态信息。在框808处,过程800可以确定用户界面的状态是否已经改变。如果在框808处确定用户界面的状态已改变,则该过程在框810处生成增量界面模型。如果在框808处确定用户界面的状态未改变,则过程800可以在框812处结束。参考表1,当用户界面的状态改变时,渲染器被调用。例如,如果与用户界面的先前状态相比状态改变了,则将状态发送到UI应用的渲染器,以将该状态转换为新的界面模型(例如,如下所述的文档对象模型(DOM)或其它界面模型)。然后将新的DOM发送到UI系统。在使用增量DOM的实现中,UI系统基于先前用户界面和当前用户界面之间的差异来计算增量DOM。UI系统可以将增量DOM发送到客户端设备或服务器系统。在不使用增量DOM的情况下,UI系统可以将完整的DOM发送到客户端设备或服务器系统。客户端设备或服务器系统可以基于DOM或增量DOM来更新用户界面(例如,进行用户界面的图形更新)。

在一些情况下,应用用户界面引擎206的用户界面逻辑可以随时请求用户界面改变,而不仅是在接收到客户端事件时。在一些情况下,当接收到单个事件(例如,键按压)时,应用可以请求多于一个的用户界面改变(例如,两个或更多个改变)。例如,第一图形改变可以在接收到事件时由应用域引擎208来实现(从而允许快速反馈给观看者),并且第二图形改变可以在应用域引擎208的域逻辑对来自应用用户界面引擎206的信息请求进行应答时实现。在一些情况下,应用用户界面引擎206可以不时地更新用户界面,例如推送新信息、在超时后和/或响应于其它情况的发生。

应用用户界面引擎206可以生成描述该用户界面的状态信息的界面模型。例如,当应用用户界面引擎206准备好回答来自用户界面服务器引擎204的请求时,应用用户界面引擎206可以生成描述用户界面的对象的布局和其它特征的新的或修改的界面模型。然后,应用用户界面引擎206可以将界面模型传递回用户界面服务器引擎204(在图3的步骤308处)。

在一些实现中,如上所述,界面模型可以包括文档对象模型(DOM)。DOM可以定义或表示文档的逻辑结构(例如,应用的用户界面的结构),以及文档被访问和操纵的方式。例如,DOM可以包括对象树,其中每个对象具有性质(例如,颜色、位置、大小等性质)。在一些情况下,DOM可以定义或表示超文本标记语言(HTML)文档(例如,对于网页或web应用)、可扩展标记语言(XML)文档、可扩展超文本标记语言(XHTML)文档和/或其它文档的逻辑结构和可访问性以及操纵信息。DOM是一种跨平台且语言无关的应用编程接口,它将文档视为树结构,其中每个节点包括表示文档的一部分的一个对象。一个或多个对象可以表示用户界面的元素,其元素可以是交互式的,从而导致生成界面事件。例如,为定义用户界面而生成的DOM可以包括具有属性(例如一个或多个位置、颜色、URL等)的图形对象(例如,一个或多个框、线、图像、图标、文本、视频等图形对象)的树。使用DOM,应用用户界面引擎206可以浏览文档的结构,并且可以添加、修改和/或删除文档中的元素和内容(例如,基于接收到的用户界面事件和/或其它事件,例如,远程客户端事件)。例如,使用DOM,可以基于接收到的用户界面事件来访问、改变、删除和/或添加文档的许多项目。在一些实现中,可以基于设备、操作系统(OS)类型、应用的版本和/或客户端的一些其它变化的特征来定义界面模型(例如,DOM)。例如,可以生成在设备类型、OS类型、应用版本等之间存在用户界面的差异的界面模型。在这样的实现中,可以按照设备、应用、OS等为多个客户端定义单个界面模型或增量界面模型(包括UI改变)。在一些情况下,可以基于变化的设备特征来生成不同的界面模型,或者单个模型可以用于所有不同的特征。

在一些情况下,服务器系统201可以在将界面模型发送到客户端设备210之前自动优化界面模型(例如,DOM)。例如,用户界面服务器引擎204可以在将界面模型发送到客户端设备210之前尽可能地压缩界面模型(例如,DOM)。界面模型的压缩可以包括通过确定由应用用户界面引擎206确定的当前界面模型(定义当前用户界面)与先前的用户界面模型(定义先前的用户界面)之间的差异来生成增量界面模型。在一些情况下,可以通过应用一种或多种标准压缩算法(例如,进行zip压缩以将DOM置于.zip文件格式中)来进一步压缩界面模型。

如上所述,在一些情况下,应用用户界面引擎206可以生成新的界面模型(例如DOM),并且用户界面服务器引擎204可以基于接收到的界面事件确定新的界面模型与先前界面模型之间的差异(“增量”)。让用户界面服务器引擎204确定增量界面模型通常对于应用而言会更简单(例如,对于给定的状态,应用具有给定的外观)。在一些情况下,应用用户界面引擎206可以生成增量界面模型。例如,一些应用可能更喜欢让应用用户界面引擎206管理增量(例如,应用将指示什么是新的以及什么是不同的的情况)。

在一些情况下,用户界面服务器引擎204可以将界面模型209(例如DOM)发送到客户端设备210的用户界面客户端引擎214(在图3的步骤310处)。在一些情况下,用户界面服务器引擎204可以将增量界面模型(例如,增量DOM)发送到用户界面客户端引擎214,以仅指示当前用户界面与之前生成的用户界面(例如,在当前用户界面之前生成的最后一个用户界面)的改变或差异,而不发送描述整个用户界面的整个界面模型。在一些实现中,界面模型(例如DOM)或增量界面模型(例如增量DOM)可以以某种格式作为对象发送,所述格式例如为用于表示结构化数据的基于文本格式的JavaScript对象表示法(JSON)对象或其它适当的对象。在使用DOM作为界面模型的示例的一些情况下,增量DOM可以包括整个DOM的结构,但是只有包括已改变的图形元素的DOM的叶子(或节点)才可以包括数据。可以在增量DOM中将不包括改变的DOM的叶子保留为空(没有数据)。如下面进一步描述的,(用户界面客户端引擎214的)客户端设备客户端代码可以基于接收到的增量DOM来优化要重绘的一部分屏幕。在一些示例中,当生成对界面模型的改变时,总是可以发送完整的界面模型(例如,完整的DOM)。在一些示例中,只有当用户从一个应用导航到另一应用和/或在其它情况下(例如,当应用首次启动时等)时,才可以发送完整的界面模型。在一些示例中,当应用改变其界面模型时(例如,基于应用用户界面引擎206的处理),可以发送增量界面模型。

在一些示例中,可以通过重复使用跨用户界面的图形元素(例如,菜单项)共享的某些性质来压缩界面模型(例如,DOM)或增量界面模型。例如,为了简化客户端设备对用户界面的渲染,服务器系统201可以使用无需“规则”就可以重复使用的恒定“样式”。例如,不同的菜单项可以共享多个性质,或者某些性质可能有少量差异(例如,菜单项的标题和x坐标位置不同,而颜色、字体、大小、高度、宽度等相同,或者菜单项仅在高亮显示等时可能不同)。在这样的示例中,服务器系统201可以被设计为使得它不使用层叠样式表(CSS),层叠样式表(CSS)在一些情况下可能对计算资源(例如,CPU)的要求非常苛刻。CSS是将样式(例如字体、颜色、间距等)添加到用户界面或其它电子媒体(例如web文档等)的机制。由服务器系统201实现的恒定的样式可以使用“HTML”类句法来执行。

使用DOM作为界面模型的示例,完整的DOM可以被称为Intra-DOM(I-DOM或iframe),并且增量DOM可以被称为Predictive-DOM(P-DOM或pframe)。与PoC主菜单(未压缩)相对应的I-DOM(intra)示例如下:

["iframe",{"styles":{"backgroundColor":"#e4e4e4"},

"photo1":{"styles":{"top":"1%","left":"20%","width":"60%","height":"10%","transition":"all1.00s","borderWidth":"1px","onclick":"yes","onmouseenter":"yes","backgroundColor":"white","borderStyle":"solid","boxShadow":"grey 10px 5px5px","borderColor":"gray"},"label0":{"styles":{"left":"10%","top":"20%","text":"My 1st Application"}}},

"photo2":{"styles":{"top":"12%","left":"20%","width":"60%","height":"10%","transition":"all1.00s","borderWidth":"1px","onclick":"yes","onmouseenter":"yes","backgroundColor":"#e4e4e4","borderStyle":"hidden","boxShadow":"none","borderColor":"gray"},"label1":{"styles":{"left":"10%","top":"20%","text":"Photo carousel 1"}}},

"photo3":{"styles":{"top":"23%","left":"20%","width":"60%","height":"10%","transition":"all1.00s","borderWidth":"1px","onclick":"yes","onmouseenter":"yes","backgroundColor":"#e4e4e4","borderStyle":"hidden","boxShadow":"none","borderColor":"gray"},"label2":{"styles":{"left":"10%","top":"20%","text":"Photo animated"}}},

"pong":{"styles":{"top":"34%","left":"20%","width":"60%","height":"10%","transition":"all1.00s","borderWidth":"1px","onclick":"yes","onmouseenter":"yes","backgroundColor":"#e4e4e4","borderStyle":"hidden","boxShadow":"none","borderColor":"gray"},"label3":{"styles":{"left":"10%","top":"20%","text":"Pong"}}},

"connect4":{"styles":{"top":"45%","left":"20%","width":"60%","height":"10%","transition":"all1.00s","borderWidth":"1px","onclick":"yes","onmouseenter":"yes","backgroundColor":"#e4e4e4","borderStyle":"hidden","boxShadow":"none","borderColor":"gray"},"label4":{"styles":{"left":"10%","top":"20%","text":"Connect Four"}}},

"tele":{"styles":{"top":"56%","left":"20%","width":"60%","height":"10%","transition":"all1.00s","borderWidth":"1px","onclick":"yes","onmouseenter":"yes","backgroundColor":"#e4e4e4","borderStyle":"hidden","boxShadow":"none","borderColor":"gray"},"label5":{"styles":{"left":"10%","top":"20%","text":"Program Guide"}}},

"radio":{"styles":{"top":"67%","left":"20%","width":"60%","height":"10%","transition":"all1.00s","borderWidth":"1px","onclick":"yes","onmouseenter":"yes","backgroundColor":"#e4e4e4","borderStyle":"hidden","boxShadow":"none","borderColor":"gray"},"label6":{"styles":{"left":"10%","top":"20%","text":"Radios"}}},

"clock2":{"styles":{"top":"78%","left":"20%","width":"60%","height":"10%","transition":"all1.00s","borderWidth":"1px","onclick":"yes","onmouseenter":"yes","backgroundColor":"#e4e4e4","borderStyle":"hidden","boxShadow":"none","borderColor":"gray"},"label7":{"styles":{"left":"10%","top":"20%","text":"Clock2"}}},

"abra":{"styles":{"top":"89%","left":"20%","width":"60%","height":"10%","transition":"all1.00s","borderWidth":"1px","onclick":"yes","onmouseenter":"yes","backgroundColor":"#e4e4e4","borderStyle":"hidden","boxShadow":"none","borderColor":"gray"},"label8":{"styles":{"left":"10%","top":"20%","text":"Zapper"}}}}

]

当用户a下移一项(例如,与箭头键按下对应的输入事件)时生成的P-DOM(inter)的示例如下:

["pframe",{

"photo1":{"styles":{"backgroundColor":"#e4e4e4","borderStyle":"hidden","boxShadow":"none"}},

"photo2":{"styles":{"backgroundColor":"white","borderStyle":"solid","boxShadow":"grey10px 5px 5px"}}}

]

如上面的P-DOM(“pframe”)所示,仅列出了两个菜单项(即,改变的菜单项),其中仅有改变的性质。在这种情况下,没有添加或删除的对象,只有性质改变。上面示例P-DOM中的性质改变包括“photo1”和“photo2”的背景颜色、边界样式和框阴影颜色。如果在当前用户界面模型中添加了对象,则该对象将仅被添加在增量DOM中。如果在当前用户界面模型中删除了先前用户界面模型中的对象,则可以在当前用户界面模型的增量DOM中将该对象标记为“已删除”。

下面是与电影列表向上滚动相对应的P-DOM的另一个示例。在处理键按压时,列表中最上面的电影消失,而底部的另一个电影被添加到列表中。对于“movie0-12785”对象,它被标记为“已删除”以从客户端屏幕移除。此外,“boxShadow”也被从“movie0-40418”删除。另一个选项将是把“boxShadow”设置为“none”。在下面的示例中,电影“movie0-53986”和“movie0-30877”仅垂直移动,并且仅刷新了这些电影的“top”性质。两个电影“movie0-40418”和“movie0-37828”的性质在它们获得或失去焦点时会更剧烈地变化,因此接收更多改变。

等等。

在一些实现中,服务器系统201可以管理两个或更多个界面模型(例如,两个或更多个DOM)。例如,服务器系统201可以管理用于全局系统应用的系统DOM和用于应用的应用DOM。在这样的示例中,全局系统应用可以控制客户端设备(例如,在付费电视的情况下的运营者应用),而用户可以主要与该应用进行交互。在另一个示例中,可以在当前应用(例如,EPG、游戏应用或其它应用)的顶部显示应用(例如,消息传送、电子邮件或警报应用)。例如,应用可以被显示为当前应用上的弹出物。弹出应用可以提供跳转到全屏相关应用的选项(例如,弹出应用可以指示已接收到电子邮件,以及直接跳转到完整电子邮件应用的选项)。在这样的示例中,即使当只有一个应用对用户可见时,服务器系统201也可以并行管理用于多个应用的多个界面模型。管理多个界面模型允许从一个应用用户界面快速切换到另一应用用户界面。

如上所述,服务器系统201的用户界面服务器引擎204可以将界面模型209(例如,DOM)或者其带有与先前界面模型的改变或差异的一部分(例如,增量界面模型,诸如增量DOM)发送到客户端设备210的本地界面生成器212的用户界面客户端引擎214(在图3的步骤310处)。客户端设备的图形渲染引擎可以基于接收到的界面模型或增量界面模型来渲染用户界面。使用对象模型(例如DOM)可以使客户端设备能够避免确定用户界面的状态信息(例如,用户界面的布局或布局的改变等特征)的处理,例如,进行布局计算。例如,应用用户界面引擎206可以预先计算由界面模型或增量界面模型(例如,DOM或增量DOM)表示的图形元素性质(例如,图形元素的位置、尺寸、颜色和/或其它性质),从而使得客户端设备210无需进行确定用户界面性质所需的布局计算和/或其它处理。代替地,客户端设备可以实现例程(例如,图形例程)以基于DOM或DOM中的改变来生成用户界面。客户端设备210可以读取针对给定用户界面接收的对象模型或增量界面模型,并且可以渲染由对象模型或增量界面模型定义的用户界面。例如,使用DOM或增量DOM,客户端设备210的图形渲染引擎218可以将图形对象树从DOM或增量DOM转换为图形例程调用的列表。基于在对象模型或增量界面模型中描述的界面性质(例如,状态信息),图形渲染引擎218可以生成绘制命令。在一些情况下,当客户端设备210接收到增量DOM时,图形渲染引擎218可以基于接收到的增量DOM来优化要重绘的屏幕的部分。接收增量DOM可以简化客户端设备210对于应该重绘屏幕的哪个部分的决定。在一些情况下,图形渲染引擎218对界面事件一无所知,并且可以基于DOM或增量DOM进行图形自动化。在一些示例中,图形渲染引擎218可以执行动画。例如,在DOM中发送的性质可以用来描述该动画。在一个说明性示例中,图形渲染引擎218可以执行仅是过渡动画,其中应用可以向与进行过渡所花费的时间相关联的DOM对象提供新性质。仅是过渡动画(或“过渡”动画)是CSS3/HTML的一种动画类型。例如,代替只是立即改变性质(例如,对象的左上位置),在应用中可以表达要根据时间参数发生改变(例如,在“n”秒内发生改变)。可以通过为对象设置“transition=time”的性质来表达时间参数。

在一些情况下,对象模型或增量对象模型(例如DOM或增量DOM)可以由服务器系统201分层,或者可以在不被服务器系统201分层的情况下发送到客户端设备210。分层是在用户界面中找到在哪里显示对象的动作。在进行分层时,需要做出许多定位决策。例如,界面对象(例如,图形对象或元素)具有指示诸如第一对象在第二对象的右边、第三对象在第四对象的下面等特性的性质或属性。由于对象的位置相互依赖,当改变性质时,层会导致许多计算。在一个示例中,第一对象的“y”位置可以依赖于位于第一对象附近的第二对象的字体的大小。在一些示例中,可以禁止对相邻对象产生副作用的对象性质,这对于设计用于全屏应用的用户界面(例如,用于电话、平板电脑、电视、诸如机顶盒或其它控制台设备之类的媒体设备等的用户界面)可能足够了。在一些示例中,分层可以由服务器系统201进行以生成分层的界面模型(例如,分层的DOM),并且可以将分层的界面模型发送到客户端设备210。在一些情况下,分层插件可以在用户界面应用与用户界面服务器系统之间实现,该用户界面服务器系统将负责在不改变系统的其余部分的情况下对对象进行分层。

客户端设备210还可以从一个或多个媒体源217接收媒体内容(例如,视频、音频、图形、图像、其组合或其它媒体)(在本文中也称为“媒体”)。由于客户端设备210进行支持媒体内容的呈现的UI的渲染,因此服务器系统201可能不需要访问一个或多个媒体源217,这可以减轻服务器系统201的处理负担。客户端设备210的本地界面生成器212可以将来自一个或多个媒体源217的媒体内容整合到渲染的图形中。例如,当接收到的媒体被加密时,解密引擎222可以解密媒体(和/或任何其它媒体)。例如,解码引擎224可以基于接收到的视频的格式(例如,H.265/高效视频编码(HEVC)、H.264/高级视频编码(AVC)、MPEG或其它视频格式)使用任何适当的编码技术来对视频进行解码。媒体合成引擎220可以将来自图形渲染引擎218的渲染的用户界面与来自解码引擎224的解密和/或解码的媒体进行组合。然后,可以将组合的数据发送到显示器215。如前所述,在一些实现中,显示器215可以是客户端设备210的一部分。例如,客户端设备210可以是移动设备,并且显示器215可以是该移动设备的显示屏。在另一个示例中,客户端设备210可以是联网电视机(例如,具有WiFi调制解调器和收发器的电视机),并且显示器215可以是电视机的显示屏。在一些实现中,显示器215可以与客户端设备210分离。例如,客户端设备210可以是机顶盒,并且显示器215可以是连接到机顶盒的电视机的一部分。

与具有图形渲染、视频压缩、视频编码等的现有解决方案相比,上述基于服务器的用户界面是一项显著改进,其将节省大量服务器计算(例如,CPU、RAM、缓存等)资源(例如比率为1/50)。例如,在基于视频的系统中,服务器系统201不需要处理视频(例如,压缩/编码等)并将视频发送到客户端设备210。此外,代替可能包括媒体内容的生成的用户界面、用户界面的元素或这两者的通信,基于用于渲染用户界面的界面模型的通信,服务器系统201与客户端设备210之间的通信的带宽量可以被最小化。另一个优点是,使用本文所述的基于服务器的系统将大大提高应用的启动速度。例如,当用户在客户端设备上启动应用时,由于该应用已经在服务器系统201上启动并运行,因此该应用可以实时加载。为了说明,服务器系统201上的应用(例如,电子节目指南(EPG)或其它应用)将在许多并发的客户端设备及其用户之间共享。当客户端设备启动尚未在服务器系统201上运行的应用时,该应用由服务器系统201加载,并且可以被添加到在服务器系统201上运行的应用的列表中。例如,当客户端设备启动应用时,服务器系统201可以确定该应用是由该客户端设备触发的。服务器系统201可以确定应用未在服务器系统201上运行,并且响应于确定应用未在服务器系统201上运行,服务器系统201可以将该应用添加到在服务器系统201上运行的应用的列表中。应用的列表可以由多个客户端设备使用服务器计算机来访问。例如,当新的客户端设备(和客户端设备的新用户)开始与应用交互时,该应用(例如,EPG)可能已经由服务器系统201为了供其它客户端设备和用户访问而启动并在运行,因此为新的客户端设备和用户加载该应用或加载该应用数据(例如EPG数据)就没有启动时间。在应用用户界面引擎206(例如,沙箱)中,应用对所有用户共享共同数据(例如,EPG数据库可以完全在RAM中),而对用户上下文的需要很少(例如,一个或更多状态,诸如当前的DOM和连接)。在应用运行时引擎在客户端设备上的现有方案中,必须加载并初始化启动中的应用,这增加了延迟。

在本文中所述的基于服务器的用户界面的另一个益处与安全性有关。例如,基于服务器的用户界面的副作用是由服务器系统(例如,服务器系统201)发送到客户端设备的信息是与图形相关信息有关的信息(例如,用户界面的一个或更多图形对象的状态信息),在这种情况下,没有暴露应用编程接口(API)的形式。因此,这样的方案提供了实现用户界面的安全方式。与现有的基于服务器的方案相比,这是一个优点,在现有的基于服务器的方案中客户端设备经由API对服务器调用(例如,发送请求)以获取内容(例如,电影、搜索结果等信息),将数据留在这样的API调用中打开了安全漏洞(例如,未经授权的第三方可以访问密钥、敏感数据和/或在API调用中包括的其它信息)。

图4是示出文档对象模型(DOM)400的示例的图,该文档对象模型(DOM)定义了具有三个菜单项的用户界面的状态信息,三个菜单项被标记为项目1、项目2和项目3。这三个菜单项包括文本图形元素。图5是示出基于接收到的事件定义用户界面的不同状态信息的DOM500的示例的图。例如,应用用户界面引擎206可以生成用户界面的DOM 400,其中第一菜单项(针对项目1)为高亮显示的红色文本,其它两个菜单项(针对项目2和项目3)为黑色文本。响应于输入事件(例如,响应于键按压),应用用户界面引擎206可以生成新的DOM 500,其中第二个菜单项(针对项目2)为高亮显示的红色文本,其它两个菜单(针对项目1和项目3)为黑色文本。

在图4和图5的示例中,DOM 400与DOM 500之间的仅有改变是第一项和第二项的颜色性质。图6是仅包括DOM 400与DOM500之间的差异的增量DOM 600的示例。例如,增量DOM600仅包括项目1的颜色已变为黑色的指示以及项目2的颜色已改变为灰色的指示。图7是示出基于增量DOM 600的用户界面的改变的示例的图。例如,基于指示项目1菜单项已经从灰色变为黑色的图6中示出的增量DOM 600,“Open”菜单项(对应于图6中的“项目1”)从用户界面的第一屏幕中的灰色改变为用户界面的第二屏幕中的黑色。此外,基于指示项目2菜单项已经从黑色改变为灰色的增量DOM 600,“Close”菜单项(对应于图6中的“项目2”)从用户界面的第一屏幕中的黑色改变为用户界面的第二个屏幕中的灰色。可以将增量DOM 600发送到客户端设备210以更新用户界面的图形。在这样的情况下,没有改变的对象可以不被发送到客户端设备210。对于改变的对象,仅发送改变的性质。

在一些示例中,由于在本文中描述的基于服务器的系统(例如,服务器系统101和/或服务器系统201)维护并管理一个或多个应用的用户界面,因此由客户端设备显示的应用的用户界面的远程客户端控制可以高效地执行,使得基于服务器的系统或另外的客户端设备对客户端设备的控制成为可能(例如,在远程桌面的情况下)。例如,由于应用可能已经在服务器系统201上启动并运行,因此服务器系统201的计算机可以显示由客户端设备所显示的应用的相同内容,该客户端设备从服务器系统201接收针对该应用的界面模型(或增量界面模型)。在一些情况下,远程客户端控制可以使内容能够重放,从而使得能够发现呈现中的问题和/或提供问题的检测。在另一个示例中,第一客户端设备可以远程控制由第二客户端设备显示的应用的用户界面。例如,可以将同一界面模型或增量界面模型(例如,DOM或增量DOM)发送到第一设备和第二设备。使用在本文中描述的基于服务器的系统可以使在这样的示例中进行客户端控制或远程桌面操作更容易,因为应用的用户界面是由服务器系统渲染的并且可以由服务器系统发送给第一客户端设备和第二客户端设备两者。在一些情况下,第一客户端设备和第二客户端设备都可以向服务器系统提供针对应用的实例的输入,并且服务器系统可以基于来自第一客户端设备和第二客户端设备两者的输入来修改用户界面。在这种情况下,第一客户端设备和第二客户端设备的用户可以与应用实例的同一用户界面进行协作交互。

在一些情况下,当使用某些客户端设备(例如,具有鼠标或其它输入设备的台式计算机、移动电话、平板计算机、可穿戴设备或具有触摸屏、基于手势的和/或其它接口的其它设备等)时,大量输入事件可以从客户端设备发送到服务器系统(例如,服务器系统201)。在一个说明性示例中,当鼠标从一个点移动到另一点时,每秒可以生成100个事件。触摸屏上的触摸事件也可以生成大量事件。从资源的角度(例如,带宽、计算、存储器等)来看,如此大量的事件对于服务器系统而言可能太繁重。例如,对于服务器系统的实时传输和处理而言,原始事件的数量可能很快变得过大。

在一些示例中,来自客户端设备的事件可以被节流。例如,在本文提供了处理某些类型的输入(例如,滑动(swipe)和/或包括输入的重复移动的其它手势)的新方式。例如,在客户端设备上(例如,在移动电话、平板计算机等上)的滑动或其它手势或输入可用于滚动项目列表。当用户使用鼠标等在触摸屏上快速滑动时,发生某种形式的自动重复,使得项目持续滚动,之后菜单项开始逐渐慢下来。然后,用户将需要一次又一次地滑动以滚动过长列表,导致许多输入事件的产生。通过检测用户已经将手指、定点设备、鼠标或其它输入工具保持在输入结束时(例如,在滑动移动结束时)的位置,并继续滚动操作直到释放输入为止,输入事件(例如,基于滑动的事件和/或其它基于手势的事件)可以被节流。在一个说明性示例中,服务器系统可以检测在滑动移动结束时用户已经将手指、定点设备或其它输入工具保持在触摸界面上(例如,用户滑动手指并将手指保持在滑动结束时的位置)。响应于检测到用户将输入工具(例如,手指等)保持在滑动移动结束时的位置,服务器系统将使滚动在相同方向上继续,直到用户移开其手指为止。在一些情况下,服务器系统可以检测输入的速度,并且可以基于该速度进行连续滚动操作(例如,可以响应于更快的输入来进行更快的滚动)。这种用于节流输入的方案减少了所生成的输入事件的数量,并且允许用户执行较少的输入手势来滚动项目列表。

在一些情况下,关于键盘事件,客户端设备可以发送键按下(键盘按钮被按下)和键松开(键盘按钮被释放)事件。对于键盘事件,所有的事件处理由服务器系统(例如,服务器系统201)进行。在这种情况下,可以实现自动重复管理,其中重复的松开事件不被发送到服务器系统。在一些情况下,服务器系统可以向客户端提供(例如,发送或传输)的更新多于客户端或网络能够处理的更新。在一些示例中,例如为了确保服务器系统不提供太多重复更新,客户端设备可以在客户端确定其准备好接受更多重复更新时,向服务器发送指示客户端准备就绪的消息(称为“准备就绪消息”)。服务器系统可以等待直到它从客户端设备接收到准备就绪消息才向客户端设备发送更新。在一些示例中,客户端设备可以向服务器系统提供(例如,发送或传输)消息,以指示服务器系统暂停或停止发送更新。该消息可以被称为“暂停x消息”,其中“x”可以是在向客户端设备提供进一步更新之前服务器系统要等待多久的延迟指示符。在一些情况下,当客户端获得的更新多于它能处理的更新时(例如,更新的数量超过了更新的阈值数量(诸如,10个更新、50个更新或其它适当的数量),或者指示客户端设备已接收到太多更新的其它阈值),客户端设备可以发送暂停x消息。

在一些示例中,可以实现输入事件(例如,鼠标事件、触摸事件等)处理程序。例如,在HTML和/或JavaScript(JS)中,可以声明性地关联函数来处理事件。一个说明性示例如下:

困难在于界面模型(例如,DOM)被发送到客户端设备并由其处理,而函数是由服务器系统(例如,服务器系统201)的服务器计算机执行。服务器系统(例如,服务器系统201)可以使用输入事件处理程序将函数引用(例如,HTML和/或JS函数引用)转换成唯一函数标识符(ID)。例如,第一函数可以与第一函数ID映射或相关联,第二函数可以与第二函数ID映射或相关联,第三函数可以与第三函数ID映射或相关联,等等。服务器侧可以将函数ID发送到客户端设备。响应于基于用户输入检测到的事件、应用级事件或系统级事件,客户端设备可以将函数与事件相关联,定位与该函数相关联的ID,并将该ID发送给服务器系统。然后,服务器系统201可以调用该函数并执行该函数以确定如何修改用户界面。在一些示例中,客户端设备可以发送事件产生的N个函数-ID配对或对(例如,包括目标对象、函数ID)的列表。服务器系统可以调用这N个函数,传递关于事件的信息(例如,传递到应用用户界面引擎206和/或应用域引擎208)。通过使用这样的输入事件处理程序,服务器系统可以执行函数而不需要应用用户界面改变其操作方式(例如,应用可以继续以声明方式关联函数以处理特定事件)。

在一些示例中,服务器系统(例如,服务器系统201)可以针对每个与客户端设备的连接维护一个远程系统对象。例如,远程系统对象可以包括被表示为存储与系统有关的信息(包括连接信息)的数据对象结构的实例化的数据。远程系统对象可以持久存在,从而使得多个应用可以依赖现有连接以提高效率和速度,例如用于跨不同应用的客户端事件的通信。每个连接的远程系统对象可以由为客户端设备和/或客户端设备的用户运行的一些或所有应用共享。维护每个连接的远程系统对象的效果是,从客户端设备的角度来看,创建了一个多任务系统。用户可以在第一应用与第二应用之间来回切换(例如,从游戏到EPG),并且可以按照用户之前从第二应用切换离开时的状态在第二应用中恢复执行。

在一些实现中,服务器系统(例如,服务器系统201)可以适应于不同客户端设备的能力。例如,可以将过滤器添加到界面模型(例如,添加到DOM或增量DOM的用户界面树),用于定义对于什么可以被包括在特定客户端设备的界面模型中施加的某些限制。在一个说明性示例中,如果客户端对某些像素尺寸或位置的处理具有已知的限制,例如能够渲染和显示高清分辨率或较低分辨率的视频图像,则可以针对该客户端设备在界面模型上放置过滤器或限制,以指示可以通过客户端设备显示1280×720像素(或其它高清分辨率)的最大视频分辨率。

图9是示出了使用在本文中描述的技术来生成用户界面内容的过程900的示例的流程图。在框902处,过程900包括接收(例如,通过服务器计算机或其它设备)用户界面事件。在由服务器计算机进行过程1000的情况下,服务器计算机可以是服务器系统101或服务器系统201的一部分。用户界面事件对应于客户端设备的用户界面。例如,用户界面事件可以基于由用户界面接收的用户输入。在另一个示例中,用户界面事件可以是与用户界面相关的基于系统的事件。客户端设备可以包括任何适当的设备。在一些示例中,客户端设备包括媒体设备。用户界面可以包括任何类型的用户界面,例如图形用户界面、媒体内容指南(例如,电子节目指南(EPG))、游戏应用的界面、移动应用的界面、智能电视应用的界面或任何其它适当的用户界面。

在框904处,过程900包括确定与用户界面事件相关联的应用。例如,可以基于服务器计算机(或其它设备)与客户端设备之间的连接来确定与用户界面事件相关联的应用。该连接可以包括套接字或任何其它适当的连接。

在框906处,过程900包括使用与用户界面事件相关联的应用来生成界面模型。界面模型为用户界面的一个或多个图形对象定义状态信息。状态信息从用户界面事件得到。在一些情况下,过程900可以包括至少基于用户界面事件来确定状态信息。在一些示例中,所生成的界面模型可以包括更大界面模型的一部分。例如,生成界面模型包括生成界面模型的一部分。界面模型的该部分与用户界面的一部分相关联。例如,界面模型的该部分可以针对用户界面的子集(例如,针对用户界面的一页或一页的一部分)定义状态信息。

在一些示例中,过程900可以包括压缩界面模型。在这样的示例中,压缩后的界面模型被发送到客户端设备。在一些情况下,可以将该界面模型视为第一界面模型。可以通过确定一个或多个图形对象的状态信息与该一个或多个图形对象的先前状态信息之间的差异,以及通过生成仅包括具有与先前状态信息不同的状态信息的该一个或多个图形的数据的第二界面模型,来对界面模型进行压缩。第二界面模型也可以称为增量界面模型。

在一些示例中,界面模型可以包括具有一个或多个图形对象的分层数据结构。例如,界面模型和增量界面模型可以包括文档对象模型(DOM)。一个或多个图形对象中的每个图形对象可以具有由状态信息定义的一个或多个属性。在一些情况下,一个或多个图形对象包括要在用户界面中显示的框、线、图像、图标、文本、内容项中的至少一者,或其任意组合。一个或多个图形对象中的每个图形对象可以包括由状态信息定义的一个或多个属性。一个或多个图形对象的一个或多个属性可以包括图形对象的位置、形状、颜色中的至少一者,其任意组合和/或其它适当的属性。

在框908处,过程900包括将界面模型(或第二界面模型)发送(例如,通过服务器计算机或其它设备)到客户端设备。在一些情况下,界面模型可以被发送到另外的服务器计算机(例如,一个或多个服务器计算机140或除服务器计算机之外的另一设备)。界面模型使客户端设备(或另外的服务器计算机或其它设备)能够渲染用户界面。

在一些示例中,过程900可以包括确定应用是由客户端设备触发的,以及确定该应用未在服务器计算机上运行。过程900可以包括将该应用添加到使用服务器计算机的多个客户端设备可访问的应用的列表中。例如,响应于确定该应用不在服务器计算机上运行,过程900可以将该应用添加到使用服务器计算机的多个客户端设备可访问的应用的列表中。如上所述,当新的客户端设备开始与应用列表中的应用进行交互时,该应用可能已经由服务器系统启动并运行,从而使得客户端设备加载应用或加载应用数据没有启动时间。

图10是示出了使用在本文中描述的技术来生成用户界面内容的过程1000的示例的流程图。在框1002处,过程1000包括接收(例如,通过服务器计算机或其它设备)用户界面事件。在由服务器计算机进行过程1000的情况下,服务器计算机可以是服务器系统101或服务器系统201的一部分。用户界面事件对应于客户端设备的用户界面。例如,用户界面事件可以基于由用户界面接收的用户输入。在另一个示例中,用户界面事件可以是与用户界面相关的基于系统的事件。客户端设备可以包括任何适当的设备。在一些示例中,客户端设备包括媒体设备。用户界面可以包括任何类型的用户界面,例如图形用户界面、媒体内容指南(例如,电子节目指南(EPG))、游戏应用的界面、移动应用的界面、智能电视应用的界面或任何其它适当的用户界面。

在框1004处,过程1000包括确定与用户界面事件相关联的应用。例如,可以基于服务器计算机(或其它设备)与客户端设备之间的连接来确定与用户界面事件相关联的应用。该连接可以包括套接字或任何其它适当的连接。

在框1006处,过程1000包括使用与用户界面事件相关联的应用来生成界面模型。界面模型为用户界面的一个或多个图形对象定义状态信息。状态信息从用户界面事件得到。在一些情况下,过程1000可以至少基于用户界面事件来确定状态信息。

在框1008处,过程1000包括确定一个或多个图形对象的状态信息与该一个或多个图形对象的先前状态信息之间的差异。在框1010处,过程1000包括生成更新的界面模型,该更新的界面模型包括具有与先前状态信息不同的状态信息的该一个或多个图形对象的数据。例如,更新的界面模型可以仅包括具有与先前状态信息不同的状态信息的该一个或多个图形对象的数据(在这种情况下,具有与先前状态信息没有不同的状态信息的其它图形对象的数据将不会包括在更新的界面模型中)。更新的界面模型也可以称为增量界面模型或第二模型(或第二界面模型)。

在一些示例中,界面模型可以包括具有一个或多个图形对象的分层数据结构。例如,界面模型和增量界面模型可以包括文档对象模型(DOM)。一个或多个图形对象中的每个图形对象可以具有由状态信息定义的一个或多个属性。在一些情况下,一个或多个图形对象包括要在用户界面中显示的框、线、图像、图标、文本、内容项中的至少一者,或其任意组合。一个或多个图形对象中的每个图形对象可以包括由状态信息定义的一个或多个属性。一个或多个图形对象的一个或多个属性可以包括图形对象的位置、形状、颜色中的至少一者,其任意组合和/或其它适当的属性。

在框1012处,过程1000包括将更新的界面模型(例如,通过服务器计算机或其它设备)发送到客户端设备。在一些情况下,更新的界面模型可以被发送到另外的服务器计算机(例如,一个或多个服务器计算机140或除服务器计算机之外的另一设备)。更新的界面模型使客户端设备(或另外的服务器计算机或其它设备)能够渲染用户界面。

在一些示例中,过程800、900和1000可以由计算设备或装置执行。例如,过程800、900和1000可以由图2所示的服务器系统201(例如,服务器系统201的一个服务器计算机或多个服务器计算机)执行。在一些情况下,该计算设备或装置可以包括各种组件,例如一个或多个输入设备、一个或多个处理器、一个或多个微处理器、一个或多个微型计算机、一个或多个输出设备和/或计算设备(例如,服务器计算机或其它设备)的其它组件,其被配置用来执行过程800、900、1000和/或本文所述的其它过程的步骤。该计算设备可以包括配置用来存储数据(例如,针对一个或多个应用的界面模型、增量界面模型、图形元素和其它用户界面内容和/或任何其它适当的数据)的存储器以及配置用来处理该数据的一个或多个处理器。该计算设备还可包括配置用来传送数据的一个或多个网络接口。网络接口可以被配置为传送基于网络的数据(例如,基于互联网协议(IP)的数据或其它适当的网络数据)。在一些实现中,计算设备还可以包括显示器。

计算设备的组件可以在电路中实现。例如,组件可以包括和/或可以使用电子电路或其它电子硬件来实现,所述电子电路或其它电子硬件可以包括:一个或多个可编程电子电路(例如,微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、中央处理器(CPU)和/或其它合适的电子电路),并且/或者可以包括和/或使用计算机软件、固件或其任意组合来实现,以进行在本文在描述的各种操作。计算设备可以进一步包括显示器(作为输出设备的示例或作为输出设备的补充)、配置用来传送和/或接收数据的网络接口、其任何组合和/或其它组件。网络接口可以被配置为传送和/或接收基于互联网协议(IP)的数据或其它类型的数据。

过程800、900和1000被图示为流程图或逻辑流程图,其操作表示可以以硬件、计算机指令或其组合来实现的一系列操作。在计算机指令的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时进行所述操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。操作被描述的顺序不旨在被理解为限制,并且任意数量的所描述的操作可以以任何顺序和/或并行地进行组合来实现处理。

另外,过程800、900和1000可以在配置有可执行指令的一个或多个计算机系统的控制下进行,并且可以被实现为在一个或多个处理器上共同的代码(例如,可执行指令、一个或多个计算机程序,或一个或多个应用),通过硬件实现,或其组合。如上所述,该代码可以存储在计算机可读或机器可读存储介质上,例如为包括可由一个或多个处理器执行的多个指令的计算机程序的形式。计算机可读或机器可读存储介质可以是非暂态的。

图11示出了计算系统1100的架构,其中系统1100的组件使用诸如总线的系统连接1105彼此电通信。示例系统1100包括处理单元(CPU或处理器)1110和系统连接1105,该系统连接1105将包括诸如只读存储器(ROM)1120和随机存取存储器(RAM)1125的系统存储器1115的各种系统组件耦接到处理器1110。系统1100可以包括高速存储器的高速缓存器,该高速缓存器与处理器1110直接连接、紧邻或集成为处理器1110的一部分。系统1100可以从存储器1115和/或存储设备1130将数据拷贝到高速缓存器1112以供处理器1110快速访问。以这种方式,高速缓存器可以提供性能提升,避免了处理器1110在等待数据时的延迟。这些和其它模块可以控制或被配置用来控制处理器1110进行各种动作。其它系统存储器1115也可以用于使用。存储器1115可以包括具有不同性能特性的多种不同类型的存储器。处理器1110可以包括任何通用处理器和硬件或软件服务,例如存储在存储设备1130中的服务11132、服务2 1134和服务3 1136,该硬件或软件服务被配置用来控制处理器1110以及专用处理器,其中软件指令被并入到实际的处理器设计中。处理器1110可以是完全独立的计算系统,包含多个核或处理器、总线、存储器控制器、高速缓存器等。多核处理器可以是对称的或非对称的。

为了使用户能够与系统1100交互,输入设备1145可以表示任意数量的输入机构,例如,用于语音的麦克风、用于手势或图形输入的触敏屏幕、键盘、鼠标、运动输入、语音等。输出设备1135也可以是本领域技术人员已知的许多输出机构中的一个或多个。在一些情况下,多模式系统可以使用户能够提供多种类型的输入以与系统1100通信。通信接口1140通常可以治理和管理用户输入和系统输出。对于任何特定硬件布置上的操作没有限制,因此在开发它们时,为了改进的硬件或固件布置,此处的基本特征可以容易地被替换。

存储设备1130是非易失性存储器,并且可以是硬盘或其它类型的计算机可读介质,其可以存储可由计算机访问的数据,例如磁带、闪存卡、固态存储器设备、数字多功能盘、盒式磁带、随机存取存储器(RAM)1125、只读存储器(ROM)1120及其混合。

存储设备1130可以包括用于控制处理器1110的服务1132、1134、1136。可以设想其它硬件或软件模块。存储设备1130可以连接到系统连接1105。在一方面,进行特定功能的硬件模块可以包括与必要硬件组件(诸如处理器1110、连接1105、输出设备1135等)连接的存储在计算机可读介质中的软件组件,以实现该功能。

为了说明的清楚起见,在一些情况下,本技术可以被呈现为包括各个功能块,包括包含以软件或硬件和软件的组合实现的方法中的步骤或例程、设备、设备组件的功能块。

在一些实施例中,计算机可读存储设备、介质和存储器可以包括电缆或包含比特流的无线信号等。然而,当提及时,非暂态计算机可读存储介质明确地排除诸如能量、载波信号、电磁波和信号本身的介质。

可以使用存储在计算机可读介质中或从计算机可读介质可获得的计算机可执行指令来实现根据上述示例的方法。这样的指令可以包括例如指令和数据,该指令和数据使得或者配置通用计算机、专用计算机或专用处理设备进行某种功能或功能组。使用的部分计算机资源可以通过网络访问。计算机可执行指令可以是例如二进制、中间格式指令(诸如汇编语言)、固件或源代码。可用于存储指令、使用的信息和/或在根据所述示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘、闪存、配备有非易失性存储器的USB设备、网络存储设备等。

与这里公开的实施例结合描述的各种示范性的逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件、固件或其组合。为了清楚地说明硬件和软件的这种可互换性,各种示范性的部件、块、模块、电路和步骤通常就其功能在上文中进行了描述。这种功能被实现为硬件还是软件取决于具体的应用和在总系统上施加的设计约束。技术人员可以针对每一种具体的应用用不同的方式来实现描述的功能,但是,这种实现决定不应该被解释为导致脱离于本申请的范围。

实现根据这些公开的方法或过程的设备可以包括硬件、固件和/或软件,并且可以采用多种形式中的任何一种。这样的形状因子的典型示例包括膝上型计算机、智能电话、小型外形的个人计算机、个人数字助理、机架安装设备、独立设备等。在本文中描述的功能也可以体现在外围设备或附加卡中。通过进一步的示例的方式,这种功能还可以在不同芯片当中的电路板或在单独设备中执行的不同处理上实现。

在本文中描述的技术还可以以电子硬件、计算机软件、固件或其任何组合来实现。这样的技术可以在各种设备中的任何一种中实现,例如。通用计算机、无线通信设备手机或者具有多种用途的集成电路设备,所述用途包括在无线通信设备手机和其它设备中的应用。被描述为模块或组件的任何特征都可以在集成逻辑设备中一起实现,或者可以作为离散但可互操作的逻辑设备分开实现。如果以软件实现,则所述技术可以至少部分地由包含程序代码的计算机可读数据存储介质来实现,所述程序代码包括在执行时进行上述一个或多个方法的指令。计算机可读数据存储介质可以形成计算机程序产品的一部分,该计算机程序产品可以包括包装材料。该计算机可读介质可以包括存储器或数据存储介质,例如,随机存取存储器(RAM)(诸如同步动态随机存取存储器(SDRAM))、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦可编程只读存储器(EEPROM)、闪存、磁或光数据存储介质等。附加地或替代地,该技术可以至少部分地通过诸如传播的信号或波的计算机可读通信介质来实现,该计算机可读通信介质以指令或数据结构的形式携带或传递程序代码,并且可以由计算机访问、读取和/或执行。

程序代码可以由处理器执行,该处理器可以包括一个或多个处理器,例如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等同的集成或离散逻辑电路。这样的处理器可以被配置为进行在本公开中描述的任何技术。通用处理器可以是微处理器;但是,在可替换的方案中,处理器可以是任何传统的处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合(例如,DSP和微处理器的组合)、多个微处理器、与DSP核结合的一个或多个微处理器、或者任何其它的这种配置。因此,在本文中所使用的术语“处理器”可以指任何前述结构、前述结构的任何组合,或适合于实现在本文中所述的技术的任何其它结构或装置。

指令、用于传达这样的指令的介质、用于执行它们的计算资源以及用于支持这样的计算资源的其它结构是用于提供在这些公开中所描述的功能的手段。

尽管使用各种示例和其它信息来解释所附权利要求的范围内的各方面,但是基于这样的示例中的特定特征或布置,不应意味着对权利要求的限制,因为本领域的普通技术人员将能够使用这些示例来推导出各种各样的实现。此外,尽管可能已经以特定于结构特征和/或方法步骤的示例的语言描述了一些主题,但是应当理解,所附权利要求书中定义的主题不必限于这些所描述的特征或动作。例如,这种功能可以不同地分布或在除本文所标识的组件之外的组件中进行。确切地说,所描述的特征和步骤被公开为在所附权利要求的范围内的系统和方法的组件的示例。

陈述集合中的“至少一个”和/或集合中的“一个或多个”的声明语言或其它语言指示该集合的一个成员或该集合中的(任意组合的)多个成员满足该声明。例如,陈述“A和B中的至少一个”的声明语言意味着A、B或A和B。在另一个示例中,陈述“A、B和C中的至少一个”的声明语言意味着A、B、C,或A和B,或A和C,或B和C,或A和B和C。集合中“的至少一个”和/或集合中“的一个或多个”的语言并不将该集合限制于该集合中列出的项目。例如,陈述“A和B中的至少一个”的声明语言可以意味着A、B或A和B,并且可以另外包括未在A和B的集合中列出的项目。

在将组件描述为被“配置用来”进行某些操作的情况下,这样的配置的实现可以例如通过设计电子电路或其它硬件以进行该操作,通过对可编程电子电路(例如,微处理器或其它适当的电子电路)以进行该操作,或其任意组合。

普通技术人员将认识到,在本文中使用的小于(“<”)和大于(“>”)符号或术语可以替换为小于或等于(“≤”)和大于或等于(“≥”)符号,而不脱离本说明书的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号