远程仿真计算设备转让专利

申请号 : CN201280010310.0

文献号 : CN103548012B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 亚当·J·奥弗顿布鲁斯·J·麦肯齐伊桑·Z·埃文斯伊恩·S·W·康沃尔迈克尔·安东尼·弗拉兹尼保罗·A·莱德

申请人 : 亚马逊技术股份有限公司

摘要 :

公开了有助于远程仿真计算设备的各种实施方案。计算设备的型号和可在所述计算设备内执行的应用程序被识别。所述应用程序在托管环境内执行。所述应用程序的图象信号被编码成媒体流。所述用户界面被编码以在客户端内呈现。所述用户界面包括所述计算设备的型号的图形表示。所述计算设备的型号的图形表示的屏幕被配置为呈现来自所述媒体流的图象信号的至少一部分。

权利要求 :

1.一种用于远程仿真计算设备的方法,包括:

在计算设备内从服务器获得用户界面,所述用户界面包括移动计算设备的图形表示;

在所述计算设备内从所述服务器获得媒体流,所述媒体流包括从在仿真所述移动计算设备的虚拟化环境中执行的应用程序捕获的视频信号;和在所述计算设备中呈现所述用户界面,其中所述视频信号作为所述移动计算设备的所述图形表示的屏幕呈现。

2.根据权利要求1所述的方法,还包括:

在所述计算设备中获得关于所述移动计算设备的所述图形表示的用户输入,其中所述用户输入关于所述移动计算设备的输入设备的图形表示被输入;

在所述计算设备中生成至少一个输入命令来回应所述用户输入;和在所述计算设备中将所述至少一个输入命令发送至所述服务器。

3.一种用于远程仿真计算设备的系统,包括:

至少一个计算设备;和

在所述至少一个计算设备内可执行的第一应用,所述第一应用包括:识别计算设备的型号和在所述计算设备内可执行的第二应用的逻辑;

在托管环境中执行所述第二应用并将所述第二应用的视频信号编码成媒体流的逻辑;

编码用户界面以在客户端内呈现的逻辑,所述用户界面包括所述计算设备的所述型号的图形表示,其中所述计算设备的所述型号的所述图形表示的屏幕被配置为呈现来自所述媒体流的视频信号的至少一部分。

4.根据权利要求3所述的系统,其中所述计算设备的所述型号的所述图形表示包括与所述计算设备的所述型号关联的至少一个输入设备的图形表示。

5.根据权利要求3所述的系统,其中所述计算设备为移动计算设备。

6.根据权利要求3所述的系统,其中所述第一应用还包括:将所述用户界面和所述媒体流发送至所述客户端的逻辑;

从所述客户端获得输入命令的逻辑,其中所述用户界面还被配置为生成所述输入命令以回应用户与输入设备的图形表示的交互;和通过虚拟化输入设备将所述输入命令提供至所述第二应用的逻辑。

7.根据权利要求3所述的系统,其中所述计算设备的所述型号为所述计算设备的通用型号。

8.根据权利要求3所述的系统,其中所述用户界面还包括用于发起对所述第二应用的购买的组件。

9.根据权利要求3所述的系统,其中所述用户界面还包括用于将所述第二应用添加至物品列表的组件。

10.根据权利要求3所述的系统,其中所述用户界面还包括用于旋转所述计算设备的所述型号的所述图形表示的组件。

11.根据权利要求3所述的系统,其中所述第一应用还包括超过预定义的时间周期后停止执行所述第二应用的逻辑。

12.根据权利要求3所述的系统,其中所述第二应用并非固有地在所述客户端内可执行。

13.根据权利要求3所述的系统,其中所述第一应用还包括将由所述第二应用生成的音频信号编码成所述媒体流的逻辑,其中所述用户界面被配置为在所述客户端内播放所述音频信号。

14.根据权利要求3所述的系统,其中所述托管环境包括被配置为虚拟化至少一个输入设备的虚拟化环境,而从所述客户端获得的输入数据通过所述至少一个输入设备被提供至所述第二应用。

15.一种用于远程仿真计算设备的系统,包括:至少一个计算设备;和

在所述至少一个计算设备内可执行的第一应用,所述第一应用包括:识别计算设备的型号和在所述计算设备内可执行的第二应用的逻辑;

在托管环境中执行所述第二应用并将所述第二应用的输出编码成媒体流的逻辑;和编码用户界面以在客户端内呈现的逻辑,所述用户界面包括所述计算设备的所述型号的图形表示,其中所述图形表示被更新以回应所述媒体流。

16.根据权利要求15所述的系统,其中所述计算设备的所述型号的所述图形表示包括显示设备的图形表示,而所述媒体流包括用于更新所述显示设备的图形表示的数据。

说明书 :

远程仿真计算设备

[0001] 相关申请案的交叉引用
[0002] 本申请要求于2011年3月21日提交的名称为"REMOTELY EMULATING COMPUTING DEVICES"的美国临时专利申请号61/454,986,和于2011年5月24日提交的名称为"REMOTELY EMULATING COMPUTING DEVICES"的美国专利申请号13/114,534的优先权和权益,其内容以全文引用的方式并入本文。

技术领域

[0003] 本发明申请涉及远程仿真计算设备。

背景技术

[0004] 存在许多特殊形式的计算设备,比如智能手机、电子书阅读器、平板电脑、视频游戏控制台等。由于这种设备之间的物理差异,不同设备的应用可不同。即便是同一设备类别(比如,智能手机),不同型号的智能手机可具有不同的显示和输入特征。

发明内容

[0005] 描述了一种用于远程仿真计算设备的系统,包括:至少一个计算设备;和在所述至少一个计算设备内可执行的第一应用,所述第一应用包括:识别计算设备的型号和在所述计算设备内可执行的第二应用的逻辑;在托管环境中执行所述第二应用并将所述第二应用的视频信号编码成媒体流的逻辑;和编码用户界面以在客户端内呈现的逻辑,所述用户界面包括所述计算设备的所述型号的图形表示,其中所述计算设备的所述型号的所述图形表示的屏幕被配置为呈现来自所述媒 体流的视频信号的至少一部分。
[0006] 在一个实施方式中,所述计算设备的所述型号的所述图形表示包括与所述计算设备的所述型号关联的至少一个输入设备的图形表示。
[0007] 在一个实施方式中,所述计算设备为移动计算设备。
[0008] 在一个实施方式中,所述第一应用还包括:将所述用户界面和所述媒体流发送至所述客户端的逻辑;从所述客户端获得输入命令的逻辑,其中所述用户界面还被配置为生成所述输入命令以回应用户与输入设备的图形表示的交互;和通过虚拟化输入设备将所述输入命令提供至所述第二应用的逻辑。
[0009] 在一个实施方式中,所述计算设备的所述型号为所述计算设备的通用型号。
[0010] 在一个实施方式中,所述用户界面还包括用于发起对所述第二应用的购买的组件。
[0011] 在一个实施方式中,所述用户界面还包括用于将所述第二应用添加至物品列表的组件。
[0012] 在一个实施方式中,所述用户界面还包括用于旋转所述计算设备的所述型号的所述图形表示的组件。
[0013] 在一个实施方式中,所述第一应用还包括超过预定义的时间周期后停止执行所述第二应用的逻辑。
[0014] 在一个实施方式中,所述第二应用并非固有地在所述客户端内可执行。
[0015] 在一个实施方式中,所述第一应用还包括将由所述第二应用生成的音频信号编码成所述媒体流的逻辑,其中所述用户界面被配置为在所述客户端内播放所述音频信号。
[0016] 在一个实施方式中,所述托管环境包括被配置为虚拟化至少一个输入设备的虚拟化环境,而从所述客户端获得的输入数据可以通过所述至少一个输入设备被提供至所述第二应用。
[0017] 描述了另一种用于远程仿真计算设备的系统,包括:至少一个计算设备;和在所述至少一个计算设备内可执行的第一应用,所述第一应用包括:识别计算设备的型号和在所述计算设备内可执行的第二应用的逻辑;在托管环境中执行所述第二应用并将所述第二应用的输出编码成媒体流的逻辑;和编码用户界面以在客户端内呈现的逻辑,所述用户界面包括所述计算设备的所述型号的图形表示,其中所述图形表示被更新以回应所述媒体流。
[0018] 在一个实施方式中,所述计算设备的所述型号的所述图形表示包括显示设备的图形表示,而所述媒体流包括用于更新所述显示设备的图形表示的数据。
[0019] 描述了一种包含在计算设备中可执行的程序的非暂时性计算机可读介质,所述程序包括:确定仿真的计算设备的多个型号的其中之一的代码;从客户端获得对在所述仿真的计算设备内可执行的应用的选择的代码;在托管环境中执行所述应用的代码;将所述应用生成的视频信号和音频信号编码成媒体流的代码;生成包括所述仿真的计算设备的所述型号的所述其中之一的图形表示的用户界面的代码,其中来自所述媒体流的所述视频信号被配置为在所述仿真的计算设备的所述型号的所述其中之一的屏幕的图形表示上呈现;将所述用户界面和所述媒体流发送至所述客户端的代码;从所述客户端获得输入命令的代码,所述输入命令通过用户与所述仿真的计算设备的所述型号的所述其中之一的所述图形表示交互生成;和将所述输入命令提供至在所述托管环境中执行的所述应用的代码。
[0020] 在一个实施方式中,所述仿真的计算设备为移动计算设备。

附图说明

[0021] 参考以下附图可更好地理解本公开的许多方面。图中的部件不需要按比例绘制,重点在于清楚地说明本公开的原理。此外,在附图中,所有附图中相同附图标记表示相应的部分。
[0022] 图1是根据本公开的各种实施方案的网络化环境的图。
[0023] 图2A和2B是呈现在图1中根据本公开的各种实施方案的网络化环境中的客户端内的用户界面的实例。
[0024] 图3是图示作为在图1中的根据本公开的各种实施方案的网络化环境中的计算设备内执行的仿真服务器应用程序的部分实现的功能性的一个实例的流程图。
[0025] 图4是图示作为在图1中的根据本公开的各种实施方案的网络化环境中的计算设备内执行的电子商务应用程序的部分实现的功能性的一个实例的流程图。
[0026] 图5是提供对在图1中的根据本公开的各种实施方案的网络化环境中使用的计算设备的一个实例说明的示意框图。

具体实施方式

[0027] 本公开涉及通过网络仿真计算设备。用户可能希望通过网络购买用于各种计算设备的应用程序。为了做出知情的购买决策,用户可能希望在购买之前尝试应用程序。然而,用户可能正使用来自计算设备的要运行该应用程序的不同客户端设备。例如,用户可能正在使用台式计算机搜索用于移动设备(比如,智能手机)的应用程序。本公开的各种实施方案使用户能够使用在仿真的计算设备上远程运行的应用程序。此外,在一些实施方案中,用户或许能够通过关联的用户界面购买应用程序。在以下的讨论中,提供了对系统及其组件的总体描述,接着讨论了系统及其组件的操作。
[0028] 在于2010年11月5日提交的名称为"Providing Remote Access to Games Designed for a Single-Machine Experience"的美国专利申请和转让的申请号12/940,132、于2010年12月9日提交的名称为"Enhancing User Experience by Presenting Past Application Usage"的美国专利申请和转让的申请号12/964,225、于2010年12月15日提交的名称为"Sending Application Input Commands over a Network"的美国专利申请和转让的申请号12/968,845、于2010年12月14日提交的名称为"Load Balancing Between General-Purpose Processors and Graphics Processors"的美国专利申请和转让的申请号12/967,171、于2010年12月1日提交的名称为"Altering Streaming Video Encoding Based on User Attention"的美国专利申请和转让的申请号12/957,450,和于2010年11月
30日提交的名称为"Attention Misdirection for Streaming Video"的美国专利申请和转让的申请号12/956,693中描述了与远程执行应用程序有关的各种技术,其内容以全文引用的方式并入本文。
[0029] 参考图1,示出了根据各种实施方案的网络化环境100。网络化环境100包括通过网络109与一个或多个客户端106数据通信的一个或多个计算设备103。网络109包括,例如因特网、内联网、外联网、广域网(WAN)、局域网(LAN)、有线网络、无线网络或其它合适的网络等,或两个或更多这种网络的任意组合。
[0030] 计算设备103可包括,例如服务器计算机或任何其它提供计算能力的系统。可选地,可使用多个设置在,例如一个或多个服务器库或计算机库或其它布置中的计算设备103。例如,多个计算设备103一起可包括云计算资源、网格计算资源和/或任何其它分布式计算布置。这种计算设备103可被一次安装定位或分布于许多不同的地理位置。为了方便起见,计算设备103在文中被表示为单数。虽然计算设备103被表示为单数,但应理解,以上描述的各种布置中可使用多个计算设备103。
[0031] 根据各种实施方案,各种应用程序和/或其它功能性可在计算设 备103内执行。此外,各种数据储存于计算设备103可访问的数据存储器112。可以理解的是,数据存储器112可代表多个数据存储器112。例如,储存于数据存储器112的数据与以下描述的各种应用程序和/或功能实体的操作相关联。
[0032] 例如,在计算设备103上执行的组件包括仿真服务器应用程序115、电子商务应用程序117、多个包装器118a...118N、多个应用程序119a...119N、多个媒体编码器120a...120N以及文中未详细讨论的其它应用程序、服务、进程、系统、引擎或功能。仿真服务器应用程序115可与一种应用程序会话服务器类型对应。执行仿真服务器应用程序115以启动应用程序119,其内包装器118内执行。还执行仿真服务器应用程序115以从客户端106获得应用程序输入数据122,并将应用程序输入数据122提供给各个包装器118。
[0033] 还执行仿真服务器应用程序115以将从应用程序119捕获的应用程序输出数据123发送至客户端106。仿真服务器应用程序115可通过各种协议(比如,超文本传输协议(HTTP)、简单对象访问协议(SOAP)、表述性状态转移(REST)、实时传输协议(RTP)、实时流协议(RTSP)、实时消息传送协议(RTMP)、用户数据报协议(UDP)、传输控制协议(TCP),和/或其它通过网络109用于通信的协议)与客户端106通信。仿真服务器应用程序115被配置为保持与执行应用程序119关联的状态信息124和输入队列125。
[0034] 在各种实施方案中,仿真服务器应用程序115可被配置为使用一个或多个网页生成用户界面。网页可包括由仿真的应用程序119生成的流视频和/或音频。在各种实施方案中,虚拟输入设备的图像可与流视频和/或音频一起显示。例如,仿真的计算设备的虚拟键盘可包括在网页内。在仿真的计算设备为移动计算设备的情况下,该移动计算设备的图像可包括在网页内。仿真服务器应用程序115可与应用程序119一起促进与移动计算设备的图像的相互作用。在仿真的计算设备与具有屏幕的移动计算设备相对应的情况下,从应用程序119捕获 的视频可被移动计算设备的图像围绕,就好像视频显示在移动计算设备的屏幕上一样。
[0035] 执行电子商务应用程序117是为了帮助通过网络109在线从商家购买物品,比如下载的应用程序。电子商务应用程序117还执行与商家在线出现关联的各种后端功能以帮助在线购买物品。例如,为了选择用于购买、租借、下载、租用或其它消费形式的物品,电子商务应用程序117可生成提供给客户端106的网页或部分网页。在一些实施方案中,电子商务应用程序117与包括多个商家参与的电子市场的网站关联。
[0036] 应用程序119可与例如,游戏或其它类型的应用程序对应。作为非限制性实例,应用程序119可与第一人称射击游戏、动作游戏、冒险游戏、玩家游戏、角色扮演游戏、模拟游戏、战略游戏、车辆模拟游戏和/或其它类型的游戏对应。最初设计应用程序119可能是为了在通用计算设备或专用设备(比如,智能手机、视频游戏控制台、掌上游戏设备、街机游戏设备等)内执行。应用程序119也可对应于移动电话应用程序、计算机辅助设计(CAD)应用程序、计算机辅助制造(CAM)应用程序、照片处理应用程序、视频编辑应用程序、办公室生产率应用程序、操作系统和关联的应用程序、操作系统仿真器、体系结构,和消费者设备上不存在的性能,以及其它应用程序和应用程序的组合。
[0037] 应用程序119可期望访问其上执行应用程序119的设备的一个或多个资源。这种资源可与显示设备、输入设备或其它设备对应。在某些情况下,应用程序119可请求对资源的一个或多个的独占访问,由此其它应用程序均不可访问该特定资源。
[0038] 包装器118与为执行应用程序119提供托管环境的应用程序对应。在各种实施方案中,包装器118可被配置为通过将应用程序119期望访问的资源的一个或多个虚拟化为应用程序119提供虚拟化环 境。这种资源可包括键盘、鼠标、操纵杆、视频设备、声音设备、全球定位系统(GPS)设备、加速计、触摸屏、内置按钮、文件系统、内置电池等。这样,包装器118便能够将输入命令和其它数据提供至应用程序119,就像包装器118仿真键盘、鼠标或另一种类型的硬件设备一样。
[0039] 进一步地,包装器118能够获得由应用程序119生成的图象信号和/或音频信号,就好像包装器118仿真显示设备、音频设备或另一种类型的输出设备那样。尽管本文讨论的许多实例涉及具有显示器的仿真的计算设备,但是仿真的计算设备也可包括,例如机顶盒、音频播放器、和/或不具有集成显示屏的其它设备。包装器118能够通过一个或多个媒体编码器120将图象信号和/或音频信号编码成媒体流。为此,包装器118可包括各种类型的媒体编码器120,比如运动图像专家组(MPEG)、编码器、H.264编码器、 视频编码器等。这种媒体编码器120可根据因素,比如数据简化、编码质量、等待时间等选择。在一些实施方案中,包装器118可直接与客户端106通信以获得应用程序输入数据122并提供应用程序输出数据123。
[0040] 可为不同的应用程序119或不同类别的应用程序119提供不同类型的包装器118。作为非限制性实例,可为使用不同应用程序编程接口(APIs),比如
图形设备接口(GDI)等的应用程序119提供不同的包装器118。在应用程序119被配置为在专用设备或另一种类型的计算设备中执行的情况下,包装器118可包括仿真该设备的仿真应用程序。在一些实施方案中,应用程序119的输出可在设备级被包装器118捕获。例如,应用程序119可在物理游戏控制台内执行,视频输出可通过视频图形阵列(VGA)连接、高清晰度多媒体界面(HDMI)连接、分量视频连接、国家电视系统委员会(NTSC)电视连接和/或其它连接捕获。在其它实施方案中,应用程序119的输出可由包装器118通过截取系统调用(比如,图形API下的绘图调用或其它系统调用)捕获。
[0041] 由仿真服务器应用程序115保持的状态信息124包括各种与当前活动的应用程序会话有关的数据。例如,状态信息124可追踪当前参与应用程序会话的用户、与用户关联的状态信息、与应用程序会话关联的安全许可(例如,谁能够或不能参加)等。在一些实施方案中,当应用程序会话结束时,部分或所有状态信息124可被丢弃。输入队列125从给定应用程序119的应用程序输入数据122收集输入命令。可重新排序输入命令以校正序列,且可在命令之间插入延迟以确保当输入命令被提供给相应的应用程序119时,被正确地解释。
[0042] 储存于数据存储器112的数据包括,例如应用程序127、媒体编码器129、包装器130、保存的状态数据133、用户数据136、设备界面137以及可能的其它数据。应用程序127与不同的应用程序(其可作为应用程序119启动)库对应。应用程序127可与计算设备103内的可执行代码对应。可选地,应用程序127可与可在另一种类型的设备内执行但是不可在计算设备103内执行的代码对应。这种应用程序127可称为“二进制”、只读存储器(ROMs)图像以及其它术语。特定应用程序127可作为用于多个应用程序会话的应用程序119的多个实例执行。
[0043] 媒体编码器129与可在计算设备103内使用的各种类型的媒体编码器120对应。一些媒体编码器129可与特定格式,比如H.264、MPEG-4、MPEG-2和/或其它格式对应。包装器130与实现各种类型的包装器118的可执行代码对应。包装器130可在计算设备103内执行,且可作为用于多个应用程序会话的包装器118的多个实例执行。
[0044] 保存的状态数据133与应用程序119保存的游戏状态对应。由于应用程序119可在虚拟化环境中执行,因此应用程序119可将状态信息写入虚拟位置,然后该状态信息被映射以作为保存的状态数据133存储于数据存储器112中。保存的状态数据133可与通常由应用程序119保存的数据对应,或可与应用程序119的可在任何时间重新开始的存储器图像对应。用户数据136包括各种与应用程序119的用户有 关的数据,比如与用户关联的计算设备的类型、安全证书、应用程序偏好、计费信息、被允许参与由用户发起的应用程序会话的其它用户列表等。
[0045] 设备界面137与图像、动画、代码、超文本标记语言(HTML)、可扩展标记语言(XML)、层叠样式表(CSS)、和/或其它可用于生成虚拟化计算设备的图形表示的数据对应。应注意,可在特定计算设备平台上执行的应用程序119可与多个设备界面137关联。作为非限制性实例,多种不同型号的智能手机可支持用于智能手机的 平台。所述型号的一些可具有带有触摸屏的微型键盘,而其它型号可能只具有不带有物理微型键盘的触摸屏。所述型号可具有不同的控制器和外壳。因此,可为不同型号的 智能手机提供不同的设备界面137。
[0046] 在一些实施方案中,多个不同的设备界面137可与一个包装器130结合使用。在仿真的计算设备不包括集成显示器的情况下,设备界面137可包括显示由仿真的计算设备生成的视频的外部显示设备的表示。同样地,其它可连接至仿真的计算设备的非集成外部设备(例如,键盘、鼠标等)可由设备界面137表示。
[0047] 客户端106代表多个可耦合至网络109的客户端设备。客户端106在地理上可以是不同的。客户端106可包括,例如基于处理器的系统,比如计算机系统。这种计算机系统可以台式电脑、手提电脑、个人数字助理、移动电话、智能手机、机顶盒、执行应用程序并能够访问网络109的电视、音乐播放器、网络平板(web pads)、平板电脑系统、游戏控制台、电子书阅读器、或其它具有相似能力的设备的形式体现。
[0048] 客户端106可包括显示器139。显示器139可包括,例如一个或多个设备,比如,阴极射线管(CRT)、液晶体显示(LCD)屏、基于气体等离子的平板显示器、LCD投影仪或其它类型的显示设备等。客 户端106可包括一个或多个输入设备142。输入设备142可包括,例如设备,比如键盘、鼠标、操纵杆、加速计、光笔、游戏控制器、触摸板、触摸杆、按钮、光学传感器、麦克风、网络摄像机和/或任何其它能够提供用户输入的设备。此外,各种输入设备142可包含触感技术以便为用户提供反馈。
[0049] 客户端106可被配置为执行各种应用程序,比如客户端应用程序145和/或其它应用程序。执行客户端应用程序145以允许用户启动、参与、播放在计算设备103内执行的应用程序119或与其交互。为此,客户端应用程序145被配置为捕获用户通过输入设备142的一个或多个提供的输入命令,并通过网络109将该输入作为应用程序输入数据122发送至计算设备103。应用程序输入数据122也可包含客户端106生成的供应用程序119使用的其它数据,例如GPS数据、音频数据等。在各种实施方案中,客户端应用程序145与浏览器应用程序对应。
[0050] 客户端应用程序145还被配置为通过网络109从计算设备103获得应用程序输出数据123,并将屏幕148显示在显示器139上。为此,客户端应用程序145可包括一个或多个视频和音频播放器以播放应用程序119生成的媒体流。在一个实施方案中,客户端应用程序145包括在浏览器应用程序内执行的插件或其它客户端代码。客户端106可被配置为执行客户端应用程序145以外的应用程序,比如浏览器应用程序、电子邮件应用程序、即时消息应用程序和/或其它应用程序。在一些实施方案中,可为一个或多个用户使用多个客户端106以与应用程序119交互。作为非限制性实例,一些客户端106可专用于显示输出,而其它客户端106可专用于获得用户输入。应注意,不同客户端106可与不同的等待时间要求(其可影响在将输入命令提供至应用程序119之前使用的延迟)关联。
[0051] 现在转到图2A,示出了在网络化环境100(图1)中的客户端106(图1)内执行的客户端应用程序145(图1)内呈现的用户界面200的一个实例。图2A中示出的用户界面200与电子商务应用程序 117(图1)生成的网页对应。该网页与用于应用程序127(图1)的可通过电子商务应用程序117下载的详细网页对应。用户界面200包括对应用程序127的描述201,在本实例中,其名为"The Stupid Quiz",定价0.99美元。可下载应用程序127用于 设备。用户界面200内可提供各种截屏和其它描述性信息。用户界面200也可包括至相似物品的链接。
[0052] 为用户提供了仿真请求工具203以通过仿真服务器应用程序115(图1)启动应用程序127的会话。这种情况下,当用户激活仿真请求工具203时,用户便能够在与要在其上执行应用程序127的计算设备相似的虚拟化环境中使用应用程序127。激活仿真请求工具203可使得加载新的网页和/或画面、灯箱或用户界面200内的其它组成部分。可提供购买组件206以购买应用程序127以便在特定计算设备上使用。在该非限制性实例中,用户与两个与应用程序127兼容的计算设备:“设备1”和“设备2”关联。在其它实例中,可将与用户关联的不兼容设备列为不兼容的。也可将应用程序127添加至购物车、愿望列表、礼物登记或任何其它类型的物品列表。
[0053] 继续至图2B,示出了在网络化环境100(图1)中的客户端106(图1)内执行的客户端应用程序145(图1)内呈现的用户界面200的另一个实例。图2B中示出的用户界面200与电子商务应用程序117(图1)生成的(如在图2A中那样)但是被用户界面250(即灯箱)覆盖的网页对应。在其它实例中,用户界面250可以全屏格式或另一种格式呈现。部分用户界面250可由电子商务应用程序117生成,而用户界面250的其它部分可由仿真服务器应用程序115(图1)生成。
[0054] 用户界面250包括设备界面253(其为仿真的计算设备的图形表示),这种情况下其为特定型号的 智能手机。在一些实例中,设备界面253可与仿真的计算设备的通用版本,例如 智能手机的通用版本对应。用户可在用户界面200或用户界面250中指定使用哪种型号。此外,对于一种仿真的计算设备型号的偏好可储存于用 户数据136中。
[0055] 设备界面253由仿真服务器应用程序115从合适的设备界面137(图1)生成。设备界面253包括虚拟形式的输入按钮254和/或实际设备上的其它控制器。动画和/或图像可用于将物理体验转化为虚拟体验。在设备界面253内的是屏幕148(图1),其与包装器118(图1)从与选择的应用程序127(图1)对应的应用程序119(图1)捕获的媒体流的视频部分对应。客户端应用程序145可结合媒体流的视频部分播放媒体流的音频部分。可提供音频硬件控制器255来控制来自仿真的计算设备的音频播放,例如增大或降低音频的音量。在其它实例中,可提供其它硬件控制器,例如录音、快进、倒带、停止、上一曲、下一曲、屏幕亮度、选择的显示设备等。
[0056] 用户界面250也可包括描述性信息256,其可以是用户界面200内的描述201(图2A)的缩略版本。描述性信息256可包括名称、发行人、价格、叙述性描述和/或有关应用程序127的其它信息。在该非限制性实例中,用户界面250包括计时器259,这是因为可能的购买用于测试应用程序127所花费的时间受到限制。在其它实例中,用户使用应用程序127的时间可不受限制。
[0057] 用户界面250可包括旋转屏幕148的定向的定向控制器262。激活这种定向控制器262可实现加速计或其它设备的虚拟化形式以告知应用程序119仿真的计算设备的定向已被改变,例如从纵向变为横向,反之亦然。用户界面250也可包括一个或多个购买组件265,其用于启动对应用程序127的购买或将应用程序127添加至购物车、愿望列表、礼物登记或可理解的其它物品列表。
[0058] 接下来,参考图1、2A和2B,提供了对网络化环境100的各种组件的操作的整体描述。首先,客户端106的用户浏览由电子商务应用程序117提供的网站。用户可,例如导航目录分类、执行搜索查询、选择链接和/或执行其它导航功能。用户可到达详细的网页,比如图 2A所示的用户界面200或另一个以用于下载的应用程序127为特征的相似网页。用户可指定一个或多个优选的仿真的计算设备的型号,用户搜索应用程序127正是为此。
[0059] 除了购买和/或下载应用程序127,用户或许有机会通过模拟界面使用应用程序127。为此,客户端106的用户通过例如激活仿真请求工具203,向仿真服务器应用程序115发送启动应用程序119的请求。仿真服务器应用程序115从数据存储器112获得相应的应用程序127、媒体编码器129、包装器130和设备界面137。然后,仿真服务器应用程序115启动相应的包装器118内的应用程序119。仿真服务器应用程序115追踪状态信息124内的应用程序
119的状态。
[0060] 包装器118为应用程序119的执行提供托管环境。在一些实施方案中,托管环境可包括用于应用程序119的虚拟化环境,其使计算设备103的一个或多个资源虚拟化。这种资源可包括独占资源,即应用程序119请求独占访问的资源。例如,应用程序119可从视频设备请求全屏访问,该视频设备为独占资源,因为通常只有一个应用程序可全屏访问。此外,包装器118可使输入设备,比如键盘、鼠标、GPS设备、加速计等(其实际上可并不存在于计算设备103内)虚拟化。包装器118也可为应用程序119提供对虚拟文件系统的访问。在各种实施方案中,包装器118可与虚拟计算机对应,和/或包装器118可在虚拟计算机内执行。
[0061] 客户端106的用户通过使用客户端106的输入设备142输入用于应用程序119的输入命令。作为非限制性实例,用户可点击鼠标左键。因此,客户端应用程序145运行将输入命令编码成可通过网络109在应用程序输入数据122内传输的格式。仿真服务器应用程序115接收输入命令,将其添加至用于应用程序119的输入队列125,最后将其传送至包装器118。然后,包装器118通过虚拟化鼠标为应用程序119提供鼠标左键点击。
[0062] 应注意,如果一接收到输入命令就将其提供至应用程序119,则网络109的可变等待时间特性可导致一些输入命令被应用程序119错误解释。作为非限制性实例,如果第一次单击被网络109延迟的量大于第二次单击被延迟的量,则两次单击鼠标键可被误解为双击。类似地,如果某些输入命令之间的相对时间关系未被保存,则鼠标点击和鼠标拖动可能会被误解。
[0063] 作为另一个非限制性实例,假设应用程序119与格斗游戏类型,例如Mortal Kombat、Street Fighter等内的游戏应用程序对应。客户端106的用户可通过一序列快速输入命令执行一系列复杂的动作。如果输入命令通过网络109经受了可变等待时间,则一系列的动作可被应用程序119错误解释,从而导致用户控制的字符不执行预期的动作。例如,在某段时间内需要按下两个按钮以顺利执行拳击动作。如果第二输入命令被网络109延迟,但是第一输入命令未被延迟,则用户没有任何错误动作也可能失败。为了解决该问题,仿真服务器应用程序115可延迟第一输入命令以保持第一和第二输入命令之间的相对时间关系。这样做,用户执行的姿势或命令序列便为应用程序119保存下来。
[0064] 尽管可预定使用的附加延迟,但是也可基于当在客户端106生成时命令之间的时间周期与当被仿真服务器应用程序115接收时命令之间的时间周期的差值计算。可通过参考与命令关联的元数据内的时戳来确定当在客户端106生成时,命令之间的时间周期。应注意,系统中各种固定的等待时间(例如,视频编码延迟、最低网络等待时间)不会对应用程序119的功能产生不利影响。
[0065] 于2010年10月29日提交的名称为"Adding Latency to Improve Perceived Performance"的美国专利申请和转让的申请号12/916,111以及于2010年9月17日提交的名称为"Accommodating Latency in a Service-Based Application"的美国专利申请和转让的申请号12/885,296中描述了各种与增加等待时间和调节等待时间有关的技 术,其内容以全文引用的方式并入本文。
[0066] 在某些情况下,将输入命令提供至应用程序119的延迟可至少部分地取决于与输入命令关联的视频帧区域。作为非限制性实例,当应用程序119为游戏时,延迟与玩游戏有关的输入命令以保持输入命令的意义会是很重要的。然而,游戏屏幕148也可包括聊天窗口,输入命令可以是通过聊天窗口被发送至游戏中的另一个播放器的文本。如果输入命令与聊天窗口有关,则包装器118可被配置为将输入命令提供至应用程序119而无附加延迟。即,优选的是尽可能快地将文本发送至另一个用户。因此,延迟可取决于输入命令是否与屏幕148的作为聊天窗口的区域有关。此外,应理解,应用程序119可具有多种模式,在一种模式与提供输入命令时的延迟关联的情况下,另一种模式则不会。
[0067] 当用户在客户端106内生成输入命令时,确保输入命令与呈现在用户屏幕148上的视频帧同步也很重要。作为非限制性实例,由于系统的各种等待时间,格斗游戏中用户控制的字符所要投掷的火球可能要被晚点投掷。在某些情况下,这可能无关紧要。例如,用户可能只是想投掷火球,其完全接受投掷火球时的短暂延迟。然而,为了更精确,应用程序119可支持API,其允许包装器118将帧编号或其它时间标识符与输入命令关联。因此,应用程序119可精确地知晓输入命令何时被执行并相应地作出反应。帧编号或其它时间标识符可作为用于输入命令的元数据由客户端应用程序145发送至仿真服务器应用程序115。
[0068] 在一些实施方案中,不同的输入命令可从由客户端106生成的输入命令被提供至应用程序119。作为非限制性实例,如果用户发送按下鼠标命令,且客户端应用程序145失去焦点,则包装器118可被配置为发送按下鼠标命令之后紧接着发送松开鼠标命令。在各种实施方案中,根据另一种方法,输入命令可被尽可能快地转送至包装器118,或包装器118可将输入命令排入输入队列125中并从该队列按顺序转 送至应用程序119。
[0069] 同时,应用程序119的图形输出被包装器118捕获并被编码成媒体流。此外,应用程序119的音频输出可被捕获且被复用成媒体流。在一些实施方案中,应用程序119的图形输出和/或音频输出可被计算设备103的硬件设备捕获。媒体流作为应用程序输出数据123通过网络109被仿真服务器应用程序115传输至客户端106。客户端应用程序145获得应用程序输出数据123并在用户界面250内使屏幕148呈现在显示器139上。屏幕148可被从相应的设备界面137(其有助于仿真的计算设备的输入和输出)生成的设备界面253围绕。
[0070] 在一些实施方案中,用户可在一个106开始应用程序119,并在另一个客户端106继续应用程序119。此外,处于不同地点的多个用户可加入应用程序119。作为非限制性实例,应用程序119可已被开发出可在一个具有多个控制器的设备内执行。因此,包装器118可被配置为将输入命令从一个客户端106映射至第一虚拟控制器,以及将输入命令从另一个客户端106映射至第二虚拟控制器。作为另一个非限制性实例,应用程序119可已被开发出可在一个设备内执行,其中键盘的一侧控制第一播放器,键盘的另一侧控制第二播放器。因此,包装器118可被配置为将输入命令从一个客户端106映射至虚拟键盘一侧的按键,以及将输入命令从另一个客户端106映射至虚拟键盘另一侧的按键。
[0071] 各种实施方案使通过客户端106内的一种类型的输入设备142生成的输入能够被包装器118转换成通过完全不同类型的虚拟输入设备提供至应用程序119的输入命令。作为非限制性实例,由客户端106内的加速计生成的输入可被包装器118转化成通过虚拟鼠标提供的输入。因此,可在应用程序119中使用完全不同类型的输入设备142,当执行应用程序119时,可能未考虑其。
[0072] 在输入设备142包含触感技术和设备的情况下,应用程序输出数 据123内的力反馈可被提供至输入设备142。作为非限制性实例,力反馈可程控模拟汽车方向盘以为用户提供路的感觉。当用户转弯或加速时,方向盘可阻止转弯或脱离控制。作为另一个非限制性实例,输入设备142的温度可被配置为根据力反馈改变。在一个实施方案中,由一个客户端106的应用程序输入数据122生成的力反馈可包括在发送至另一个客户端106的应用程序输出数据123内。
[0073] 由于客户端106与应用程序119的硬件要求分离,可通过各种不同的客户端106(其能够通过网络109以可接受的带宽和等待时间流式传输视频)远程使用应用程序119。例如,游戏应用程序119可在客户端106(智能手机)上播放。因此,客户端106不需要包括昂贵的图形硬件来进行执行应用程序119所必须的复杂的三维呈现。相比之下,可根据需要升级计算设备103的硬件来满足最新和计算最为密集的应用程序119的硬件要求。在各种实施方案中,由仿真服务器应用程序115发送的媒体流中的图象信号可根据比特率和/或计算设备103和客户端106之间通过网络109的连接的其它特性缩放。
[0074] 以与其各自的计算设备相似的界面彻底测试应用程序127后,用户充分准备好购买应用程序127。用户可在任何时间通过选择各种购买组件206、265来选择购买、租用和/或下载应用程序127。此外,如果用户不具有特定版本的仿真的计算设备,其可在与虚拟版本交互之后决定购买仿真的计算设备的物理版本。
[0075] 接下来参考图3,示出了提供根据各种实施方案的仿真服务器应用程序115的一部分的操作的一个实例的流程图。应理解,图3的流程图只提供许多不同类型的功能布置(其可用于执行仿真服务器应用程序115的此处描述的部分的操作)的实例。作为替代,图3的流程图可被视为描述在根据一个或多个实施方案的计算设备103(图1)中执行的方法的步骤的实例。
[0076] 从方框303开始,仿真服务器应用程序115从客户端106(图1) 获得请求以开始针对特定应用程序127(图1)的应用程序仿真会话。在方框306,仿真服务器应用程序115确定仿真的计算设备的优选型号,该型号或者由客户端106的用户指定或与用户关联。在方框309,仿真服务器应用程序115确定是否没有优选型号的指示。如果没有指示优选的型号,或如果没有用于优选型号的设备界面137(图1),则仿真服务器应用程序115进行至方框310,并使用通用型号的仿真的计算设备来执行应用程序127并提供设备界面253(图2B)。然后,仿真服务器应用程序115继续进行至方框312。如果指示了优选的型号,则仿真服务器应用程序115也继续进行至方框312并使用优选的型号。
[0077] 在方框312,仿真服务器应用程序115生成用户界面250(图2B),其包括定制的设备界面253并将相应的数据发送至客户端106。在方框315,仿真服务器应用程序115加载应用程序127并在包装器118(图1)内执行与仿真的计算设备对应的应用程序119(图1)的实例。在方框318,仿真服务器应用程序115从包装器118捕获媒体流,其可被媒体编码器120(图1)和/或其它编码器编码。仿真服务器应用程序115将媒体流作为应用程序输出数据123(图1)发送至客户端106以在定制的设备界面253内呈现。在一些实施方案中,设备界面253可嵌入媒体流的图象信号。
[0078] 在方框321,仿真服务器应用程序115从客户端106获得应用程序输入数据122(图1)内的输入命令。仿真服务器应用程序115将输入命令提供给在包装器118内执行的应用程序119。在方框324,仿真服务器应用程序115确定会话是否结束。作为非限制性实例,会话可与计时器关联,计时器可能已超时。作为另一个非限制性实例,通过客户端106的用户交互,可明确会话已结束。作为再另一个非限制性实例,客户端106的用户无交互可暗示会话已结束。
[0079] 如果会话未结束,则仿真服务器应用程序115返回至方框318并继续从应用程序119捕获媒体流。如果会话结束,则仿真服务器应用 程序115进行至方框327,结束会话并释放会话所消耗的资源。此后,仿真服务器应用程序115的所述部分结束。
[0080] 进行至图4,示出了提供根据各种实施方案的电子商务应用程序117的一部分的操作的一个实例的流程图。应理解,图4的流程图只提供许多不同类型的功能布置(其可用于执行电子商务应用程序117的此处描述的部分的操作)的实例。作为替代,图4的流程图可被视为描述在根据一个或多个实施方案的计算设备103(图1)中执行的方法的步骤的实例。
[0081] 从方框403开始,电子商务应用程序117从客户端106(图1)获得关于应用程序127(图1)的详情网页的请求。在方框406,电子商务应用程序117生成网页并将网页发送至客户端106。在方框409,电子商务应用程序117从客户端106获得请求以启动应用程序仿真会话。在方框412,电子商务应用程序117与仿真服务器应用程序115一起为应用程序仿真会话生成用户界面250(图2B)或用户界面250的一部分,并将相应的数据发送至客户端106以在显示器139(图1)上呈现。
[0082] 在方框415,电子商务应用程序117获得购买应用程序127的请求。在方框418,电子商务应用程序117开始订购过程以完成用户对应用程序127的订购,订购渠道可涉及各种任务。此后,电子商务应用程序117的所述部分结束。
[0083] 参考图5,示出了根据本发明的实施例的计算设备103的示意框图。计算设备103包括至少一个处理器电路,例如具有处理器503、存储器506,以及可选择地一个或多个图形设备507,其均耦合至本地接口509。为此,计算设备103可包括,例如至少一个服务器计算机或相似设备。本地接口509可包括,例如具有附带地址/控制总线或其它可理解的总线结构的数据总线。图形设备507可与高性能的图形硬件对应,包括一个或多个图形处理器512。图形设备507被被配 置为呈现与计算设备103内的执行的应用程序119对应的图形。
[0084] 储存于存储器506的是可由处理器503执行的数据和一些组件。尤其是,储存于存储器506且可由处理器503执行的是仿真服务器应用程序115、电子商务应用程序117、包装器118、应用程序119、媒体编码器120以及可能的其它应用程序。数据存储器112和其它数据也可储存于存储器506。此外,操作系统可储存于存储器506,且可由处理器503执行。
[0085] 应理解,可存在其它储存于存储器506并可由处理器503执行的应用程序,如可理解的那样。在本文讨论的任何组件是以软件形式被执行的情况下,可使用许多编程语言(比如,C、C++、C#、Objective C、 Perl、PHP、或其它编程语言)中的任何一种。
[0086] 许多软件组件储存于存储器506中,并可由处理器503执行。就此而言,术语“可执行的”指的是最终可由处理器503运行形式的程序文件。可执行程序的实例可以是,例如编译程序,其可被转换成可载入存储器506的随机存取部分且可由处理器503运行格式的机器代码,可以适当格式表示的源代码(比如,能够被载入存储器506的随机存取部分且可由处理器503执行的目标代码),或可被另一个可执行程序解释以在存储器506的随机存取部分中生成将要由处理器503执行的指令的源代码等。可执行程序可储存于存储器506的任何部分或组件中,存储器506包括,例如随机存取存储器(RAM)、只读存储器(ROM)、硬盘驱动器、固态驱动器、USB快闪驱动器、存储卡、光盘(比如,压缩盘(CD)或数字化通用磁盘(DVD))、软盘、磁带或其它存储组件。
[0087] 本文中存储器506被定义为包括易失性和非易失性存储器两者和数据存储组件。易失性组件是指失电时不能保留数据值的那些。非易失性组件是指失电时保留数据的那些。因此,存储器506可包括, 例如随机存取存储器(RAM)、只读存储器(ROM)、硬盘驱动器、固态驱动器、USB快闪驱动器、可通过存储卡读卡器访问的存储卡、可通过关联的软盘驱动器访问的软盘、可通过光盘驱动器访问的光盘、可通过合适的磁带驱动器访问的磁带,和/或其它存储组件,或这些存储组件的任意两个或多个的组合。此外,RAM可包括,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM),或磁性随机存取存储器(MRAM)以及其它这种设备。ROM可包括,例如可编程序只读存储器(PROM)、可擦可编程序只读存储器(EPROM)、电可擦可编程序只读存储器(EEPROM),或其它相似的存储设备。
[0088] 此外,处理器503可代表多个处理器503,存储器506可代表多个存储器506,所述多个处理器503和多个存储器506分别在并联处理电路中工作。在这种情况下,本地接口509可以是合适的网络109(图1),其促进多个处理器503的任意两个之间的通信、任意一个处理器503和存储器506的任意一个之间的通信,或存储器506的任意两个之间的通信等。本地接口
509可包括被设计成协调通信,包括例如执行负载平衡的附加系统。处理器503可以是电气结构或一些其它可用的结构。
[0089] 尽管仿真服务器应用程序115、电子商务应用程序117、包装器118、应用程序119、媒体编码器120、客户端应用程序145(图1)和本文描述的其它各种系统可以软件或由以上讨论的通用硬件执行的代码的形式体现,但是作为替代,其还可以专用硬件,或软件/通用硬件和专用硬件的组合的形式体现。如果以专用硬件的形式体现,则可将其每一个可作为使用多种技术的任意一种或多种技术的组合的电路或状态机器来执行。这些技术可包括,但不限于离散逻辑电路(其具有当施加一个或多个数据信号时用于实现各种逻辑功能的逻辑门)、专用集成电路(其具有合适的逻辑门),或其它组件等。本领域中的技术人员通常熟知这种技术,因此本文未加以详细描述。
[0090] 图3和4的流程图示出电子商务应用程序117和仿真服务器应用 程序115的部分的实施方式的功能和操作。如果以软件的形式体现,则每一个方框可代表模块、代码段或部分代码,代码包括执行指定逻辑功能的程序指令。程序指令可以源代码的形式体现,源代码包括以编程语言或机器代码(其包括可由合适的执行系统,比如计算机系统内的处理器503或其它系统识别的数字指令)编写的人可读语句。机器代码可从源代码等转换。如果以硬件形式体现,则每一个方框可代表执行指定的逻辑功能的电路或多个互联的电路。
[0091] 尽管图3和4中的流程图示出具体的执行顺序,但是应理解执行顺序可与所描述的执行顺序不同。例如,两个或更多方框的执行顺序相对于示出的顺序可打乱。此外,可同时或部分同时地执行图3和4中连续示出的两个或更多方框。进一步地,在一些实施方案中,可跳过或省略图3和4中示出的方框的一个或多个。此外,为了增强实用性、记帐、性能测量、或提供故障排除帮助等,可向本文描述的逻辑流添加任何数量的计数器、状态变量、警告信号量或消息。应理解,所有这种变化均在本公开的范围内。
[0092] 此外,本文描述的包括软件或代码的任何逻辑或应用程序(包括仿真服务器应用程序115、电子商务应用程序117、包装器118、应用程序119、媒体编码器120和客户端应用程序145)可在任何非暂时性计算机可读介质中体现以供指令执行系统,比如计算机系统或其它系统中的处理器503使用或与其结合。在这种意义上,逻辑可包括,例如语句,其包括可从计算机可读介质获取并由指令执行系统执行的指令和声明。在本公开的上下文中,“计算机可读介质”可以是任何包括、存储或保存本文描述的以供指令执行系统使用或与其结合的逻辑或应用程序的介质。计算机可读介质可包括许多物理介质,比如磁、光或半导体介质中的任意一个。合适的计算机可读介质的更多具体实例将包括,但不限于磁带、磁性软盘、磁性硬盘驱动器、存储卡、固态驱动器、USB快闪驱动器或光盘。此外,计算机可读介质可以是随机存取存储器(RAM),包括例如静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM),或磁性随机存取存储器(MRAM)。此外, 计算机可读介质可以是只读存储器(ROM)、可编程序只读存储器(PROM)、可擦可编程序只读存储器(EPROM)、电可擦可编程序只读存储器(EEPROM)或其它类型的存储设备。
[0093] 条款
[0094] 1.一种包含可在计算设备中执行的程序的非暂时性计算机可读介质,所述程序包括:
[0095] 代码,其确定仿真的计算设备的多个型号的其中之一;
[0096] 代码,其从客户端获得对可在所述仿真的计算设备内执行的应用程序的选择;
[0097] 代码,其在托管环境中执行所述应用程序;
[0098] 代码,其将所述应用程序生成的图象信号和音频信号编码成媒体流;
[0099] 代码,其生成包括所述仿真的计算设备的所述型号的所述其中之一的图形表示的用户界面,其中来自所述媒体流的所述图象信号被配置为在所述仿真的计算设备的所述型号的所述其中之一的屏幕的图形表示上呈现;
[0100] 代码,其将所述用户界面和所述媒体流发送至所述客户端;
[0101] 代码,其从所述客户端获得输入命令,所述输入命令通过用户与所述仿真的计算设备的所述型号的所述其中之一的所述图形表示交互生成;和
[0102] 代码,其将所述输入命令提供至在所述托管环境中执行的所述应用程序。
[0103] 2.根据条款1所述的系统,其中所述仿真的计算设备为移动计 算设备。
[0104] 3.一种系统,包括:
[0105] 至少一个计算设备;和
[0106] 可在所述至少一个计算设备内执行的服务器应用程序,所述服务器应用程序包括:
[0107] 逻辑,其识别计算设备的型号和可在所述计算设备内执行的应用程序;
[0108] 逻辑,其在托管环境中执行所述应用程序并将所述应用程序的图象信号编码成媒体流;和
[0109] 逻辑,其编码用户界面以在客户端内呈现,所述用户界面包括所述计算设备的所述型号的图形表示,其中所述计算设备的所述型号的所述图形表示的屏幕被配置为呈现来自所述媒体流的所述图象信号的至少一部分。
[0110] 4.根据条款3所述的系统,其中所述计算设备的所述型号的所述图形表示包括与所述计算设备的所述型号关联的至少一个输入设备的图形表示。
[0111] 5.根据条款3所述的系统,其中所述计算设备为移动计算设备。
[0112] 6.根据条款3所述的系统,其中所述服务器应用程序还包括:
[0113] 逻辑,其将所述用户界面和所述媒体流发送至客户端;
[0114] 逻辑,其从所述客户端获得输入命令,其中所述用户界面进一步被配置为生成所述输入命令以回应用户与输入设备的图形表示的交互;和
[0115] 逻辑,其通过虚拟化输入设备将所述输入命令提供至所述应用程 序。
[0116] 7.根据条款3所述的系统,其中所述计算设备的所述型号为所述计算设备的通用型号。
[0117] 8.根据条款3所述的系统,其中所述用户界面还包括用于开始购买所述应用程序的组件。
[0118] 9.根据条款3所述的系统,其中所述用户界面还包括用于将所述应用程序添加至物品列表的组件。
[0119] 10.根据条款3所述的系统,其中所述用户界面还包括用于旋转所述计算设备的所述型号的所述图形表示的组件。
[0120] 11.根据条款3所述的系统,其中所述图象信号包括所述计算设备的所述型号的所述图形表示。
[0121] 12.根据条款3所述的系统,其中所述服务器应用程序还包括超过预定义的时间周期后停止执行所述应用程序的逻辑。
[0122] 13.根据条款3所述的系统,其中至少一些所述输入命令通过所述客户端的鼠标设备生成。
[0123] 14.根据条款3所述的系统,其中所述应用程序并非固有地可在所述客户端内执行。
[0124] 15.根据条款3所述的系统,其中所述服务器应用程序还包括将由所述应用程序生成的音频信号编码成所述媒体流的逻辑,其中所述用户界面被配置为在所述客户端内播放所述音频信号。
[0125] 16.根据条款3所述的系统,其中所述托管环境包括被配置为虚拟化至少一个输入设备的虚拟化环境,而从所述客户端获得的输入数据通过所述至少一个输入设备被提供至所述应用程序。
[0126] 17.一种方法,其包括以下步骤:
[0127] 在计算设备内从服务器获得用户界面,所述用户界面包括移动计算设备的图形表示;
[0128] 在所述计算设备内从所述服务器获得媒体流,所述媒体流包括从在仿真所述移动计算设备的虚拟化环境中执行的应用程序捕获的图象信号;以及
[0129] 在所述计算设备中呈现所述用户界面,其中所述图象信号作为所述移动计算设备的所述图形表示的屏幕呈现。
[0130] 18.根据条款17所述的方法,其还包括以下步骤:
[0131] 在所述计算设备中获得关于所述移动计算设备的所述图形表示的用户输入;
[0132] 在所述计算设备中生成至少一个输入命令来回应所述用户输入;以及
[0133] 在所述计算设备中将所述至少一个输入命令发送至所述服务器。
[0134] 19.根据条款18所述的方法,其中提供了关于所述移动计算设备的输入设备的图形表示的用户输入。
[0135] 20.根据条款17所述的方法,其还包括以下步骤:
[0136] 在所述计算设备中获得关于所述应用程序的网页;以及
[0137] 在所述计算设备中向所述服务器发送启动所述应用程序的仿真会话的请求。
[0138] 21.根据条款17所述的方法,其还包括在所述计算设备中向所述服务器发送开始购买所述应用程序的请求的步骤。
[0139] 22.一种系统,包括:
[0140] 至少一个计算设备;和
[0141] 可在所述至少一个计算设备内执行的服务器应用程序,所述服务器应用程序包括:
[0142] 逻辑,其识别计算设备的型号和可在所述计算设备内执行的应用程序;
[0143] 逻辑,其在托管环境中执行所述应用程序并将所述应用程序的输出编码成媒体流;和
[0144] 逻辑,其编码用户界面以在客户端内呈现,所述用户界面包括所述计算设备的所述型号的图形表示,其中所述图形表示被更新以回应所述媒体流。
[0145] 23.根据条款22所述的系统,其中所述计算设备的所述型号的所述图形表示包括显示设备的图形表示,而所述媒体流包括用于更新所述显示设备的图形表示的数据。
[0146] 24.根据条款22所述的系统,其中所述计算设备的所述型号的所述图形表示包括所述计算设备的所述型号的至少一个集成输入设备的图形表示。
[0147] 25.根据条款22所述的系统,其中所述计算设备的所述型号的所述图形表示与所述计算设备的所述型号的通用版本对应。
[0148] 应强调,本公开的上述实施方案仅仅是为了清楚地理解本公开的原理而阐述的实施方式的可能的实例。在基本不脱离本公开的精神和原理的情况下,可对上述实施方案进行许多变化和修改。所有这种修改和变化均包括于本公开的范围内,并受以下权利要求保护。