首页 / 专利库 / 电脑零配件 / 计算机系统 / 客户端设备和主机设备订阅

客户端设备和主机设备订阅

阅读:504发布:2020-05-11

专利汇可以提供客户端设备和主机设备订阅专利检索,专利查询,专利分析的服务。并且客户端计算设备建立多个订阅以将来自该客户端设备的各数据源的所发布数据存储在订阅 缓冲器 中。响应于从主机计算设备的远程订阅分派器接收到对客户端计算设备的各数据源所发布的数据的读 请求 ,将包括订阅缓冲器中存储的所发布数据的一个或多个数据分组发送给主机计算设备。,下面是客户端设备和主机设备订阅专利的具体信息内容。

1.一种电池供电的客户端计算设备,包括:
电池,被配置成向所述客户端计算设备供电;
无线通信接口,被配置成与主机计算设备建立无线通信信道;
逻辑机;以及
存储机,所述存储机保持能由所述逻辑机执行以进行以下操作的指令:
经由所述无线通信接口使用主机中介传输层协议与所述主机计算设备通信,在所述主机中介传输层协议中,仅所述主机计算设备发起所述电池供电的客户端计算设备与所述主机计算设备之间的通信;
建立多个订阅以接收由所述电池供电的客户端计算设备的多个数据源发布的数据,每一订阅对应于不同数据源;
响应于经由订阅从所述电池供电的客户端计算设备的任何数据源接收到所发布数据,将所发布数据存储在订阅缓冲器中;以及
响应于根据所述多个订阅经由所述主机中介传输层协议从主机计算设备的远程订阅分派器接收到对所述电池供电的客户端计算设备的各数据源所发布的数据的读请求,经由所述无线通信接口将包括所述订阅缓冲器中存储的所发布数据的一个或多个数据分组发送给所述主机计算设备。
2.如权利要求1所述的电池供电的客户端计算设备,其特征在于,响应于从所述主机计算设备的远程订阅分派器接收到对客户端数据的读请求来发送已建立对其的订阅的所有数据源所提供的所发布数据。
3.如权利要求1所述的电池供电的客户端计算设备,其特征在于,所述存储机进一步保持能由所述逻辑机执行以进行以下操作的指令:
从所述主机计算设备的远程订阅分派器接收多个订阅请求,每一订阅请求包括标识所述电池供电的客户端计算设备的数据源的数据源标识符,并且其中所述多个订阅是响应于接收到所述多个订阅请求来建立的。
4.如权利要求1所述的电池供电的客户端计算设备,其特征在于,所述订阅缓冲器包括与每一订阅相对应的数据槽,并且其中所述存储机进一步保持能由所述逻辑机执行以进行以下操作的指令:
响应于经由订阅从数据源接收到所发布数据,将所发布数据存储在与所述订阅相对应的数据槽中。
5.如权利要求4所述的电池供电的客户端计算设备,其特征在于,所述一个或多个数据分组包括存储在与所述多个订阅相对应的数据槽中的所发布数据。
6.如权利要求1所述的电池供电的客户端计算设备,其特征在于,所述一个或多个数据分组中的每一者包括标识提供了所述数据分组中包括的所发布数据的数据源的数据源标识符。
7.如权利要求6所述的电池供电的客户端计算设备,其特征在于,所述一个或多个数据分组包括指示自接收到来自所述主机计算设备的远程订阅分派器的最后读请求以来所述数据源已向所述订阅缓冲器发布数据的次数的错过样本计数。
8.如权利要求1所述的电池供电的客户端计算设备,其特征在于,还包括:
配置成与所述主机计算设备通信的有线通信I/O接口;以及
其中所述存储机保持能由所述逻辑机执行以进行以下操作的指令:
使用主机中介传输层协议经由所述有线通信I/O接口和所述无线通信I/O接口两者与所述主机计算设备通信。
9.一种在主机计算设备上的用于订阅所发布数据的方法,所述方法包括:
向客户端计算设备的远程订阅管理器发送多个订阅请求以接收由所述客户端计算设备的各数据源发布的数据;
向所述客户端计算设备的远程订阅管理器周期性地发送对请求了对其的所述多个订阅的各数据源所发布的数据的读请求,所述读请求是根据周期性时间区间来发送的;
从所述客户端计算设备的远程订阅管理器接收包括所述客户端计算设备的请求了对其的所述多个订阅的各数据源所提供的所发布数据的多个数据分组,所述多个数据分组中的每一者包括数据源标识符和错过样本计数,所述数据源标识符标识提供了所述数据分组中包括的所发布数据的数据源,并且所述错过样本计数指示自所述客户端计算设备的远程订阅管理器接收到最后读请求以来所述数据源已向所述客户端计算设备的订阅缓冲器发布数据的次数;
基于所述多个数据分组的错过样本计数来将所述周期性时间区间调整成经更新周期性时间区间;以及
根据所述经更新周期性时间区间将对所发布数据的读请求发送给所述客户端计算设备的远程订阅管理器。
10.如权利要求9所述的方法,其特征在于,进一步包括:
从所述主机计算设备的多个模接收多个订阅请求以接收所发布数据;
对于请求了对其的订阅的每一数据源,建立订阅以接收所述数据源所发布的数据的模块列表;以及
响应于从所述客户端计算设备的远程订阅管理器接收到多个数据分组,对于所述多个数据分组中的每一者,将所述数据分组发送给所述模块列表上的订阅与所述数据分组中的数据源标识符相对应的数据源的各模块。
11.如权利要求10所述的方法,其特征在于,进一步包括:
对于所述多个数据分组中的每一者,在将所述数据分组发送给各模块之前从所述数据分组移除所述数据源标识符和所述错过样本计数。
12.如权利要求9所述的方法,其特征在于,调整所述周期性时间区间包括如果所述多个数据分组中的任一者的错过样本计数大于阈值则降低所述周期性时间区间,并且如果所述多个数据分组中的每一者的错过样本计数是零则增加所述周期性时间区间。
13.一种具有指令的计算机可读存储介质,所述指令在被执行时使得一机器执行如权利要求9-12中的任一项所述的方法。
14.一种包括用于执行如权利要求9-12中的任一项所述的方法的装置的计算机系统

说明书全文

客户端设备和主机设备订阅

[0001] 背景
[0002] 一些计算设备(例如,可穿戴计算设备)可具有有限的本地处理、数据存储以及储能资源。这样的本地化约束可限制计算设备执行各种操作的能
[0003] 附图简述
[0004] 图1A示出示例可穿戴计算设备的各方面。
[0005] 图1B示出示例该可穿戴计算设备的各附加方面。
[0006] 图2示出了示例计算环境。
[0007] 图3示出示例客户端计算设备的各方面。
[0008] 图4示出可由客户端计算设备显示的示例图形用户界面(GUI)。
[0009] 图5示出表示图4的示例GUI的示例用户界面(UI)元素树。
[0010] 图6示出用于生成图4的示例GUI的示例UI布局文件。
[0011] 图7示出用于更新图4的示例GUI中的一个或多个UI元素的示例更新二进制大对象(BLOB)。
[0012] 图8示出示例经本地化UI元素标识符。
[0013] 图9示出示例经个别化UI元素标识符。
[0014] 图10示出其中一事件触发与客户端计算设备的UI元素相关联的命令以调整客户端计算设备的操作的示例场景。
[0015] 图11示出其中一事件触发与客户端计算设备的UI元素相关联的命令以调整主机计算设备的操作的示例场景。
[0016] 图12示出其中一事件触发与客户端计算设备的UI元素相关联的命令以调整连接网络的计算设备的操作的示例场景。
[0017] 图13示出由客户端计算设备在三阶段协议的命令阶段期间接收到的示例命令分组。
[0018] 图14A示出其中远程计算设备在三阶段协议的数据阶段期间将数据分组发送给客户端计算设备的示例场景。
[0019] 图14B示出其中客户端计算设备在三阶段协议的数据阶段期间将数据分组发送给远程计算设备的示例场景。
[0020] 图14C示出其中在三阶段协议的数据阶段期间在远程计算设备和客户端计算设备之间没有发送数据分组的示例场景。
[0021] 图15示出用于管理能由客户端计算设备显示的GUI的呈现的示例方法。
[0022] 图16示出用于向多个客户端计算设备提供基于订阅的数据以管理能由该多个客户端计算设备显示的GUI的呈现的示例方法。
[0023] 图17示出用于响应于接收到事件的通知来向客户端计算设备远程提供资源的示例方法。
[0024] 图18示出用于高效地中继客户端计算设备和服务计算设备之间的通信的示例方法。
[0025] 图19示出用于使用相同的三阶段协议通过不同通信I/O接口与远程计算设备进行通信的示例方法。
[0026] 图20示出与客户端计算设备通信的示例主机计算设备。
[0027] 图21示出用于根据订阅将由客户端计算设备的数据源所产生的所发布数据提供给主机计算设备的示例方法。
[0028] 图22和23示出用于根据订阅将由客户端计算设备的数据源所提供的所发布数据分发给主机计算设备的各模的示例方法。
[0029] 图24示出包括具有对计算设备的数据源所提供的所发布数据的不同订阅的多个模块的示例计算设备。
[0030] 图25示出可由计算设备采用的示例订阅分层结构。
[0031] 图26示出其中订阅响应于可穿戴计算设备的状态变化被修改的示例场景。
[0032] 图27示出其中订阅响应于可穿戴计算设备相对于可穿戴计算设备的穿戴者的状态变化被修改的示例场景。
[0033] 图28示出其中订阅响应于可穿戴计算设备的穿戴者的状态变化被修改的示例场景。
[0034] 图29示出示例计算系统。
[0035] 详细描述
[0036] 为提高具有本地化处理、数据存储和/或储能约束的客户端计算设备的被感知的能力,各种操作可从该计算设备外包并由一个或多个远程计算设备来处理。由于这样的外包,客户端计算设备与远程计算设备之间的通信量可显著增加。因此,本公开涉及用于促进客户端计算设备与为客户端计算设备的利益来分配资源的远程计算设备之间的数据高效和能量高效通信的各种办法。
[0037] 在一些实现中,客户端计算设备可能缺少与远程计算设备直接通信(例如,经由因特网)的广域网连接性。然而,客户端计算设备可具有与主机计算设备的局域网连接(例如,经由通用串行总线(USB)、蓝牙(BT)、低功耗蓝牙(BTLE)),且主机计算设备可经由广域网连接(例如,经由因特网)与远程计算设备通信。在这样的实现中,客户端计算设备与远程计算设备之间的通信可通过主机计算设备来中继。此外,在一些情形下,主机计算设备可以执行一些或全部操作以进一步提高客户端计算设备的通信效率。
[0038] 通过提高客户端计算设备的通信效率,可向用户隐藏客户端计算设备的本地资源约束。
[0039] 客户端计算设备可以采用任何合适的形式而不偏离本公开的范围。图1A和1B示出包括用于促进高效通信的特征的可穿戴计算设备10形式的示例客户端设备的各方面。所示的设备采取复合带12的形式。在一个实现中,闭合机制允许复合带的端部容易的附连和分开,使得该带可闭合成环并戴在手腕上。在其他实现中,设备可被制造成弹性足以被拉开超过手并仍符合手腕的连续环。替换地,该设备可具有打开的手镯形状因子,其中带的端部不彼此固定。在又一些其他实现中,更加伸长的带状可穿戴计算设备可被穿戴在用户的二头肌、腰、胸、踝、腿、头或身体其他部分上。因此,在此构想的可穿戴计算设备包括眼镜、头带、袖标、护踝带、胸带或任何其他可穿戴形状因子。此外,不具有可穿戴配置的计算设备可包括敷触点。
[0040] 如各附图中所示,可穿戴计算设备10可包括各种功能电子组件:计算系统14、显示器16、扩音器18、触觉电机20、通信套件22,以及各种传感器。在所示实现中,各功能电子组件被集成在该带的若干刚性段中——即,显示器承载模块24A、枕垫24B、储能室24C和24D,以及带扣24E。这一策略保护了功能组件免受物理挤压、免受过热和潮湿、以及避免被暴露于皮肤上找得到的和物质,诸如汗、乳液、药膏等等。在所示的可穿戴计算设备10的构造中,复合带12的一端与另一端重叠。带扣24E被布置在复合带的重叠端处,并且接收槽26被布置在该重叠的端处。
[0041] 可穿戴计算设备10的各功能电子组件从一个或多个储能电子组件28中汲取电力。电池——例如锂离子电池——是一种类型的储能电子组件。替代的示例包括超级以及究极电容器。为了提供最小刚性体积的合适的存储容量,可使用多个离散分开的储能电子组件。
这些可被布置在储能室24C和24D中,或在复合带12的任何刚性段中。储能电子组件与功能电子组件之间的电连接被路由通过柔性段30(例如,30A、30B、30C、30D)。在某些实现中,储能单元具有弯曲的形状以舒适地适配围绕穿戴者的手腕或其它身体部位。在一些实现中,储能单元可以是柔性的以容适到穿戴者的耦合。
[0042] 一般而言,储能电子组件28可以是可替换的和/或可再充电的。在一些示例中,再充电功率可通过通用串行总线(USB)端口32来提供。在其他示例中,该储能电子组件可通过无线感应或环境光充电来再充电。在又一些其他示例中,该可穿戴计算设备可包括机电部件以从用户偶然的或带目的的身体运动中对储能电子组件再充电。
[0043] 在可穿戴计算设备10中,计算系统14被容纳在显示器承载模块24A中并且放置在显示器16之下。该计算系统操作地耦合到显示器16、扩音器18、通信套件22以及各种传感器。该计算系统包括保持数据和指令的数据存储机34以及执行指令的逻辑机36。
[0044] 在一些实现中,共享数据缓冲器66可位于数据存储机34附近或被包括在数据存储机34中。共享数据缓冲器66可被配置成存储数据分组以准备经由多个不同通信I/O接口中的任一者来传输。在一个特定示例中,共享数据缓冲器66存储数据分组以供经由有线通信I/O接口或无线通信I/O接口来传输,如将在下文更详细地讨论的。
[0045] 显示器16可以是任何合适类型的显示器,诸如轻薄、低功耗发光二极管(LED)阵列或液晶显示(LCD)阵列。也可使用量子点显示技术。也可使用电子纸技术。合适的LED阵列包括有机LED(OLED)或有源矩阵OLED阵列等等。LCD阵列可以被有源地从背后照亮。然而,某些类型的LCD阵列(例如,上的液晶LCOS阵列)可经由环境光从正面照亮。尽管附图示出了基本上平的显示表面,这个方面不意指为必须的,因为弯曲的显示表面也可被使用。在某些使用情形中,可穿戴计算设备10可随同显示器16被佩戴在穿戴者腕部前面,类似传统腕表。
[0046] 通信套件22可包括任何适当的有线或无线通信I/O接口部件。在图1A和1B中,通信套件包括USB端口32,其可被用于在可穿戴计算设备10和其它计算机系统之间交换数据以及提供再充电电力。该通信套件可进一步包括双向BT、BTLE Wi-Fi、蜂窝、以太网、近场通讯和/或其他无线电装置。在一些实现中,该通信套件可包括额外的用于光通信、视距(例如,红外)通信的收发机。通信套件22的任何合适的通信I/O接口部件可被用来经由数字通信信道传送机器可读信息。例如,无线数字通信信道可在Wi-Fi或BT上建立以传送数据。在另一示例中,有线数字通信信道可在USB上建立以传送数据。
[0047] 在一些实现中,为充分利用多个不同通信I/O接口,可穿戴计算设备可以采用相同的三阶段协议来在多个不同传输层(例如,USB、BT、BTLE)上进行通信。三阶段协议可包括命令阶段、数据阶段、以及状态阶段。具体而言,命令协议可具有对所有不同传输层上的通信而言相同的分组格式。这一统一实现允许可在不同传输层中的任一者上发送的共享命令库。共享命令库和统一命令协议可提高通信效率,同时降低可穿戴计算设备的存储器占用。
[0048] 在可穿戴计算设备10中,触摸屏传感器38与显示器16耦合并且被配置成接收来自用户的触摸输入。因此,在一些实现中,显示器可以是触摸传感器显示器。一般而言,该触摸传感器可以是电阻式、电容式或基于光学的。按钮传感器(例如,微动开关)可被用于探测可包括摇杆的按钮40A和40B的状态。来自按钮传感器的输入可被用于执行归位键或开-关特征,控制音频音量,话筒,或另一合适的操作。
[0049] 图1A和1B示出可穿戴计算设备10的各种其它传感器。这样的传感器包括话筒42、可见光传感器44、紫外线传感器46,以及环境温度传感器48。话筒向可被用于测量环境声级或接收来自用户的语音命令的计算系统14提供输入。来自可见光传感器、紫外线传感器和环境温度传感器的输入可被用于评估用户所处环境的各方面。
[0050] 图1A和1B示出了一对接触传感器——安排在显示器承载模块24A上的充电接触传感器50,和安排在枕垫24B上的枕垫接触传感器52。每个接触传感器在可穿戴计算设备10被戴着时接触穿戴者的皮肤,并且还可包括镀敷触点。接触传感器可包括独立的或协作的传感器元件来提供多个感测功能。例如,该接触传感器可提供响应于穿戴者的皮肤的电阻和/或电容的电阻和/或电容感测功能。为此,两个接触传感器例如可被配置为皮肤电反应传感器。在所示的配置中,两个接触传感器之间的间隔提供用于皮肤阻抗的更准确的测量的相对长的电气路径长度。在一些示例中,接触传感器还提供该穿戴者的皮肤温度的测量。在所示的配置中,热敏电阻形式的皮肤温度传感器54被集成到充电接触传感器50中,其提供到皮肤的直接热传导路径。来自环境温度传感器48和皮肤温度传感器54的输出可被不同地应用以估计来自穿戴者身体的热通量。该度量能被使用来改善例如基于步程计的卡路里计数的精确性。除了以上描述的基于接触的皮肤传感器,各种类型的非接触皮肤传感器也可被包括。
[0051] 以所示的配置被布置在枕垫接触传感器52内部的是光学脉搏率传感器56。该光学脉搏率传感器可包括窄带(例如,绿色)LED发射器和匹配的光电二极管来检测通过皮肤的毛细血管的脉动血流并从而提供对该穿戴者的脉搏率的测量。在某些实现中,光学脉搏率传感器还可被配置来感测穿戴者的血压。在所示的配置中,光学脉搏率传感器56和显示器16被安排成在佩戴时在设备的相对侧上。为了工程上便利,脉搏率传感器可替换地可被直接置于显示器之后。
[0052] 可穿戴计算设备10可同样包括诸如加速度计58、陀螺仪60以及磁力计62之类的运动传感部件。加速度计和陀螺仪可提供沿三条正交轴的惯性数据以及关于三条轴的旋转数据,作为组合的六个自由度。这一传感数据能被使用来提供例如步数计/卡路里计数功能。来自加速度计和陀螺仪的数据可与来自磁力计的地磁数据结合以进一步定义按照地理方位的惯性和旋转数据。
[0053] 可穿戴计算设备10还可包括全球定位系统(GPS)接收器64来确定穿戴者的地理位置和/或速度。在一些配置中,GPS接收器的天线可以是相对柔性的并且延伸到柔性段30A。在图1A和1B的配置中,GPS接收器远离光学脉搏率传感器56以降低来自该光学脉搏率传感器的干扰。
[0054] 该可穿戴计算设备仅仅是可将对操作的处理卸载到远程计算设备的客户端计算设备的一个示例。客户端计算设备可以采取任何合适的形式。
[0055] 图2示出了示例计算环境200。计算环境200可包括配置成向多个客户端计算设备(例如,客户端计算设备A、客户端计算设备B、客户端计算设备N)204提供远程管理和处理功能性的服务计算设备202。服务计算设备202可被配置成执行与多个客户端计算设备中的任一者的任何合适的方面相关的操作。服务计算设备202可以向任何数目的客户端计算设备提供处理资源。此外,服务计算设备202可以向任何合适类型的客户端计算设备提供资源。在一些实现中,服务计算设备可以表示计算系统中的多个不同的连接网络的计算设备。
[0056] 不同客户端计算设备可以配置有不同通信能力。相应地,服务计算设备202可以按不同方式与不同客户端计算设备通信。在一些情形下,服务计算设备202可经由网络206(诸如因特网)与客户端计算设备直接通信。这样的客户端计算设备可被称为连接网络的计算设备。在所示示例中,客户端计算设备N是经由网络206与服务计算设备202直接通信的连接网络的计算设备。
[0057] 在一些情形下,客户端计算设备可不具有与服务计算设备202的直接网络连接。相反,客户端计算设备可被配置成经由局域网连接(例如,USB、蓝牙、低功耗蓝牙)与主机计算设备通信。局域网连接可以是有线连接或无线连接。这样的客户端计算设备可被称为非连接网络的计算设备。服务计算设备202可以通过经由连接网络的主机计算设备中继通信来与非连接网络的客户端计算设备通信。
[0058] 连接网络的主机计算设备可以采取任何合适的形式。例如,主机计算设备可包括智能电话、膝上型计算机、台式计算机、平板、娱乐控制台、专用热点、或另一合适的计算设备。在一个特定示例中,非连接网络的客户端计算设备是可穿戴计算设备且主机计算设备是智能电话。
[0059] 在一些实现中,客户端计算设备可包括用于在不同条件下与主机计算设备通信的多个通信I/O接口。例如,该多个通信I/O接口可包括配置成与主机计算设备通信的有线通信I/O接口和配置成与主机计算设备通信的无线通信I/O接口。在一个特定示例中,客户端计算设备可被配置成经由USB链路、BT链路、或BTLE链路中的任一者与主机计算设备通信。
[0060] 在所示示例中,客户端计算设备A被配置成没有经由网络206与服务计算设备202直接通信的非连接网络的计算设备。相反,客户端计算设备A被配置成经由局域网连接208与主机计算设备A通信。在一个示例中,局域网连接208可以是例如经由USB或以太网的有线网络连接。在另一示例中,局域网连接208可以是例如经由BT或BTLE的无线网络连接。此外,主机计算设备A被配置成经由网络206与服务计算设备202通信。相应地,服务计算设备202可被配置成将通信发送给主机计算设备A,且主机计算设备A可被配置成将该通信中继到客户端计算设备A,且反之亦然。同样,主机计算设备B和客户端计算设备B可以按类似的方式通信。
[0061] 注意,在一些实现中,主机计算设备可为相关联的客户端设备的利益来直接分配资源而不涉及服务计算设备。例如,主机计算设备可以代替服务计算设备来向客户端计算设备提供远程处理和管理功能性。此外,主机计算设备可被配置成向任何合适数目的客户端计算设备提供所有服务的所有实例。
[0062] 图3更详细地示出示例客户端计算设备300的各方面。客户端计算设备300可以表示图2中示出的计算环境200中包括的多个客户端计算设备204中的任一者。客户端计算设备300可包括设备标识符302。设备标识符302可以将客户端计算设备300与计算环境200中的每一其他计算设备区分开。在一个示例中,设备标识符302是全局唯一标识符(GUID)。设备GUID可具有任何合适的唯一性属性和概率。在一个示例中,设备GUID被存储为128位的值。在另一示例中,设备标识符302不是GUID,而改为是序列号。设备标识符302可以符合任何合适的寻址方案。例如,设备标识符302可被包括作为寻址方案的一部分以标识从客户端计算设备300发送的通信和由客户端计算设备300接收的通信。
[0063] 客户端计算设备300可包括配置成在视觉上呈现图形用户界面(GUI)306的显示器304。GUI 306可以呈现客户端计算设备300上安装的应用(诸如应用308)的视觉元素。应用
308可以是客户端计算设备300上安装的多个应用之一。
[0064] 注意,应用可被安装或以其他方式变得可用于以任何合适的方式在客户端计算设备上使用。此外,应用可充当用于以任何合适的方式从远程源接收信息的管道。例如,应用可包括导航到网站或其他远程信息源的通用web浏览器,且web浏览器可以经由GUI呈现从远程信息源接收到的信息。
[0065] 每一应用可包括应用标识符。例如,应用308包括应用标识符310。应用标识符310可以将该应用与客户端计算设备300上安装的每一其他应用区分开。在一些实现中,应用标识符310可以将应用308与计算环境200中的每一其他应用区分开。在一些实现中,应用标识符310可以是GUID。应用GUID可具有任何合适的唯一性属性和概率。在一个示例中,应用GUID被存储为128位的值。在一些实现中,应用GUID将一应用与其他应用区分开,但不区分该应用的所有实例或安装。例如,同一应用的两个不同实例可被安装在两个不同计算设备上且该应用的每一实例可具有相同的应用GUID。
[0066] 每一应用可包括多个页。每一页可由页索引来寻址。例如,页312包括页索引314。页索引314可以将页312与应用308中包括的每一其他页区分开。该应用中的多个页可按任何合适的方式寻址。在一个示例中,应用的每一个页可具有线性位置,并且因此具有可被用作该页的页索引的序数。注意,在这一实现中,GUI 306可以一次显示一应用的单个页。在一些实现中,GUI可被配置成一次显示一个以上页。序数页编号只是一个示例,且各页可以按另一合适的方式来标识。
[0067] 注意,页可以表示不同UI元素的任何空间和/或逻辑编组并且不限于显示器一次能供呈现的空间区域。例如,页可大于或小于显示器的显示区域。
[0068] 每一页可包括多个用户界面(UI)元素316(例如,UI元素A、UI元素B、UI元素N)。页中包括的多个UI元素可以提供由GUI 306呈现的视觉内容。UI元素可以采取任何合适的形式。不同类型的UI元素的非限制性示例包括文本域、按钮、文本区、复选框、单选按钮、下拉列表、允许单个和多个选择的列表、用于编组视觉组件的面板、图像、视频、以及其他合适的UI元素。
[0069] 每一UI元素可包括将该UI元素与该页中包括的每一其他UI元素区分开的UI元素标签。例如,UI元素A包括将UI元素A与页312上的每一其他UI元素区分开的UI元素标签318。注意,UI元素标签可包括包含数字、串、代码、或任何其他标识符的任何合适的标识特性。
[0070] 在一些实现中,显示器304可被配置成检测触摸输入。显示器可以采用任何合适的触摸检测技术。在这样的实现中,多个UI元素中的一者或多者可以是可经由触摸输入来选择的。在一些情形下,经由触摸输入选择UI元素可以触发发起由客户端计算设备在本地或由远程计算设备(例如,与客户端计算设备配对的主机计算设备或者由服务计算设备)远程地执行操作的事件。作为补充或替换,其他输入模态可被选择或以其他方式被激活(例如,语音、姿势、注视、硬件控制、以及其他)。
[0071] 如上所述,图2中示出的服务计算设备202可被配置成为多个客户端计算设备204的利益来分配处理资源。例如,服务计算设备202可被配置成为多个客户端计算设备204执行不同操作。在一个示例中,服务计算设备202可被配置成远程地管理能由客户端计算设备显示的GUI的呈现。为了按通信高效的方式管理GUI的呈现,服务计算设备可以实现将GUI中呈现的UI元素的格式化信息与表示经由UI元素呈现的实际信息(例如,文本域UI元素中呈现的数字和字母)的二进制数据分开的办法。如此,在服务计算设备202将经更新信息发送给客户端计算设备以经由一个或多个UI元素显示时,该经更新信息不必包括任何格式化信息。
[0072] 在一个示例中,服务计算设备202可被配置成将UI布局文件320发送给客户端计算设备300。UI布局文件320可以定义GUI 306中呈现的UI元素的视觉布局,而没有指定用来填充该UI元素的底层数据。作为示例,UI布局可以定义特定显示位置中的文本框,并且布局文件可以指定该框中显示的文本将具有12磅Arial字体,但布局文件将不指定要显示在这一文本框中的实际字母。在其他实现中,UI布局文件定义GUI中呈现的UI元素的视觉布局且可包括用来填充UI元素的底层数据的初始版本。在一些实现中,UI布局文件320可以在每页的基础上定义UI元素的视觉布局,且服务计算设备202可以向客户端计算设备发送针对客户端计算设备300上安装的每一应用的每一页的UI布局文件。在其他实施例中,UI布局文件可以在每应用的基础上生成,且UI布局文件可以定义在应用中包括的每一页上的UI元素的视觉布局。
[0073] UI布局文件320可由服务计算设备202根据预定义方案或以任何其他合适的方式生成。在一个示例中,UI布局文件可以从XML文件生成。XML文件可以提供行业标准方案和确认工具以帮助确保UI布局文件适于由客户端计算设备显示。
[0074] 在一些情形下,服务计算设备202可以生成该XML文件。在一些其他情形下,服务计算设备202可以从第三方计算设备210接收该XML文件。第三方计算设备210可由任何类型的内容生产者操作,其非限制性示例包括网站主机、社交网络、新闻馈源主机、或另一合适的UI布局信息源。
[0075] 服务计算设备202可包括配置成执行XML文件(或其他布局源信息)到可能更易于由客户端计算设备消费的二进制机器可读格式的变换的变换模块212。例如,经变换UI布局文件的二进制格式可以镜像客户端计算设备的数据的直接存储器表示。具体而言,UI布局文件的二进制数据格式可包括根据类结构组织的数据的二进制副本。此外,在其中XML文件是从第三方计算设备210提供的情形下,变换操作可以提供机会以允许要被变换成适于显示在客户端计算设备上的布局的第三方计算设备的布局的基于自动机的变换。例如,第三方计算设备210的UI布局的格式可被配置用于与客户端计算设备300不同的平台,且服务计算设备202可被配置成将该格式信息转换为与客户端计算设备的平台兼容。
[0076] 图4-6示出了其中可从UI布局文件生成GUI的示例场景。图4示出了包括多个UI元素402的示例GUI 400。多个UI元素402可包括不同UI元素类型,包含页、框、以及串。注意,GUI 400仅仅是一个示例,且GUI可以呈现任何合适类型的UI元素。在GUI 400中,一些UI元素可被嵌套在其他UI元素内以形成父-子关系。
[0077] 图5示出表示GUI 400中包括的多个UI元素402的父-子关系的分层结构的示例UI元素树结构500。具体而言,页1是UI元素树结构500的根元素。页1不具备父节点,且框2和框7是页1的紧接子节点。框2具有框3和框5作为紧接子节点。框7具有框8作为紧接子节点。框3具有串4作为紧接子节点。框5具有串6作为紧接子节点。框8具有串9和串10作为紧接子节点。串4、串6、串9以及串10是不具有子节点的叶节点。
[0078] 图6示出可以从树结构500生成的示例UI布局文件600。例如,UI布局文件600可以表示图3中示出的UI布局文件320。UI布局文件600包括指示GUI所呈现的页的通用结构的页头部602。
[0079] 例如,页头部602可包括UI布局文件的版本604、根UI元素(例如,页1)的紧接子节点606的数目、以及UI布局文件中子UI元素的总数608(例如,9)。版本604可以指示当前正在使用哪一UI布局文件来在更新UI元素时合适地确定UI元素类型。
[0080] UI布局文件600可包括多个UI元素610。每一UI元素可包括UI元素标识符612和UI元素描述符614。UI元素标识符612可以将该UI元素与UI布局文件600中的每一其他UI元素区分开。例如,UI元素标识符可以是唯一性数字标识符。UI元素标识符可被用于数据更新二进制大对象(BLOB)和单个数据更新请求两者的数据绑定。注意,更新BLOB是更新对象的一个非限制性示例。任何合适类型的对象可被采用以传送更新数据。UI元素描述符614可以定义经由UI元素显示的信息的UI元素类型616和格式化属性618。在所解说的实现中,格式化属性618包括存储器大小、位置、颜色、字体类型、对齐、透明度、以及子UI元素的数目。然而,任何合适的格式化属性可由UI元素描述符来定义。
[0081] 多个UI元素610可任选地在UI布局文件600中根据图5所示的树结构500的经平坦化版本来排序。具体而言,多个UI元素610可以在UI布局文件600中根据树结构500所指示的父-子关系来排序。经平坦化的树结构可以表示客户端计算设备用来生成GUI的最终存储器格式。通过在经平坦化的树结构中对UI元素排序并且提供每一UI元素的子节点的数目作为属性,可以用最小量的信息来传达父-子分层结构内的UI元素的位置。换言之,这样的格式可以减少发送给客户端计算设备的UI布局文件中包括的数据量。这样的办法提供了其中客户端计算设备的通信效率可被提高的一个示例。
[0082] 在一个示例中,UI布局文件600具有对于发送给客户端计算设备而言可能高效的二进制机器可读格式。注意,UI布局文件可被发送给客户端计算设备一次,以向客户端计算设备通知UI布局文件中的每一UI元素的格式化属性。然而,在一些情形下,经更新UI布局文件可被发送给客户端计算设备以改变GUI的视觉布局。这样的经更新UI布局文件可具有可由服务计算设备跟踪的不同版本。例如,经更新UI布局文件可以改变UI元素的格式化属性、添加页、删除页、向页添加UI元素、和/或从页删除UI元素。注意,经更新UI布局文件可以只更新UI元素的格式化属性,并且可不同于包括要经由UI元素呈现的经更新信息的更新BLOB。
[0083] 一旦客户端计算设备300从UI布局文件320中知晓了UI元素的格式化属性,服务计算设备202就可被配置成发送后续更新BLOB以更新经由GUI 306中的一个或多个UI元素呈现的信息。
[0084] 图7示出了用于更新GUI中的一个或多个UI元素的示例更新BLOB 700。更新BLOB 700可包括要改变的UI元素702的UI元素标识符704以及要经由UI元素702显示的经更新信息的净荷706。经更新信息可以替换先前经由该UI元素显示的信息。例如,净荷706中包括的经更新信息可以是经更新信息的直接二进制机器可读表示。在一些情形下,要更新的多个UI元素的UI元素标识符和经更新信息可被绑成同一更新BLOB。在其他情形下,只有一个UI元素可被更新。这一类型的所选更新是高效的,因为不必发送针对不被更新的UI元素的数据。
[0085] 此外,每一净荷可以省略要改变的UI元素的格式化属性,因为客户端计算设备从UI布局文件中引用这样的格式化属性。例如,UI元素类型可以通过查找与UI布局文件中的UI元素标识符相关联的类型来确定。如此,对象类型不必经由净荷来传递。UI布局文件中包括的所有其他方面可类似地从净荷省去,因为这些方面可以使用更新BLOB中包括的UI元素标识符来查找。
[0086] 在一个特定示例中,UI元素可被更新以呈现数字“7”,且对应的更新BLOB可仅包括数字“7”的UI元素标识符和二进制表示。在接收到更新BLOB时,客户端计算设备可以从先前接收到的UI布局文件中查找二进制数据的UI元素类型(例如,整型)。换言之,UI元素标识符可以充当净荷中包括的二进制数据的绑定机制。类似地,客户端计算设备可以查找用于创建数字“7”的所需视觉表示的屏幕位置和格式化特性,即使这样的格式化没有作为更新BLOB的一部分来传递。。
[0087] 与这一办法相对,其他通信格式(例如,JSON或XML)在BLOB本身内包括从数据净荷到数据内部表示的映射。在一个特定示例中,更新BLOB可包括包含数字七的串以及指示该串是整型UI元素的映射。此外,这样的办法可包括用于显示底层数据的所有格式化。与其中从UI布局文件确定UI元素类型的办法相比,这样的办法可增加更新BLOB中包括的数据量。
[0088] 更新BLOB中包括的经更新信息可由客户端计算设备从任何合适的源接收。在一些情形下,服务计算设备202可以生成经更新信息。在一些情形下,服务计算设备202可以从第三方计算设备210接收经更新信息。在一个示例中,服务计算设备202可以从第三方计算设备210订阅该信息。在另一示例中,服务计算设备202可以从第三方计算设备210抓取(scape)经更新信息。在一些情形下,经更新信息可以按XML格式从第三方计算设备210接收。服务计算设备202可被配置成例如经由变换模块212将XML数据转换成二进制机器可读格式。在一些情形下,服务计算设备202可以按二进制机器可读格式从第三方计算设备210接收经更新信息并且变换不是必需的。
[0089] 在一些情形下,UI布局文件和/或后续更新BLOB可以经由广域网连接从服务计算设备直接发送给客户端计算设备。例如,服务计算设备可知晓客户端计算设备的设备标识符,并且可将通信发送给客户端计算设备(也称为推送法)。在另一示例中,客户端计算设备可以请求来自服务计算设备的UI布局文件和/或更新BLOB,并且服务计算设备可以响应于接收到该请求来发送通信(也称为拉取法)。在一些情形下,多个客户端计算设备可以订阅UI布局文件和后续更新BLOB。服务计算设备可知晓订阅方客户端计算设备,并且可将通信广播给所有订阅方客户端计算设备。
[0090] 在一些实现中,在客户端计算设备经由中间主机计算设备与服务计算设备通信的情形下,用于更新GUI的处理或管理责任中的一些或全部可由主机计算设备代替服务计算设备直接处理。在一个示例中,UI布局文件可由服务计算设备生成,和/或与UI布局文件相对应的后续更新BLOB可由主机计算设备生成,反之亦然。
[0091] 在另一示例中,服务计算设备可以将表示GUI的XML文件发送给主机计算设备,且主机计算设备可以将该XML文件变换成具有二进制机器可读格式的UI布局文件。在这样的实现中,主机计算设备可包括变换模块212。在又一示例中,主机计算设备可以处理用于管理GUI的所有处理责任。具体而言,主机计算设备可以生成GUI布局文件和后续更新BLOB而无需与服务计算设备通信。
[0092] 在提高通信效率的另一示例办法中,远程计算设备(例如,服务计算设备或主机计算设备)可以订阅客户端计算设备的事件。换言之,在此描述的办法可以使客户端计算设备能够以高效的方式向远程计算设备传递用于执行各种操作的处理和控制请求。在一个示例中,远程计算设备可以订阅与客户端计算设备所显示的GUI中的特定UI元素相关联的事件。在另一示例中,远程计算设备可以订阅与客户端计算设备的各组件相关联的事件。例如,远程计算设备可以订阅客户端计算设备的不同传感器,且客户端计算设备可以响应于不同事件来将传感器读数发送给远程计算设备。注意,任何合适的事件可以触发为客户端计算设备的利益来执行操作。此外,这样的操作可以例如经由映射与特定UI元素相关联。此外,这一办法可以向经由中间主机计算设备请求远程处理和控制资源的非连接网络的客户端计算设备提供通信效率的进一步优化,如在此将描述的。此外,这样的办法可以允许主机计算设备直接向客户端计算设备提供远程处理和控制资源而不涉及服务计算设备。
[0093] 在一个示例中,服务计算设备202可以标识计算环境200中的任何客户端计算设备上显示的任何UI元素的任何实例。如上所述,GUI可以呈现应用的包括多个UI元素的页。该应用具有将该应用与计算环境中的每一其他应用区分开的应用标识符。GUI中显示的页的页索引将该页与该应用中包括的每一其他页区分开。该页中包括的每一UI元素具有将该UI元素与该页中包括的每一其他UI元素区分开的UI元素标签。
[0094] 如图8所示,这些寻址元素可被包括在可被用来跨客户端计算设备上安装的所有应用来标识任何UI元素的本地化UI元素标识符800中。换言之,本地化UI元素标识符将UI元素的实例与能在客户端计算设备上安装的任何应用中显示的每一UI元素的每一其他实例区分开。具体而言,本地化UI元素标识符800可包括应用标识符802、页索引804以及UI元素标识符806的地址三元组。在一个示例中,应用标识符802表示应用标识符310,页索引804表示页索引314,且UI元素标签806表示UI元素标签318,它们全部在图3中示出。
[0095] 在一个示例中,应用标识符是具有第一存储器大小的GUID,且页索引和UI元素标签是各自具有小于应用GUID的第一存储器大小的存储器大小的其他类型的标识符。该其他标识符可更小以在将本地化UI元素标识符发送给远程计算设备时节省客户端计算设备的带宽。
[0096] 此外,如在图9中所示,本地化UI元素标识符800可通过将设备标识符902添加到该地址三元组来被转换成个别UI元素标识符900。具体而言,经个别化UI元素标识符900可包括设备标识符902、应用标识符802、页索引804以及UI元素标签806。在一个示例中,设备标识符902表示图3中示出的设备标识符302。经个别化UI元素标识符900可被用来跨计算环境200内的所有客户端计算设备上安装的所有应用来标识UI元素的任何实例。
[0097] 注意,本地化UI元素标识符和经个别化UI元素标识符的不同地址元素可按任何合适的方式排序以形成UI元素地址的任何合适的格式变型。
[0098] 服务计算设备202和/或主机计算设备可被配置成接收来自一个或多个计算设备的事件的通知。在一个示例中,服务计算设备202可以基于服务计算设备订阅不同客户端计算设备上的各UI元素来接收事件的通知。在一个示例中,服务计算设备202包括可被配置成生成、修改、和/或维护对UI元素的不同实例的订阅列表的订阅模块214。服务计算设备可以订阅不同客户端计算设备上的UI元素的任何合适数目的不同实例。在一些情形下,通知可以从连接网络的客户端计算设备直接接收。在一些情形下,通知可以从代表非连接网络的客户端计算设备的主机计算设备接收。
[0099] 服务计算设备可以接收任何合适类型的事件的通知。在一个示例中,事件包括经由到客户端计算设备的用户输入选择UI元素的实例。在另一示例中,事件包括经由到客户端计算设备的用户输入修改UI元素的实例。在又一示例中,事件包括客户端计算设备的物理按钮被按下。注意,事件可不与UI元素相关。例如,事件可周期性地发生。在另一示例中,事件可响应于客户端计算设备的另一合适的操作发生。
[0100] 由服务计算设备202接收到的每一通知可包括经个别化UI元素标识符。服务计算设备202可被配置成基于事件的通知中包括的经个别化UI元素标识符来标识UI元素的实例。
[0101] 在其中客户端计算设备是非连接网络的设备的情形下,客户端计算设备可以将事件的通知发送给主机计算设备。事件的通知可包括本地化UI元素标识符。主机计算设备可被配置成将发送该通知的客户端计算设备的设备标识符添加到本地化UI元素标识符以生成经个别化UI元素标识符,并且主机计算设备可被配置成将包括经个别化UI元素标识符的该通知中继到服务计算设备。通过不在客户端计算设备处将设备标识符附加到本地化UI元素标识符,由客户端计算设备发送的数据的量可被降低,并且通信效率可被提高。在主机计算设备布局相对于客户端计算设备有大量处理资源和通信带宽的情形下,这样的办法可尤其有益。在降低电池供电的客户端计算设备中由通信消耗的能量方面,这样的办法也可尤其有益。
[0102] 响应于标识UI元素的实例,服务计算设备202可被配置成执行与该UI元素相关联的操作。服务计算设备202可包括配置成生成、修改和/或维护UI元素的实例到不同操作的映射的映射模块216。在一个示例中,UI元素的实例可被映射到个别操作。在另一示例中,UI元素的实例可被映射到可基于各种操作条件来有条件地执行的多个不同操作。
[0103] 服务计算设备202可包括配置成执行与被标识为事件所涉及的UI元素的实例相关联的操作的操作处理模块218。具体而言,操作处理模块218可被配置成管理服务计算设备202的处理和数据存储资源以执行操作。此外,在一些情形下,操作处理模块218可被配置成生成发送给其他远程计算设备以代表请求方客户端计算设备执行操作的命令。例如,服务计算设备202可充当客户端计算设备与其他连接网络的计算设备(诸如第三方计算设备
210)之间的中介。在另一示例中,服务计算设备202可以向主机计算设备发送命令,并且主机计算设备可被配置成执行该命令所指定的操作。在又一示例中,服务计算设备202可以向主机计算设备发送命令,并且主机计算设备可以将该命令中继到与该主机计算设备配对或以其他方式进行通信的客户端计算设备。在一些实现中,主机计算设备可包括操作处理模块。例如,在其中主机计算设备为客户端设备直接执行操作而不涉及服务计算设备的实现中,主机计算设备可包括操作处理模块。
[0104] 服务计算设备202可包括事件记录模块220。事件记录模块220可被配置成创建并维护针对服务计算设备202所订阅的UI元素的事件的日志。例如,事件记录模块220可以在每次服务计算设备202接收到事件的通知时创建日志条目。在一个示例中,日志可被组织成使得每一客户端计算设备具有与关联于该客户端计算设备的UI元素相关联的事件的列表。在另一示例中,日志可被组织成使得每一UI元素具有对任何特定客户端计算设备而言不可知的事件的列表。这一类型的组织对于跨特定UI元素在不同客户端计算设备上的所有实例来跟踪与该UI元素的交互而言可以是有用的。日志可以跟踪针对不同UI元素的事件以判断UI元素的流行性、使用率、或其他合适的方面。这样的跟踪可被应用来细化和开发各种应用。此外,日志可集体地跟踪多个客户端计算设备对UI元素的使用率或流行性,这可被应用于不同应用(诸如调查、投票、或其他合适的活动)。
[0105] 此外,在一些情形下,主机计算设备可以处理通知并直接执行操作而无需与服务计算设备通信。例如,主机计算设备可以直接执行操作以减少与服务计算设备的通信。在另一示例中,如果主机计算设备失去与服务计算设备的网络连接,则主机计算设备可以直接执行操作。
[0106] 主机计算设备可包括映射模块216以标识与事件的通知中标识的UI元素的实例相关联的操作。在一些情形下,在主机计算设备上维护的映射的版本可相对于在服务计算设备上维护的映射的版本被截短。例如,主机计算设备上维护的映射的版本可只包括安装在相关联的客户端计算设备上的应用的UI元素的实例。
[0107] 在一些实现中,主机计算设备可包括事件记录模块220。事件记录模块220可被配置成在本地记录与所关联的非连接网络的计算设备的UI元素相关联的事件。
[0108] 服务计算设备和/或主机计算设备可被配置成为客户端计算设备执行任何合适的操作。图10-12示出响应于事件的通知而执行的与UI元素的实例相关联的不同操作的示例场景。
[0109] 图10示出其中事件触发用于调整客户端计算设备1000的操作的命令的示例场景。该命令可表示与客户端计算设备1000的UI元素相关联的操作。具体而言,客户端计算设备
1000包括生成呈现客户端计算设备1000上安装的体育应用的篮球比分页的GUI 1002的触摸显示器。GUI 1002包括在不同比赛中对战的不同球队以及与这些不同球队相关联的比分的形式多个UI元素1004。此外,GUI 1002包括更新比分按钮1006。
[0110] 客户端计算设备1000可被配置成响应于接收到选择更新比分按钮1006的触摸输入来生成与更新比分按钮1006相关联的事件的通知。在其他实现中,更新比分按钮1006被省略且比分被周期性地更新。在又一些其他实现中,更新被推送给客户端计算设备。任何合适的事件可以触发执行与UI元素的实例相关联的操作。
[0111] 该通知包括标识客户端计算设备1000上的更新比分按钮1006的实例或者以其他方式标识适当的触发(即使它是无按钮触发)的经个别化UI元素标识符。客户端计算设备1000将事件的通知经由广域网连接直接发送给服务计算设备1008或者通过连接网络的主机计算设备进行中继。服务计算设备1008基于经个别化UI元素标识符来标识更新比分按钮
1006或另一触发并查找与该UI元素相关联的操作。在这种情况下,该操作包括向客户端计算设备1000发送用于调整该客户端计算设备的操作的命令。具体而言,服务计算设备1008将更新BLOB发送给客户端计算设备1000。更新BLOB包括要经由与GUI 1002中的经更新比分相对应的UI元素呈现的经更新信息。
[0112] 服务计算设备可以响应于一事件来将任何合适的经更新信息或经刷新信息发送给客户端计算设备以经由UI元素来显示。例如,如果自最后更新以来只有一个球队的比分已改变,则只有该比分需要被包括在更新BLOB中。在所解说的示例中,SEA的比分是唯一改变的UI元素。如此,更新BLOB包括与SEA的比分相对应的UI元素的UI元素标识符以及数字“7”的数据净荷。注意,这一改变在图12中被突出显示,但实际上,突出显示可以从GUI中省略。
[0113] 图11示出其中事件触发用于调整主机计算设备的操作的命令的示例场景。该命令可表示与客户端计算设备的UI元素相关联的操作。具体而言,客户端计算设备1100包括生成呈现客户端计算设备1100上安装的电话音量应用的一页的GUI 1102的触摸显示器。电话音量应用可以允许用户调整充当该客户端计算设备的主机计算设备的智能电话1110的音量。GUI 1102包括不同文本标记和音量滑块1106形式的多个UI元素1104。
[0114] 客户端计算设备1100可被配置成响应于接收到调整音量滑块1106的位置的触摸输入来生成与音量滑块1106相关联的事件的通知。该通知包括标识客户端计算设备1100上音量滑块1106的实例的经个别化UI元素标识符。客户端计算设备1100可将事件的通知经由广域网连接直接发送给服务计算设备1108或者通过连接网络的主机计算设备(例如,智能电话1110)进行中继。服务计算设备1108基于经个别化UI元素标识符来标识音量滑块1106并查找与该UI元素相关联的操作。在这种情况下,该操作包括向智能电话1110发送用于调整该智能电话的操作的命令。具体而言,该命令可指令智能电话调整该智能电话上的扬声器的音量。
[0115] 在另一示例中,客户端计算设备1100是非连接网络的计算设备且智能电话1110充当该客户端计算设备的主机计算设备。在这一示例中,客户端计算设备1100将事件的通知发送给智能电话1110。该通知包括经本地化UI元素标识符。智能电话1110基于经本地化UI元素标识符来标识音量滑块1106,例如经由存储在本地的映射来查找与该UI元素相关联的操作。此外,智能电话1110执行该操作以直接调整音量。在一些实现中,作为节省带宽的措施,智能电话1110可不将该通知中继到服务计算设备。在一些实现中,智能电话1110可以将该通知中继到服务计算设备1108作为事件记录功能的一部分。
[0116] 图12示出其中事件触发用于调整连接网络的计算设备的操作的命令的示例场景。该命令可表示与客户端计算设备的UI元素相关联的操作。具体而言,客户端计算设备1200包括生成呈现客户端计算设备1200上安装的电视观看伴侣应用的电视观众调查页的GUI 
1202的触摸显示器。GUI 1202包括与连接网络的电视机1210上显示的不同格的电视节目相对应的不同投票按钮(例如,投票A、投票B、投票C、投票D)形式的多个UI元素1204。
[0117] 客户端计算设备1200可被配置成响应于经由触摸或其他输入来选择投票按钮之一而生成事件的通知。在这一示例中,用户通过经由对客户端计算设备1200的触摸输入来选择按钮1206来投票给动作风格。该通知包括标识客户端计算设备1100上按钮1206的实例的经个别化UI元素标识符。客户端计算设备1200将事件的通知经由广域网连接直接发送给服务计算设备1208或者通过连接网络的主机计算设备进行中继。服务计算设备1208基于经个别化UI元素标识符来标识按钮1206并查找与该UI元素相关联的操作。在这种情形下,该操作包括例如经由上述事件记录模块在UI元素事件的日志中跟踪该事件。该日志可跟踪有多少不同客户端计算设备选择了GUI中的不同投票按钮以便提高调查/投票功能性。此外,服务计算设备1208可被配置成发送电视观众调查的结果以显示在客户端计算设备1200或连接网络的电视机1210上。
[0118] 在一些实现中,服务计算设备可被配置成为UI元素在不同客户端计算设备上的所有实例执行操作。例如,同一电视观看伴侣应用可被安装在多个不同客户端计算设备上。在一个示例中,作为管理多个客户端计算设备的GUI的一部分,服务计算设备可以发送更新BLOB以更新经由调查结果UI元素显示的信息。具体而言,更新BLOB可包括要被更新的调查结果UI元素的经本地化UI元素标识符以及包含表示调查结果的二进制数据的净荷。在一个示例中,服务计算设备可以将更新BLOB广播给所有客户端计算设备。如果该应用被安装在客户端计算设备上,则客户端计算设备可以更新经由经本地化UI元素标识符所指定的调查结果UI元素显示的信息。如果该应用没有被安装在客户端计算设备上,则客户端计算设备可以丢弃该更新BLOB。
[0119] 在另一示例中,用于控制连接网络的电视机1210的应用可被安装在客户端计算设备1200上,诸如虚拟遥控应用。虚拟遥控应用可包括能被选择以调整连接网络的电视机1210的操作的UI元素。例如,UI元素可包括音量控件、频道控件、DVR控件、或另一合适的电视机控件。客户端计算设备可以响应于经由用户输入选择这些遥控类型的UI元素之一来向服务计算设备1208和/或连接网络的电视机1210发送事件的通知。此外,服务计算设备1208可以将与UI元素相关联的命令发送给连接网络的电视机1210以调整该连接网络的电视机的操作。例如,该命令可以改变频道、调整音量、记录电视节目、或执行另一合适的动作。客户端计算设备可被用来以此方式调整连接网络的电视机的任何合适参数。
[0120] 根据上述办法,仅通过客户端计算设备(或相关联的主机计算设备)提供包括任何客户端计算设备的GUI中显示的任何UI元素的经个别化UI元素标识符的通知,可以向远程计算设备(例如,服务计算设备、主机计算设备、第三方计算设备、或另一合适的计算设备)通知触发执行与该UI元素相关联的操作的事件。换言之,这样的寻址方案可以允许客户端计算设备按数据高效的方式向远程计算设备传递处理请求。
[0121] 在提高通信效率的又一示例办法中,客户端计算设备可被配置成使用相同协议在有线通信I/O接口和无线通信I/O接口两者上与远程计算设备通信。一般而言,这一协议可以与任何数目的不同传输层(例如,USB、BT以及BTLE)一起使用。该协议的分组格式可在不同通信I/O接口的传输层上完全相同。此外,该协议的客户端计算设备侧可具有针对所有传输层的单个统一实现。在一个示例中,该协议可按在多个不同传输层上相同的方式将客户端计算设备的特征(诸如UI元素、传感器信号、以及其他组成信息)暴露给远程计算设备。这样的统一性可允许可兼容不同传输层的共享库。相应地,该共享实现可以降低客户端计算设备上的存储器占用并可提高通信效率。
[0122] 在一个示例中,该协议可以是包括命令阶段、数据阶段、以及状态阶段的三阶段协议。在命令阶段期间,命令分组可以从远程计算设备发送给客户端计算设备。命令分组可以指定要由客户端计算设备服务的命令。在数据阶段期间,可任选地,一个或多个数据分组可以基于命令分组中指定的命令在远程计算设备和客户端计算设备之间传送。在状态阶段期间,客户端计算设备可以将状态码发送给远程计算设备,指示该命令是否被客户端计算设备成功服务。
[0123] 在一个示例中,三阶段协议可以是包括多个不同命令的命令协议。更具体而言,命令协议可以定义三个不同命令类型。第一命令类型指定远程计算设备在数据阶段期间将数据发送给客户端计算设备。在第一命令类型的一个示例中,设置客户端计算设备的背光的敏感度水平的命令可包括背光的所需强度水平。所需强度值可以在数据阶段期间从远程计算设备发送给客户端计算设备。
[0124] 第二命令类型指定远程计算设备在数据阶段期间接收来自客户端计算设备的数据。在第二命令类型的一个示例中,请求客户端计算设备的背光的当前强度水平的命令可以导致客户端计算设备将背光的当前强度水平发送给远程计算设备。
[0125] 第三命令类型指定在数据阶段期间没有数据在远程计算设备与客户端计算设备之间交换。在第三命令类型的一个示例中,打开背光的命令可以从远程计算设备发送给客户端计算设备。
[0126] 在一些实现中,命令协议的所有命令可由远程计算设备(例如,服务计算设备或主机计算设备)发起。通过从远程计算设备发起所有命令,客户端计算设备可被允许具有较少处理能力且仍然实现该命令协议。
[0127] 图13示出可以在三阶段命令协议的命令阶段期间从远程计算设备发送给客户端计算设备的示例命令分组1300。命令分组1300可包括命令或命令标识符1302、命令自变量1304、以及存储器大小1306。命令1302可以从兼容不同通信I/O接口的不同传输层的命令库中选择。具体而言,命令库可以由有线通信I/O接口和无线通信I/O接口共享。命令自变量
1304可以从可由客户端计算设备的命令处理程序处理以服务命令的多个命令自变量中选择。命令自变量可任选地基于被选择来处理的命令的类型而被包括在命令分组中。命令自变量的格式可在主机计算设备和执行该命令的客户端计算设备的命令处理程序之间被隐式地知晓。命令自变量可被用来在数据阶段期间在数据从主机计算设备发送之前来设置或初始化客户端计算设备以执行命令。存储器大小1306可以指定在三阶段命令协议的数据阶段期间传送的数据的总存储器大小。
[0128] 在一个示例中,客户端计算设备上的每一命令处理程序可由三个函数来定义。第一函数可以是可任选地基于命令分组所指定的命令类型来执行的自变量设置函数。具体而言,这一可任选函数可由命令处理程序注册以在接收到命令分组时在客户端计算设备上执行设置操作。第二函数可以是可被注册并在命令处理程序服务其中数据从客户端计算设备发送到远程计算设备的命令时执行的传送函数。第三函数可以是可被注册并在命令处理程序服务其中数据由客户端计算设备从远程计算设备接收的命令时执行的接收函数。
[0129] 图14A-14C示出根据三阶段命令协议的远程计算设备1400与客户端计算设备1402之间的通信的示例场景。具体而言,三阶段命令协议可包括命令阶段1404、数据阶段1406、以及状态阶段1408。在命令阶段1404期间,命令分组1410可以从远程计算设备1400发送给客户端计算设备1402。基于命令分组1410所指定的命令的类型,数据分组可以或可以不在数据阶段1406期间发送。如果命令指定数据分组在数据阶段1406期间发送,则该命令可进一步指定数据分组要被发送的方向。在一个示例中,该方向可被隐式地编码在命令标识符中。具体而言,在数据阶段期间,数据分组从远程计算设备1400发送到客户端计算设备1402或数据分组从客户端计算设备1402发送到远程计算设备1400。在一些实现中,数据阶段可在每命令的基础上被配置用于单向通信。
[0130] 图14A示出其中命令指定远程计算设备1400在数据阶段1406期间将多个数据分组1412发送给客户端计算设备1402的示例场景。图14B示出其中命令指定客户端计算设备
1402将多个数据分组1412发送给远程计算设备1400的示例场景。图14C示出其中命令指定在数据阶段1406期间没有数据分组在远程计算设备1400与客户端计算设备1402之间传送的示例场景。在数据阶段1406期间,任何合适数目的数据分组可被发送或接收。
[0131] 在一些实现中,数据阶段1406可被优化以用于高效、高带宽通信。在一个示例中,多个数据分组1406可被配置而无需任何特殊报头或标志,以降低在各设备之间传送的数据的量。
[0132] 在另一示例中,数据分组1406的大小可被动态地选择以与通过其发送该数据分组的通信I/O接口的最大传输单元(MTU)相对应。具体而言,如果数据分组经由有线通信I/O接口发送,则各分组可根据该有线通信I/O接口的MTU来设定大小。如果数据分组经由无线通信I/O接口发送,则各数据分组可根据该无线通信I/O接口的MTU来设定大小。注意,不同通信I/O接口各自可具有不同MTU。
[0133] 如上所述,在一些实现中,客户端计算设备可包括共享缓冲器,诸如图1B中示出的共享缓冲器66。共享缓冲器可以是配置成保持经由有线通信I/O接口发送或经由无线通信I/O接口发送的机器可读数据分组的存储机。换言之,共享缓冲器可充当在数据阶段1306期间发送的外出数据分组的线索。在一些实现中,可以一次在仅一个传输协议上服务任何特定命令(例如,当命令在USB上运行时,BT/BTLE上的命令被阻塞)。一旦命令被发送,则下一命令可被处理。在一个示例中,每一传输层可以支持一个经阻塞的命令,并且传输层的经阻塞的命令可被存储在共享缓冲器中。
[0134] 在一个示例中,共享缓冲器可具有与有线通信I/O接口的MTU和无线通信I/O接口的MTU中的最大MTU相对应的大小。在其中存在具有不同MTU的多个不同无线和/或有线通信I/O接口的情形下,共享缓冲器可根据该多个不同MTU中的最大MTU来设定大小。相应地,共享缓冲器可被设计成以相同的方式促进操作来在不同通信I/O接口上通信。
[0135] 在状态阶段1408期间,客户端计算设备1402可以将状态码1414发送给远程计算设备。状态码1414可以指示该命令是否被命令处理程序成功接收。在一个示例中,命令协议中的每一命令可以状态码1414被发送到远程计算设备而结束。在一些实现中,如果该命令没有被客户端计算设备1402成功服务,则状态码1414可以指示在服务命令时发生的错误的类型。在一个示例中,如果在USB上的数据阶段中间报告了错误,则可通过停止其上发生数据传输的USB管道来指示该错误。在另一示例中,如果在BT/BTLE上的数据阶段中间报告了错误,则可通过断开正在其上传送数据的套接字连接来指示该错误。如果在数据阶段的最后部分期间或恰在状态阶段之前发生了错误,则可通过发送出错状态消息来指示该错误。
[0136] 通过根据上述办法提高通信效率,客户端计算设备的本地资源约束可被隐藏。
[0137] 图15示出用于管理能由客户端计算设备显示的GUI的呈现的示例方法1500。例如,方法1500可由客户端计算设备执行,诸如图2中示出的客户端计算设备A-N。
[0138] 在1502,方法1500可包括接收定义GUI的视觉布局的UI布局文件。UI布局文件可包括多个UI元素。每一UI元素可包括UI元素标识符和UI元素描述符。UI元素标识符可以将该UI元素与UI布局文件中的每一其他UI元素区分开。UI元素描述符可以定义经由该UI元素显示的信息的属性。例如,该属性可包括UI元素类型、存储器大小、位置、颜色、子UI元素的数目、和/或其他合适的属性中的一者或多者。
[0139] 在一些实现中,UI布局文件可具有经平坦化树结构,其中多个UI元素在该UI布局文件中根据父-子关系来排序。在一些实现中,UI布局文件可包括指示该UI布局文件的版本、根UI元素的紧接子节点的数目、以及该UI布局文件中UI元素的总数的页头部。在一些实现中,UI布局文件可具有二进制机器可读格式。
[0140] UI布局文件可经由数字通信信道来接收。在一些情形下,UI布局文件可以通过广域网连接从服务计算设备接收。在一些情形下,客户端计算设备可不经由广域网连接与服务计算设备直接通信。相反,该计算设备可被配置成经由第一局域网连接与主机计算设备通信。此外,主机计算设备可被配置成经由第二广域网连接与服务计算设备通信。服务计算设备可被配置成将UI布局文件发送给主机计算设备,且主机计算设备可被配置成将UI布局文件中继给客户端计算设备,使得UI布局文件可以从主机计算设备接收。换言之,UI布局文件可以经由主机计算设备中继来从服务计算设备接收。
[0141] 在1504,方法1500可包括根据UI布局文件经由客户端计算设备的显示器呈现GUI。
[0142] 在1506,方法1500可包括接收更新BLOB。更新BLOB可指定UI布局文件中要改变的一个或多个UI元素。对于要改变的每一UI元素,更新BLOB可包括该UI元素的UI元素标识符以及包含要经由该UI元素显示的经更新信息的更新净荷。
[0143] 在一些情形下,更新BLOB可以从服务计算设备接收。在一些情形下,更新BLOB可以从主机计算设备接收。在一些实现中,更新BLOB可具有二进制机器可读格式。
[0144] 在1508,方法1500可包括对于更新BLOB所指定的每一UI元素,基于该UI元素的UI元素标识符来从UI布局文件确定该UI元素的属性。
[0145] 在1510,方法1500可包括根据更新BLOB经由显示器改变GUI。
[0146] 图16示出用于向多个客户端计算设备提供基于订阅的数据以管理能由该多个客户端计算设备显示的GUI的呈现的示例方法1600。例如,方法1600可由服务计算设备或主机计算设备执行,诸如图2中示出的服务计算设备202或主机计算设备A和B。
[0147] 在1602,方法1600可包括向多个订阅方计算设备提供针对UI布局文件的订阅。
[0148] UI布局文件可以定义能由该多个计算设备中的每一者显示的GUI的视觉布局。UI布局文件可包括多个UI元素。每一UI元素可包括UI元素标识符和UI元素描述符。UI元素标识符可以将该UI元素与UI布局文件中的每一其他UI元素区分开。UI元素描述符可以定义经由该UI元素显示的信息的属性。在一些实现中,UI布局文件可具有二进制机器可读格式。
[0149] 在1604,方法1600可包括将UI布局文件发送给多个订阅方计算设备以根据UI布局文件显示GUI。
[0150] 在1606,方法1600可包括生成指定UI布局文件中要改变的一个或多个UI元素的更新BLOB。对于要改变的每一UI元素,更新BLOB可包括该UI元素的UI元素标识符以及包含要经由该UI元素显示的经更新信息的更新净荷。
[0151] 在一些实现中,经更新BLOB中包括的更新信息可由服务计算设备生成。在其他实现中,经更新信息可以从另一源接收。相应地,在1608,方法1600可任选地可包括从第三方计算设备接收具有人类可读格式的信息。
[0152] 在1610,方法1600可任选地可包括执行具有人类可读格式的信息的变换以生成具有二进制机器可读格式的经更新信息。该经更新信息可被包括在更新BLOB中。
[0153] 在1612,方法1600可包括将更新BLOB发送给多个订阅方计算设备以根据该更新BLOB改变GUI。在一些实现中,更新BLOB具有二进制机器可读格式。在一些情形下,UI布局文件和更新BLOB可以通过广域网连接发送给订阅方计算设备。在其他情形下,UI布局文件可以经由主机计算设备中继来发送给订阅方计算设备。
[0154] 图17示出用于响应于接收到与客户端计算设备的UI元素相关联的事件的通知来向客户端计算设备远程提供资源的示例方法1700。例如,方法1700可由服务计算设备或主机计算设备执行。
[0155] 在1702,方法1700可包括接收事件的通知。该通知可包括将一UI元素的实例与任何UI元素的每一其他实例区分开的经个别化UI元素标识符。经个别化UI元素标识符可包括设备标识符、应用标识符、页索引、以及UI元素标签。设备标识符可以将客户端计算设备与每一其他计算设备区分开。应用标识符可以将一应用与每一其他应用区分开。页索引可以将UI元素的实例位于其上的页与应用中包括的每一其他页区分开。UI元素标签可以将该UI元素与该页中包括的每一其他UI元素区分开。
[0156] 任何合适的事件可以触发通知被发送给远程计算设备。在一个示例中,事件可包括经由到客户端计算设备的用户输入选择了UI元素的实例或以其他方式进行交互。在另一示例中,事件可以由客户端计算设备的另一操作来触发。在又一示例中,事件可被重复触发,诸如周期性地。
[0157] 在1704,方法1700可包括基于事件的通知中包括的经个别化UI元素标识符来标识UI元素的实例。
[0158] 在1706,方法1700可包括响应于标识UI元素的实例,执行与UI元素的实例相关联的操作。在一个示例中,每一经个别化UI元素标识符可被映射到一个或多个操作,并且该操作可以通过执行对映射的查找来标识。该操作可包括任何合适类型的操作。在一个示例中,在1708,方法1700可包括向主机计算设备发送用于调整主机计算设备的操作的命令。在另一示例中,在1710,方法1700可包括向不同于主机计算设备的连接网络的计算设备发送用于调整该连接网络的计算设备的操作的命令。在又一示例中,在1712,方法1700可包括向主机计算设备发送用于调整客户端计算设备的操作的命令。在这一情形下,主机计算设备可被配置成将该命令转发给客户端计算设备。
[0159] 图18示出用于高效地中继客户端计算设备和服务计算设备之间的通信的示例方法1800。例如,方法1800可由与客户端计算设备配对的主机计算设备(诸如图2中所示的主机计算设备A和B)执行。
[0160] 在1802,方法1802可包括从客户端计算设备接收事件的通知。该通知可包括将UI元素的实例与能在客户端计算设备的任何应用中显示的每一UI元素的每一其他实例区分开的经本地化UI元素标识符。经本地化UI元素标识符可包括应用标识符、页索引、以及UI元素标签。应用标识符可以将一应用与每一其他应用区分开。页索引可以将UI元素的实例位于其上的页与应用中包括的每一其他页区分开。UI元素标签可以将该UI元素与该页中包括的每一其他UI元素区分开。事件的通知可经由数字通信信道来接收。数字通信信道可以是有线或无线的。数字通信信道可以采取任何合适形式的通信信道以传送机器可读数据。
[0161] 在1804,方法1800可包括将设备标识符添加到经本地化UI元素标识符上以生成经个别化UI元素标识符。设备标识符可以将客户端计算设备与每一其他计算设备区分开。
[0162] 在1806,方法1800可包括将包括经个别化UI元素标识符的通知中继到服务计算设备。
[0163] 取决于与UI元素的实例相关联的操作的类型,服务计算设备可以将命令发送给主机计算设备或客户端计算设备。相应地,在1808,方法1800可任选地可包括响应于将通知中继到服务计算设备,从服务计算设备接收用于调整该计算设备的操作的命令,该操作与UI元素的实例相关联。在其他情形下,服务计算设备可以将命令发送给不同连接网络的设备。在又一些其他情形下,服务计算设备可以执行操作而不向另一计算设备发送命令。
[0164] 在1810,方法1800可任选地可包括确定该命令是被定向在主机计算设备处还是该命令被定向在客户端计算设备处。如果命令被定向在主机计算设备处,则方法1800可移至1812。否则,方法1800可移至1814。
[0165] 在1812,方法1800可任选地可包括根据命令来调整计算设备的操作。
[0166] 在1814,方法1800可任选地可包括将命令中继到客户端计算设备。
[0167] 图19示出用于使用相同的三阶段协议通过不同通信I/O接口与远程计算设备进行通信的示例方法1900。例如,该方法可由客户端计算设备执行,诸如图2中示出的客户端计算设备A-N。
[0168] 在1902,方法1900可包括使用相同的三阶段协议经由有线通信I/O接口和无线通信I/O接口两者与远程计算设备通信。三阶段协议可包括命令阶段、数据阶段、以及状态阶段。
[0169] 在1904,方法1900可包括在命令阶段期间从主机计算设备接收命令分组。命令分组可包括命令、命令自变量、以及存储器大小。命令可以从由有线通信I/O接口和无线通信I/O接口共享的命令库中选择。命令自变量可以从由该计算设备的命令处理程序处理以服务该命令的多个命令自变量中选择。存储器大小可以指定在数据阶段期间传送的数据的总存储器大小。
[0170] 在1906,方法1900可包括确定命令分组中包括的命令指定在数据阶段期间从客户端计算设备发送数据、在数据阶段期间在客户端设备处接收数据、还是在数据阶段期间不传送数据。如果命令指定在数据阶段期间从客户端计算设备发送数据,则该方法移至1908。否则,如果命令指定在数据阶段期间在客户端计算设备处接收数据,则方法1900移至1910。
否则,方法1900移至1912。
[0171] 在1908,方法1900可包括在数据阶段期间将一个或多个数据分组发送给远程计算设备。
[0172] 在1910,方法1900可包括在数据阶段期间从远程计算设备接收一个或多个数据分组。
[0173] 在1912,方法1900可包括在状态阶段期间向主机计算设备发送状态码。状态码可以指示该命令是否被命令处理程序成功服务。在一些实现中,如果该命令没有被可穿戴设备成功服务,则状态码可以指示在服务命令时发生的错误的类型。
[0174] 在一些实现中,第一命令分组可经由有线I/O接口接收。如此,第一一个或多个数据分组可如来自第一命令分组的命令所指定地被发送或接收。因为第一命令分组是经由有线I/O接口接收的,所以第一一个或多个数据分组也可以经由有线I/O接口来发送或接收。此外,第二命令分组可经由无线I/O接口来接收。如此,第二一个或多个数据分组可如来自第二命令分组的命令所指定地被发送或接收。因为第二命令分组是经由无线I/O接口接收的,所以第二一个或多个数据分组也可以经由无线I/O接口来发送或接收。
[0175] 一些计算设备可以实现基于发布者/订阅者的办法,其中订阅者模块订阅发布者模块或其他数据源。在这样的办法中,在数据源发布数据时,数据源向订阅者模块(以及订阅该数据源的每一其他模块)通知所发布数据。
[0176] 这一办法的限制在于在数据被发布时,依赖于发布方数据源来主动通知订阅者模块。当在单个计算设备的界限内运行时,这样的限制不是问题。然而,如果数据源位于与订阅者模块不同的计算设备上,则可发生通知问题。例如,在一些情形下,带宽约束可按延迟所发布数据或其他信息按及时的方式被发送/接收。作为另一示例,不同订阅方模块对同一所发布数据的重复请求可造成同一信息在设备之间重复传送,这消耗功率。在又一示例中,数据源可位于客户端计算设备上且订阅方模块可位于对与客户端计算设备的通信进行中介的主机计算设备上。换言之,主机计算设备可以发起客户端计算设备与主机计算设备之间的所有通信。例如,客户端计算设备可以只响应于接收到来自主机计算设备的请求来将数据发送给主机计算设备。在这样的示例中,客户端计算设备可不具有向主机计算设备上的订阅者通知新数据可用的机制。
[0177] 相应地,在一些实现中,可以实现一种向订阅者完全隐藏数据源位于远程计算设备上的办法。此外,这样的办法可为没有独立地启用推送通信的各通信协议启用“推送”通信模型,诸如主机中介通信实现。
[0178] 图20示出与客户端计算设备2002通信的示例主机计算设备2000。主机计算设备2000和客户端计算设备2002可以采取任何合适的形式。在一个特定示例中,主机计算设备
2000是智能电话而客户端计算设备2002是可穿戴计算设备。
[0179] 客户端计算设备2002包括多个数据源2004。多个数据源2004中的每一者可被配置成发布数据。数据源可以按任何合适的方式以任何合适的速率发布任何合适类型的数据。在一些情形下,数据源可以在指定时段和/或根据指定时间安排来发布数据。在一些情形下,数据源可以响应于触发或条件来发布数据。
[0180] 在一个示例中,数据源可包括测量身体参数的传感器。在其中客户端计算设备2002是可穿戴计算设备的一个特定示例中,数据源可包括测量该可穿戴计算设备的穿戴者的身体参数的传感器。在另一示例中,数据源可包括输出从接收自另一中间模块或传感器的输入数据导出的数据的模块。客户端计算设备2002可包括任何合适的数目和/或类型的数据源。
[0181] 客户端计算设备2002可包括配置成管理由多个数据源2004发布的数据以及配置成管理对数据源2004所提供的所发布数据的订阅的远程订阅管理器2006。例如,远程订阅管理器2006可被配置成建立对多个数据源2004中的每一者的订阅。相应地,在多个数据源2004中的数据源发布数据时,远程订阅管理器2006可通过对该数据源的订阅来接收该数据。
[0182] 远程订阅管理器2006可包括配置成存储由多个数据源2004提供的所发布数据的订阅缓冲器2008。订阅缓冲器2008可以是配置成存储所发布数据(例如,数据分组)以准备分发给订阅该所发布数据的各模块的物理存储机。订阅缓冲器2008可包括用于存储所发布数据的多个数据槽2010。在所描绘的示例中,订阅缓冲器2008包括与每一订阅相对应的数据槽。这样的配置可以只允许数据源所提供的所发布数据的最新近版本被存储在订阅缓冲器中。这样的实现可能适于具有有限存储资源的客户端计算设备。在另一示例中,订阅缓冲器2008可包括与每一订阅相对应的多个数据槽以存储数据源所提供的所发布数据的多个版本。
[0183] 在一些实现中,每一数据源可由经个别化数据源标识符2012来标识。在所描绘的示例中,订阅缓冲器2008的多个数据槽2010可根据已建立对其的订阅的数据源的数据源标识符来组织。换言之,数据源标识符可被用来对订阅缓冲器2008中的对应数据槽进行寻址。所发布数据的数据净荷2014可被存储在多个数据槽2010中的每一者中。
[0184] 在一些实现中,客户端计算设备2002与主机计算设备2000之间的通信可以由主机计算设备2000来中介。换言之,客户端计算设备2002可以只响应于接收到来自主机计算设备2000的请求来将所发布数据发送给主机计算设备2000。在这样的实现中,可存在其中在接收到来自主机计算设备2000的各请求之间数据源发布了数据的多个版本的情形。相应地,在一些这样的实现中,与每一数据源相对应的错过样本计数2016可被存储在订阅缓冲器2008中。错过样本计数2016可以指示自接收到来自主机计算设备2000的最后读请求以来数据源已发布数据的次数。例如,如果在主机设备请求数据读之前新数据已从数据源发布,则错过样本计数2016可针对具有先前没有发送给主机计算设备2000的未读数据的每一数据源递增。错过样本计数2016可被发送给主机计算设备2000并可由主机计算设备2000使用来调整向客户端计算设备2002发送对所发布数据的请求的频率
[0185] 主机计算设备2000包括订阅所发布数据和/或提供所发布数据的数据源的多个模块2018。一模块可订阅任何合适类型的所发布数据和/或任何合适类型的数据源,包括位于主机计算设备2000上的数据源和/或位于客户端计算设备2002上的数据源。一模块可具有对由不同数据源提供的不同类型的所发布数据的多个订阅。多个模块可订阅相同类型的所发布数据和/或同一数据源。
[0186] 主机计算设备2000可包括配置成管理订阅并将所发布数据在本地分发给主机计算设备2000的多个模块2018的远程订阅分派器2020。在一些情形下,远程订阅分派器2020可以充当作为提供所发布数据的客户端计算设备2002的数据源的代理的本地数据发布者。
[0187] 远程订阅分派器2020包括订阅所发布数据和/或提供所发布数据的数据源的各模块的订阅列表2022。在从远程订阅管理器2006接收到所发布数据时,远程订阅分派器2020可以参考订阅列表2022以将所发布数据分发给订阅以接收所发布数据的主机计算设备2000的适当模块。在一个示例中,订阅列表2022可根据已建立对其的订阅的数据源的数据源标识符2012来组织。例如,在远程订阅分派器2020接收到来自模块的对数据源的订阅的请求时,远程订阅分派器2020可以检查订阅列表2022以查看是否已针对该数据源建立了订阅。如果没有建立先前订阅,则远程订阅分派器2020将针对该数据源的新条目添加到订阅列表2022。否则,如果先前已针对该数据源建立了订阅,则远程订阅分派器2020将该模块添加到订阅以接收该数据源所提供的所发布数据的模块列表。
[0188] 订阅列表2022可按此方式来组织以防止从主机计算设备2000向客户端计算设备2002发送针对同一所发布数据的冗余请求。相应地,在主机计算设备2000和客户端计算设备2002之间传送的数据可被降低。在另一示例中,从一模块接收到的每一订阅请求可由远程订阅分派器2020转发给客户端计算设备2002的远程订阅管理器2006。
[0189] 在一些实现中,一模块可以将包括数据源标识符2012的订阅请求发送给远程订阅分派器2020。在其他实现中,一模块可以将不包括数据源标识符2012的订阅请求发送给远程订阅分派器2020。例如,该请求可仅标识该模块期望接收的数据的类型。在这样的实现中,远程订阅分派器2020可经由代理功能将数据源标识符2012添加到订阅请求。使用这样的代理功能向各模块提供了允许以相同方式作出订阅请求而不管数据源是本地地位于主机计算设备2000上还是远程地位于客户端计算设备2002上的透明性。
[0190] 此外,远程订阅分派器2020可被配置成管理与客户端计算设备2002的远程订阅管理器2006的通信。具体而言,远程订阅分派器2020可被配置成向客户端计算设备2002周期性地发送读请求。可以采用任何合适的周期性时间区间。在一个示例中,读请求是针对订阅缓冲器2008中存储的所有远程所发布数据的。在这种情形下,读请求可以是自己不知道要读取什么数据的单个命令。在另一示例中,读请求能以来自特定数据源的所发布数据为目标,并且该读请求可包括与远程订阅分派器期望接收的所发布数据相对应的特定数据源标识符。
[0191] 响应于接收到来自远程订阅分派器2020的读请求,远程订阅管理器2006可被配置成将订阅缓冲器2008中存储的所有所发布数据发送给远程订阅分派器2020。所发布数据可被编组以用于按任何合适的方式传输。在一个示例中,远程订阅管理器2006可以发送所发布数据的多个数据分组。与数据源相对应的每一数据分组可包括所发布数据的被包裹在报头中的数据净荷2014,报头指示提供该所发布数据的数据源的数据源标识符2012。此外,每一数据分组可任选地可包括错过样本计数2016。例如,错过样本计数2016可以在其中通信不是由主机中介的实现中省略。
[0192] 客户端计算设备2002可以按任何合适的方式将所发布数据发送给主机计算设备2000。例如,多个数据分组可以在有线通信I/O接口和/或无线通信I/O接口上发送。相同的通信协议可被用于有线和无线通信两者。在一个示例中,通信协议可包括主机中介的传输层协议,其中只有主机计算设备2000发起客户端计算设备2002与主机计算设备2000之间的通信。
[0193] 响应于接收到来自远程订阅管理器2006的多个数据分组,远程订阅分派器2020可以将所发布数据存储在所发布数据缓冲器2024中。所发布数据缓冲器2024可以是配置成存储所发布数据以供分发给主机计算设备2000的各订阅方模块的物理存储机。此外,远程订阅分派器2020可被配置成标识从远程订阅管理器2006接收到的每一数据分组中的数据源标识符。数据源标识符可以标识提供数据分组中包括的所发布数据的数据源。例如,数据源标识符可以位于数据分组的报头中。此外,远程订阅分派器2020可被配置成在订阅列表2022中查找订阅以接收来自与所标识的数据源标识符相对应的数据源的所发布数据的模块,并将该数据分组分发给那些模块。
[0194] 在一些实现中,远程订阅分派器2020可被配置成在将数据分组发送给订阅方模块之前从数据分组移除数据源标识符2012和错过样本计数2016。换言之,远程订阅分派器2020可被配置成只将所发布数据的数据净荷2014发送给订阅方模块。在这样的实现中,从订阅方模块的观点来看,通过远程订阅接收到的数据分组可看起来与通过本地订阅提供的数据分组相同。
[0195] 由于周期性地发送读请求的性质(也称为轮询所发布数据),如果轮询时间区间过低,则所发布数据样本将被错过(如错过样本计数所指示的)。相应地,用于确定采样速率或调整周期性时间区间的智能方案可被采用以增加接收到所有所发布数据的可能性。在一个示例中,读请求频率可以被设置成最频繁地发布数据的数据源的频率的两倍。当在客户端计算设备2002上激活各自以不同周期性速率进行发布的诸订阅时,远程订阅分派器2020可被配置成动态地调整远程订阅分派器2020发送读请求的速率。例如,该速率可被动态地调整以符合最频繁地进行发布的数据源。如此,远程订阅分派器2020可能不会不必要地发送读请求,这可节省带宽、处理和/或功率资源。
[0196] 在一些实现中,采样速率可基于数据源的错过样本计数来动态地改变。例如,如果数据源的错过样本计数小于阈值,则采样速率可能足以捕捉足够的所发布数据。如此,采样速率可被动态地降低直至错过样本计数达到阈值,以降低在主机计算设备2000与客户端计算设备2002之间传送的数据的量。另一方面,如果数据源的错过样本计数大于阈值,则采样速率可被动态地增加直至错过样本计数小于阈值,以捕捉合适量的数据源所发布的数据。
[0197] 图21示出用于根据多个订阅将由客户端计算设备的数据源所产生的所发布数据提供给主机计算设备的示例方法2100。例如,方法2100可由远程订阅管理器执行,诸如图20中所示的客户端计算设备2002的远程订阅管理器2006。在一个特定示例中,远程订阅管理器2006位于包括发布由位于智能电话上的各模块订阅的数据的数据源的可穿戴计算设备上。远程订阅管理器2006与智能电话的远程订阅分派器2020通信以模拟允许可穿戴计算设备的数据源所发布的数据由智能电话的订阅方模块接收的推送通信协议。在另一示例中,方法2100可由图1A和1B中示出的可穿戴计算设备10、图2中所示的多个客户端计算设备204之一、图3中所示的客户端计算设备300、图13和14中所示的客户端计算设备1402、或图29中所示的计算系统2900执行。在任何情形下,执行方法2100的计算设备可充当客户端计算设备。
[0198] 在2102,方法2100可任选地可包括从主机计算设备的远程订阅分派器接收多个订阅请求。每一订阅请求可包括标识客户端计算设备的数据源的数据源标识符。
[0199] 在2104,方法2100可包括建立多个订阅以接收由客户端计算设备的多个数据源所发布的数据。每一订阅可对应于不同数据源。
[0200] 在一些实现中,可响应于接收到来自主机计算设备的远程订阅分派器的多个订阅请求来建立多个订阅。在其他实现中,可响应于接收到来自另一源(诸如远程服务计算设备)的多个订阅请求来建立多个订阅。在一些情形下,这样的请求可由主机计算设备2000中继。在一些实现中,客户端计算设备可以建立多个订阅而无需接收任何订阅请求。
[0201] 此外,在其中客户端计算设备包括配置成与主机计算设备进行通信的有线通信I/O接口和配置成与主机计算设备进行通信的无线通信I/O接口的一些实现中,该方法可包括经由有线通信I/O接口和无线通信I/O接口两者与主机计算设备通信。在一个示例中,通信可包括使用主机中介传输层协议,其中只有远程计算设备发起客户端计算设备与主机计算设备之间的通信。换言之,因为主机计算设备发起主机计算设备与客户端计算设备之间的所有通信,在主机计算设备发起与客户端计算设备的通信时,多个订阅可被建立以增加所发布数据可供发送给主机计算设备的可能性。
[0202] 在2106,方法2100可包括经由订阅接收来自客户端计算设备的数据源的所发布数据。
[0203] 在2108,方法2100可包括将所发布数据存储在订阅缓冲器中。例如,订阅缓冲器可以是配置成存储由客户端计算设备的数据源所提供的所发布数据的存储机。在一些实现中,已建立对其的订阅的数据源在任何时刻发布数据时,该所发布数据可被存储在订阅缓冲器中。
[0204] 在一些实现中,订阅缓冲器可包括与已建立的每一订阅相对应的数据槽。数据槽可被配置成只存储由一数据源所提供的所发布数据的一个实例。如此,如果数据源提供所发布数据的新实例,则新实例可替换数据槽中的所发布数据的较旧实例。订阅缓冲器可以按这样的方式配置以限制专用于存储所发布数据的存储资源。在具有有限存储资源的客户端计算设备(诸如可穿戴计算设备)的实现中,这样的配置可以是合乎需要的。在这样的实现中,在2110,方法2100可包括响应于经由订阅接收到来自数据源的所发布数据,将所发布数据存储在与该订阅相对应的数据槽中。在其他实现中,订阅缓冲器可包括与每一订阅相对应的多个数据槽,并且数据源所提供的所发布数据的多个实例可被存储在该多个数据槽中。
[0205] 在2112,方法2100可包括从主机计算设备的远程订阅分派器接收读请求。在一些实现中,读请求可以是对由远程订阅管理器作为订阅的结果存储的所有所发布数据的请求。在一些实现中,读请求可以是自己不知道要读取什么数据的单个命令。这样的配置可降低主机计算设备与客户端计算设备之间传送的数据的量,这在其中主机计算设备与客户端计算设备之间的通信链路具有有限传输带宽的实现中是合乎需要的。在一些实现中,读请求可以在周期性时间区间上从主机计算设备接收。在一些实现中,读请求可以是包括数据源的数据源标识符的定向读请求,且该定向读请求可以是对数据源所提供的所发布数据的请求。
[0206] 在2114,方法2100可包括响应于接收到来自主机计算设备的远程订阅分派器的读请求,向主机计算设备发送包括订阅缓冲器中存储的所发布数据的一个或多个数据分组。在一些实现中,响应于接收到读请求,发送已建立对其的订阅的所有数据源所提供的所发布数据。在一个示例中,只有每一数据源所提供的所发布数据的最新近发布的版本被发送给主机计算设备。在另一示例中,订阅缓冲器中存储的每一数据源所提供的所发布数据的所有版本被发送给主机计算设备。例如,数据分组可包括与多个订阅相对应的数据槽中存储的所发布数据。在其他实现中,只有存储在订阅缓冲器中且从读请求中标识的数据源提供的所发布数据可被发送给主机计算设备。
[0207] 在一些实现中,每一数据分组可包括标识提供了该数据分组中包括的所发布数据的数据源的数据源标识符。在一些实现中,每一数据分组可包括指示自接收到来自主机计算设备的远程订阅分派器的最后读请求以来数据源已发布数据的次数的错过样本计数。
[0208] 图22和23示出用于根据订阅将由客户端计算设备的数据源所提供的所发布数据分发给主机计算设备的各模块的示例方法2200。例如,方法2100可由远程订阅分派器执行,诸如图20中所示的主机计算设备2000的远程订阅分派器2020。在一个特定示例中,远程订阅分派器2020位于具有订阅位于可穿戴计算设备上的各数据源的各模块的智能电话上。远程订阅分派器2020与可穿戴计算设备的远程订阅管理器2006通信以模拟允许可穿戴计算设备的数据源所发布的数据由智能电话的订阅方模块接收的推送通信协议。在另一示例中,方法2200可由图2中示出的主机计算设备A、图13和14中示出的远程计算设备1400、或图29中示出的计算系统2900执行。在任何情形下,执行方法2100的计算设备充当主机计算设备。
[0209] 在2202,方法2200可包括从主机计算设备的多个模块接收用于接收所发布数据的多个订阅请求。在一些情形下,多个模块中的两者或更多者可以请求订阅以接收来自同一数据源的相同的所发布数据。
[0210] 在一些实现中,接收所发布数据的请求可包括显式地标识提供所发布数据的数据源的数据源标识符。换言之,各模块可以将数据源标识符传递给远程订阅分派器。
[0211] 在其他实现中,接收所发布数据的请求可不标识提供该所发布数据的特定数据源。在这样的实现中,在2204,方法2200可任选地可包括对于接收到的来自多个模块的每一订阅请求,标识客户端计算设备的提供由该订阅请求所指示的所发布数据的数据源。此外,在2206,方法2200可任选地可包括对于每一订阅请求,将标识该数据源的数据源标识符添加到该订阅请求。在这样的实现中,远程订阅分派器可以向该模块提供代理功能性以允许所请求的订阅被满足。
[0212] 在2208,方法2200可包括对于每一数据源标识符,基于多个订阅请求建立订阅以接收对应数据源所提供的所发布数据的各模块的列表。各种列表可被用来将每一数据源所提供的所发布数据分发给适当的订阅方模块。
[0213] 在2210,方法2200可包括向客户端计算设备的远程订阅管理器发送多个订阅请求以接收来自客户端计算设备的数据源的所发布数据。每一订阅请求可对应于不同数据源。
[0214] 在一些实现中,远程订阅分派器可以比较接收到的各订阅请求以标识从不同模块接收到的对相同数据的冗余请求。相应地,在2212,方法2200可任选地可包括对于每一数据源,向客户端计算设备的远程订阅管理器发送单个订阅请求以接收该数据源提供的所发布数据。
[0215] 在2214,方法2200可包括向客户端计算设备的远程订阅管理器发送对客户端计算设备的请求了对其的多个订阅的各数据源所发布的数据的读请求。在一些实现中,读请求可以是对由远程订阅管理器作为订阅的结果存储的所有所发布数据的请求。在一些实现中,读请求可以是自己不知道要读取什么数据的单个命令。在其他实现中,读请求可以是包括数据源的数据源标识符的定向读请求,且该定向读请求可以是对数据源所提供的所发布数据的请求。
[0216] 在一些实现中,读请求可以被周期性地发送给客户端计算设备的远程订阅管理器。可以采用任何合适的周期性时间区间。在一些实现中,周期性时间区间可以是预定的。在其他实现中,周期性时间区间可以被动态地调整。
[0217] 在2216,方法2200可包括根据多个订阅请求从客户端计算设备的远程订阅管理器接收包括由客户端计算设备的数据源所发布的数据的一个或多个数据分组。在一些实现中,该一个或多个数据分组可包括来自已建立对其的订阅的每一数据源的所发布数据。在一个示例中,所发布数据可以是数据源所提供的所发布数据的最新近实例。在另一示例中,所发布数据可以是数据源所提供的所发布数据的所有实例。在一些实现中,该一个或多个分组可包括客户端计算设备的订阅缓冲器中存储的任何所发布数据。
[0218] 在一些实现中,该一个或多个数据分组中的每一者可包括标识提供了该数据分组中包括的所发布数据的数据源的数据源标识符。在这样的实现中,在2218,方法2200可任选地可包括对于该一个或多个数据分组中的每一者,在将该数据分组发送给各模块之前从该数据分组移除数据源标识符。
[0219] 在一些实现中,该一个或多个数据分组中的每一者可包括指示自客户端计算设备接收到最后读请求以来数据源已发布数据的次数的错过样本计数。在这样的实现中,在2220,方法2200可任选地可包括对于该一个或多个数据分组中的每一者,在将该数据分组发送给各模块之前从该数据分组移除错过样本计数。
[0220] 在2222,方法2200可包括将该一个或多个数据分组发送给订阅以接收该一个或多个数据分组中包括的所发布数据的各模块。
[0221] 在一些实现中,在2224,方法2200可包括对于该一个或多个数据分组中的每一者,将该数据分组发送给订阅模块列表上的订阅与该数据分组中的数据源标识符相对应的数据源的各模块。如此,至少一个数据分组可被发送给请求了对相同的所发布数据的订阅的两个或更多个模块。
[0222] 在2226,方法2200可任选地可包括基于一个或多个数据分组的错过样本计数,将向客户端计算设备的远程订阅管理器发送读请求的周期性时间区间调整成经更新周期性时间区间。例如,如果错过样本计数小于阈值,则周期性时间区间可被增加。在另一示例中,如果错过样本计数大于阈值,则周期性时间区间可被降低。
[0223] 在2228,方法2200可任选地可包括根据经更新周期性时间区间向客户端计算设备的远程订阅管理器周期性地发送读请求。
[0224] 上述方法可被执行以允许客户端计算设备的数据源所发布的数据以存储资源高效和传输带宽高效的方式被存储和发送给主机计算设备。在其中主机计算设备发起主机计算设备与客户端计算设备之间的所有通信的实现中,这些方法可尤其有用,因为客户端计算设备的数据源可能没有在新数据变得可用时通知主机计算设备的各模块的其他机制。
[0225] 在其中基于发布者/订阅者的办法被实现在计算设备上的实现中,不同数据源(例如,硬件组件,诸如传感器或中介模块)可以采用不同类型的订阅。在一个示例中,一模块可具有指定激活数据源以将所发布数据提供给该模块来满足订阅的主动型订阅。例如,在可穿戴计算设备的情形下,一模块可主动订阅测量可穿戴计算设备的穿戴者的身体参数的生物测定传感器,并且生物测定传感器可响应于激活该订阅以将所发布数据提供给该模块来打开和/或启用身体参数的输出。
[0226] 在另一示例中,一模块可具有被动型订阅,该被动型订阅指定只有在数据源已被激活以满足被动订阅以外的功能的情况下数据源将所发布数据提供给该模块。数据源可被激活以满足任何合适的功能。例如,数据源可被激活以满足不同模块的主动订阅。在另一示例中,数据源可响应于模式、事件、触发、条件或计算设备的其他操作状态来被激活。
[0227] 通过采用这些不同类型的订阅,各种数据源可只在必要时被开机和/或启用以将所发布数据提供给订阅方模块或满足其他功能。换言之,这样的数据源可以在不需要时关机和/或禁用。相应地,数据源的功耗可被智能地降低。这样的办法可尤其适用于其中电源受约束的计算设备的实现,诸如在由电池供电的可穿戴计算设备的情形下。
[0228] 图24示出可采用包括不同类型的订阅和订阅分层结构的发布者/订阅者办法的示例计算设备2400。在一些实现中,计算设备2400可以是可穿戴计算设备。在一些实现中,计算设备2400可以是与主机计算设备(诸如图20中所示的主机计算设备2000)通信的客户端计算设备(诸如图20中所示的客户端计算设备2002)。
[0229] 计算设备2400包括配置成发布数据的多个硬件组件2402。例如,多个硬件组件2402中的一者或多者可包括测量身体参数的传感器。在其中计算设备2400是可穿戴计算设备的一个特定示例中,多个硬件组件2402中的一者或多者包括配置成测量可穿戴计算设备的穿戴者的身体参数的生物测定传感器。例如,生物测定传感器可包括皮肤电阻传感器、脉搏率传感器、皮肤温度传感器、加速度计、磁力计、陀螺仪以及全球定位传感器中的一者或多者。计算设备2400可包括配置成发布任何合适类型的数据的任何合适数目和/或类型的硬件组件。
[0230] 在一些实现中,每一硬件组件可以维护该硬件组件的当前订阅的订阅列表2404。订阅列表2404中的每一条目可包括具有对该硬件组件的订阅的订阅方模块2406。此外,每一条目可任选地可包括定义该订阅的约束的修饰符2408。
[0231] 计算系统2400可包括多个模块2410。每一模块可被配置成对一个或多个硬件组件所提供的所发布数据执行处理、自身发布数据、和/或用于另一目的。多个模块2410中的一些可具有订阅以接收来自多个硬件组件2402的所发布数据。此外,多个模块2410中的一些可充当数据源并发布提供给其他订阅方模块的数据。另外,多个模块2410中的一些可充当接收来自硬件组件或其他模块的所发布数据(例如,第一参数)、对该所发布数据执行处理、以及随后输出从接收自硬件组件或其他模块的所发布数据导出的不同所发布数据(例如,第二参数)的中介模块。在一个特定示例中,多个模块2410中的一些可以是提供与可穿戴计算设备的穿戴者的特定活动相关的信息或参数的活动模块。
[0232] 在一些实现中,每一模块可以维护该模块的当前订阅的订阅列表2412。订阅列表2412中的每一条目可包括具有对该模块的订阅的订阅方模块2414。此外,每一条目可任选地可包括定义该订阅的约束的修饰符2416。
[0233] 在其他实现中,代替数据源在个体的基础上管理订阅,订阅管理器(诸如图20中示出的远程订阅管理器2006)可为计算设备2400的所有模块和硬件组件处置订阅管理。
[0234] 在一些实现中,订阅可包括定义该订阅的一个或多个约束的一个或多个订阅修饰符。例如,在一模块创建对数据源的订阅时,该请求可作为函数来传递且修饰符可以是该函数的参数。在一个示例中,订阅修饰符可包括订阅的类型(例如,主动或被动)。
[0235] 在另一示例中,订阅修饰符可包括硬件组件或模块产生参数或发布数据的采样频率。在一个特定示例中,数据源可被配置成以作为由订阅以接收参数的各模块提供作为修饰符的所有采样频率的最小公倍数的频率来产生参数。在另一示例中,数据源可被配置成以大于由模块提供作为修饰符的任何一个频率的频率来产生参数以满足所有订阅方模块的采样需求。
[0236] 在又一示例中,订阅修饰符可包括数据源被激活以产生参数或发布数据的采样时段。在一个特定示例中,数据源可以在由订阅以接收参数或所发布数据的各模块提供作为修饰符的所有采样时段中的最长采样时段期间产生参数或发布数据。相应地,所有订阅方模块的采样需求可被满足。
[0237] 在另一示例中,订阅修饰符可包括订阅一模块以接收参数或所发布数据的订阅历时。例如,订阅历时可被设置成一小时,并且订阅方模块可以接收来自发布方模块的所发布数据达该一小时历时。在该小时的结束处,订阅结束且先前订阅方模块不再接收由发布方模块发布的数据直至建立另一订阅。该一小时历时仅仅是示例,且任何合适的历时可被采用。在另一示例中,订阅修饰符可包括指定响应于模块建立订阅以接收来自数据源的参数来将该参数的最新近采样版本发送给该模块的即时通知约束。任何合适的约束可被用作订阅的修饰符。此外,订阅可具有任何合适数目的修饰符。
[0238] 在一些实现中,订阅可以通过不同模块被链结在一起直至硬件组件级以形成订阅分层结构。在其最简单的形式中,订阅分层结构可包括通过直接订阅直接订阅硬件组件的中介模块来间接地订阅该硬件组件的顶层模块。在这一示例中,除非顶层模块创建对中介模块的主动订阅,中介模块将不创建对硬件组件的主动订阅,并且硬件组件将不打开。
[0239] 通过采用订阅分层结构,硬件组件和各模块可以按能量高效的方式操作,同时在改变操作条件期间提供操作灵活性。具体而言,链结在一起的主动和被动订阅的组合可被采用来机会性地使用由主动数据源发布的数据(在可用时),同时还确保数据在被一模块绝对需要示变得可用。
[0240] 图25示出可由包括多个硬件组件2502(诸如脉搏率传感器2504、加速度计2506、以及全球定位系统(GPS)2508)的可穿戴计算设备2500采用的示例订阅分层结构。脉搏率传感器2504可被配置成确定可穿戴计算设备2500的穿戴者的脉搏率。加速度计2506可被配置成测量可穿戴计算设备2500的加速度。GPS可被配置成确定可穿戴计算设备2500的物理位置或定位。
[0241] 可穿戴计算设备2500可包括多个模块2510,诸如跑步模块2512、卡路里模块2514、步数计2516、以及距离模块2518。跑步模块2512可以是配置成向穿戴者提供在穿戴者跑步时可能有用的信息的顶层模块。例如,跑步模块2512可以呈现穿戴者的生物测定参数,诸如穿戴者的脉搏率以及穿戴者在跑步时燃烧的卡路里。此外,跑步模块2512可以呈现其他身体参数(也被称为穿戴者的活动参数),诸如在跑步时行进的距离以及穿戴者的当前位置。为向穿戴者呈现这样的信息,跑步模块2512可以经由主动订阅接收来自硬件组件和中介模块的参数。具体而言,跑步模块2512可具有主动订阅以接收脉搏率传感器2504所发布的脉搏率数据、卡路里模块2514所发布的卡路里数据、距离模块2518所发布的距离数据、以及GPS 2508所发布的位置数据。这些主动订阅指定激活数据源以及订阅分层结构中的较低层数据源以发布数据来满足跑步模块2512的主动订阅。
[0242] 卡路里模块2514可被配置成确定穿戴者在给定时段内所燃烧的卡路里数。卡路里模块2514可以不同地依赖于哪些硬件组件被打开来发布相关数据来导出穿戴者所燃烧的卡路里数。具体而言,卡路里模块2514可具有被动订阅以接收来自脉搏率传感器2504的脉搏率数据以及主动订阅以接收步数计2516的步数数据。此外,步数计2516具有主动订阅以接收来自加速度计2506的加速度数据。
[0243] 步数计2516可以从接收自加速度计2506的加速度数据导出穿戴者所进行的步数。因为步数计2516具有对加速度计2506的主动订阅,所以加速度计2506被激活以按步数计
2516的需要向步数计2516提供加速度数据来满足该主动订阅。
[0244] 如果脉搏率传感器2504被激活以满足另一功能(例如,跑步模块2512是主动的),则脉搏率传感器2504也可将脉搏率数据发送给卡路里模块2514,并且卡路里模块2514可以从脉搏率数据导出穿戴者所燃烧的卡路里数。如果脉搏率传感器2504未被激活,则卡路里模块2514可以使用步数计2516所提供的步数数据来导出穿戴者所燃烧的卡路里数。换言之,因为卡路里模块2514具有对步数计2516(它具有对加速度计2506的主动订阅)的主动订阅,所以加速度计2506和步数计2516可被打开以按卡路里模块2514的需要将步数数据提供给卡路里模块2514来满足主动订阅链。
[0245] 在卡路里模块2514的情形下,与步数数据相比,脉搏率数据可以提供对所燃烧的卡路里的更准确确定。如此,在脉搏率可用时,可以从脉搏率导出卡路里。然而,为降低功耗,如果脉搏率传感器2504出于其他目的不活动,则可作出准确度的让步来利于降低功耗,并且卡路里可以从步数导出。
[0246] 距离模块2518可被配置成确定穿戴者在给定时段期间所行进的距离。距离模块2518可以不同地依赖于哪些硬件组件被打开来发布相关数据来导出穿戴者所行进的距离。
具体而言,距离模块2518可具有被动订阅以接收来自GPS2508的位置数据以及主动订阅以接收步数计2516的步数数据。
[0247] 如果GPS 2508被激活以满足另一功能(例如,跑步模块2512是活动的),则GPS 2508也可将位置数据发送给距离模块2518,并且距离模块2518可以从位置数据导出穿戴者所行进的距离。如果GPS 2508未被激活,则距离模块2518可以使用步数计2516所提供的步数数据来导出穿戴者所行进的距离。
[0248] 在距离模块2518的情形下,与步数数据相比,位置数据可以提供对所行进的距离的更准确确定。如此,在位置数据可用时,可以从位置数据导出距离。然而,为降低可穿戴计算设备2500的功耗,如果GPS 2508出于其他目的不活动,则可作出准确度的让步来利于降低功耗,并且距离可以从步数导出。
[0249] 上述订阅分层结构仅仅是一个示例。订阅分层结构可包括通过不同层模块链结在一起的任何合适数目的订阅。此外,订阅分层结构可包括主动和被动订阅的任何合适组合。
[0250] 在一些实现中,订阅可响应于可穿戴计算设备的操作状态的变化、可穿戴计算设备的穿戴者的状态变化、或响应于另一合适的事件、触发或条件而动态地变化。例如,可通过改变订阅的修饰符来改变订阅。在一些情形下,新订阅可响应于操作状态的变化或其他合适的变化而被创建。在一些情形下,订阅可响应于操作状态的变化或其他合适的变化而结束。此外,订阅分层结构可随时间在不同订阅被创建、改变类型和/或期满时动态地变化。
[0251] 图26-28示出触发对订阅的改变的示例场景。图26示出其中订阅响应于可穿戴计算设备2600的状态变化被修改的示例场景。可穿戴计算设备2600包括各硬件组件,诸如电池传感器2602和GPS 2604。电池传感器2602可被配置成测量可穿戴计算设备2600的电池的电流和/或电压。GPS 2604可被配置成确定可穿戴计算设备2600的位置或定位。
[0252] 此外,可穿戴计算设备2600包括各模块,诸如电池指示符模块2606和距离模块2608。电池指示符模块2606可被配置成提供可穿戴计算设备2600的电池的电量状态的指示。距离模块2608可被配置成确定可穿戴计算设备2600的穿戴者所行进的距离。
[0253] 在第一状态(主动位置)中,电池指示符模块2606具有主动订阅以接收来自电池传感器2602的电流/电压数据。电池指示符模块2606可以根据从电池传感器2602接收到的电流/电压数据来确定电池具有高电量状态。例如,高电量状态可以是大于阈值的电量状态。
[0254] 此外,在第一状态中,距离模块2608具有对电池指示符模块2606的主动订阅以接收电量数据,在这种情形下,电量数据指示电池的高电量状态。另外,距离模块2608具有对GPS 2604的主动订阅以接收位置数据。在这一状态中,距离模块2608可以基于随时间从GPS 2604接收到的的位置的变化来确定穿戴者已行进的距离。
[0255] 在这一示例中,距离模块2608具有的针对GPS 2604的订阅可基于可穿戴计算设备2600的电池状态的变化而被动态地修改。具体而言,GPS 2604可在操作期间消耗相对高的功率量,并且如此,可穿戴计算设备2600可被配置成只有当电池中存在合适电量(例如,高电量状态)时才激活GPS 2604以用于向距离模块2608提供位置数据的目的。
[0256] 相应地,在第二状态(被动位置)中,电池指示符模块2606向距离模块2608指示电池具有低电量状态。例如,低电量状态可以是小于阈值的电量状态。电池状态从高状态到低状态的改变触发距离模块2608所具有的针对GPS 2604的订阅从主动订阅动态地修改成被动订阅,如虚线所指示的。响应于订阅的动态修改,距离模块2608可只在GPS被激活以提供另一功能时使用从GPS接收到的位置数据来确定穿戴者随时间行进的距离。否则,在这一状态中,距离模块2608使用除位置以外的参数(诸如,使用从步数计接收到的步数数据)来确定穿戴者随时间行进的距离。对应地,如果电池电量状态要从低状态切换到高状态,则距离模块2608具有的针对GPS 2604的订阅将从被动订阅动态地修改成主动订阅。任何订阅可响应于可穿戴计算设备2600的任何合适的状态变化而被动态地修改。
[0257] 图27示出其中订阅响应于可穿戴计算设备2700相对于可穿戴计算设备2700的穿戴者的状态变化被修改的示例场景。可穿戴计算设备2700包括各硬件组件,诸如皮肤电反应(GSR)传感器2702和脉搏率传感器2704。GSR传感器2702可被配置成测量可穿戴计算设备2700的穿戴者的皮肤电导率。脉搏率传感器2704可被配置成确定可穿戴计算设备2700的穿戴者的脉搏率。
[0258] 此外,可穿戴计算设备2700包括各模块,诸如穿戴指示符模块2706和卡路里模块2708。穿戴指示符模块2706可被配置成提供可穿戴计算设备2700当前是否被穿戴者穿戴的指示。卡路里模块2708可被配置成确定可穿戴计算设备2700的穿戴者在给定时段期间所燃烧的卡路里数。
[0259] 在第一状态(主动位置)中,穿戴指示符模块2706具有主动订阅以接收来自GSR传感器2702的皮肤电导率数据。穿戴指示符模块2706可以基于皮肤电导率数据指示基本上零皮肤电导率的测量来确定可穿戴计算设备2700当前没有被穿戴者穿戴。
[0260] 此外,在第一状态中,卡路里模块2708具有对穿戴指示符模块2706的主动订阅以接收可穿戴计算设备2700当前没有被穿戴的指示。另外,卡路里模块2708具有对脉搏率传感器2704的被动订阅以接收脉搏率数据。在这一状态中,卡路里模块2708可以只在脉搏率传感器2704被激活以满足另一功能的情况下才使用脉搏率数据来确定穿戴者在给定时段期间所燃烧的卡路里数。在另一示例中,在穿戴指示符模块2706提供可穿戴计算设备2700当前没有被穿戴的指示时,卡路里模块2708可以不确定卡路里数且对脉搏率传感器2704的订阅可被取消。
[0261] 在这一示例中,卡路里模块2708具有的针对脉搏率传感器2704的订阅可响应于可穿戴计算设备2700相对于穿戴者的状态变化而被动态地修改。具体而言,在可穿戴计算设备2700没有被穿戴时,脉搏率传感器2704和/或卡路里模块2708可被停用以降低功耗。
[0262] 相应地,在第二状态(被动位置)中,穿戴指示符模块2706向卡路里模块2708指示可穿戴计算设备2700当前正被穿戴者穿戴。例如,这一指示可以基于GSR传感器2702所提供的指示皮肤电导率大于阈值的皮肤电导率来确定。可穿戴计算设备2700相对于穿戴者的状态变化触发卡路里模块2708具有的针对脉搏率传感器2704的订阅从被动订阅动态地修改成主动订阅,如实线所指示的。响应于订阅的修改,脉搏率传感器2704可以激活以测量穿戴者的脉搏率并将脉搏率数据提供给卡路里模块2708。此外,卡路里模块2708可以使用脉搏率数据导出穿戴者在给定时段期间所燃烧的卡路里数。对应地,如果可穿戴计算设备2700的状态要从被穿戴改变成未被穿戴,则卡路里模块2708具有的针对脉搏率传感器2704的订阅将从主动订阅动态地修改成被动订阅(或订阅将被结束)。
[0263] 图28示出其中订阅响应于可穿戴计算设备2800的穿戴者的状态变化被修改的示例场景。可穿戴计算设备2800包括各硬件组件,诸如加速度计2802和脉搏率传感器2804。加速度计2802可被配置成测量可穿戴计算设备2800的加速度。脉搏率传感器2804可被配置成确定可穿戴计算设备2800的穿戴者的脉搏率。
[0264] 此外,可穿戴计算设备2800包括各模块,诸如速度模块2806和卡路里模块2808。速度模块2806可被配置成确定可穿戴计算设备2800的速度。卡路里模块2808可被配置成确定可穿戴计算设备2800的穿戴者在给定时段期间所燃烧的卡路里数。
[0265] 在第一状态(低采样速率位置)中,速度模块2806具有主动订阅以接收来自加速度计2802的加速度数据。速度模块2806可从加速度计2802所提供的加速度数据中导出速度。具体而言,速度模块2806可以确定可穿戴计算设备2800具有小于阈值的速度。例如,阈值可指示可穿戴计算设备2800的穿戴者可被假定正在跑步的最小速度。
[0266] 此外,在第一状态中,卡路里模块2808具有对速度模块2806的主动订阅以接收指示该速度小于阈值的速度数据。另外,卡路里模块2808具有对脉搏率传感器2804的主动订阅以接收脉搏率数据。主动订阅包括指定脉搏率由脉搏率传感器2804以第一采样速率来采样的修饰符。在这一状态中,卡路里模块2808可以使用以第一采样速率来采样的脉搏率数据来确定穿戴者在给定时段期间所燃烧的卡路里数。
[0267] 在这一示例中,卡路里模块2808具有的针对脉搏率传感器2804的订阅的采样速率修饰符可响应于速度变得大于阈值而被动态地修改。例如,在第一状态中,穿戴者可能缓慢地移动,并且相应地,穿戴者的脉搏率可被假定为较低。如此,脉搏率的采样速率可被设置成相对较慢的采样速率。
[0268] 在第二状态(高采样速率位置)中,速度模块2806向卡路里模块2808指示可穿戴计算设备2800的速度大于阈值。可穿戴计算设备2800的状态变化(它是穿戴者的状态变化的代理)触发卡路里模块2808具有的针对脉搏率传感器2804的订阅的采样速率修饰符的动态修改。具体而言,订阅的采样速率修饰符可以从第一采样速率更新成大于第一采样速率的第二采样速率。换言之,在速度变得大于阈值时,假定穿戴者正在跑步,并且跑步将使得脉搏率增加。如此,采样速率可被动态地增加以准确地测量脉搏率。相应地,如果可穿戴计算设备2800的速度要变得小于阈值,则卡路里模块2808具有的对脉搏率传感器2804的订阅将被动态地修改以降低采样速率来降低功耗。
[0269] 在以上描述的示例中,一模块的输出可以触发对不同数据源的订阅的变化。来自任何合适数据源的输出可被用来触发订阅的动态变化。此外,数据源的多个输出可被组合地设想来触发订阅的动态变化。
[0270] 在一些实施例中,本文中描述的方法和过程可以与一个或多个计算设备的计算系统绑定。具体而言,这样的方法和过程可被实现为计算机应用程序或服务、应用编程接口(API)、库和/或其他计算机程序产品。
[0271] 图29示意性地示出了可执行上述方法和过程中的一个或多个的计算系统2900的非限制性实施例。以简化形式示出了计算系统2900。计算系统2900可采取以下形式:一个或多个个人计算机、服务器计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如,智能电话)和/或其他计算设备。例如,计算系统2900可以表示服务计算设备、主机计算设备、客户端计算设备、第三方计算设备、连接网络的计算设备、非连接网络的计算设备、或另一合适的计算设备。在一个示例中,计算系统2900可以表示图2中示出的客户端计算设备A-N、主机计算设备A和B、服务计算设备202、以及第三方计算设备210。此外,计算设备2900可以表示本公开中讨论的任何其他计算设备。
[0272] 计算系统2900包括逻辑机2902和存储机2904。计算系统2900可任选地包括显示子系统2906、输入子系统2908、通信子系统2910、命令库2912、和/或在图29中未示出的其他组件。
[0273] 逻辑机2902包括被配置成执行指令的一个或多个物理设备。例如,逻辑机2902可被配置成执行作为以下各项的一部分的指令:一个或多个应用、服务、程序、例程、库、对象、组件、数据结构、或其他逻辑构造。这种指令可被实现以执行任务、实现数据类型、转换一个或多个部件的状态、实现技术效果、或以其他方式得到期望结果。
[0274] 逻辑机2902可以包括被配置成执行软件指令的一个或多个处理器。附加地或替换地,逻辑机2902可以包括被配置成执行硬件或固件指令的一个或多个硬件或固件逻辑机。逻辑机2902的处理器可以是单核的或多核的,其上执行的指令可以被配置用于串行、并行和/或分布式处理。逻辑机2902的个体组件可任选地分布在两个或更多个分开的设备之间,所述设备可以位于远程以及/或者被配置用于协同处理。逻辑机2902的各方面可由以云计算配置进行配置的可远程访问的联网计算设备来虚拟化和执行。
[0275] 存储机2904包括被配置成保持可由逻辑机2902执行的指令以实现此处描述的方法和过程的一个或多个物理设备。在实现这些方法和过程时,可以变换存储机2904的状态(例如,保存不同的数据)。
[0276] 存储机2904可以包括可移动和/或内置设备。存储机2904可包括光学存储器(例如,CD、DVD、HD-DVD、蓝光盘)、半导体存储器(例如,RAM、EPROM、EEPROM等)和/或磁存储器(例如,硬盘驱动器软盘驱动器、磁带驱动器、MRAM),等等。存储机2904可包括易失性、非易失性、动态、静态、读/写、只读、随机存取、顺序存取、位置可寻址、文件可寻址和/或内容可寻址设备。
[0277] 可以理解,存储机2904包括一个或多个物理设备。然而,本文描述的指令的各方面可另选地通过不由物理设备在有限时长内持有的通信介质(例如,电磁信号、光信号)来传播。
[0278] 逻辑机2902和存储机2904的各方面可被一起集成到一个或多个硬件逻辑组件中。这些硬件逻辑组件可包括例如现场可编程阵列(FPGA)、程序和应用专用的集成电路(PASIC/ASIC)、程序和应用专用的标准产品(PSSP/ASSP)、片上系统(SOC)以及复杂可编程逻辑器件(CPLD)。
[0279] 术语“模块”、“程序”和“引擎”可用于描述被实现为执行一个特定功能的计算系统2900的一方面。在某些情况下,可以通过执行由存储机2902所保持的指令的逻辑机2904来实例化模块、程序或引擎。将理解,可以从同一应用、服务、代码块、对象、库、例程、API或函数实例化不同的模块、程序和/或引擎。同样,可以由不同的应用程序、服务、代码块、对象、例程、API或函数来实例化同一模块、程序和/或引擎。术语“模块”、“程序”和“引擎”可涵盖单个或成组的可执行文件、数据文件、库、驱动程序、脚本或数据库记录。
[0280] 应该理解,在此使用的“服务”是跨多个用户会话可执行的应用程序。服务可用于一个或多个系统组件、程序和/或其它服务。在某些实现中,服务可以在一个或多个服务器计算设备上运行。
[0281] 在被包括时,显示子系统2906可用于呈现由存储机2904保存的数据的视觉表示。此视觉表示可采用图形用户界面(GUI)的形式。由于本文所描述的方法和过程改变了由存储机保持的数据,并由此变换了存储机的状态,因此同样可以转变显示子系统2906的状态以视觉地表示底层数据的改变。显示子系统2906可包括使用实质上任何类型的技术的一个或多个显示设备。可将此类显示设备与逻辑机2902和/或存储器机2904组合在共享封装中,或者此类显示设备可以是外围显示设备。
[0282] 在包括输入子系统2908时,输入子系统2908包括诸如键盘鼠标、触摸屏或游戏控制器之类的一个或多个用户输入设备或者与其对接。在某些实施例中,输入子系统2908可包括所选的自然用户输入(NUI)部件或者与其对接。这样的部件可以是集成的或外围的,并且输入动作的转换和/或处理可以在板上或板外被处理。NUI部件的示例可包括用于语言和/或语音识别的话筒;用于机器视觉和/或姿势识别的红外、色彩、立体显示和/或深度相机;用于运动检测和/或意图识别的头部跟踪器、眼睛跟踪器、加速计和/或陀螺仪;以及用于评估脑部活动的电场感测部件。
[0283] 当包括通信子系统2910时,通信子系统2910可被配置成将计算系统2900与一个或多个其他计算设备通信地耦合。通信子系统2910可包括与一个或多个不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统2910可被配置成用于经由无线电话网络或者有线或无线局域网或广域网来进行通信。在一些实施例中,通信子系统可允许计算系统2900经由诸如因特网这样的网络将消息发送至其他设备以及/或者从其他设备接收消息。
[0284] 命令库2912可被提供以允许使用相同协议在不同通信I/O接口上通信。例如,命令库2912可被提供给通过USB、BT或BTLE传输层与客户端计算设备通信的构建工具。命令库2912可包括任何合适的命令。
[0285] 一个示例提供了一种客户端计算设备,包括逻辑机以及存储机,所述存储机保持能够由所述逻辑机执行以进行以下操作的指令:建立多个订阅以接收由客户端计算设备的多个数据源发布的数据,每一订阅对应于不同数据源;响应于经由订阅从客户端计算设备的任何数据源接收所发布数据,将所发布数据存储在订阅缓冲器中;以及响应于根据该多个订阅从主机计算设备的远程订阅分派器接收到对客户端计算设备的数据源所发布的数据的读请求,将包括订阅缓冲器中存储的所发布数据的一个或多个数据分组发送给主机计算设备。在这样的示例中,可任选地响应于从主机计算设备的远程订阅分派器接收到对客户端数据的读请求来发送已可任选地建立对其的订阅的所有数据源所提供的所发布数据。在这样的示例中,存储机可任选地进一步保持可由逻辑机执行以进行以下操作的指令:从主机计算设备的远程订阅分派器接收多个订阅请求,每一订阅请求包括标识客户端计算设备的数据源的数据源标识符,并且其中该多个订阅是响应于接收到该多个订阅请求来建立的。在这样的示例中,订阅缓冲器可任选地包括与每一订阅相对应的数据槽,并且存储机可任选地进一步保持能由逻辑机执行以进行以下操作的指令:响应于经由订阅从数据源接收到所发布数据,将所发布数据存储在与该订阅相对应的数据槽中。在这样的示例中,该一个或多个数据分组可任选地包括存储在与该多个订阅相对应的数据槽中的所发布数据。在这样的示例中,该一个或多个数据分组中的每一者可任选地包括标识提供了该数据分组中包括的所发布数据的数据源的数据源标识符。在这样的示例中,该一个或多个数据分组可任选地包括指示自接收到来自主机计算设备的远程订阅分派器的最后读请求以来数据源已发布数据的次数的错过样本计数。在这样的示例中,客户端计算设备可任选地进一步包括配置成与主机计算设备通信的有线通信I/O接口、配置成与主机计算设备通信的无线通信I/O接口,并且其中存储机可任选地保持可由逻辑机执行以进行以下操作的指令:使用主机中介传输层协议经由有线通信I/O接口和无线通信I/O接口两者与主机计算设备通信,其中只有远程计算设备发起客户端计算设备与主机计算设备之间的通信。以上描述的示例中的任何一个或全部可按任何合适的方式被组合在各实现中。
[0286] 另一示例提供了一种主机计算设备,包括逻辑机以及存储机,所述存储机保持能够由所述逻辑机执行以进行以下操作的指令:从主机计算设备的多个模块接收多个订阅请求以接收所发布数据,其中该多个模块中的两者或更多者请求对相同的所发布数据的订阅;向客户端计算设备的远程订阅管理器发送多个订阅请求以从客户端计算设备的各数据源接收所发布数据,每一订阅请求对应于不同数据源;向客户端计算设备的远程订阅管理器发送对客户端计算设备的请求了对其的多个订阅的各数据源所发布的数据的读请求;根据多个订阅请求从客户端计算设备的远程订阅管理器接收包括由客户端计算设备的数据源所发布的数据的一个或多个数据分组;以及将该一个或多个数据分组发送给订阅以接收该一个或多个数据分组中包括的所发布数据的各模块,其中至少一个数据分组被发送给请求对相同的所发布数据的订阅的两个或更多个模块。在这样的示例中,存储机可任选地保持可由逻辑机执行以进行以下操作的指令:对于每一数据源,向客户端计算设备的远程订阅管理器发送单个订阅请求以接收该数据源提供的所发布数据。在这样的示例中,存储机可任选地保持可由逻辑机执行以进行以下操作的指令:对于每一从多个模块接收到的每一订阅请求,标识客户端计算设备的提供由该订阅请求指示的所发布数据的数据源;以及对于每一订阅请求,将标识数据源的数据源标识符添加到该订阅请求。在这样的示例中,该一个或多个数据分组中的每一者可任选地包括标识提供了该数据分组中包括的所发布数据的数据源的数据源标识符,并且存储机可任选地保持可由逻辑机执行以进行以下操作的指令:对于每一数据源标识符,基于多个订阅请求建立订阅以接收对应数据源所提供的所发布数据的各模块的列表;以及响应于接收到该一个或多个数据分组,对于该一个或多个数据分组中的每一者,将该数据分组发送给模块列表上的订阅与该数据分组中的数据源标识符相对应的数据源的各模块,在这样的示例中,存储机可任选地保持可由逻辑机执行以进行以下操作的指令:对于一个或多个数据分组中的每一者,在将该数据分组发送给各模块之前从该数据分组移除数据源标识符。在这样的示例中,读请求可任选地根据周期性时间区间被周期性地发送给客户端计算设备的远程订阅管理器。在这样的示例中,该一个或多个数据分组中的每一者可任选地包括指示自客户端计算设备接收到最后读请求以来数据源已发布数据的次数的错过样本计数,并且存储机可任选地保持可由逻辑机执行以进行以下操作的指令:基于该一个或多个数据分组的错过样本计数来将周期性时间区间调整成经更新周期性时间区间;以及根据经更新周期性时间区间向客户端计算设备的远程订阅管理器周期性地发送对客户端计算设备的数据源所发布的数据的读请求。在这样的示例中,存储机可任选地保持可由逻辑机执行以进行以下操作的指令:对于一个或多个数据分组中的每一者,在将该数据分组发送给各模块之前从该数据分组移除错过样本计数。以上描述的示例中的任何一个或全部可按任何合适的方式被组合在各实现中。
[0287] 另一示例提供了一种在主机计算设备上的用于订阅所发布数据的方法,该方法包括:向客户端计算设备的远程订阅管理器发送多个订阅请求以接收由客户端计算设备的各数据源发布的数据;向客户端计算设备的远程订阅管理器周期性地发送对请求了对其的该多个订阅的各数据源所发布的数据的读请求,该读请求是根据周期性时间区间来发送的;从客户端计算设备的远程订阅管理器接收包括客户端计算设备的请求了对其的该多个订阅的各数据源所提供的所发布数据的多个数据分组,多个数据分组中的每一者包括数据源标识符和错过样本计数,数据源标识符标识提供了该数据分组中包括的所发布数据的数据源,并且错过样本计数指示自客户端计算设备的远程订阅管理器接收到最后读请求以来数据源已发布数据的次数;基于该多个数据分组的错过样本计数来将周期性时间区间调整成经更新周期性时间区间;以及根据经更新周期性时间区间将对所发布数据的读请求发送给客户端计算设备的远程订阅管理器。在这样的示例中,该方法可任选地还包括:从主机计算设备的多个模块接收多个订阅请求以接收所发布数据;对于请求了对其的订阅的每一数据源,建立订阅以接收该数据源所发布的数据的各模块的列表;以及响应于从客户端计算设备的远程订阅管理器接收到多个数据分组,对于该多个数据分组中的每一者,将该数据分组发送给模块列表上的订阅与该数据分组中的数据源标识符相对应的数据源的各模块。在这样的示例中,该方法可任选地进一步包括对于多个数据分组中的每一者,在将该数据分组发送给各模块之前从该数据分组移除数据源标识符和错过样本计数。在这样的示例中,调整周期性时间区间可任选地包括如果该多个数据分组中的任一者的错过样本计数大于阈值则降低周期性时间区间,并且如果该多个数据分组中的每一者的错过样本计数是零则增加周期性时间区间。以上描述的示例中的任何一个或全部可按任何合适的方式被组合在各实现中。
[0288] 另一示例提供了一种可穿戴计算设备,包括:配置成确定可穿戴计算设备的穿戴者的生物测定参数的多个生物测定传感器;以及配置成确定可穿戴计算设备的穿戴者的活动参数的多个模块,其中该多个模块中的第一模块直接订阅以接收来自多个生物测定传感器中的第一生物测定传感器的第一生物测定参数,其中第一模块对第一生物测定传感器的订阅指定激活第一生物测定传感器以将第一生物测定参数提供给第一模块以满足该订阅,并且其中第一模块被配置成从第一生物测定参数导出第一活动参数,并且其中该多个模块中的第二模块通过直接订阅以从第一模块接收第一活动参数来间接地订阅第一生物测定传感器,并且其中第二模块对第一模块的订阅指定激活第一模块以将第一活动参数提供给第二模块来满足该订阅。在这样的示例中,第二模块可任选地经由被动订阅来直接订阅该多个生物测定传感器中的第二生物测定传感器,其中该被动订阅指定在第二生物测定传感器已被激活来满足除该被动订阅以外的功能的情况下第二生物测定传感器向第二模块提供第二生物测定参数,并且其中第二模块被配置成在第二生物测定传感器被激活的情况下从第二生物测定参数导出第二活动参数以及在第二生物测定传感器未被激活的情况下从第一活动参数导出第二活动参数。在这样的示例中,第一模块可任选地被配置成基于第一生物测定参数确定穿戴者的状态,并且其中第二模块对第二生物测定传感器的被动订阅响应于第二参数指示穿戴者的状态变化而被修改。在这样的示例中,多个生物测定传感器可任选地包括皮肤电阻传感器、脉搏率传感器、皮肤温度传感器、加速度计、磁力计、陀螺仪以及全球定位传感器中的一者或多者。在这样的示例中,该多个活动模块可任选地包括步数计模块、卡路里计数模块、距离模块、以及跑步模块中的一者或多者。以上描述的示例中的任何一个或全部可按任何合适的方式被组合在各实现中。
[0289] 另一示例提供了一种计算设备,包括:多个硬件组件;以及多个模块;其中所述多个模块中的第一模块直接订阅以接收来自所述多个硬件组件中的第一硬件组件的第一参数,其中所述第一模块对所述第一硬件组件的订阅指定激活所述第一硬件组件以将所述第一参数提供给所述第一模块以满足所述订阅,并且其中所述第一模块被配置成从所述第一参数导出第二参数;以及其中所述多个模块中的第二模块通过直接订阅以从所述第一模块接收第二参数来间接地订阅所述第一硬件组件,并且其中所述第二模块对所述第一模块的订阅指定激活所述第一模块以将所述第二参数提供给所述第二模块来满足所述订阅。在这样的示例中,该计算设备可任选地是可穿戴设备,并且其中第一硬件组件是配置成确定可穿戴设备的穿戴者的生物测定参数的生物测定传感器。在这样的示例中,第二模块经由被动订阅来间接地订阅该多个硬件组件中的第二硬件组件,其中该被动订阅指定在第二硬件组件已经被激活以满足除该被动订阅以外的功能的情况下第二硬件组件向第二模块提供第三参数,并且其中第二模块被配置成在第二硬件组件被激活的情况下从第三参数导出第四参数并且在第二硬件组件未被激活的情况下从第二参数导出第四参数。在这样的示例中,第二模块对第二硬件组件的被动订阅可任选地响应于第二参数指示触发被修改。在这样的示例中,该订阅可任选地响应于该触发通过调整第二硬件组件产生第三参数的采样频率被修改。在这样的示例中,该订阅可任选地响应于该触发通过将该被动订阅切换成指定激活第二硬件组件以将第三参数提供给第二模块来满足该订阅的主动订阅被修改。在这样的示例中,该计算设备可任选地是可穿戴设备,其中第一硬件组件是配置成确定可穿戴设备的穿戴者的第一生物测定参数的生物测定传感器,其中第一模块被配置成基于第一生物测定参数来确定穿戴者的状态,并且其中该触发包括穿戴者的状态的变化。在这样的示例中,对第一硬件组件的订阅可任选地包括定义该订阅的一个或多个约束的一个或多个订阅修饰符。在这样的示例中,该一个或多个订阅修饰符可任选地包括第一硬件组件产生第一参数的采样频率,并且其中第一硬件组件以作为订阅以接收第一参数的各模块所指示的采样频率的最小公倍数的频率来产生第一参数。在这样的示例中,该一个或多个订阅修饰符可任选地包括第一硬件组件在其期间被激活产生第一参数的采样时段,并且其中第一硬件组件在订阅以接收第一参数的各模块所指示的采样时段中的最长采样时段期间产生第一参数。在这样的示例中,该一个或多个订阅修饰符可任选地包括一模块订阅以接收第一参数的订阅历时。在这样的示例中,该一个或多个订阅修饰符可任选地包括指定响应于一模块建立订阅以接收来自第一硬件组件的第一参数来将第一参数的最新近采样版本发送给该模块的即时通知约束。以上描述的示例中的任何一个或全部可按任何合适的方式被组合在各实现中。
[0290] 另一示例提供了一种计算设备,包括:配置成产生第一参数的第一硬件组件;配置成产生第二参数的第二硬件组件;具有主动订阅以接收来自第一硬件组件的第一参数的第一模块,该主动订阅需要周期性激活第一硬件组件以将第一参数提供给第一模块,第一模块被配置成基于第一参数来确定第三参数;以及具有主动订阅以从第一模块接收第三参数的第二模块,该主动订阅需要周期性激活第一模块以将第三参数提供给第二模块,第二模块具有被动订阅以接收来自第二硬件组件的第二参数,该被动订阅需要在第二硬件组件已被激活以满足除该被动订阅以外的功能的情况下第二硬件组件将第二参数提供给第二模块,第二模块被配置成在第二硬件组件被激活的情况下基于第二参数来确定第四参数以及在第二硬件组件未被激活的情况下基于第一模块所提供的第三参数来确定第四参数。在这样的示例中,第二模块对第二硬件组件的被动订阅可任选地响应于第二参数指示触发被修改。在这样的示例中,对第一硬件组件的订阅可任选地包括定义该订阅的一个或多个约束的一个或多个订阅修饰符。以上描述的示例中的任何一个或全部可按任何合适的方式被组合在各实现中。
[0291] 将会理解,本文描述的配置和/或方式本质是示例性的,这些具体实施例或本文示例不应被视为限制性的,因为许多变体是可能的。本文描述的具体例程或方法可以表示任何数量的处理策略中的一个或多个。如此,所示和/或所述的各种动作可以以所示和/或所述顺序、以其他顺序、并行地执行,或者被省略。同样,上述过程的次序可以改变。
[0292] 本公开的主题包括本文公开的各种过程、系统和配置以及其他特征、功能、动作和/或性质的所有新颖和非显而易见的组合和子组合,以及其任何和所有等同物。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈