首页> 中国专利> 高级语言和本机语言之间的通信协议

高级语言和本机语言之间的通信协议

摘要

本发明公开了一种用于在客户端设备上在两个编程语言之间通信的系统和方法。高级语言的命令被编码为包含由分隔符分离的数字序列的字符串,其中命令的每个组成部分被编码为不同的数字。编码的字符串被传递为在客户端设备上本机运行的编译代码,并且本机代码将字符串解码为对应的本机命令并且执行该本机命令。该通信协议允许以高级代码编写的应用执行通常仅针对本机代码设置的功能,诸如与web服务器进行通信以及修改保存在存储器中的文件。高级代码还可以在不经历一些操作系统对用于应用二进制文件的传送设置的限制的情况下被传送到客户端设备,这允许应用开发人员自动地向用户发送应用更新。

著录项

  • 公开/公告号CN103597447A

    专利类型发明专利

  • 公开/公告日2014-02-19

    原文格式PDF

  • 申请/专利权人 恩格莫科有限责任公司;

    申请/专利号CN201180065620.8

  • 申请日2011-12-14

  • 分类号G06F9/45;

  • 代理机构北京市金杜律师事务所;

  • 代理人王茂华

  • 地址 美国加利福尼亚州

  • 入库时间 2024-02-19 22:44:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-03-29

    授权

    授权

  • 2014-03-19

    实质审查的生效 IPC(主分类):G06F9/45 申请日:20111214

    实质审查的生效

  • 2014-02-19

    公开

    公开

说明书

相关申请的交叉引用

本申请要求2010年12月14日提交的美国临时申请 No.61/422,843以及2011年12月13日提交的美国专利申请 No.13/324,940的权益,其全部公开内容通过引用合并于此。

技术领域

本公开一般地涉及编程语言的领域,并且更具体地,涉及在两种 不同的编程语言之间的通信。

背景技术

软件应用通常作为二进制可执行文件来发行和分发。开发人员将 代码编译成二进制可执行文件,并且用户将该编译的应用二进制文件下 载到其客户端设备上并且在其客户端设备上运行该编译的应用二进制 文件。在公开发行之前进行编译的类似过程用于分发对软件应用的更新 和补丁。尽管该过程允许开发人员保护其源代码,并且对用户提供在其 客户端设备上本机运行的可执行代码,但是该过程还带来了使得对于特 定平台没有吸引力的很多限制和缺点。

一个缺点在于作为防止用户运行未授权代码的方法,一些操作系 统对向客户端设备传送可执行二进制文件进行限制。操作系统开发人员 可以将这些限制作为对抗病毒或其他恶意代码的传播的安全措施,或者 他们可以简单地使用这些限制作为对操作系统施加更多控制的方法。在 一些情况下,操作系统可以包括用于管理可执行二进制文件的分发的集 中式分发服务,并且被分发的二进制文件可以由分发服务的管理员来进 行审查和批准。例如,苹果iOS移动操作系统包括用于分发应用和更新 的APP STORE,并且发布到APP STORE的内容在被分发给用户之前经历 批准过程。在其他情况下,操作系统允许用户自由下载可执行二进制文 件,但是操作系统可以在执行新的应用或应用对现有应用的更新之前针 对管理员密码或一些其他种类的授权来提示用户。

这些限制使软件开发人员难以分发可执行二进制文件。具体地, 如果更新经受审查过程,或者如果更新在被应用之前需要用户授权,则 发行和分发更新和补丁的过程可能会变得明显更慢。结果,很难迅速地 向用户分发更新。此外,如果开发人员希望分发针对用户的设备配置、 位置或人口统计信息而定制的更新,则定制的更新的每种变换可能都必 须在被分发之前经历审查过程。

附图说明

所公开的实施例具有其他优点和特征,这些其他优点和特征从具 体实施方式、所附权利要求和附图中变得更显而易见。以下是附图的简 要介绍。

图1是图示根据一个实施例的适用于以高级语言递送应用和更新 的系统环境的网络示图。

图2是图示根据一个实施例的客户端设备的应用客户端模块的框 图。

图3是图示根据一个实施例的用于在应用运行之前自动应用对请 求的应用的更新的示例性过程的交互示图。

图4是根据一个实施例的从高级语言的命令到编码的字符串的映 射的示例。

图5是图示根据一个实施例的用于将高级命令转译成对应的本机 命令并且执行对应的本机命令的过程的流程图。

图6是图示根据一个实施例的用于针对应用的单个处理帧执行多 个命令的示例性过程的交互示图。

图7是根据一个实施例的用于针对应用注册新的对象的示例性过 程的交互示图。

具体实施方式

附图和下面的描述仅以说明的方式涉及优选实施例。应当注意, 从下面的讨论中,这里所公开的结构和方法的替代实施例将很容易被视 作在不背离所要求保护的原理的情况下采用的可行的替代。

现在将具体参考几个实施例,在附图中示出了这些实施例的示 例。应当注意,在任何可实践的情况下,可以在附图中使用相似或相同 的附图标记,并且相似或相同的附图标记可以指示相似或相同的功能。 附图仅出于说明的目的来描绘所公开的系统(或方法)的实施例。本领 域技术人员从下面的描述中将容易地认识到,可以在不背离这里描述的 原理的情况下采用这里说明的结构和方法的替代实施例。

配置概述

作为分发可执行二进制文件的替代,应用和更新可以以诸如 JavaScript的高级语言来被编写和分发到客户端设备。为了运行高级 应用,用户在其客户端设备上安装应用客户端模块。应用客户端模块实 施通信协议,该通信协议允许高级语言与在客户端设备上本机运行的编 译代码通信。该通信协议允许高级应用访问通常针对本机代码所保留的 系统资源,诸如联网设备和物理传感器。结果,以高级语言编写的应用 可以执行通常限制为可执行应用二进制文件的任务,这允许高级应用提 供与二进制应用的用户体验类似的用户体验。

通信协议通过将高级命令编码为包含一系列数字和控制字符的 字符串来进行操作。每个数字表示命令的不同组成部分,诸如类标识符、 方法标识符以及传递到该方法的一个或多个参数。编码的字符串被发送 到应用客户端模块的不同组件,该应用客户端模块将字符串解码为本机 命令并且执行该命令。为了减小高级代码的复杂度并且由此减少用于操 作通信协议的计算资源,应用客户端模块还包含若干应用编程接口 (API),该若干应用编程接口(API)允许提供用于访问诸如图形处理 器、物理传感器和网络接口这样的系统资源的简化命令。本机代码还可 以使用该通信协议来将命令发布为高级代码。

由于用于命令的编码和解码过程使用大量的计算资源,所以应用 客户端模块还可以实施排队机制以一次编码和解码若干命令。在一个实 施例中,在被称为处理帧的预定时间间隔期间发布的高级命令以命令被 发布的次序被添加到队列中。在处理帧的结束处,该队列中的命令被编 码为字符串。随后,该字符串被解码为本机命令,并且以对应的高级命 令被添加到该队列的次序相同的次序来执行本机命令。该排队机制允许 应用客户端模块通过一次编码和解码多个命令来改善性能,同时仍然保 持高级命令的原始次序。

通过以高级语言来分发可执行内容,该内容不经历操作系统可能 对二进制应用和更新的分发设置的限制。当以高级语言向客户端设备传 送应用或更新时,操作系统将该活动解释为数据的传送,而不是可执行 代码的传送,并且在不施加与传送可执行代码相关联的限制的情况下允 许该传送进行。结果,高级应用能够在应用引导过程期间检查并且应用 更新,并且开发人员还能够通过自动地分发适应用户的地理位置、人口 统计组、设备配置和其他个人信息的高级更新来提供定制用户体验。虽 然下载和执行高级应用的该过程可能会绕过被集成到应用分发系统或 操作系统中的一些安全措施,但是应用客户端模块包含通过限制被授予 各个高级应用的权限级别来维持客户端设备的安全性的特征。

系统架构的概述

图1是图示根据一个实施例的适合于以高级语言递送应用和更新 的系统环境的网络示图。除了其他组件,该系统环境包括应用服务器 102、网络104和客户端设备100。在其它实施例中,在系统环境中可 以存在更少、附加或不同的组件。具体地,虽然仅描绘了一个客户端设 备100和一个服务器104,但是可以存在连接到网络102的其他客户端 设备或服务器。

应用服务器102操作支持应用客户端模块116的基于服务器的服 务以及可以保存在客户端设备100上的任何高级应用。具体地,应用服 务器102使高级应用和更新可用于向用户分发,因此应用客户端模块 116可以自动地或者响应于用户请求而从应用服务器102检索更新和新 的应用。应用服务器102还可以提供其他应用相关服务,诸如应用集成 的社交联网或者数据收集和分析。虽然应用服务器102被描绘成单个实 体,但是应用服务器102的功能可以分散在多个计算设备、计算集群或 数据中心中,并且应用服务器102的组件可以驻留在多个地理位置中。

应用服务器102通过网络104与多个客户端设备100进行通信。 网络104可以包括本领域公知的标准通信技术和协议的任何组合。例 如,可以通过诸如以太网、802.11、CDMA、3G、4G或数字订户线(DSL) 这样的链接技术来通过网络104进行通信。网络104可以支持多个联网 协议,包括超文本传输协议(HTTP)、传输控制协议/因特网协议(TCP/IP) 或者文件传输协议,并且通过网络104传送的任何数据可以利用诸如传 输层安全性(TLS)、安全套接字层(SSL)和因特网协议安全(IPsec) 这样的技术来进行加密。

图1还包含客户端设备100的详细视图。除了其他组件,该客户 端设备100包括处理器106、存储器108、网络接口设备110、物理传 感器112、客户端设备API114以及应用客户端模块116。客户端设备 100的组件106、108、110、112、114、116通过系统总线118以通信 的方式耦合。作为一个整体,客户端设备100可以是包括这些组件106、 108、110、112、114、116的任何计算设备,诸如智能电话、个人数字 助理(PDA)、平板计算机、膝上型计算机或台式计算机。

处理器106执行计算机可读指令。处理器106可以访问存储器108 以检索用于执行的指令或者读取或写入数据。虽然图1中仅示出了单个 处理器106,但是客户端设备100可以包含可以并行操作的多个处理器 106。客户端设备100还可以包含用于图形处理或音频处理的专用处理 器106。存储器108是能够存储可以由处理器106执行的计算机可读指 令和数据的任何非瞬态计算机可读存储介质。存储器108可以包括易失 性存储器(例如,随机存取存储器)和非易失性存储器(例如,硬盘驱 动、固态驱动、压缩盘,磁带等)的组合。网络接口设备110连接到网 络104,并且在网络104和客户端设备100的其他组件之间交换数据。

物理传感器112可以包括监视客户端设备的定向或环境的任何设 备。例如,传感器可以包括加速度计、陀螺仪、全球定位服务(GPS) 接收器、罗盘或环境光检测器。物理传感器112还可以包括用于记录对 客户端设备100的用户输入的设备,诸如外部按钮、键盘、鼠标、触摸 屏或麦克风。

操作系统可以提供一个或多个客户端设备应用编程接口(API) 114,该一个或多个应用客户端设备应用编程接口(API)114允许二进 制软件应用与客户端设备100的物理组件进行交互。操作系统可以包括 用于与物理传感器112、网络接口设备110或者诸如可以由专用图形或 音频处理器106控制的屏幕或扬声器这样的输出设备进行交互的API。

应用客户端模块116实施通信协议,该通信协议允许以高级编程 语言编写的一个或多个应用与本地代码通信。通信协议的一个益处在 于,该协议允许高级应用执行通常针对本机代码所保留的任务,诸如修 改保存在存储器108中的其他应用或者通过网络接口设备110与应用服 务器102进行通信。为了流线化高级应用和本地代码之间的通信,应用 客户端模块116还包含简化由操作系统提供的API114和高级应用之间 的交互的应用客户端API的集合。虽然应用客户端模块116被示出为单 独的实体,但是用于执行应用客户端模块116的功能的逻辑可以整体或 者部分地驻留在处理器106或存储器108上。另外,全部或部分的应用 客户端模块116可以被实现为单独的硬件设备,诸如专用集成电路 (ASIC)或者现场可编程门阵列(FPGA)。

应用客户端模块

现在参考图2,图示了图1中示出的应用客户端模块116的具体 视图。除了其他组件,应用客户端模块116可以包含引导应用200、一 个或多个其他高级应用202、高级API204、本机API206、高级对象注 册表(registry)208、本机对象注册表210、解释器212以及一组简 化的设备API214。应用客户端的其他实施例可以包含附加、更少或不 同的组件。

引导应用200是以解释的高级编程语言(例如,JavaScript)编 写的应用,该应用接收对高级应用200、202的引用并且尝试更新所引 用的应用。在接收到引用的应用之后,引导应用200询问应用服务器 102以确定所引用的应用的更新版本是否可用于下载。如果引导应用 200在应用服务器102上找到了更新,那么引导应用200自动地检索并 且应用该更新。因为该更新也是以高级语言编写的,所以可以在没有来 自用户或操作系统的任何介入或授权的情况下检索和应用该更新。

当应用客户端模块116接收到对启动应用202的请求时,本机API 206向引导应用200发出两个命令。第一个命令包含对引导应用200的 引用,这使得引导应用200对本身进行更新。第二个命令包含对所请求 的应用202的引用,这使得引导应用200更新所请求的应用202。参考 图3来详细描述更新引导应用200和所请求的应用202的过程。

高级应用202是诸如可以被下载到客户端设备100的游戏、图像 编辑器或多媒体回放程序这样的软件应用。下载可以由客户端设备100 的用户或者由应用客户端模块116内的另一应用202来发起。类似于引 导应用202,高级应用202也以解释的高级编程语言来编写。如这里使 用的高级编程语言是代替在被分发给客户端设备之前被编译,而可以由 解释器212在客户端设备上执行的任何编程语言(例如,JavaScript)。 除了高级代码,应用202还可以包含其它数据项,诸如图像、视频、音 频片段或明文(p1aintext)。由于高级应用202是以高级编程语言编 写的,所以操作系统将高级应用202的下载解释为数据文件的下载。结 果,该下载不受到操作系统可能对可执行二进制应用的下载设置的任何 限制。虽然这可能绕过一些可能被集成到操作系统中的安全功能,但是 解释器212和本机API206包含调整被准许接入下载的高级应用202 的级别的安全功能。

高级API和本机API206是提供用于简化设备API中的功能的统 一接口的应用编程接口(API)。当API204、206包含匹配类和方法时, 高级API204以与引导应用200和其他应用202相同的高级语言来编写, 而本机API206是在客户端设备100上本机运行的二进制文件。高级 API204和本机API206还包含下述逻辑,该逻辑用于以队列排列用于 单个处理帧的命令,向解释器212发送要被编码为字符串的队列,并且 将该字符串解码回命令。参考图4来详细描述编码功能,并且参考图6 来详细描述排队机制。通过使各个简化设备API214的功能统一,开发 人员可以参考单个API以与客户端设备100上的硬件进行交互。这简化 了开发过程,并且减少了类或方法被归属到错误的API的可能性。

高级对象注册表208和本机对象注册表210在运行应用202中保 持活动对象的镜像(mirrored)注册表。在一个实施例中,对象初始地 被注册在高级对象注册表208中,并且随后将条目镜像映射(mirror) 到本机对象注册表210。参考图7来详细描述注册新的对象以及在两个 注册表208、210之间镜像映射对象的过程。

解释器212加载并且执行高级代码,诸如在引导应用200、其他 应用202和高级API204中的代码。当应用200、202包括要由本机代 码执行的命令时,解释器212对该命令进行编码,并且将该命令发送到 本机API206以被解码和执行。存在解释器212的两个独立实例。应用 解释器212A具有访问客户端设备100的低权限。例如,应用解释器212A 能够访问屏幕上的图形、用户界面(UI)和音频功能以及其他应用相关 的功能。同时,系统解释器212B具有访问客户端100的高权限,包括 对可能造成系统不稳定的客户端设备100的部分的访问。例如,系统解 释器212B可以使用网络接口110来向应用服务器102传送授权凭证, 或者修改存储在存储器108中的引导应用200或其他应用202。

因为引导应用200频繁使用高权限功能,诸如访问应用服务器102 和修改存储在存储器108中的应用200、202,所以由系统解释器212B 来执行引导应用200。其他应用202由应用解释器212A来执行。如果 其他应用202中的一个包括要以高权限执行的命令,则应用解释器212A 将该命令发送到本机API206,并且本机API206确定是否应当允许该 命令。例如,本机API206可以允许执行用于从应用服务器102中检索 社交联网数据的命令,但是该API206可能不允许应用202执行用于任 意修改或擦除另一应用202的命令。如果本机API206允许高权限命令 执行,那么该命令被路由到系统解释器212以供执行。该配置允许应用 202访问客户端设备100的高权限功能,同时仍然通过提供针对不适当 和可能有害的高权限命令的保护来维护客户端设备100的安全性。

简化的设备API214提供了高级应用200、202可以用来与由操 作系统提供的客户端设备114进行交互的简化接口。例如,简化的图形 API214A可以提供简化的方法来以单个命令在屏幕上定位图像,而使 相同的图像位于屏幕上的相同位置中可能需要对于客户端设备API114 中的适当图形API的复杂的调用序列。此外,应用客户端模块116可以 实施不同版本的简化设备API214以与不同客户端设备100上的客户端 设备API114进行交互。例如,苹果iOS中的图形API可能需要第一命 令序列来在屏幕上定位图像,而使用GOOGLE安卓操作系统中的图形API 来定位图像可能需要与第一命令序列不同的第二命令序列。在该情况 下,简化图形API214A的iOS版本中的简化的定位图像命令将执行第 一命令序列,并且简化图形API214A的安卓版本中的定位图像命令将 执行第二命令序列。结果,简化的设备API214提供可以用于与不同设 备100和不同操作系统的硬件、固件和软件层进行交互的命令的标准集 合,这允许在引导应用200、其他应用202和高级API204中的相同的 高级代码在不同的设备配置中起作用。

镜像API204、206,镜像对象注册表208、210,解释器212和 简化的API214一起提供了在高级应用202和操作系统的内置API114 之间的标准化接口。这意味着只要应用客户端模块116被安装在设备 上,相同的高级应用202就可以在不同的操作系统和不同的客户端设备 100上执行。因此,开发人员可以联络跨多个操作系统和设备的更广泛 的用户受众,而无需编写多个OS特定或者设备特定的版本的应用202。

应用自动更新

图3是图示根据一个实施例的在应用的引导过程期间自动地更新 高级应用200的示例性过程的、在应用服务器102、本机API206、系 统解释器212B和应用解释器212A之间的交互示图。当应用客户端模块 116接收300到对于运行应用的请求时,该过程开始。该请求通常作为 来自传感器112中的一个(例如,触摸屏)的用户输入而被接收,但是 该请求还可以源自不同的源,诸如不同的应用。在应用客户端模块116 处接收到该请求之后,其被路由到本机API206,本机API206通过发 出302指令系统解释器212B更新引导应用200的第一命令来进行响应。

为了更新引导应用200,系统解释器212B利用对其本身进行更新 的指令来加载和执行引导应用200。引导应用200中的高级代码使得系 统解释器212B检查304应用服务器102以确定引导应用的较新版本是 否可用。系统解释器212B能够通过使用对于与网络接口设备110进行 交互的解释器212B的较高访问权限来访问304应用服务器102,并且 向应用服务器102发送适当的授权凭证。

如果在应用服务器102上没有找到更新,那么系统解释器212B 跳过更新过程308,并且关闭310该引导应用。如果找到了对引导应用 200的更新,那么系统解释器212B从应用服务器102接收306更新, 并且应用308该更新。在一个实施例中,系统解释器212B在更新过程 308期间用更新的版本来替换整个引导应用200。替代地,系统解释器 212B可以在更新过程308期间替换引导应用200中的高级代码的子集 (例如,仅新的或不同的几行代码)。再次,因为系统解释器212B具 有比应用解释器212A更高的权限,所以系统解释器212B能够修改引导 应用200。

在系统解释器212B更新308引导应用200之后,系统解释器212B 关闭引导应用310,并且使用返回声明来返回312到本机API。接下来, 本机API206发出314指令系统解释器212B更新被请求的应用202的 第二命令。系统解释器212B使用类似的过程来更新所请求的应用202。 首先,系统解释器212B利用用于更新所请求的应用202的指令来加载 引导应用200。引导应用202中的高级代码使得系统解释器212B检查 316应用服务器102上的所请求的应用202的更新版本。再次,如果在 应用服务器102上没有更新可用,则系统解释器212B跳过更新过程320 并且关闭322引导应用,而不修改所请求的应用202。如果有可用的更 新,那么系统解释器212B接收318并且应用320该更新。除了新的或 不同的高级代码,对于所请求的应用202的更新还可以包括附加数据对 象,诸如电影、音频片段、图像或明文。

当更新所请求的应用202时,系统解释器212B可以接收318对 用户的个人信息定制的更新(例如,用户的地理位置、人口统计信息、 设备配置等)。应用服务器102可以在更新请求316时从客户端设备 100上的各种传感器122(例如,GPS接收器)获取用户的个人信息。 替代地,用户可能已经自发地预先向应用服务器102提供了该信息(例 如,当使用应用服务器的社交联网功能时)。在应用该更新之后,系统 解释器212A关闭322引导应用200,并且使用第二返回声明来返回到 本机API206。最后,本机API206发出326指令低权限的应用解释器 212A加载并且执行328所请求的应用的第三命令。

该配置出于若干原因是有利的。通过在启动应用202之前自动地 更新引导应用200和所请求的应用202,在不需要用户手动请求更新的 情况下,引导应用200和所请求的应用202都保持是最新的。此外,基 于用户的个人信息来定制应用更新的能力还允许应用开发人员提供更 丰富和更个性化的用户体验。

将命令编码为字符串

图4图示了根据一个实施例的从高级语言的命令400到编码的字 符串410的映射的示例。解释器212将高级命令400编码为字符串410, 并且将该字符串发送到本机API206,在本机API206处字符串410被 解码并且作为本机命令来执行。通过该编码方法定义的通信协议允许高 级语言执行通常针对本机代码所保留的命令。

高级语言的命令400可以包括,例如,类402、方法404和四个 输入参数406。编码的字符串410可以包括例如与类402相对应的数字 类标识符412、与方法404相对应的数字方法标识符414以及输入参数 406的值416。解释器212和本机API206针对每个方法来预先确定输 入参数406的次序,使得当本机API206对字符串410进行解码时表示 参数406的值的字符串410中的数字146可以被映射成正确的参数。在 替代实施例中,命令400和编码的字符串410可以包括附加的、更少或 不同的组成部分。例如,命令400可以包括附加的参数406,这可以使 得编码的字符串包括附加的参数值416。

除了表示高级命令的类、方法和参数的数字之外,编码的字符串 410还包含两种类型的控制字符。第一类型的控制字符(冒号)418指 示命令的开始,并且第二类型的控制字符(逗号)420分离字符串410 中的不同条目。虽然如图4中所示在整个字符串410中添加了空格来促 进可读性,但是空格不具有功能并且可以被省略。编码的字符串410 还包含指示类内的对象的特定实例的实例标识符422。当在高级对象注 册表208中注册了对象时,高级API204对该对象的实例指派实例标识 符422,并且解释器212在编码命令400时从高级对象注册表208中检 索实例标识符422。在图4中示出的实施例中,实例标识符422位于数 字方法标识符414和参数的值416之间。

类402和方法404与其相应的数字标识符412、414之间的映射 被配置为使得可以使用编码的字符串410来将原始命令400重新创建为 本机命令。在一个实施例中,预先确定从文本标识符402、404到数字 标识符412、414的映射,但是在解释器212和本机API206之间可以 随机地生成和再现该映射。此外,在方法404和数字方法标识符414 之间的映射可能不是一对一映射。具有类似功能的方法404可以被映射 成相同的数字方法标识符414。例如,用于旋转、平移和缩放屏幕上的 子画面(sprite)的方法404可以被映射成与用于变换屏幕上的子画面 的本机API中的一般化的方法相对应的数字标识符414。在替代实施例 中,类402和方法404可以被映射成单个复合数字标识符,而不是两个 分离的数字标识符402、404。再次,映射不需要是一对一映射。只要 本机API206能够将高级命令400再现为本机命令,就可以对映射过程 进行任何其他改变。

图5是图示根据一个实施例的用于将以高级语言编写的命令转译 成本机命令并且执行该本机命令的流程图。当解释器212从高级API 204接收到500高级命令的队列时,该过程开始。参考图6来详细描述 将高级命令聚集在队列中的过程。解释器212根据参考图4描述的过程 来将高级命令编码505为字符串。解释器212以与对应的高级命令在队 列中的次序相同的次序来布置编码的字符串,使得这些命令可以以其被 排队的相同次序来被执行。

在接收到500高级命令的队列并且将这些命令编码505为字符串 之后,解释器212向本机API206发送510该编码的命令。本机API206 通过使在编码过程505期间执行的映射过程逆转来将该字符串解码515 为本机命令。最后,本机API206使用在本机API206和本机对象注册 表210中的匹配类和对象来执行520解码的本机命令。

在高级脚本语言和本机代码之间的交互

现在参考图6和图7,图示了高级应用可以如何使用图4中示出 的通信协议来与客户端设备100上的并且在应用客户端模块116内的资 源进行交互的两个示例。图6是图示根据一个实施例的用于处理在单个 处理帧中的命令序列的交互示图。在高级,应用202在固定时间间隔期 间发出一个或多个命令,并且高级API204将命令添加到队列。固定时 间间隔被称为处理帧。在处理帧的结束处,使用参考图4描述的通信协 议来编码队列中的命令并将其传送到本机API206并且解码为本机命 令。排队机制保持原始高级命令在编码和解码的整个过程中的次序,因 此可以以应用202发出对应的高级命令的次序相同的次序来执行本机 命令。

当本机API206请求600用于下一处理帧的命令时,该过程开始。 该请求被编码为字符串并且被发送到解释器212,该解释器212对该请 求进行解码并且将其传递602到高级API204。高级API204在应用202 中分析该高级代码并且检索要被编码的第一命令604。检索到的命令可 以执行通常针对本机代码保留的任何功能,诸如显示或修改屏幕上的子 画面、回放音频片段、读取或写入存储器108中的文件或者监视来自物 理传感器112的输入。在检索604到第一命令之后,高级API将第一命 令添加606到队列。

在检索604和排队606第一命令之后,高级API204执行相同的 过程以对其他命令进行检索608和排队610。虽然仅针对总共两个命令 示出了检索和排队过程,但是高级API204可以在处理帧的持续时间中 继续将其他高级命令添加到队列中。根据参考图4描述的通信协议,在 处理帧的结束处,高级API204向解释器212发送612高级命令的队列, 并且解释器212将每个排队的命令编码614为字符串。

解释器212向本机API206发送616编码的字符串队列,本机API 206将该字符串解码为本机命令,并且执行620、622该本机命令。因 为在对命令排队606、610、编码614、传送616和解码618的同时保持 了原始高级命令的次序,所以以与高级命令被排队的相同的次序来执行 620、622本机命令。因为以不正确的次序执行命令可能产生不正确的 结果,所以保留命令的次序是重要的。例如,如果平移和旋转步骤以相 反的次序执行,则用于将图像放置于屏幕上、平移该图像并且关于原点 旋转该图像的命令序列可能产生不同的结果。

因为跨高级和本机代码之间的处理边界的过程(例如,编码614、 发送616和解码618命令的过程)可能是相对地资源密集的,所以排队 机制降低了处理开销,并且提高了应用202的性能。如果客户端设备 100是具有有限处理能力和电池寿命的移动设备,则这特别重要。通过 一次处理整个处理帧的命令,应用客户端模块每处理帧跨越处理边界一 次而不是每命令跨越处理边界一次。

图7是图示根据一个实施例的用于将新的对象注册在应用客户端 模块116所保持的两个不同的对象注册表208、210上的过程的交互示 图。用于注册对象的过程以与参考图6描述的过程相同的方式开始。首 先,本机API206请求700用于下一处理帧的命令。本机API206将该 请求编码为字符串并且将该请求发送到解释器212,该解释器212对该 请求进行解码,并且将其传递702到高级API204。高级API204分析 应用202中的该高级代码,并且检索704要被编码的下一命令。如果高 级API检索704到用于注册新的对象的命令,那么高级API204在将命 令添加到队列708之前将该对象注册706在高级对象注册表208中。

在一个实施例中,高级API204在将新的对象注册706在高级注 册表208中时对该新的对象指派实例标识符。注册命令还可以包含用于 标识被注册的对象的类型的类标识符。类标识符和实例标识符一起允许 高级API204唯一地标识对象,并且两个标识符被保存在对象注册表中。 在替代实施例中,类标识符和实例标识符可以合并成可以用于唯一地标 识该对象的单个复合标识符。

在处理帧的结束处,高级API204向解释器212发送710排队的 命令,并且使用参考图5和图6描述的过程来编码712、发送714和解 码716队列中的命令。如图4中所示,实例和类标识符作为字符串的一 部分被编码和发送。虽然在图7中仅示出了一个注册命令,但是高级 API204可以在检索704和排队708所示的对象注册命令之前或之后, 在处理帧期间检索其他命令并且将其添加到队列中。在用于处理帧的命 令被解码716成本机命令之后,本机API206执行对象注册命令并且将 该对象注册718在本机对象注册表210中。使用相同的数字实例标识符 来将该对象注册718在本机对象注册表210中。该过程允许应用客户端 模块116保持对象注册表的两个镜像副本208、210,使得可以由本机 代码来执行引用一个或多个对象的命令。

所公开的配置有益地允许开发人员编写对于用户来说可与在客 户端设备100上本机运行的应用区分的高级软件应用202。简化的设备 API214和在应用客户端模块116中实现的通信协议的组合允许高级应 用202访问通常针对本机应用保留的系统资源,诸如图形功能、用户接 口功能、联网设备110和物理传感器112。结果,开发人员能够编写执 行与本机应用相同的功能的高级应用202。此外,所公开的配置允许高 级应用202在不经历客户端设备100的操作系统可能对本机应用的更新 设置的任何限制的情况下被更新。这允许应用客户端模块116自动地应 用适应用户的地理位置、人口统计信息、客户端设备配置或其他个人具 体信息的更新,这导致了提高高级应用202的值的更定制化的用户体 验。

其他配置考虑

在本说明书中,多个实例可以实现被描述为单个实例的组件、操 作或结构。虽然一个或多个方法的独立操作被图示和描述为单独的操作 (例如,在图5中),但是一个或多个独立操作可能同时执行,并且不 需要以图示的次序执行操作。示例性配置中被表示为单独组件的结构和 功能可以被实现为组合的结构或组件。类似地,表示为单个组件的结构 和功能可以被实现为单独组件。这些和其他变体、修改、添加和改善落 在本主题的范围内。

特定实施例在这里被描述为包括逻辑或很多组件、模块或机制 (例如,在图1、图2、图3、图6和图7中)。模块可以构成软件模 块(例如,在机器可读介质上实现或者在发送信号中实现的代码)或硬 件模块。硬件模块是能够执行特定操作的有形单元,并且可以以特定的 方式进行配置或布置。在示例性实施例中,一个或多个计算机系统(例 如,单机、客户端或服务器计算机系统)或者计算机系统的一个或多个 硬件模块(例如,处理器或处理器组)可以通过软件(例如,应用或应 用部分)被配置为进行操作以执行如这里描述的特定操作的硬件模块。

在各种实施例中,硬件模块可以被机械地或电子地实现。例如, 硬件模块可以包括专用电路或永久配置的逻辑(例如,作为专用处理器, 诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC))以执行特定 操作。硬件模块还可以包括可编程逻辑或电路(例如,包括在通用处理 器或其它可编程处理器内),其由软件临时配置为执行特定操作。应当 认识到,用于机械地、以专用和永久配置的电路或者以临时配置的电路 (例如,由软件配置的)实现硬件模块的决定可以由成本和时间考虑来 驱动。

这里描述的示例性方法的各种操作可以至少部分地由临时配置 (例如,通过软件)或永久配置成执行相关操作的一个或多个处理器来 执行。不论临时还是永久配置,这样的处理器可以构成进行操作以执行 一个或多个操作或功能的处理器实现的模块。这里涉及的模块可以在一 些示例实施例中包括处理器实现的模块。

一个或多个处理器还可以进行操作以支持在“云计算”环境中或 作为“软件即服务”(SaaS)的相关操作的性能。例如,至少一些操作 可以由计算机组(作为包括处理器的机器的示例)来执行,这些操作可 经由网络(例如,因特网)并且经由一个或多个适当的接口(例如,应 用程序接口(API))来访问。

特定操作的执行可以分布在一个或多个处理器中,而不仅驻留在 单个机器内,而是跨多个机器来部署。在一些示例性实施例中,一个或 多个处理器或处理器实现的模块可以位于单个地理位置中(例如,在家 庭环境、办公室环境或服务器群内)。在其他示例性实施例中,一个或 多个处理器或处理器实现的模块可以跨多个地理位置来分布。

本说明书的一些部分在对机器存储器(例如,计算机存储器)内 存储为比特或二进制数字信号的数据的操作的符号表示或算法方面而 提出。这些算法或符号表示是由数据处理领域的普通技术人员使用以对 本领域技术人员传达其工作实质的技术的示例。如这里使用的“算法” 是产生期望结果的类似处理或操作的自洽序列。在该上下文中,算法和 操作涉及对物理量的物理操纵。通常但不是必须的,这样的量可以采取 能够由机器存储、访问、传送、组合、比较或以其他方式操纵的电、磁 或光信号的形式。有时并且主要是出于一般使用的原因,方便地使用诸 如“数据”、“内容”、“比特”、“值”、“元素”、“符号”、“字 符”、“项”、“编号”、“数字”等的词语来指代这样的信号。然而, 这些词语仅是方便的标签并且要与适当的物理量相关联。

除非特别地另外声明,使用诸如“处理”、“计算”、“运算”、 “确定”、“呈现”、“显示”等的词语的这里的讨论可以指机器(例 如,计算机)的动作或过程,该机器可以对表示为在一个或多个存储器 (例如,易失性存储器、非易失性存储器或其组合)、寄存器或接收、 存储、传送或显示信息的其他机器组件内的物理(例如,电、磁或光) 量的数据进行操纵和转换。

如这里使用的对“一个实施例”或“实施例”的任何引用指结合 实施例描述的具体元素、特征、结构或特征被包括在至少一个实施例中。 短语“在一个实施例中”在本说明书中的不同位置中的的出现不一定全 部涉及同一实施例。

一些实施例可以使用表达“耦合”和“连接”及其派生词来进行 描述。例如,一些实施例可以使用术语“耦合”来描述以指示两个或更 多个元件处于直接物理或电接触。然而,术语“耦合”还可以指两个或 更多个元件彼此不直接接触,但是仍然彼此协作或交互。实施例并不限 于该上下文。

如这里使用的术语“包括”、“包含”、“具有”或其任何其他 变体意在涵盖非排他性包括。例如,包括一系列元素的过程、方法、物 品或装置不必仅限于那些元素,而是可以包括没有明确列出或者对这样 的过程、方法、物品或装置所固有的其它元素。另外,除非另外明确地 相反说明,“或”指兼或而非互斥或。例如,条件A或B通过下面中的 任何一个来满足:A为真(或存在)并且B为假(或不存在),A为假 (或不存在)并且B为真(或存在),以及A和B都为真(或存在)。

另外,“一”的使用用于描述本实施例的元件和组件。这样仅仅 是为了方便并且给出本发明的一般含义。该描述应当被解读为包括一个 或至少一个,并且单数也包括复数,除非以其他方式明显指出。

在阅读本公开时,本技术领域的技术人员将通过这里公开的原理 理解用于在高级和本机代码之间通信的系统和过程的其他替代结构和 功能设计。因此,尽管已经说明和描述了具体实施例和应用,但是应当 理解,所公开的实施例不限于这里公开的确切构成和组件。可以在不脱 离所附权利要求所定义的精神和范围的情况下在这里公开的方法和装 置的布置、操作和细节中作出对于本领域技术人员显而易见的各种修 改、改变和变化。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号