用于Flash应用程序的具有分布式对象的集成硬件平台的系统和方法

文档序号:6596879阅读:279来源:国知局
专利名称:用于Flash应用程序的具有分布式对象的集成硬件平台的系统和方法
技术领域
本发明一般涉及数据和图形显示。更具体地,本发明涉及具有分布式对象的Flash 应用程序。
背景技术
对于丰富的多媒体互联网应用,Flash平台很受欢迎,其在多数主要硬件和操作系 统中具有高的浏览器渗透率和可用性。用户能够从个人电脑到移动电话及视频游戏机的多 种设备容易地运行Flash应用程序。越来越多地,现代Flash应用程序正使用分布式对象 以提供用户和服务器之间共享的在线背景给用户。因此,例如在虚拟社区和在线游戏世界, 用户能够对其他用户产生持久改变的影响。例如,用户能够互相谈话,交易物品,组队成组, 以及进行其它的相互作用。另外,由于Flash平台的方便可得,几乎在任何地方,无论是在 家、办公室、网吧或机场候机楼,用户都能够访问这些在线社区。 然而,互动只限于能够和Flash应用程序直接通信的设备。因此,人类输入设备仅 限于传统的键盘、诸如电脑鼠标的定位设备(pointingdevices)、网络摄像机以及在Flash 中具有直接硬件支持的其它设备。另外,Flash应用程序的输出一般限于在执行Flash应 用程序的系统上播放的视听内容。因此,在Flash应用程序中,很难支持诸如单独的设备上 的视听回放以及振动、物理对象的运动的特征。 虽然可直接连接到Flash的外围设备对于传统的应用可能是合适的,但是与在线 游戏和社区相互作用的更多的创新方式可能要求不在Flash中实施的新的硬件支持。虽然 这种新硬件可能容易由单独的硬件或软件支持,但是用户会更喜欢技术麻烦最少的解决方 案。Flash应用程序能够方便地在互联网上被访问,并且在许多系统中,一般预装了或可容 易获得Flash环境,使得用户免去了使用专用的游戏硬件或安装额外的游戏软件的麻烦, 使用专用的游戏硬件或安装额外的游戏软件在公共环境中尤其不切实际。由于Flash平台 的方便可得,因而用户能够从家里、办公室或在旅行期间访问相同的在线账户。然而,对于 直接硬件访问,Flash平台只提供有限的支持,限制了用户能够与Flash应用程序相互作用 的方式。 因此,需要通过提供一种方式来克服本领域中的缺陷和不足,该方式用于用户与 可广泛访问的Flash平台相互作用,以提供在共享在线环境下的互动体验,突破了当前对 在Flash应用程序中可直接访问的硬件的限制。
发明概述 提供系统和方法,其提供用于Flash应用程序的具有分布式对象的集成硬件平 台,该平台大体上如在至少一个附图中所示和/或关于至少一个附图所描述,在权利要求 中被更全面地阐述。
附图简述 在审阅了下面的详细描述和附图后,本发明的特征和优点对于本领域的普通技术人员将变得更加明显,其中

图1呈现了根据本发明的一种实施方式的集成硬件平台环境的框图; 图2a呈现了根据本发明的一种实施方式,描述用于所述集成硬件平台的接口生
成工作流程的流程图; 图2b呈现了根据本发明的一种实施方式,用于由Flash开发者所利用的所述集成 硬件平台的Flash开发环境的框图; 图2c呈现了根据本发明的一种实施方式,用于由硬件开发者所利用的所述集成 硬件平台的硬件开发环境的框图; 图3呈现了根据本发明的一种实施方式,具有分布式对象的集成硬件平台环境的 框图;以及 图4示出了根据本发明的一种实施方式描述步骤的流程图,通过这些步骤,集成 硬件平台中的硬件设备的处理器经由用于Flash应用程序的应用程序接口 (API)来提供硬 件控制。 发明详述 本申请是针对用于Flash的具有分布式对象的集成硬件平台的一种系统和方法。 下面的描述包含有关本发明的实施的具体信息。本领域的技术人员将会意识到,本发明可 以用与本申请具体讨论的方式所不同的方式来实施。此外,为了不使本发明模糊,本发明的 一些具体细节未被讨论。本申请中未描述的具体细节在本领域的普通技术人员的知识范围 之内。本申请的附图及其伴随的详细描述仅针对本发明的示例性实施方式。为保持简洁, 使用本发明的原则的本发明的其他实施方式在本申请中未被具体描述,且未由本发明的附 图具体图解。 图1呈现了根据本发明的一种实施方式的集成硬件平台环境的框图。环境100 包括硬件设备110和主机系统150。硬件设备110包括外部硬件115、硬件系统125、硬 件API 131、远程分布式方法132、串行器133、硬件应用程序135、分布式方法136、解串器 (deserializer) 137、串行连接API 139、以及连接器142。外部硬件115包括传感器116、 伺服系统117以及显示装置118。硬件系统125包括环境监测系统126、机械控制系统127 以及表示系统(presentation system) 128。连接145提供硬件设备110的连接器142和主 机系统150的接受器(rec印tacle) 152之间的数据通信。主机系统150包括接受器152、 主机处理器160和主机存储器170。主机存储器170包括安全服务162、代理服务器163 以及Flash运行时环境(runtime environment) 174。 Flash运行时环境174包括动作脚 本(Actionscript)硬件API 171、 Flash应用程序175以及Flash 二进制套接字(binary socket)API 179。动作脚本硬件API 171包括串行器173、远程分布式方法172、解串器177 以及分布式方法176。 从一个高层次的角度看,环境100允许主机系统150与连接的硬件设备110相互 作用。主机系统150经由主机处理器160运行Flash应用程序175,该Flash应用程序可 以进一步连接到由游戏服务器的分布式在线服务所支持的联网在线游戏。除了游戏,Flash 应用程序175还可以支持任何其他类型的分布式在线应用程序,如虚拟世界、业务合作、社 会网络或电子商务。 为了简便,图1仅描述了单个主机系统,且忽略了关于所述游戏服务器的细节,其在下面的图3中以更多细节来描述。此外,图1仅描述了连接到主机系统150的单个硬件 设备,但是可选择的实施方式可以允许并行访问在运行Flash应用程序的单个主机系统上 的许多硬件设备。例如,Flash应用程序175可能包括一个赛车游戏,允许多个编号和类型 的硬件设备如方向盘和踏板连接到主机系统150,以分屏幕视频显示,以容纳多个游戏者。 然后Flash应用程序175能够被设计成探测和利用所有连接的方向盘和踏板,并且代理服 务器163能够相应地配置为在Flash应用程序175和多个硬件设备之间适当地按规定路 线发送通信。这种多个硬件设备特性还可以与在线游戏服务器结合,以提供在硬件设备和 Flash应用程序之间的多对多通信,例如允许在线赛车,其中多个参加的主机系统的每一个 都能够容纳一个或几个游戏者,这取决于连接到每一个主机系统的硬件设备的数量。然而, 为便于简化例子和提高可读性,本申请将集中于只有单个硬件设备连接到主机系统的实施 方式。 硬件设备110可以提供新颖的特性例如物理运动、环境监测、次要显示装置或扬 声器以及其他硬件能力给Flash应用程序175,其对于标准的Flash平台并非可用。通过 此额外的硬件,与主机系统150的相互作用被扩展到Flash运行时环境174的本身能力和 主机系统150的标准支持的硬件能力之外。通过利用硬件应用程序接口 (API) 131实施 RMI (远程方法调用),Flash应用程序175能够远程控制硬件设备110的硬件系统125,或 提供硬件设备110所请求的数据。类似地,在相反的方向,动作脚本硬件API 171允许硬件 设备110远程控制Flash应用程序175或返回所请求的值。此外,图1中所省略的分布式 对象API,通过与游戏服务器通信,可以允许Flash应用程序175与连接到其他主机系统的 其他远程硬件设备联接。 主机系统150可能包括个人计算机、视频游戏机、移动电话或能运行所述Flash平 台的任意其他设备。主机系统150可能以前已经经由网页浏览器访问过网页服务器,以通 过诸如互联网的网络下载Flash应用程序175。然后Flash应用程序175可以在Flash运 行时环境174中执行,该环境可包括提供Flash播放器支持的网页浏览器插件。
运行时环境174提供一种环境,其中Flash应用程序175能够被翻译成可由主机 处理器160执行的机器代码。Shockwave Flash (SWF)文件不对应于能够被直接执行的机 器代码,而是以中间字节码的形式被储存,需要翻译成机器代码以运行在预期的平台上。最 初,这可能像是不利的,但正是因为SWF文件不依赖于通过直接编译成机器代码的特定的 结构,才使得相同的SWF文件能够通过利用适合各个所需的目标平台的Flash运行时环境 而被跨完全不同的平台使用,类似Java。这允许Flash应用程序被运行于多种多样的背景、 平台和配置,但是,由于使用解释性运行时环境的缘故,有一些处理代价。而诸如动态编译 和适时(just-in-time, JIT)编译等技术能够减轻使用字节码而不是预编译的二进制所带 来的许多性能损失。 对于多数用户,最熟悉的Flash运行时环境是用于诸如InternetExplorer或 Firefox的网页浏览器的浏览器插件,支持特定的平台或体系结构,诸如Windows或Linux。 这允许Flash应用程序再现在网页浏览器的背景中。然而,浏览器插件不是再现Flash的 唯一方法。例如,AdobeIntegrated Runtime或Adobe AIR提供一种跨平台的运行时环境, 其支持Flash,但是着眼于本地安装的桌面应用程序而非网页浏览器中运行的程序。因此, Adobe AIR环境能够提供额外的特性,其一般对于本地安装的桌面应用程序如本地或离线数据储存可用。无论Flash运行时环境174是作为浏览器插件运行、是被本地安装作为 Adobe AIR、还是代表一些可选择的应用程序范例,Flash应用程序175都能够被支持。
硬件设备110经由连接145可链接到主机系统150,连接145可以包括,例如物理 上链接到连接器142和接受器152的通用串行总线(USB)电缆。在此实施方式中,代理服 务器163可以包括用于在Flash 二进制套接字API 179所使用的二进制套接字通信与串行 连接API 139所使用的USB串行连接之间的无缝翻译的机制。 USB仅仅是用于硬件设备连接的一个示例性协议,并且可选择的实施方式可以使 用例如Firewire连接器,或使用诸如Bluetooth或WiFi协议的无线传输。如果连接145包 括物理电缆如USB或Firewire,那么连接145能够从主机系统150获取电力以操作硬件设 备110的组件。在无线传输的情况下,连接器142和接受器152可能会被无线接收器和发射 器取代,连接145可代表无线射频信号,并且电力可能通过具有插接站(dockingstation) 的嵌入式可充电电池或一些其他方法来提供。有线和无线连通性都还可能被提供有对电池 充电的有线连接。由于代理服务器163和串行连接API 139对于Flash应用程序175和硬 件应用程序135是模块化的,所以新连通性协议支持能够容易被实施,因为前述应用程序 不直接与连通性协议连接。 —旦硬件设备110被提供了电力,硬件应用程序135能够经由硬件API 131操纵 硬件系统125,硬件系统125包括环境监测系统126、机械控制系统127以及表示系统128。 所提供的外围硬件系统仅仅是示例性的,因为任意硬件可以被添加到硬件设备110。环境 监测系统126可提供关于外部环境的不同的细节,如触觉相互作用、音频反馈和视频反馈, 其可以由触觉传感器、扬声器和摄像机支持。机械控制系统127可通过控制伺服系统、传动 装置、发动机以及其他机械设备为硬件设备110的运动做准备。表示系统128可控制不同 的视听元件,如LCD屏、扬声器和LED灯。外部硬件115提供实际的硬件组件以支持硬件系 统125,包括用于监测的传感器116、用于运动的伺服系统117以及用于显示图像的显示装 置118。 硬件设备110还包括远程分布式方法132和分布式方法136,形成RMI系统的硬 件设备方面。而硬件应用程序135能够根据分布式方法136使用硬件API 131来控制硬 件系统125,或者发送远程分布式方法132以请求来自Flash应用程序175的服务。类似 地,Flash应用程序175能够使用动作脚本硬件API 171来调用远程分布式方法172或接 收分布式方法176,这形成了前述RMI系统的Flash方面。串行器133和解串器137为硬 件设备110实行可能必要的、不同的对象数据的变换,如信号编组(marshalling)和解组 (unmarshalling)、引用解析(reference resolving)以及其他操作。可移植的数据流使得 即使在不同的结构或环境的远程位置也可以是语义上相同的。例如,相应的串行器173和 解串器177允许主机系统150与硬件设备110无缝通信对象数据,即使主机系统150运行 在完全不同的结构上。 Flash应用程序175通过使用远程方法以驱动硬件系统125而非试图直接控制硬 件系统125,能够达到更加及时和准确的硬件控制。当硬件系统125需要以严格的定时容 差来驱动以有效地或完全地运行时,尤其如此。例如,伺服系统117可以由脉宽调制预期脉 冲信号以只有几毫秒的周期率来驱动。由于硬件设备110的嵌入式处理器(图1中未显 示)能够将其所有资源仅用于服务硬件应用程序135,因此,如果硬件应用程序135被适当开发,则其能够支持有保证的及时的脉冲信号生成。 然而,Flash应用程序175可以在如Windows的通用的多任务主机平台上运行,其 设计成通过使用进程调度程序以同时容纳几个不同的应用程序来服务所有的执行任务。因 此,Flash应用程序175可能需要与其他任务竞争主机处理器160的关注。因此,需要实时 服务的硬件设备110上的任务可能不会收到有保证的资源,因为硬件中断或其他软件进程 可能抢占主机处理器160。即使在主机系统150上有足够的资源可用以服务于时间关键的 任务,但由于命令从Flash应用程序175发送到硬件系统125的协议开销,可能会引进一些 延迟。在此延迟的期间,用于硬件控制的关键的时间窗口可能已经消逝。
另一方面,诸如由嵌入式处理器提供的那些专用的主机外(off-host)的计算,能 够提供用于细粒度(fine-grained)硬件控制的实时响应性。当开发硬件应用程序135时, 可针对硬件设备110中的嵌入式处理器的能力来优化方法,以确保硬件系统125和相应的 外部硬件115在嵌入式处理器所提供的有限的CPU周期内被有效地驱动。由于嵌入式处理 器不需要像通用的处理器那样支持其他应用程序,方法执行时间能够在外部硬件115所要 求的时间容差内被测量和优化。因此,由硬件应用程序135所支持的远程方法能够保证用 于准确和有效的硬件控制的及时性。 在Flash应用程序175能够调用远程方法以控制硬件系统125之前,必须首先提 供对用于硬件设备110的分布式对象的引用,其可以例如在通信握手过程的结束时被交 换,或通过咨询名称目录服务而被获取。 一旦获取了所述分布式对象,其公开或提供可以由 Flash应用程序175调用的远程方法的接口,在图1中示为远程分布式方法172。这些远程 方法可例如允许环境监测系统126经由传感器116获取温度数据,允许机械控制系统127 经由伺服系统117移动一个对象,以及允许表示系统128在显示装置118上显示图像。
因此,Flash应用程序175的开发者不必使自己关心硬件设备110的详细运作,并 且能够简单地调用由动作脚本硬件API 171公开的远程方法,其由例如在硬件设备110的 机器代码实施。类似地,如果硬件设备110需要来自Flash应用程序175的、待被完成的 某些信息或任务,硬件设备110的开发者能够使用远程分布式方法132,而不是不得不理解 Flash应用程序175的错综复杂。通过使用模块式开发的这种技术,工作流程能够被分段和 独立地开发,加快了交付日程并且控制了开发费用。 虽然图1已经采用面向对象的RMI方式用于远程执行,,但是也可以使用远程过程 调用(RPC)或其他提供远程执行的方法。也可以实施图1中未图示的更灵活的RMI方式, 例如支持可动态加载的类的RMI系统。目前,只有对象引用被传递,并且API实现被假设存 在于远程位置。可动态加载的类将允许硬件API容易地更新,因为API实现可以按更新的 方法的需求被获取。 然而,由于硬件设备110的嵌入式处理器可能已经因费用和电力考虑而抑制了计 算资源,复杂的RMI系统可能是不合乎要求的。待在硬件设备110上执行的方法一般会众 所周知且是不变的,因为硬件系统125将可能不支持终端用户的硬件系统模块化的交换, 所以,可能更为合理的是,为硬件设备110建立嵌入式静态硬件API,使其适合于制造中将 包括的具体的硬件系统。然而,所述静态硬件API还可能被储存在可擦写存储器部分,如果 错误修正或额外的方法被开发用于硬件系统125,则允许硬件API仍然可被更新。
Flash运行时环境174能够通过主机系统150的网络协议栈,例如传输控制协议/互联网协议(TCP/IP)协议栈,来路由通信。由于Flash应用程序175仅能够直接寻址在 Flash运行时环境174中本身支持的硬件,而网络通信在Flash运行时环境174中是本身支 持的,所以,Flash应用程序175可改为利用网络通信来与硬件设备110通信。
然而,由于硬件设备110通过USB而非网络被连接到主机系统150,代理服务器 163提供Flash应用程序175和硬件设备110之间的路由服务转换。代理服务器163可以 作为本地主机服务而执行,截接通过指定的网络端口的通信传播。连接145建立之后,在硬 件设备110和主机系统150之间的初始的握手可能导致安全服务162和代理服务器163从 硬件设备IIO被复制到主机存储器170,用于主机处理器160的进一步执行。然后Flash二 进制套接字API 179能够被配置为通过用于与硬件设备110通信的指定的网络端口与本地 主机通信,代理服务器163无缝地处理二进制套接字数据和串行数据之间的转换。因此,代 理服务器163通过利用Flash本身支持的网络通信能力,桥接硬件设备110和Flash应用 程序165之间的通信缺口。 允许Flash应用程序175发送和接收来自任意位置的数据,会造成潜在的安全问 题,尤其对于DNS绑定攻击,所以不同的安全协议已经在Flash的较新的版本中被实施。特 别令人感兴趣的是套接字策略文件,其呈现规则列表,为套接字连接管理允许的网络端口 和主机。因此,套接字策略文件能使得服务器可以拒绝来自某些主机或端口的访问,但是 Flash客户必须首先觉察到它们。 因此,在Flash运行时环境174允许Flash 二进制套接字API 179通过所请求的 网络端口连接到服务器目的地之前,Flash运行时环境174通过默认端口 843自动向同一 服务器目的地的IP地址发出对套接字主策略文件的请求。即使服务器目的地和请求的主 机在相同的域,此请求也被发送。可选择地,Flash二进制套接字API 179能够明确指定一 个可选择的端口来请求安全策略。如果服务器目的地在超时周期内不提供响应,或者如果 返回的套接字策略文件拒绝来自主机系统150或所请求的网络端口的访问,那么Flash运 行时环境174将拒绝与服务器目的地的套接字通信,并且Flash 二进制套接字API 179可 以为原始请求返回 一个错误代码。 通过提供套接字策略文件形式的被适当格式化的安全策略,在代理服务器163所 使用的网络端口上允许来自主机系统150的访问,安全服务162可以满足Flash的以上的 安全特性。因此,Flash运行时环境174被授予许可来通过代理服务器163管理的端口与 服务器目的地通信,或者与主机系统150通信,因为本地主机是一个身份参照(identity reference)。这些许可仅仅是使得主机系统150和硬件设备110之间能够相互通信的最少 数量的特权,并且安全服务162能够例如返回更广阔的套接字策略文件,允许从任何主机 或任何端口访问。 虽然套接字策略文件指定用于套接字通信的许可,但是套接字元策略指定访问套 接字策略文件自身的许可。套接字元策略可以仅仅被限定在从默认端口 843提供的主套接 字策略文件中。然而,由于默认的元策略允许从服务器目的地上的任何端口和任何位置访 问套接字策略,所以一般不需要指定一个元策略,因为"所有"设置是默认的。此外,默认的 套接字元策略预计对于Flash的未来版本仍然保持"所有"。 虽然安全服务162和代理服务器163允许Flash应用程序175与硬件设备110通 信,但是其需要由主机处理器160执行以提供这种通信服务。虽然传统的本地安装的软件通过安装本地服务或专门的驱动程序能够很普通地完成这一点,但是在Flash应用程序的 背景下,此情况可能不那么明显。 —种可能是在连接145 —建立时就使用握手过程,这启动执行安全服务162和代 理服务器163。此握手过程可能例如依靠于呈现作为一种公共的HID(人机接口设备)的 硬件设备110,使得主机系统150能够自动支持不具有专门的驱动程序的硬件设备IIO,并 且Flash应用程序175能够简单地轮询硬件设备110的存在,以启动握手过程。以这种方 式,用户能够简单地连接硬件设备IIO,用于在Flash应用程序175中立即使用,而无需处 理复杂的软件或驱动程序的安装。其他实施方式可能使用例如自动执行机制如Windows的 Autorun,或可下载的驱动插件如Java或ActiveX小部件(widget)。然而,由于用户可能不 得不面对的各种安全告警和提示,使用由主机系统150自动支持的一般公认的接口的实施 方式可能是优选的,因为这种接口一般能够在没有用户介入的情况下运行。未来的主机平 台可能提供可信计算,使得可以允许自动执行来自合法发布者的可信代码,从而可能提供 更加灵活和精细的系统。 出于本申请的目的,假设握手过程能够被实施,以在主机处理器160上开始安全 服务162和代理服务器163的执行。作为备用,如果用于硬件设备110的自动支持的不同尝 试失败了,可以提供手动软件安装指南或软件下载给终端用户。 一旦驱动程序或软件被手 动安装,其可能被配置为在主机系统150 —起动时就自动执行,减轻手动安装的一些麻烦, 因为用户仅需要完成该过程一次。 移动到图2a,图2a呈现了根据本发明的一种实施方式,描述用于所述集成硬件平 台的接口生成工作流程的流程图。流程图200包括API契约文件(contract file)290、 RMI接口生成器293、Flash二进制套接字API 279、动作脚本硬件API 271、C/C++串行连接 API 239、串行器233、解串器237、硬件API 231、远程分布式方法232以及分布式方法236。 API契约文件290包括硬件API定义291和Flash API定义292。 RMI接口生成器293包 括Flash动作脚本接口构建器(builder) 294和硬件C/C++接口构建器295。动作脚本硬件 API 271包括串行器273、解串器277、远程分布式方法272以及分布式方法276。
动作脚本硬件API 271对应于图1中的动作脚本硬件API 171,其包括对应于串行 器173的串行器273、对应于解串器177的解串器277、对应于远程分布式方法172的远程 分布式方法272、以及对应于分布式方法176的分布式方法276。 Flash 二进制套接字API 279对应于Flash 二进制套接字API 179。 C/C++串行连接API 239对应于串行连接API 139。串行器233对应于串行器133。解串器237对应于解串器137。硬件API 231对应于 硬件API 131。远程分布式方法232对应于远程分布式方法132。分布式方法236对应于 分布式方法136。 在流程图200中可以发现如图1所描述的使用用于远程执行的RMI方式的一些开 发益处。在写实施代码之前,可以提前结合关于Flash远程方法或Flash API定义292和 硬件远程方法或硬件API定义291两者将如何运作的协定标准来准备API契约文件290。 利用通过RMI接口生成器293处理API契约文件290的结果、以及代替远端现行工作(WIP) API方法的模拟测试系统的开发,开发团队能够独立地开发Flash动作脚本或硬件C/C++, 而不等待或依靠其他开发团队的进展。只要开发者遵循由API契约文件290预定的规范, 那么独立开发的代码的后来的集成可以没有任何问题地一起无缝地工作。此外,通过允许RMI接口生成器293产生处理RMI支持和网络或串行总线通信的细节的API模块,可以避免 可能起因于手动编码这些API模块的人类编程错误,并且开发者能够将其注意力集中于实 施用于主要的Flash或C/C++应用程序的代码。 起因于API契约文件290的编程代码的增加的模块化和抽象化也促进了更容易 读、开发、调试和维护的更高级的程序设计风格,长期来说减少了开发时间和费用。虽然具 有大量的嵌入式低级程序代码和冗余码的专门(ad-hoc)的程序设计风格可以提供更快的 初始开发时期,但是,对于任何中等大小的项目,例如在线游戏,在缺少代码的逻辑模块化 的情况下,代码维护可能迅速变成不利条件,而由API契约文件290所提供的清晰定义的 API能够促使逻辑模块化和代码重用。 检查RMI接口生成器293, Flash动作脚本接口构建器294和硬件C/C++接口构建 器295两者都生成图1中已经观察到的不同的API模块。RMI接口生成器293能够从API 契约文件290取得一般描述的API定义,并且将其转换成以用于特定的目标平台的代码描 述的API模块,或图2a情况下的Flash和C/C++。 RMI接口生成器293还可以被配置为通 过替换接口构建器而为其它目标平台生成API模块,但是C/C++对于低级系统编程是常用 的编程语言,并且也可适合产生用于测试硬件设备210的机器代码。常规的RMI接口生成 器293可能被内部开发,或者API契约文件290可能使用现有的接口描述语言来表达,并且 现有的跨平台RMI接口生成器293可以被用来加快开发。 转向图2b,图2b呈现了根据本发明的一种实施方式,用于由Flash开发者所利 用的所述集成硬件平台的Flash开发环境的框图。图2b包括测试主机系统250,其包括 WIP(现行工作)Flash应用程序275、动作脚本硬件271 、Flash二进制套接字API 279、以及 硬件设备模拟器296。测试主机系统250可以对应于图1中的主机系统150的简化版本。
Flash 二进制套接字API 279和动作脚本硬件API 271显示为灰色以强调这些 API模块已经通过RMI接口生成器293生成,并且不需要来自开发者的进一步的相互作用。 因此,Flash开发团队能够将开发集中于WIP Flash应用程序275、或WIP Flash应用程序 275将在客户方面支持的在线游戏,包括分布式方法276的实施。 由于独立的团队可能正在开发硬件设备,硬件设备模拟器296作为替代物来代 替,用于开发目的。硬件设备模拟器296不一定需要准确地模拟硬件设备。例如硬件设备模 拟器296能够实施方法以返回预定的测试值,或其可能更准确模仿实际硬件设备的响应, 这取决于可用的开发资源、产品时间表以及其他开发团队的进展。现行工作硬件设备可能 也被使用,其中未开发好的远程方法被指向硬件设备模拟器296而已开发好的远程方法被 指向WIP硬件。 类似地,独立的网络和服务器团队可能开发项目的分布式对象部分。通过使用用 于在线游戏的服务器模拟器,即使没有工作网络基础结构,对于网络互操作性,测试主机系 统250然后仍然能够被测试。相反地,如果这种网络基础结构确实存在,那么可针对实际联 网的硬件,对测试主机系统250进行测试。如果这种测试确实发生了 ,那么可能需要进行一 些处理以阻止一般公众试图访问图2b中的测试组件。例如,阻止公众访问的防火墙可能被 安装用于测试组件,或者本地网络可能与公共互联网隔离。 移动到图2c,图2c呈现了根据本发明的一种实施方式,由硬件设备开发者所 利用的硬件开发环境的框图。图2c包括测试硬件设备210,其包括硬件API 231、原型
11(prototype)硬件系统225、 WIP硬件应用程序235、远程分布式方法232、串行器233、分布 式方法236、解串器237、C/C++串行连接API 239以及主机系统模拟器297。测试硬件设备 210可以对应于图1中的硬件设备110的简化版本。原型硬件系统225可以对应于硬件系 统125。 与图2b类似,几个API元件显示为灰色以表明它们已经由RMI接口生成器293准 备,其包括硬件API 231、远程分布式方法232、串行器233、分布式方法236、解串器237以 及。/0++串行连接八?1 239。因此,硬件开发团队能够将开发集中于WIP硬件应用程序235、 或者与原型硬件系统225联接的主要硬件控制程序、以及分布式方法236的实施。
由于独立的Flash开发团队可能正在开发Flash应用程序,出于开发的目的,主机 系统模拟器297作为主机系统来代替,执行Flash应用程序。与图2b中的硬件设备模拟器 296类似,主机系统模拟器297不一定需要准确模拟执行Flash应用程序的主机系统。例 如,主机系统模拟器297可以实施方法以返回预定的测试值,或者其可以更准确模仿实际 Flash应用程序的响应,这取决于可用的开发资源、产品时间表以及其他开发团队的进展。 也可使用测试主机系统上的现行工作Flash应用程序,其中未开发好的远程方法被指向主 机系统模拟器297而已开发好的远程方法被指向WIP Flash应用程序。
类似地,开发原型硬件系统225可与开发驱动硬件系统的软件分开。集成电路和 电子工程团队可能独立于原型硬件系统225工作,而嵌入式系统编程团队工作于用于驱动 测试硬件设备210的软件,两个团队预先达成关于原型硬件系统225将怎样经由硬件API 231与WIP硬件应用235接口的协议。 因此,通过分离逻辑接口,模拟缺失或在开发部分中,以及利用自动化预处理工具 如图2a中的RMI接口生成器293,独立并行开发可以通过很少的预先计划例如API契约文 件290的准备来进行。通过周期地重建独立开发的现行工作组件和互操作性测试,可能要 求接口修正或实施改变的任何问题可以在变成主要问题之前早期得到解决。因此模块化编 程方式的优点能够被保留而不牺牲整体方式的测试益处。 图3呈现了根据本发明的一种实施方式,具有分布式对象的集成硬件平台环境的 框图。分布式环境300包括硬件设备310a、硬件设备310b、硬件设备310c、主机系统350a、 主机系统350b、主机系统350c以及游戏服务器385。硬件设备310a包括串行API 339、硬 件应用程序335a、环境监测系统326a、表示系统328a、触摸敏感的"猫毛"316a以及扬声器 318a。硬件设备310b包括串行API 339、硬件应用程序335b、环境监测系统326b、机械控制 系统327b、触摸敏感的"狗毛"316b以及伺服系统317b。硬件设备310c包括串行API 339、 硬件应用程序335c、环境监测系统326c、表示系统328c、扩音器316c以及扬声器318c。主 机系统350a到350c的每一个都包括分布式对象API 389、Flash应用程序375、Flash 二进 制套接字API 379以及代理服务器363。连接345a到345c分别将主机系统350a到350c 与硬件设备310a到310c相连接。 虽然每一个主机系统包括相同的应用程序代码,但是每一个主机系统都有独立的 主机处理器(图3中省略)来独立地运行应用程序代码。正如图l,每一个主机客户可能已 经从网页服务器下载了应用程序代码。每一个硬件设备还包含特别定制的用于每一个硬件 设备的特定硬件配置的硬件应用程序,每一个硬件应用程序在图3中省略的嵌入式处理器 上执行。几个其他的细节在图3中也省略了,例如用于实施RMI的一些细节,以呈现更加简明易懂的示例性分布式系统的图示。如果需要,对于额外的细节,可参考图l和图2。
硬件设备310a到310c的每一个都对应于图1的硬件设备110。串行API 339对 应于串行连接API 139。硬件应用程序335a到335c的每一个都对应于硬件应用程序135。 环境监测系统326a到326c的每一个都对应于环境监测系统126。机械控制系统327b对应 于机械控制系统127。表示系统328a到表示系统328c每一个都对应于表示系统128。主 机系统350a到350c的每一个都对应于主机系统150。 Flash应用程序375对应于Flash 应用程序175。 Flash 二进制套接字API 379对应于Flash 二进制套接字API 179。代理服 务器363对应于代理服务器163。 游戏服务器385有可能经由分布式在线服务386连接到几个主机系统以支持共享 在线环境。例如,游戏服务器385可能主管一个在线世界,其中用户由Flash应用程序375 上的动物角色代表。每一个主机系统的用户可购买代表他们希望在线玩的动物的硬件设 备。因此主机系统350a的用户可能购买一个猫型的硬件设备作为硬件设备310a,而主机系 统350b的用户可能购买一个狗型的硬件设备作为硬件设备310b,并且主机系统350c的用 户可能购买一个鸟型的硬件设备作为硬件设备310c,由图3中的图标显示。然后每一个主 机系统能够询问其各自的硬件设备以获取用于执行远程方法的数据对象,并且可以通过一 网络(未在图3中显示)发送这些数据对象到游戏服务器385。然后分布式在线服务386 能够监测和管理每一个连接的主机系统,允许主机系统通过分布式对象API 389访问连接 到其他主机系统的硬件设备。 虽然每一个硬件设备的外观可能不同,但是内部组件可能都类似图1中的硬件设 备IIO,具有一些不同硬件能力。每一个平台都装备有环境监测系统,但其被连接到不同的 硬件。对于环境监测系统326a,对触摸敏感的"猫毛"316a进行硬件访问。这可能包括猫毛 的人工外层,其配置成探测抚摸和其他触摸相互作用。因此,主机系统350a的用户可能抚 摸触摸敏感的"猫毛"316a,其生成硬件信号以被发送到环境监测系统326a,如果需要,其被 依次传递到硬件应用程序335a用于进一步处理。以相似的方式,触摸敏感的"狗毛"316b 可能提供相同的功能,并且扩音器316c可能记录在主机系统350处的用户的说话的声音而 非探测触觉相互作用。 每一个硬件设备还包含一些硬件系统以允许动物对相互作用"作出反应"。例如, 提供到扬声器318a的访问的表示系统328a能够模仿猫叫声。这可能被触发作为对触摸敏 感的"猫毛"316a被抚摸的响应。控制伺服系统317b的机械控制系统327b能够启动人工 狗尾的摆动,也被触发作为对触摸敏感的"狗毛"316b的抚摸的响应。表示系统328c可能 从扩音器316c获取音调上升的声音样本,以模仿在主机系统350c处的用户说出的话。
这些种类的互动玩具可能已经在玩具商店的货架上可得,但是Flash应用程序 375和游戏服务器385提供方便的共享在线背景以使用这些玩具。例如, 一旦用户连接硬件 设备到其各自的主机系统,Flash应用程序375可探测动物类型并且在连接该到主机系统 的显示装置上视觉再现该动物化身(avatar)。此外,当Flash应用程序375与分布式对象 API 389联接时,用户不仅能够看见他们自己的化身,也能够看见经由一网络连接到游戏服 务器385的其他主机系统的化身。因此,图3中每一个主机系统的每一个用户都能够在他 们各自的显示装置上同时看见猫、狗和鸟。 通过利用分布式对象API 389,Flash应用程序375能够支持分布式用户与动物化身和相关的硬件设备相互作用。例如,主机系统350b处的用户可能指示他的狗化身朝与主 机系统350a相关的猫化身吠叫。因此Flash应用程序375可以调用由硬件设备310b提供 的远程"吠叫"方法。然后硬件应用程序335b能够执行由被调用的对象所表明的相关本地 方法,或所述"吠叫"方法。这可能例如发送命令到机械控制系统327b,使得伺服系统317b 移动硬件设备310b的外部的"颚"。图3中未示出的用于硬件设备310b的表示系统,还可 能被利用来创造通过扬声器的可听见的吠叫。 到目前为止,本实施例的所有影响被局限于本地背景、或单一的主机系统和单一 的硬件系统。然而,回想将吠叫指向猫化身的硬件设备310b的用户,或与主机系统350a相 关的用户。因此,主机系统350b可能经由分布式对象API 389到分布式在线服务386,通知 游戏服务器385此吠叫动作。分布式在线服务386能够查询账户数据库,以确定与猫化身 相关的主机系统。然后基于可能性、账户统计或其他变量,分布式在线服务386能够执行某 种逻辑以确定猫化身的反应应该是什么,并且发送合适的响应到主机系统350a。例如,分布 式在线服务386方法可能指示主机系统350a调用"毛直立(fur standing)"方法,导致触 摸敏感的"猫毛"316a竖立。 可选择地,猫可能朝狗发出嘶嘶声,导致类似的进程发生。分布式在线服务386可 能询问与主机系统350b相关的"勇气(courage)"变量以决定狗的反应。如果狗具有较低 的勇气,则Flash应用程序375可能指示机械控制系统327b使用伺服系统317b移动狗处 于呜咽的位置,而高勇气可能导致狗站立而处于威胁的姿势。这种响应也能够被发回游戏 服务器385,以使得主机系统350a和主机系统350c处的用户也能够在他们各自的显示装置 上观察到呜咽的或威胁猫的狗。再举一个例子,硬件设备310c的鸟通过扬声器318c重复 的词组也可通过主机系统350a和主机系统350b的扬声器鸣叫,取决于鸟化身与在线世界 中的其他用户的接近程度。 这个在线动物化身游戏仅仅是一个可能的实施方式,并且许多其他的实施方式能 够使用相同的原则。例如,Flash应用程序375可包括在线赛车游戏,其具有看起来像方向 盘并且支持力反馈或振动的硬件设备。如果竞争的游戏者将他的车撞到用户,那么该用户 的方向盘可能被指示强烈振动,并且相同的影响可能发生在竞争的游戏者。Flash应用程序 375还可以包括两个游戏者的联网的棋游戏,其具有类似于棋盘的硬件设备,该硬件设备具 有硬件以探测棋子的位置并且移动棋子而没有手动介入。因此,一边的用户能够手动地移 动棋子,而另一边的棋子可能自动移动而没有用户介入,并且虚拟的棋盘的显示可以在两 边更新。 当然,除了游戏,集成硬件平台还可以支持其他的应用程序。例如,所述平台可以 利用用于硬件设备的绘图板,允许通过Flash应用程序375由互联网连接的用户之间的协 同绘图(collaborative drawing)或头脑风暴(idea brainstorming)。由一个用户绘制的 草图能够被所连接的其他用户看见,并且其他连接的用户能够修改其在绘图板上看见的草 图,所有的用户看见相同的共享的画布背景(canvas)。由于本申请所描述的集成硬件平台 提供了到任意种类的硬件的广义的、抽象的接口,用于扩展Flash应用程序的能力的创造 性的实际上是无限的。 图4示出了根据本发明的一种实施方式描述步骤的流程图,通过所述步骤,集成 硬件平台中的硬件设备的处理器经由Flash应用程序的应用程序接口 (API)来提供硬件控
14制。流程图400省去了某些细节和特性,其对于本领域的普通技术人员是明显的。例如,作 为本领域已知的,步骤可以包括一个或多个子步骤或可以涉及具体的装备或材料。虽然流 程图400中所表明的步骤410到440足以描述本发明的一种实施方式,但是本发明的其他 实施方式可以使用与流程图400中所示的步骤不同的步骤。 参考图4中流程图400的步骤410和图1的环境100,流程图400的步骤410包 括硬件设备110的处理器,其通过连接145建立与主机系统150的链接。如之前所述,这可 以利用物理连接如USB电缆或通过具有电池作为电源的无线传输来做到。可选择地,可以 支持这两种连接类型,其中物理连接为电池提供充电电力。如果连接145是物理连接,那么 硬件设备110的嵌入式处理器可能会闲置,直到其从连接器142接收到指示电连接的电流。 如果连接145使用无线传输,那么插入到主机系统150的无线接收器软件保护器(dongle) 或手动开关可能会触发该嵌入式处理器进入操作状态。 一旦硬件设备IIO接收到电力,其 可能开始准备任何必要的握手或协议过程以打开与主机系统150的通信,例如公开可探测 到的USB设备。 参考图4中流程图400的步骤420和图1中的环境IOO,流程图400的步骤420包 括硬件设备110的处理器,其启动安全服务代码162和代理服务器代码163的执行。如之 前所述,这可以通过让主机系统150使用USB HID发现以及Flash方面的设备轮询、通过利 用自动操作系统特性、通过使用下载的插件、或通过复制安全服务代码162和代理服务器 代码163到主机存储器170用于由主机系统150的主机处理器160执行的其他的方法来完 成。未来的平台可能提供可信计算,使得允许来自合法发布者的可信代码的自动执行,从而 提供精细的解决方案。 参考图4中流程图400的步骤430和图1中的环境IOO,流程图400的步骤430包 括硬件设备110的嵌入式处理器,其从Flash应用程序175接收由代理服务器163的执行 所中继(relay)的API远程方法调用。此事物处理的细节已经结合图1讨论了一些细节, 但是简略地,远程分布式方法172被调用,被串行器173串行,由代理服务器163转送和转 换成串行数据,由串行连接API 139在硬件设备IIO上接收,由解串器137解串,并且由硬 件应用程序135根据其而起作用。 参考图4中流程图400的步骤440和图1中的环境IOO,流程图400的步骤440包 括硬件设备110的处理器,其实施来自步骤430的API RMI所指示的硬件API 131以控制 硬件系统125。再次,此事物处理的细节已经结合图l和图2讨论了一些细节,但是总结步 骤440,其集中于特定的被调用的远程方法的实施,这可能涉及嵌入式机器代码的执行或通 过其他方式执行。 另外,主机系统150能够利用联网服务器,如图3的游戏服务器385,允许与其他主 机系统的硬件设备相互作用。以这种方式,对一个硬件设备的状态改变能够影响不同硬件 设备的状态。在如图3的联网背景下,硬件设备310a到310c能够使用公共的Flash应用程 序375、分布式对象API 389和游戏服务器385,经过他们各自的主机系统350a到350c而相 互通信。这开辟了一个互动新世界,其具有对以前在Flash硬件平台上不直接支持的硬件 设备上的控制。通过使用利用Flash的网络通信能力的方便的一体化的集成硬件平台,在 支持共享的在线体验的Flash应用程序中获得新硬件的支持可以像插入USB线一样简单。
从本发明的上述描述,明显的是,在不偏离本发明的范围的情况下,可使用不同的技术来实施本发明的构思。此外,虽然本发明结合确定实施方式的具体参考而被描述,但是 本领域的普通技术人员将意识到,在不偏离本发明的精神和范围的情况下,可以做出形式 或细节上的改变。因此,所描述的实施方式在所有方面都被视为说明性的而非限制性的。还 应当理解的是,本发明不局限于这里描述的特定的实施方式,而是在不偏离本发明的范围 的情况下能够有许多重排、修改以及替换。
权利要求
一种计算机平台,其经由用于Flash应用程序的应用程序接口(API)提供硬件控制,所述Flash应用程序在具有主机处理器和主机存储器的主机系统上的Flash运行时环境中执行,所述计算机平台包括外围硬件;平台处理器;可链接到所述主机系统的连接器设备;以及平台存储器,其具有由所述Flash应用程序的所述API提供的用于远程方法的API实现、使得所述Flash应用程序和所述平台处理器之间能够通信的代理服务器、以及用于提供安全策略来为与所述平台处理器的通信授予网络连接许可的安全服务;其中所述平台处理器被配置为通过所述连接器设备建立与所述主机系统的链接;启动所述安全服务和所述代理服务器的执行;从所述Flash应用程序接收由所述代理服务器的执行所中继的API远程方法调用;以及执行由所述API远程方法调用所指示的所述API实现,用于控制所述外围硬件。
2. 如权利要求1所述的计算机平台,其中所述平台处理器还被配置为向一服务器发送 所述API远程方法调用。
3. 如权利要求2所述的计算机平台,其中所述服务器处理所述API远程方法调用,以分 配一 API远程方法调用到第二个主机系统。
4. 如权利要求3所述的计算机平台,其中所分配的API远程方法调用由在所述第二个 主机系统上执行的Flash应用程序使用,以控制链接到所述第二个主机系统的计算机平台 的外围硬件。
5. 如权利要求1所述的计算机平台,其中所述平台处理器被配置为将安全服务代码和 代理服务器代码复制到所述主机存储器,并且其中所述平台处理器被配置为使得所述主机 处理器执行来自所述主机存储器的所述安全服务代码和所述代理服务器代码。
6. 如权利要求1所述的计算机平台,其中所述连接器设备被配置为使用通用串行总线 (USB)。
7. 如权利要求1所述的计算机平台,其中所述外围硬件被配置为使用提供物理运动的 机械控制系统。
8. 如权利要求1所述的计算机平台,其中所述外围硬件被配置为使用提供视听反馈的 表示系统。
9. 如权利要求1所述的计算机平台,其中所述外围硬件被配置为使用环境监测系统以 探测和记录与所述计算机平台的外部相互作用。
10. 如权利要求9所述的计算机平台,其中所述环境监测系统包括用于探测和记录与 所述计算机平台的物理相互作用的触觉传感器。
11. 如权利要求9所述的计算机平台,其中所述环境监测系统包括用于音频记录的扩 音器。
12. 如权利要求9所述的计算机平台,其中所述环境监测系统包括用于视频记录的摄 像机。
13. —种方法,其由一计算机平台的平台处理器使用以经由Flash应用程序使用的应 用程序接口 (API)来提供硬件控制,所述Flash应用程序在具有主机处理器和主机存储器 的主机系统上的Flash运行时环境中执行,所述计算机平台包括外围硬件、可链接到所述 主机系统的连接器设备、以及平台存储器,所述平台存储器具有由所述Flash应用程序的 所述API提供的用于远程方法的API实现、用于使得所述Flash应用程序和所述平台处理 器之间能够通信的代理服务器、以及用于提供安全策略来为与所述平台处理器的通信授予 网络连接许可的安全服务,所述方法包括通过所述连接器设备建立与所述主机系统的链接; 启动所述安全服务和所述代理服务器的执行;从所述Flash应用程序接收由所述代理服务器的执行所中继的API远程方法调用;以及执行由所述API远程方法调用所指示的所述API实现,用于控制所述外围硬件。
14. 如权利要求13所述的方法,其中所述平台处理器还被配置为向一服务器发送所述 API远程方法调用。
15. 如权利要求14所述的方法,其中所述服务器处理所述API远程方法调用,以分配一 API远程方法调用到第二个主机系统。
16. 如权利要求15所述的方法,其中所分配的API远程方法调用由在所述第二个主机 系统上执行的Flash应用程序使用,以控制链接到所述第二个主机系统的计算机平台的外 围硬件。
17. 如权利要求13所述的方法,其中所述平台处理器被配置为将安全服务代码和代理 服务器代码复制到所述主机存储器,并且其中所述平台处理器被配置为使得所述主机处理 器执行来自所述主机存储器的所述安全服务代码和所述代理服务器代码。
18. 如权利要求13所述的方法,其中所述连接器设备被配置为使用通用串行总线 (USB)。
19. 如权利要求13所述的方法,其中所述外围硬件被配置为与周围的环境物理上相互 作用。
20. —种方法,其用于控制由具有平台处理器的计算机平台提供的外围硬件,供在一主 机系统上的Flash运行时环境中执行的Flash应用程序使用,所述平台处理器提供用于使 所述Flash应用程序和所述平台处理器之间能够通信的代理服务器、以及用于提供安全策 略从而为与所述平台处理器通信授予网络连接许可的安全服务的执行,所述方法包括向所述安全服务的执行发起对所述安全策略的请求;确认所述Flash运行时环境已经为与所述平台处理器的通信授予许可;以及 通过网络连接发送API远程方法调用到所述代理服务器的执行,以控制所述外围硬件。
全文摘要
提供了用于Flash应用程序的具有分布式对象的集成硬件平台的系统和方法,用于提供集成硬件平台,以允许经由在主机系统上的Flash运行时环境中执行的Flash应用程序所使用的应用程序接口(API)的硬件控制。提供了计算机平台,其包括处理器、外围硬件、连接器设备以及存储器。所述存储器包括由用于Flash应用程序的API提供的用于远程方法的API实现、用于使得Flash应用程序和平台处理器之间能够通信的代理服务器、以及用于提供安全策略从而为与平台处理器的通信授予网络连接许可的安全服务。API远程方法调用允许Flash应用程序控制外围硬件,并且联网的服务器可管理远程调用以控制多个联网客户的平台硬件。
文档编号G06F9/46GK101776994SQ20101000225
公开日2010年7月14日 申请日期2010年1月12日 优先权日2009年1月13日
发明者乔纳森·罗斯 申请人:迪斯尼实业公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1