实时内核的制作方法

文档序号:6595776阅读:205来源:国知局
专利名称:实时内核的制作方法
实时内核
背景技术
对基于化身的虚拟现实通信系统的兴趣已随具有高处理能力和高带宽网络连接的计算系统的可用性的增加而成长。此种虚拟现实系统的主要目标是创建虚拟空间,其中用户可使用实时数据流(诸如音频、视频和文本聊天流)进行交互和通信。虚拟空间一般由计算机图形描述定义,该图形描述描述了该空间的虚拟几何形状、映射到该虚拟几何形状上的颜色和纹理、控制用户如何在该空间中移动的碰撞属性、以及该空间的听觉属性(诸如混响和声音吸收属性)。在典型的虚拟现实系统中,用户从相应计算机通过接口彼此通信,该接口是该系统所支持的一个或更多个实时数据流的源、阱、或者源和阱两者。运行在每一台用户计算机上的虚拟现实软件应用基于描述虚拟空间中的化身的位置的位置信息来配置其自身的音频和图形呈现。该位置信息通常直接从其他用户的计算机接收或间接从中央存在性服务器接收。默认地,虚拟现实软件应用通常将虚拟空间中表示的每个源连接到该虚拟空间中表示的每个阱,这受到全局开关规则、局部用户偏好、以及该虚拟空间中的对象属性中指定的条件的影响。这些条件通常以对象间的相对距离的方式指定。例如,一些虚拟现实软件应用被配置成使得如果化身间的分开距离超过最大阈值距离则不建立实时数据流连接。成功的虚拟现实通信系统通常应具有相对低的计算资源要求,以便实时通信性能可使用当前可用的计算设备和网络带宽限制来达成。此外,此种系统通常应当以鼓励区域设计者开发提高用户对该系统的采用的虚拟区域的方式来实现。发明概述在一方面,本发明的特征在于一种方法,根据该方法在本地网络节点接收来自远程网络节点的一个或更多个流处置指令。这一个或更多个流处置指令包括对用于处理至少一个实时数据流的流处理机的描述。在本地网络节点,根据该描述创建流处理机。在本地网络节点产生所得数据流。在此过程中,实时数据流通过所创建的流处理机处理。在另一方面,本发明特征在于一种方法,根据该方法从一个或更多个流处置指令解析对实时流处理机的描述。在此过程中,从该一个或更多个流处置指令解析输入源标识符、输出阱标识符、以及一个或更多个数据处理对象中的每一者的相应标识符。对应于相应一些标识符的实时流处置对象被实例化。根据该描述被创建包括一些被实例化的实时流处置对象的有向图。从对应于输入源标识符的输入源接收实时数据流。在对应于输出阱标识符的输出阱产生所得数据流。在此过程中,实时数据流通过该有向图处理。在另一方面,本发明特征在于一种方法,根据该方法在本地网络节点和至少一个远程网络节点之间建立至少一个实时数据流连接。在本地网络节点,源自远程网络节点的至少一个实时数据流被处理。在此过程中,通过一个或更多个实时数据处理操作处理该至少一个实时数据流以产生所得数据流。该处理被监视。响应于基于该监视确定该处理偏离性能目标,根据实时性能目标例程修改该处理。在另一方面,本发明特征在于一种方法,根据该方法,在本地网络节点,根据无连接传输协议在传输流上建立与远程网络节点的第一会话。代表本地网络节点上的一个或更多个软件实体,自动打开在第一会话中在本地网络节点和远程网络节点之间传送数据的一个或更多个信道。在第一会话中,维护一表。该表标识打开的一些信道并将相应的属性值与所标识的信道相关联。响应于确定第一会话已经失败,根据无连接传输协议自动尝试在第二传输流上建立与远程网络节点的第二会话。响应于成功建立第二会话,自动打开该表中标识的每个信道。在另一方面,本发明特征在于一种方法,根据该方法解析包括一个或更多个内核服务组件的内核组件的列表。确定被解析的列表中在本地储存库中缺少的所有内核组件。 检索被确定为缺少的每个内核组件。从一些内核服务内核组件实例化内核服务。执行被实例化的内核服务以在关于虚拟区域定义的通信环境中与一个或更多个远程网络节点通信。在另一方面,本发明特征在于一种在本地网络节点上执行的方法。根据该方法,本地网络节点被配置为支持在由虚拟区域定义的上下文中与至少一个远程网络节点实时通信。该配置过程包括响应于对枚举支持指定的应用编程接口(API)的所有插件的调用, 返回包含插件数据库中与该指定的API相关联的所有插件的标识符的列表;响应于对枚举所标识的一个插件支持的给定API的变量的调用,传递包含由所标识的插件支持的该给定 API的所有变量的标识符的列表;以及响应于对实例化由所标识的一个插件支持的所标识的API的所标识的一个变量的调用,加载所标识的插件并提供至所标识的变量的实例的指针。在所配置的本地网络节点和该至少一个远程网络节点之间建立至少一个实时数据流连接。本发明的特征还在于用于实现上述的发明方法的装置和存储致使计算机实现上述发明方法的计算机可读指令的计算机可读介质。本发明的其他特征和优点将从包括附图和权利要求的以下描述而变得显而易见。附图简述

图1是包括由网络互连的第一客户端网络节点、第二客户端网络节点、以及区域服务器网络节点16的虚拟区域通信环境的实施例的图示。图2是由实时内核的实施例执行的方法的实施例的流程图。图3A是其中网络节点以对等架构通信的虚拟区域通信环境的实施例的图示。图;3B是其中网络节点以服务器仲裁架构通信的虚拟区域通信环境的实施例的图
7J\ ο图4是包括呈现对虚拟区域的描绘的图形用户界面的网络节点的实施例的图示。
图5A是抬头显示器(HUD)叠加在呈现对虚拟区域的描绘的图形用户界面上的实施例的图示。图5B是图5A中所示的HUD的图示。图5C是图5A中所示的HUD的展开视图的图示。图6是由区域网络基础结构服务的实施例实现的方法的实施例的流程图。图7是由实时内核的实施例实现的方法的实施例的流程图。图8是包括实时内核的实施例的客户端网络节点的实施例的框图。图9是由图8的实时内核的实施例响应于请求至虚拟区域的连接的实时内核API 调用而实现的方法的实施例的流程图。图10是由图8的实时内核的实施例响应于请求进入虚拟区域的实时内核API调用而实现的方法的实施例的流程图。图11是由图8的实时内核的实施例响应于从区域服务接收的流处置指令而实现的方法的实施例的流程图。图12是由流处理机配置管理器创建的流处理机的实施例的框图。图13是由图8的实时内核的实施例在调度由实时内核执行的任务的过程中实现的方法的实施例的流程图。图14是由图8的实时内核的实施例基于对至少一个实时数据流的处理的监视而实现的方法的实施例的流程图。图15是图8的实时内核的实施例的框图。图16是通过帐户服务器的凭证来认证帐户服务器的方法的实施例的流程图。图17是由图8的实时内核的实施例的加载器组件实现的方法的实施例的流程图。图18是由图8的实时内核的实施例的STRAW服务组件实现的会话管理方法的实施例的流程图。图19是由图8的实时内核的实施例的组件响应于从区域网络基础结构服务接收的远程流处置指令而实现的方法的实施例的流程图。图20是由图8的实时内核的实施例的STRAW服务组件实现的传输协议组件的图
7J\ ο图21示出在客户端网络节点344和服务器346之间建立服务器流的方法的实施例。参照图22,每个会话由发起服务器生成的新⑶ID所标识。图23示出四通信者音频处理图的示例性实施例的元素。图M示出使人们能经由基于非虚拟区域的通信应用与虚拟区域通信者通信的计算机系统的实施例。图25示出插件类等级的实施例的图示。图沈是插件基类的集合的实施例的图示,其中每个插件基类与相应的一个或更多个导出变量类的集合相关联。图27是插件架构的实施例的框图。图观是包括插件管理器、包含一组插件容器的插件目录、插件数据库、以及调用程序的插件架构的实施例的框图。图四是由图观的插件管理器的实施例在客户端网络节点上登记可用插件的过程中实现的方法的实施例的流程图。图30是插件数据库的实施例的图示。图31是由图观的插件管理器的实施例响应于收到来自调用程序的API调用而实现的方法的实施例的流程图。发明详细描述在以下描述中,相同的附图标记被用于标识相同的元素。此外,附图旨在以图解方式解说示例性实施例的主要特征。附图并不旨在描绘实际实施例的每个特征以及所描绘元件的相对尺寸,且并不是按比例绘制的。I.术语定义
“计算机”是根据临时或永久地存储在计算机可读介质上的计算机可读指令来处理数据的任何机器、设备、或装置。“计算机操作系统”是管理和协调任务执行以及软件和硬件资源共享的计算机的软件组件。“内核”是可由软件应用调用以提供用于访问计算机资源(例如,CPU、存储器、网络链路、以及外围资源)的特定功能的软件组件的集合。“软件应用”(也称为软件、应用、 计算机软件、计算机应用、程序、以及计算机程序)是计算机能解读并执行以执行一个或更多个任务的指令集。“应用编程接口”(或API)是操作系统、库、或服务提供以支持软件应用作出的请求的功能(或规程)声明集。API指定一接口以及该接口中指定的标识符的行为。API的实现指提供该API描述的功能性的软件应用代码。“计算机数据文件”是持久存储数据以供软件应用使用的信息块。“服务”是自主地执行任务的过程(独立于其他过程)。“管理器”是服务执行任务的网关。管理器不自主地执行任务。“数据库”是以标准化格式呈现的能够被计算机搜索的记录的组织化集合。数据库可被存储在单台计算机上的单个计算机可读数据存储介质上,或者可以跨一台或更多台计算机上的多个计算机可读数据存储介质分布。“数据阱”(本文中简称为“阱”)是接收数据的设备、设备(例如,计算机)的一部分、或软件中的任一者。“数据源”(本文中简称为“源”)是始发数据的设备、设备(例如,计算机)的一部分、或软件中的任一者。“网络节点”(也被简称作“节点”)是通信网络中的接合点或连接点。示例性网络节点包括但不限于终端、计算机、以及网络交换机。“服务器网络节点”是网络上对信息或服务请求进行响应的主计算机。“客户端网络节点”是网络上向服务器请求信息或服务的计算机。“网络连接”是两个通信网络节点之间的链路。术语“本地网络节点”是指当前为首要讨论主体的网络节点。术语“远程网络节点”是指通过网络通信链路连接至本地网络节点的网络节点。“存在性”是指联网实体(例如,通信者、服务、或设备)进行通信的能力或意愿,其中此类意愿影响在网络上检测和获得关于该实体的状态的信息的能力以及连接到该实体的能力。“实时数据流”是以连续流的形式进行结构化和处理并且被设计成无延迟或者只有察觉不到的延迟地接收的数据。实时数据流包括语音、视频、用户移动、面部表情及其他物理现象的数字表示,以及计算环境内可得益于迅速传输、迅速执行、或迅速传输和迅速执行两者的数据,包括例如化身移动指令、文本聊天、实时数据馈送(例如,传感器数据、机器控制指令、交易流以及股价信息馈送)、以及文件传递。“流混合”是相同或语义上一致的类型(例如,音频、视频、聊天、和运动数据)的两个或更多个实时数据流的组合。例如,一组语音流可被混合成单个语音流,或语音流可被混合到视频流的音频部分中。“开关规则”是遵照一个或多个条件先例指定一个或多个实时数据源与一个或多个实时数据阱的连接或断开连接的指令。
20
“虚拟区域”(也被称作“区域”或“地方”)是由计算机管理的空间或场景的表示。 虚拟区域通常是一维、二维、或三维的表示;尽管在一些实施例中虚拟区域也可对应于单个点。虚拟区域经常被设计成模拟物理的真实世界空间。例如,使用传统的计算机监视器,虚拟区域可被可视化为由计算机生成的三维空间的二维图形。然而,虚拟区域并不要求相关联的可视化就能实现开关规则。虚拟区域通常是指虚拟区域模式的实例,其中模式以变量的方式定义虚拟区域的结构和内容,而实例以已从特定上下文求解出的值的方式来定义虚拟区域的结构和内容。“虚拟区域应用”(也被称作“虚拟区域描述”)是在创建虚拟区域通信环境时使用的虚拟区域的描述。虚拟区域应用通常包括对与虚拟区域的一个或多个地带相关联的几何学、物理学、以及实时开关规则的定义。“虚拟通信环境”是包括至少一个虚拟区域并且支持通信者之间的实时通信的由计算机管理的空间的表示。“地带”是虚拟区域中与至少一个开关规则或支配规则相关联的区划。开关规则控制在虚拟区域的上下文中通信的网络节点之间的实时数据流的开关(例如,路由、连接、和断开连接)。支配规则控制通信者对资源(例如,区域、区域的区划、或该区域或区划的内容)的访问,该访问的范围、以及该访问的后继结果(例如,必须记录关于该访问的审计记录的要求)。虚拟区域中的“位置”是指该虚拟区域中的点或面积或体积的位置。点通常是由定义虚拟区域中的点的一维、二维、或三维坐标(例如,x、y、z)单个集合表示的。面积通常由定义虚拟区域中闭合的二维形状的边界的三个或更多个共面顶点的三维坐标来表示的。 体积通常由定义虚拟区域中的三维形状的闭合边界的四个或更多个非共面的顶点的三维坐标来表示。在虚拟区域的上下文中,“对象”是虚拟区域中可被有效对待且与虚拟区域的几何形状无关的离散要素。示例性的对象包括门、门户、窗、查看屏、以及扩音器。对象通常具有与虚拟区域的属性和特性分离且不同的属性和特性。“化身”是虚拟区域中代表通信者的对象。“通信者”是在网络连接上与其他人通信或以其他方式交互的人,其中该通信或交互可以或者也可以不发生在虚拟区域的上下文中。“用户”是正在操作出于描述性目的而定义了一特定观点的特定网络节点的通信者。“区域服务器”是包括区域网络基础结构服务的网络节点,该区域网络基础结构服务通过管理与虚拟区域中的对象相关联的客户端节点的会话来管理主存虚拟区域应用的虚拟区域。如本文所使用,术语“包括”意指包括但不限于,且“包含”意指包含但不限于。II.引言本文描述的实施例提供支持在相应网络节点上操作的通信者之间的实时通信的实时内核。该实时内核处置连接到通信者、虚拟区域、以及其他网络资源、响应于用户输入开关这些连接、以及混合实时数据流的复杂任务。实时内核使开发者能够专注于开发高级通信功能而非低级衔接代码。实时内核施加相对低的计算资源要求,从而实时通信性能可使用当前可用的宽泛计算设备和网络连接来达成。
在一些实施例中,实时内核支持响应于从远程主存的虚拟区域应用接收的指令 (也称为定义)来远程配置和执行音频和图形呈现引擎、以及开关实时数据流。这样,实时内核使得虚拟区域设计者能维持对远程客户端网络节点上的沉浸性虚拟通信环境的呈现的控制,由此鼓励开发众多不同类型的虚拟区域并增加将希望采用该通信系统的用户的数量。在一些实施例中,实时内核监视实时数据流的处理并基于该处理与性能目标的偏差适配该处理。这样,无论其中正执行实时数据流处理的计算环境如何,内核增加了实时性能能够达成的可能性。在一些实施例中,实时内核实现在连接和断开连接、以及在传输时高效的流传输协议。在这样一些实施例中,流传输协议在无连接传输协议(例如,UDP)上提供面向连接的加密连接。实时内核另外在客户端应用和传输层之间提供重连机制,该重连机制自动尝试重新建立失败了的连接而无需客户端应用的干预,由此在固有不可靠的通信协议上增加了可靠性。在一些实施例中,实时内核具有插件架构,该插件架构允许由一个或更多个可被动态加载到客户端网络节点上的插件提供内核组件的功能性。这样,内核组件可被独立开发并被远程管理和更新。插件架构另外允许实时内核的安装覆盖区域实质上减小,由此允许内核被安装在宽泛的包括那些具有显著计算和存储资源限制的客户端设备上。III.概览A.引言图1示出了包括由网络18互连的第一客户端网络节点12、第二客户端网络节点 14、和区域服务器网络节点16的示例性虚拟区域通信环境10的实施例。第一客户端网络节点12包括包含一个或更多个可配置的流处理机22的实时内核20的实施例、以及输入/ 输出(I/O)硬件M。第二客户端网络节点14通常以与第一客户端网络节点12基本相同的方式进行配置。区域服务器网络节点16包括通过管理虚拟区域观中第一和第二客户端节点12、14的会话来管理虚拟区域观的区域网络基础结构服务沈(也简称为“区域服务”)。 虚拟区域观主存包括用于创建虚拟区域通信环境的虚拟区域的描述的虚拟区域应用30。 区域服务26根据虚拟区域应用30来管理虚拟区域观。在创建共享虚拟区域通信环境的过程中,区域服务沈根据远程虚拟区域应用30 受虚拟区域应用30上的一组限制32影响地远程配置第一和第二客户端网络节点12、14中的实时内核。限制32通常包括对访问虚拟区域的控制。访问控制一般基于一个或更多个能力(其中对具有适当能力或许可的通信者或客户端节点准许访问)和访问控制列表(其中对具有列表上的身份的通信者或客户端节点准许访问)。在一些实施例中,限制32由安全网络基础结构服务所管理(在以下描述)。在第一和第二客户端网络节点12、14上操作的客户端软件应用允许通信者访问共享虚拟区域通信环境,这通过根据经由实时内核20从区域服务26接收的数据呈现虚拟区域的相应视图以及通过提供用于从通信者接收命令的接口来实现。通信者通常在虚拟区域32中由相应的化身来表示,这些化身响应于由通信者在其相应的网络节点处输入的命令而在虚拟区域中四处移动。每个通信者看到的虚拟区域的视图通常是从该通信者的化身的角度来呈现的,这增强了通信者体验到的沉浸感级别。 每个通信者通常能够看到在他或她的化身周围的任何虚拟区域部分。在第一和第二客户端网络节点12、14上操作的实时内核至少部分地基于虚拟区域中通信者的化身的位置来建立与共享该虚拟区域通信环境的其他网络节点的实时数据流连接。图2示出了由实时内核20实现的方法的示例性实施例。根据该方法,实时内核20 建立与区域服务沈的会话(图2,框34)。无论响应于通信者输入还是自动地,实时内核20 请求进入虚拟区域观的实例(图2,框36)。如果对通信者访问虚拟区域实例的限制32得到满足,则区域服务沈向实时内核20传送包括当前状态信息的配置数据,其中当前状态信息包括虚拟区域中化身的位置。实时内核20从区域服务沈接收配置数据(图2,框38)。 实时内核20根据从区域服务沈接收的指令来配置I/O硬件M以呈现人类可感知的虚拟区域通信者环境(图2,框40)。在一些实施例中,配置I/O硬件M的过程涉及根据从远程网络节点14接收的指令和位置数据动态配置至少一个流处理机22。例如,虚拟区域应用30可指定一个或更多个应被应用于与虚拟区域中当前的对象相关联的音频流的音频效果,在这种情况下,区域服务沈向在第一和第二客户端网络节点12、14上执行的实时内核发送指令,该指令根据虚拟区域中相应对象的位置来配置其相应音频流处理机以实现指定的效果。实时内核20通过每个配置的流处理机22处理与通信者对象相关联的实时数据流以产生相应输出33。取决于其内容,输出33可被存储在计算机可读介质上或由在第一和第二网络节点12、14上操作的I/O硬件转换成人类可感知的输出。例如,音频输出信号由音频硬件(例如,声卡和扬声器)转换成可听的声音,而图形输出信号由图形硬件(例如,视频卡和显示器)转换成可见的图像。在一些实施例中,由至少一个流处理机22产生的输出 33被一个或更多个下游软件组件处理,该下游软件组件依次产生可被存储在计算机可读介质上或被转换成人类可感知的输出的输出。B.示例性操作环境实时内核20在虚拟区域通信环境10的上下文中操作,虚拟区域通信环境10包括网络18和网络基础结构服务环境,后者包括包含区域服务沈的若干网络基础结构服务。实时内核20和网络基础结构服务环境构成用于为通信者创建虚拟区域通信环境的平台。1.网络环境网络18可包括局域网(LAN)、城域网(MAN)、以及广域网(WAN)(例如,因特网)的任一者。网络18通常包括若干支持网络节点之间的各种不同媒体类型(例如,文本、语音、 音频、和视频)的传输的计算平台和传输设施。实时内核20通常在包括软件和硬件资源的网络节点上操作,该软件和硬件资源与管理性策略、用户偏好(包括关于用户存在性的出口以及用户至区域和连接对象的连接的偏好)、以及其他设置一起来定义影响与其他网络节点的实时连接的管理的本地配置。网络节点之间的网络连接可安排在各种不同的流处置拓扑中,包括对等架构、服务器仲裁架构、以及组合了对等和服务器仲裁架构的各方面的混合架构。图3A示出虚拟区域通信环境10的实施例42,其中第一和第二网络节点12、14以及远程网络节点16由对等架构的通信网络18互连。在此架构中,网络节点12-16的每一个向其他网络节点的每一个传送状态变化(例如,虚拟区域观中的化身运动)。网络节点之一(通常为发起通信会话的网络节点)作为“区域服务器”操作。在所解说的实施例中, 网络节点16承担了区域服务器的角色。区域服务器网络节点16维护全局状态信息并用作其他网络节点12、14的数据服务器。全局状态信息包括虚拟区域中的所有对象的列表及其在虚拟区域中的相应位置。区域服务器网络节点16发送配置其他网络节点12、14的指令。 区域服务器网络节点16也登记并向请求加入通信会话的其他网络节点传送初始化信息。 在此过程中,区域服务器网络节点16根据虚拟区域应用30向每个加入的客户端网络节点传送在客户端网络节点上呈现虚拟区域观所需的组件(例如,插件)的列表。客户端网络节点12、14上的实时内核通常从远程服务器(例如,插件服务器)检索列表上的任何缺失的组件。区域服务器网络节点16也确保若发生通信故障,其他网络节点12、14能同步到全局状态。图:3B示出虚拟区域通信环境10的实施例44,其中网络节点12_16(在此架构中也称为“区域客户端”网络节点)在由区域服务器46仲裁的架构中通信。在此实施例中,区域服务器46承担在图3A所示的对等架构实施例中由网络节点16执行的区域服务器功能。 这样,区域服务器46维护全局状态信息并用作区域客户端网络节点12-16的数据服务器。 该架构允许将在各种拓扑(包括对等拓扑、其中区域服务器46作为网络节点12-16之间的通信代理操作的全服务器仲裁拓扑、以及组合了对等拓扑和全服务器仲裁拓扑的各方面的混合拓扑)中处理的区域客户端节点12-16之间的实时数据流交换。这些类型的示例性拓扑在美国申请号为11/923,629和11/923,634的申请中描述,两者都在2007年10月M日提交。2.网络基础结构服务在建立和管理与其他网络节点的网络连接的过程中,一个或更多个网络基础结构服务通常与实时内核20协作。网络基础结构服务可运行在单个网络节点上或可跨多个网络节点分布。网络基础结构服务通常运行在一个或更多个专用的网络节点上(例如,执行诸如路由和交换等边缘服务的服务器计算机或网络设备)。然而,在一些实施例中,一个或更多个网络基础结构服务运行在至少一个通信者网络节点上。虚拟区域通信环境10的示例性实施例中所包括的网络基础结构服务有帐户服务、安全性服务、区域服务沈、集合服务、以及交互服务等。帐户服务管理网络基础结构服务环境中的通信者帐户。帐户服务也管理可由客户端网络节点用于向任何网络基础结构服务认证它们自己的认证令牌的创建和发出。安全性服务控制通信者对虚拟区域通信环境10的资产和其他资源的访问。由安全性服务实现的访问控制方法通常基于一个或更多个能力(其中对具有适当能力或许可的实体准许访问)和访问控制列表(其中对具有列表上的身份的实体准许访问)。在已经准许特定通信者访问资源后,该通信者通常使用由其他网络基础结构服务提供的功能性在虚拟区域通信环境10中交互。区域服务沈管理虚拟区域。在此过程中,区域服务沈根据请求实体的能力来管理与虚拟区域相关联的连接、维护虚拟区域的全局状态信息、以及用作参与由虚拟区域定义的上下文中的共享通信会话的客户端网络节点的数据服务器。全局状态信息包括虚拟区域中的所有对象的列表及其在虚拟区域中的相应位置。区域服务26发送配置客户端网络节点的指令。区域服务26也登记并向请求加入通信会话的其他客户端网络节点传送初始化信息。在此过程中,区域服务沈根据虚拟区域应用30向每个加入的客户端网络节点传送在客户端网络节点上呈现虚拟区域观所需的组件(例如,插件)的列表。区域服务26
24也确保若发生通信故障,客户端网络节点能同步到全局状态。集合服务根据请求实体的能力来管理存在性信息的收集、存储和分发并为网络节点提供用于彼此通信的机制(例如,通过管理连接句柄的分发)。集合服务通常在存在性数据库中存储存在性信息。交互服务根据请求实体的能力来维护记录通信者之间的交互的交互数据库并支持对交互数据库的查询。对通信者之间的每个交互,虚拟区域通信环境10中的一个或更多个服务(例如区域服务26)向交互服务传送交互数据。作为响应,交互服务在关系数据库中生成一个或更多个相应交互记录。每个交互记录描述交互的上下文。例如,在一些实施例中,交互记录包含每个通信者的标识符、交互场所的标识符(例如,虚拟区域实例)、交互场所的等级的描述(例如描述交互空间如何与较大区域相关)、交互的起始和结束时间、以及在交互期间共享的所有文件和其他流的列表。因此,对于每个实时交互,交互服务跟踪其在何时发生,在何处发生、以及在交互期间就所涉及的通信者而言发生了什么(例如,进入和退出)、被激活/禁用的对象、以及共享的文件。交互服务能基于场所以分类次序(例如,最频繁的或最近的)呈现对交互数据库记录的查询结果。查询结果能被用于导出通信者已经在哪些虚拟区域内遇到的联系人的频率分类,以及不论虚拟区域通信者已经遇到的联系人的分类、以及通信者最经常出入的虚拟区域的分类。查询结果还可被应用开发者用作基于关系使某些任务自动化的启发式系统的一部分。此类型的启发的示例是允许已经到访特定虚拟区域超过5次的通信者不必经默认的敲门就能进入的启发,或者是允许在特定时间存在于一区域中的通信者修改和删除由在相同时间存在于相同区域中的另一通信者创建的文件的启发。对交互数据库的查询可与其他搜索相组合。例如,对交互数据库的查询可与针对使用在网络基础结构服务环境的域之外的通信系统(例如,Skype、Faceb00k、以及Flickr)与联系人交互而生成的联系历史数据的查询相组合。3.虚拟区域实时内核20管理由虚拟区域的实例定义的通信上下文中与网络节点的实时连接。虚拟区域实例可对应关于抽象坐标所定义的抽象(非几何)虚拟空间。替换地,虚拟区域实例可对应关于与特定可视化相关联的一维、二维、或三维几何坐标所定义的视觉虚拟空间。抽象虚拟区域可以与相应可视化相关联或者也可不相关联,而视觉虚拟区域与相应可视化相关联。如上所解释的,通信者通常在具有相关联的可视化的虚拟区域中由相应的化身来表示。化身响应于由通信者在其各自相应的网络节点处输入的输入命令在虚拟区域中四处移动。通信者看到的具有相关联的可视化的虚拟区域实例的视图通常是从该通信者的化身的观点呈现的,且每个通信者通常能够观看到他或她的化身周围的任何视觉虚拟区域部分,从而增强了通信者体验到的沉浸感级别。图4示出了由计算机系统48实现的示例性网络节点的实施例。计算机系统48包括显示监视器50、计算机鼠标52、键盘554、扬声器56、58、以及话筒60。显示监视器50显示图形用户界面62。图形用户界面62是基于窗口的图形用户界面,其可包括多个窗口、图标、和指针64。在所解说的实施例中,图形用户界面62呈现对与表示艺廊的三维可视化相关联的共享虚拟区域66的二维描绘。通信者在该虚拟区域66中由各自相应的化身68、70、72来表示,每个化身可在该虚拟区域66的上下文中具有各自相应的角色(例如,馆长、艺术家、和游客)。如以下详细解释的,虚拟区域66包括与支配在虚拟区域66中由化身68-72表示的网络节点间的实时数据流开关的相应规则相关联的地带74、76、78、80、82。(在典型的通信会话期间,图4中划界出地带74-82的虚线对于通信者而言是不可见的,尽管可以有与此类地带边界相关联的视觉线索。)开关规则规定在每一个网络节点上执行的本地连接过程如何基于通信者的化身68-72在虚拟区域66的地带74-82中的位置来建立与其他网络节点的通信。虚拟区域由包括对该虚拟区域的几何要素的描述以及一个或多个规则(包括开关规则和支配规则)的规范来定义。开关规则支配网络节点之间的实时流连接。支配规则控制通信者对诸如虚拟区域本身、具有虚拟区域的区划、以及虚拟区域内的对象之类的资源的访问。在一些实施例中,虚拟区域的几何要素根据COLLADA-Digital Asset Schema Release 1.4.1 April 2006 specification(2006 年 4 月数字资产计划版本 1. 4. 1 规范, 从http://www. khronos. org/collada/得到)进行了描述,而开关规则根据在美国申请号 11/923,629和11/923,634中描述的C0LLADA流参考规范使用可扩展标记语言(XML)文本格式(在本文称作虚拟空间描述格式(VSDL))进行了描述。虚拟区域的几何要素通常包括虚拟区域的物理几何和碰撞几何。物理几何描述虚拟区域的形状。物理几何通常由三角形、四边形、或多边形的表面形成。颜色和纹理被映射到物理几何上以创建虚拟区域的更真实表观。例如可通过在视觉几何上描绘光线并修改光线附近的纹理、颜色、或亮度来提供光照效果。碰撞几何描述确定对象可在虚拟区域中移动的方式的不可见表面。碰撞几何可与视觉几何一致、对应于视觉几何的更简单的近似、或者与对虚拟区域设计者的因应用而异的要求有关。开关规则通常包括对用于按照虚拟区域中的位置来连接实时数据流的源和阱的条件的描述。每个规则通常包括定义该规则所适用的实时数据流类型以及该规则在该虚拟区域中所适用的(诸)位置的属性。在一些实施例中,每个规则任选地可包括指定源的所要求角色、阱的所要求角色、流的优先级别、和所请求的流处置拓扑的一个或多个属性。在一些实施例中,如果没有为虚拟区域的特定部分定义的显式开关规则,则可向虚拟区域的该部分应用一个或多个隐式或缺省开关规则。一个示例性缺省开关规则是依照策略规则将区域内的每个源连接至每个相兼容的阱的规则。策略规则可全局地适用于区域客户端之间的所有连接、或者仅适用于与个体区域客户端的相应连接。策略规则的示例是接近度策略规则,该规则仅允许与虚拟区域中彼此在规定距离(或半径)内的相应对象相关联的源和兼容阱的连接。在一些实施例中,支配规则与虚拟区域相关联以控制谁能访问该虚拟区域、谁能访问其内容、对该虚拟区域的内容的访问的范围是什么(例如,用户关于该内容能做什么)、以及访问这些内容的后继结果是什么(例如,记录保持,诸如审计日志、和支付要求)。 在一些实施例中,整个虚拟区域或该虚拟区域的地带与“支配网格”相关联。在一些实施例中,支配网格是用类似于在美国申请号11/923,629和11/923,634中描述的地带网格的实现的方式来实现的。支配网格使得软件应用开发者能够将支配规则与虚拟区域或虚拟区域的地带相关联。这避免了为虚拟区域中的每个文件创建个体许可的需求并且避免了处理在需要取决于上下文不同地对待同一文档时可能产生的复杂度的需求。在一些实施例中,虚拟区域与将该虚拟区域的一个或多个地带与数字版权管理 (DRM)功能相关联的支配网格相关联。DRM功能控制对虚拟区域或该虚拟区域内的一个或多个地带或该虚拟区域内的对象中的一者或多者的访问。每次通信者越过该虚拟区域内的支配网格边界时DRM功能被触发。DRM功能确定该触发动作是否被许可,并且如果许可,则确定所许可动作的范围、是否需要支付、以及是否需要生成审计记录。在虚拟区域的示例性实现中,相关联的支配网格被配置成使得如果通信者能够进入该虚拟区域,则他或她能够对与该虚拟区域相关联的所有文档执行动作,包括操控文档、查看文档、下载文档、删除文档、修改文档和重新上载文档。这样,虚拟区域可变成在由该虚拟区域定义的背景中共享和讨论的信息的储存库。关于虚拟区域的规范的附加细节在美国申请号61/042714(提交于2008年4月4 日)、11/923,629(提交于 2007 年 10月 M 日)、和 11/923,634 (提交于 2007 年 10 月 M
日)中记载。4.其他平台组件实时内核20被设计为作为客户端软件包的一部分的本地网络节点的组件来工作,其中客户端软件还包括a.抬头显示器(HUD)软件应用;b.本地人类接口设备(HID)和音频回放设备;c. So3D图形显示、化身、和物理学引擎;d.系统数据库和存储设施。a.抬头显示器(HUD)抬头显示器(HUD)是在每一个客户端网络节点上操作的对实时内核20的应用接口。HUD是用户能够在他或她的桌面上一直保持和运行的小型、轻量级接口。它是用于启动虚拟区域应用、为他或她提供对实时联系人和实时协作场所(或区域)的即时访问的用户接口。虚拟区域通过HUD和实时内核20与用户的桌面整合在一起,从而使得用户能将文件拖放到虚拟区域通信环境中、利用独立于虚拟区域通信环境的原生客户端软件应用来使用与虚拟区域关联地存储同时又存在于虚拟区域中的文件、以及更一般地将虚拟区域内的存在性和位置作为其操作环境中类似于其他操作系统功能的一方面而不只是若干应用中的一个应用来对待。图5A和5B示出了通过坐落在通信者的桌面的右下角的半透明用户接口来实现的 HUD的实施例84。HUD 84是通往平台的应用接口。HUD 84的特性包括·意欲在用户桌面上一直运行的小型、轻量级应用;以及·为用户提供便于查看联系人并与联系人交互以及查看发生交互的虚拟区域并与虚拟区域交互的接口。在此实施例中,HUD 84通过提供对控件的永久接口和访问的基本透明的(半透明)用户接口覆盖来实现。在图5A所示的实施例中,HUD 84是透明的,除了该接口的以下半透明要素中的一个或多个要素的有限集合·渐进式沉浸感控件的轮廓; 用户当前位置的轮廓;
·表示虚拟区域86中的实时联系人的子图形;以及·划界出HUD区域的边界的线条。在实时内核260和HUD 84正在运行而并准备好发起实时通信会话的同时,通信者能够在普通桌面计算环境中工作。例如,通信者可与诸如微软 EXCel 之类的其他应用合作以创建稍后可以在实时通信会话中共享的文档。虚拟区域86与通信者的桌面整合在一起,从而使得该通信者能将文件拖放到虚拟区域中、利用独立于虚拟区域通信环境的原生客户端软件应用来使用与虚拟区域关联地存储同时又存在于虚拟区域中的文件、以及更一般地将虚拟区域内的存在性和位置作为其操作环境中类似于其他操作系统功能的一方面而不是若干应用中的一个应用来对待。当通信者在虚拟区域86中交互时,HUD 84为通信者提供对他或她所期望的可视化的独立控制。例如,通信者可显示虚拟区域的最小化视图(被最小化至桌面的右下角) 并参与同该虚拟区域中的另一通信者的音频交谈,同时又工作在诸如微软 Excel 之类的不同应用中。通信者随后可改变他或她的可视化模式并进入对虚拟区域86的更加沉浸的三维呈现。这是通过将HUD 84中的渐进式沉浸感滑块88的设置从“桌面”改为“3D”来实现的。一旦处在3D可视化模式下,通信者的桌面就显示对虚拟区域86的3D呈现(如图 5A中所示)。通信者(在桌面模式下由子图形90、92、94表示)现在采取如图5A中所示的三维化身96、98、100的形式。与虚拟区域86相关联的任何数据皆可被显示在观看屏102、104、106上。观看屏是可被用于呈现任何随意数据的通用数据呈现组件。可在观看屏上呈现的数据类型的示例包括·微软 PowerPoint 报告书 视频·网络摄像机的输出·直接来自组织的企业资源规划(ERP)系统的实时数据如图5C中所示,HUD 84被设计成充当显示信息并提供对控件的访问的真实接口, 且对呈现在通信者的显示监视器上的图形用户界面62的底层部分只有最小的遮挡。HUD 84高效地显示·该通信者的当前在线的实时联系人,·该通信者与该通信者的实时联系人当前“位于”该虚拟区域86中的何处,·控制虚拟区域86的可视化的渐进式沉浸感控件,以及·使得用户能快速连接至特定场所的导航控件。具体地,HUD 84为通信者提供对其实时联系人以及在发生实时协作的虚拟区域的即时访问。HUD 84允许基于人的位置在区域中导航以及允许对虚拟区域的查看。这些虚拟区域可以许多方式访问最频繁使用的、最近使用的、或应用指定方式。HUD 84显示一组有序的场所瓦片108、110、112。点击场所瓦片中的一个将用户带到由所选择的场所瓦片所表示的虚拟区域。对于人而言,具有去(往通信者的区域)和取 (将他们带到用户的区域)的基本隐喻。这在HUD 84中通过允许通信者对去或取请求进行排队以及在无需“移动”的情况下经由文本或语音与人通信来完善。HUD 84在从另一通信者收到每个通信请求时通知该通信者。该通信者可以接受该请求、忽略它、或将它添加到通
28信队列。这样,通信者能在稍后的时间响应非优先通信。例如,通信者可将在该通信者繁忙 (例如,忙于当前通信会话)的时间期间收到的通信进行排队,并且在该通信者空闲之后, 该通信者可响应该通信队列中的通信请求。如上所述,交互网络基础结构服务维护记录通信者遇到谁以及在哪里遇到的交互数据库。交互服务用可按基于场所的分类次序(例如,最常或最近)呈现的查询结果来响应对关系数据库的查询。这样,关系数据库信息可被用于导出该通信者在哪些区域遇见的人的频率分类、以及在不论区域的情况下该通信者已经遇见的人的分类、和该通信者最常出入的区域的分类。此数据被用在HUD 84中。该数据也可被用虚拟区域应用开发者用作启发式系统的一部分(例如,准许已经拜访特定虚拟区域超过5次的人进入而无需默认的敲门的规则、或者允许在特定时间存在于虚拟区域中的人修改和删除由在同一时间在那里的另一通信者创建的文件的规则)。在图5C中,HUD 84呈现一系列表示相应虚拟区域的场所瓦片108、110、112。这些虚拟区域中的每一个被纽带联系到对关系数据库的查询。关于每个虚拟区域,集合服务对关系数据库查询用户已在该虚拟区域中遇见过的所有联系人。集合服务通常在按频率或按交互的最近性(例如,该通信者最后交互的联系人)来分类的列表中呈现所标识的联系人。 在其他实施例中,联系人可以其他某种取决于应用的方式来分类。对关系数据库的查询可与其他搜索相组合。例如,对关系数据库的查询可以与对针对使用另一通信系统(例如,Skype、Facebook、和Flickr)与联系人的交互所生成的联系人历史数据的查询相组合。在一个示例中,Skype虚拟区域112可以与对通信者的关联于Skype虚拟区域112的关系数据和该通信者的Skype历史数据的查询相关联,以产生该用户的与Skype虚拟区域112相关联的实时联系人的分类列表。图5C示出了对HUD 84中的联系人和虚拟区域的基本导航。点击与虚拟区域瓦片 108-112中的每一个相关联的朝左箭头显示在给定场所中按交互频率分类的实时联系人的列表。例如,点击主HUD瓦片84 (标记为“办公室”)的朝左箭头114显示该用户在虚拟区域86中最频繁通信的实时联系人。联系人(由各自相应的图标瓦片表示)的列表按照频率进行分类。列表中的第一位联系人(在此示例中为DVW)代表该用户在虚拟区域86中合作最频繁的联系人、继之以PJB、Tim等等。点击朝上箭头116显示代表该通信者已经到访过的一些或所有虚拟区域的一组场所瓦片。该组场所瓦片通常按频率、最近性、或其他排序来分类。虚拟区域场所瓦片显示当前发生在相应虚拟区域中的实时活动。例如,DVW、Kim和 Joe (由主虚拟区域瓦片108中的相应子图形表示)皆在该主虚拟区域中并且正在进行实时谈话,而Jeff、Arm和Jane (由虚拟区域瓦片110中的相应子图形表示)全部在!^cebook 虚拟区域中。假定任何通信者退出虚拟区域或进入虚拟区域,此虚拟区域中的存在性指示器 (即,由圆形所示出的小图形,通常与名称或其他标识符相关联)将自动被实时更新。该特征证明虚拟区域设计者向场所瓦片输入应用专用实时数据的能力。场所瓦片可看起来与通信者相关联,或与通信者的场所相关联。例如,游戏开发者可输出通信者在其游戏环境中所在地的地图,由此通过关系数据库连接到该通信者的其他人接收对该通信者当前活动的实时馈送。这些人可使用该虚拟区域瓦片来导航至该通信者,与他或她通信、或联络他或她 (例如,发送进入虚拟区域的邀请)。HUD84同时为许多不同的虚拟区域管理与联系人和虚拟区域的此接口。HUD虚拟区域瓦片84、108、110、112中使用的实时数据由主存相关区域的区域服务所管理的接口经由实时内核120来提供。每个区域服务可基于通信者察看所主存的虚拟区域的许可向通信者提供对不同的相应HUD虚拟区域瓦片数据。例如,如果通信者进入不允许该通信者察看的虚拟区域,则HUD虚拟区域瓦片可显示受限或没有详细信息。此外,由主存区域服务提供的HUD虚拟区域瓦片数据馈送可由操作该区域服务的虚拟区域提供商定制以向订阅HUD呈现该虚拟区域的应用指定视图。b.本地人类接口设备(HID)和音频回放设备;本地HID设备使通信者在参与虚拟区域通信会话时能向客户端网络节点输入命令和其他信号。示例性的HID设备包括计算机键盘、计算机鼠标、触摸屏显示器、以及话筒。音频回放设备使通信者能回放在虚拟区域通信会话期间接收的音频信号。示例性的音频回放设备包括用于操纵(例如,混频和施加特殊效果)音频信号的音频处理硬件 (例如,声卡),以及用于输出声音的扬声器。c. So3D图形显示、化身、和物理学引擎So3D引擎是控制虚拟区域和虚拟区域内的对象在显示监视器上的相应视图显示的三维可视化引擎。So3D引擎通常与图形用户界面驱动器和HID设备接口以呈现虚拟区域的视图并允许通信者控制HUD应用的操作。So3D引擎通常经由实时内核20接收来自区域服务沈的图形呈现指令。在一些实施例中,So3D引擎也读取包含呈现通信者在虚拟区域中的化身所需要的图像的通信者化身数据库。基于此信息,So3D引擎从虚拟区域内的通信者的化身角度(位置和取向)生成虚拟区域和该虚拟区域内的对象的视觉表示(即,图像)。该视觉表示通常被传递给操作系统的图形呈现组件,该图形呈现组件驱动图形呈现硬件在客户端网络节点上呈现虚拟区域的视觉表示。通信者可通过从HID设备(例如,计算机鼠标)向实时内核20传送命令(实时内核20将视图控制命令传送给So3D引擎)来控制虚拟区域的所呈现视图。So3D引擎根据视图控制命令来更新虚拟区域的视图。So3D引擎还根据经由实时内核20从区域服务沈接收的经更新的对象位置信息来更新虚拟区域在显示监视器上的图形表示。d.系统数据库和存储设施系统数据库和存储设施存储平台使用的各种类型的信息。通常由存储设施存储的示例性的信息包括存在性数据库、交互数据库、化身数据库、真实用户id(RUID)数据库、样式(art)缓冲数据库、以及虚拟区域描述数据库。信息可在单个网络节点上存储或者可以跨多个网络节点分布。C.示例性的通信会话再次参见图4,在通信会话期间,每个客户端网络节点生成相应的实时数据流集 (例如,运动数据流、音频数据流、聊天数据流、文件传递数据流、以及视频数据流)。例如, 每个通信者操纵一个或更多个生成运动数据流的输入设备(例如,计算机鼠标52和键盘
,运动数据流控制他或她的化身在虚拟区域66中的移动。此外,在计算机系统48附近本地生成的通信者语音和其他声音由话筒60捕获。话筒60生成可被转换为实时音频流的音频信号。音频流的相应副本被传送给由虚拟区域66中的化身表示的其他网络节点。在这些其他网络节点本地生成的声音被转换成实时音频信号并被传送给计算机系统48。实时内核20将其他网络节点生成的音频流转换为由扬声器56、58呈现的音频信号。运动数据流和音频数据流可直接或间接从每一个通信者节点传送至其他客户端网络节点。在一些流处置拓扑中,每个客户端网络节点接收由其他客户端网络节点传送的实时数据流的副本。在其他流处置拓扑中,一个或更多个客户端网络节点接收从源自(发源于)其他一些网络节点的实时数据流导出的一个或更多个流混合。在一些实施例中,区域服务沈维护包括虚拟区域的当前描述、该虚拟区域中的对象的当前登记、以及当前正由主存区域服务26的网络节点生成的任何流混合的列表的全局状态信息。对象登记通常包括针对虚拟区域中的每个对象的相应对象标识符(例如,唯一地标识对象的标签)、能与关联于该对象的网络节点建立网络连接的连接句柄(例如、 URI,诸如IP地址)、以及标识与该对象相关联的实时数据源和阱(例如,与该对象相关联的网络节点的源和阱)的接口数据。对象登记还通常包括针对每个对象的一个或更多个可选角色标识符,该可选角色标识符可由通信者或区域服务26明确指派给对象,或者可从对象的其他属性推断出。在一些实施例中,对象登记还包括每个对象在虚拟区域中的当前位置, 这由区域服务沈从对接收自与虚拟区域中的对象相关联的网络节点的实时运动数据流的分析中确定。就此,区域服务沈从与虚拟区域中的对象相关联的网络节点接收实时运动数据流、并基于该运动数据跟踪通信者的化身和进入、离开和在虚拟区域中四处移动的其他对象。区域服务沈根据被跟踪对象的当前位置来更新对象登记。在管理与其他网络节点的实时数据流连接的过程中,区域服务沈维护针对每个客户端网络节点的配置数据集,包括接口数据、地带列表、以及当前位于虚拟区域内的对象的位置。接口数据包括针对与每个客户端网络节点相关联的每个对象的关于关联于该对象的实时数据流类型的所有源和阱的相应列表。地带列表是虚拟区域中当前被与相应客户端网络节点相关联的化身占据的所有地带的登记。当通信者首次进入虚拟区域中时,区域服务沈通常用位置初始化信息初始化当前对象位置数据库。之后,区域服务沈用对象在虚拟区域中的当前位置来更新当前对象位置数据库,该当前位置从对接收自共享虚拟区域的其他客户端网络节点的实时运动数据流的分析中确定。图6示出一种方法的实施例,根据该方法,区域服务沈的实施例确定当用户进入虚拟区域或穿过虚拟区域的地带之间的边界时要建立的一组所要求的实时数据流连接。区域服务26根据虚拟区域描述和每个通信者的化身在虚拟区域实例中的位置来建立该通信者的所占据地带的列表(图6,框180)。在此过程中,区域服务沈从当前对象位置数据库中检索用户化身在虚拟区域实例中的当前位置,该位置包含化身在虚拟区域实例中的当前位置的坐标。区域服务沈随后比较通信者的化身的当前位置和虚拟区域描述中的地带定义。区域服务沈根据虚拟区域描述中与通信者化身的当前位置一致的所有地带来编辑所占据地带列表。例如,在一些实施例中,所占据地带列表包括其网格包含通信者化身的当前位置的所有地带。区域服务沈确定为所占据地带列表中的地带定义的一组目标实时数据流类型 (图6,框18 。区域服务沈随后从该组目标实时数据流类型、对象在虚拟区域实例中的位置、以及虚拟区域描述中定义的开关规则确定所要求的实时数据流数据集(图6,框184)。在一些示例性实施例中,在区域服务沈已经确定使用户能在共享虚拟区域实例中参与与其他网络节点的协作通信会话的实时数据流数据集(图6,框184)后,区域服务 26确定将导致向计算机系统120传递所要求的数据流数据的实时数据流连接。在一些实施例中,区域服务沈确定实时数据流处置拓扑,该处置拓扑至少部分地基于计算机系统120的带宽能力将实时数据流集传递给计算机系统120。在此过程中,区域服务26确定从未混合的实时数据流以及根据实时数据流的组合导出的流混合接收每个实时数据流的相应形式。区域服务26还确定从直接对等网络路线和由一个或更多个其他网络节点仲裁的网络路线接收每个实时数据流的网络路线。在已确定流处置拓扑后,区域服务沈向在计算机系统120上操作的实时内核发送指令。该指令根据所确定的流处置拓扑指定计算机系统120和其他一些网络节点之间所要求的实时数据流连接。图7示出由实时内核20在确定向计算机系统120传递所要求的数据流数据的实时数据流连接的拓扑过程中实现的方法的实施例。根据该方法,实时内核20确定计算机系统120是否具有直接从其他网络节点接收所要求的实时数据流数据集186的足够带宽(图7,框188)。在此过程中,其他网络节点向计算机系统120传送链路请求。该链路请求指示计算机系统120传送相应的实时数据流集所需要的相应带宽要求。实时内核20将建立所要求的直接连接所需要的总带宽与当前计算机系统120可用的下载带宽进行比较。如果可用带宽至少等于总要求带宽,则实时内核20建立与提供所要求的实时数据流数据的其他网络节点的直接连接(图7,框190)。在此过程中,实时内核20创建计算机系统120与一个或更多个其他网络节点之间的套接字(例如,TCP套接字或性能最优化的专用实时套接字)。实时内核20处理实时数据流,包括加密它们、记录它们、以及将经处理的数据流传递给呈现在用户界面中及在网络18上传送所需的下游软件组件。如果可用带宽小于所要求带宽(图7,框188),则实时内核20检查流混合列表以确定区域服务沈是否正在生成提供所要求实时数据流数据的流混合(图7,框192)。如果需要的流混合可用,则实时内核20与区域服务沈建立将所需实时数据流混合的副本从区域服务器观传送到计算机系统120的连接(图7,框194)。如果所需流混合不可用,则实时内核20向区域服务沈发送流混合请求(图7,框196)。如果可能,区域服务沈响应于流混合请求生成所需流混合。IV.系统架构A.引言通信者通常从客户端网络节点连接到网络18,客户端网络节点通常由通用计算机系统或专用通信计算机系统(或“控制台”,诸如网络使能的视频游戏控制台)来实现。网络节点执行建立与其他网络节点的实时数据流连接的通信过程且通常执行呈现通信者进入的每个虚拟区域的视图的可视化呈现过程。图8示出了由计算机系统120实现的客户端网络节点的实施例。计算机系统120 包括处理单元122、系统存储器IM和将处理单元122耦合至计算机系统120的各种组件的系统总线126。处理单元122可包括一个或更多个数据处理器,每个数据处理器可以是任一种商业上可用的计算机处理器的形式。系统存储器1 可包括存储包含计算机系统120 的启动例程的基本输入/输出系统¢10 的只读存储器(ROM)和随机存取存储器(RAM)。 系统总线1 可以是存储器总线、外围总线或本地总线,并且可与任何总线协议(包括PCI、VESA、Microchannel、ISA和EISA)兼容。计算机系统120还包括连接至系统总线1 并包含一个或更多个提供对数据、数据结构和计算机可执行指令的非易失或永久存储的计算机可读介质盘的永久存储存储器128(例如,硬盘驱动器、软盘驱动器、CD ROM驱动器、磁带驱动器、闪存设备、以及数字视频驱动器)。通信者可使用一个或更多个输入设备130(例如,一个或更多个键盘、计算机鼠标、话筒、摄像头、操纵杆、诸如Wii输入设备的物理运动传感器、以及触摸垫等)与计算机系统120交互(例如,输入命令或数据)。信息可通过在显示监视器132上呈现给通信者的图形用户界面(⑶I)来呈现,这由显示控制器134控制。计算机系统120还可包括其他输入/输出硬件136(例如,诸如扬声器和打印机等外围输出设备)。计算机系统120通过网络适配器138(也称为“网络接口卡”或NIC)连接至其他网络节点138、140和142。若干程序模块可被存储在系统存储器124中,包括操作系统(0 144(例如,可从美国华盛顿雷蒙德的微软公司获得的Windows XP⑧操作系统)、实时内核20、驱动程序 146 (例如,⑶I驱动程序)、网络协议148、本地软件应用150 (例如,HUD 84)、以及数据(例如,输入数据、输出数据、程序数据、注册表156、以及配置设定152)。B.操作系统操作系统144通过提供用于创建计算机系统120上的运行时执行环境的基础操作系统服务来主存软件应用。通常由操作系统提供的示例性类型的服务是资源管理、文件管理、安全性、认证、验证、通知、以及用户接口(例如、窗口、菜单、对话等)。与计算机系统120的资源(例如,存储器、处理器、以及I/O设备)管理有关的服务通常由操作系统内核实现。文件管理可由操作系统内核实现或可用分离的文件系统管理器(例如,可安装的文件系统,其在一些Microsoft Windows 操作系统中提供)实现。 在打开文件(例如,计算机数据文件或软件应用文件)的过程中,文件系统管理器通常调用适当的文件系统驱动程序,该文件系统驱动程序在映射出文件在磁盘上的存储位置的数据库(例如,诸如FAT、FAT98、VFAT、MFT以及⑶FS等文件分配表)中查找该文件的磁盘存储位置。诸如安全性、认证、验证、通知、以及用户接口的其他操作系统功能可由操作系统的一个或更多个其他组件(例如,一些Microsoft Windows 操作系统中的可执行服务层)提 {共。通常由操作系统内核提供的示例性类型的服务是过程管理、存储器管理、设备管理、以及系统调用处置。过程管理包括运行应用并向计算机系统的硬件组件提供应用编程接口(API)。在运行软件应用的过程中,操作系统内核通常在存储器中建立用于该软件应用的地址空间、在该地址空间中加载包含该软件应用代码的文件、以及执行加载的软件应用代码。存储器管理涉及管理软件应用对系统存储器1 的访问。设备管理涉及提供通过设备驱动器对硬件设备的访问。系统调用处置涉及提供向用户模式软件应用暴露操作系统内核服务的API。通过调用API (例如,通过过程间通信机制和系统调用),软件应用可向操作系统内核请求服务、传递参数、以及接收响应于请求由服务生成的结果。操作系统144通常在注册表156中存储硬件和软件配置信息、用户偏好、以及设置信息。例如,注册表156通常包含以下信息引导和配置系统所需的参数值、控制操作系统 144的操作的系统范围的软件设置、安全性数据库、以及每用户简档设置。在一些实施例中, 连接规则32被存储在注册表156而非分离的数据库中。
C.网络协、议网络协议148控制或使能计算机系统120和其他网络节点之间的连接、通信、和数据传递。示例性的网络协议类型包括传输控制协议/网际协议(TCP/IP)、用户数据报协议 /网际协议(UDP/IP)、实时传输协议(RTP)、以及会话发起协议(SIP)。TCP/IP包括TCP部分和IP部分。该协议的TCP部分通过将消息分裂成较小分组、 在通信网络另一端重新组装分组、以及重新发送任何在路上丢失的分组来提供传输功能。 该协议的IP部分通过向这些数据分组指派目的地网络以及该目的地网络处的目标节点的地址来提供路由功能。使用TCP/IP传递的每个数据分组包括包含TCP和IP信息的头部。 IP不向通信栈的上层提供分组传递的保证。另一方面,TCP提供有保证的排队分组传递下面向连接的端对端传输服务。这样,TCP协议提供可靠的传输层连接。UDP是面向消息的传输层协议,其提供应用层和因特网层之间的接口。UDP不保证消息传递到应用层。UDP是无连接协议,因为对建立专用端对端连接并无建树。UDP发送方在发送UDP消息后,不保留关于这些UDP消息的状态信息。通信是基于从源到目的地的一个方向上的消息传输,不会检查接收机的状态。RTP定义用于通过网络连接传递音频和视频的标准化分组格式。各种网络协议可被用于在网络节点之间传送和接收RTP数据,包括对等连网框架、单独使用TCP套接字或与 UDP联用的集中式服务器、以及多播协议。SIP向用户提供用于彼此定位、建立通信会话、以及终止活动会话的手段。有了 SIP事务,根据会话描述协议(SDP)来处置话商定过程。D.设备驱动程序设备驱动程序146通常由使其他软件应用(例如,用户模式的软件应用和操作系统)与连接至计算机系统120的硬件设备交互的软件应用来实现。设备驱动程序通常向可由软件过程作出的调用所调取的功能提供API,以便转换在软件过程和硬件设备之间传递的命令和数据。E.实时内核1.引言实时内核20包括控制计算机系统120和共享虚拟区域通信环境的其他网络节点之间的实时数据流的处理和开关的服务,以及虚拟区域和该虚拟区域中的对象在显示监视器132上的相应视图呈现的服务。在这些过程中,实时内核与和驱动程序148进行通信的操作系统功能接口以向和从计算机系统120的硬件组件传递命令和数据,以便与其他网络节点交换实时数据流并向通信者呈现沉浸性虚拟区域通信体验。实时内核20的实现包括一个或更多个分立模块或分立库(例如,动态链接的库), 这并不限于任何特定的硬件、固件、或软件配置。一般来说,这些模块可在任何计算或数据处理环境中实现,包括在数字电子电路(例如,应用专用集成电路,诸如数字信号处理器 (DSP))中或在计算机硬件、固件、设备驱动器、或软件中。在一些实施例中,模块的功能性被组合进单个数据处理组件。在一些实施例中,一个或更多个模块的每一者的相应功能性由多个数据处理组件的相应集执行。在一些实现中,用于实现实时内核20的实施例执行的方法的过程指令(例如,诸如计算机软件等计算机可读代码),以及它们生成的数据被存储在一个或更多个计算机可读介质上。适用于有形地表达这些指令和数据的存储设备包括所有形式的非易失性计算机可读存储器,包括例如诸如EPROM、EEPROM和闪存设备的半导体存储设备;诸如内部硬盘和可移动硬盘的磁盘;磁光盘;DVD-ROM/RAM以及CD-ROM/RAM。2.示例性实时内核功能性实时内核20与一个或更多个网络基础结构服务协作以建立并管理计算机系统 120与共享虚拟区域通信环境的其他网络节点之间的网络连接。在建立并管理网络连接过程中涉及的示例性功能性有会话管理、远程控制流处置、以及实时任务调度。e.会话管理图9示出由实时内核20响应于请求连接至虚拟区域的实时内核API调用实现的方法的实施例。根据图9的方法,实时内核20确定虚拟区域的指定(图9,框160)。在一些实施例中,实时内核20的该功能性通过向实时内核服务发起包括虚拟区域指定的实时内核API 调用来调取。实时内核API调用可由任何软件应用、操作系统服务作出。实时内核20建立与主存指定的虚拟区域的网络基础结构服务的会话(图9,框 162)。在此过程中,实时内核20建立与区域服务沈的会话。实时内核20随后向区域服务 26传送对连接至指定的虚拟区域的请求。区域服务沈确定从实时内核20接收的请求中指定的虚拟区域的实例。在确定虚拟区域实例的实例后,区域服务46确定用户能力是否满足与虚拟区域实例相关联的能力要求。如果用户能力符合能力要求,则区域服务46传送指示描述虚拟区域实例的当前状态的状态数据的可用性的消息(例如,当前在虚拟区域实例中的对象的列表、以及与这些对象相关联的通信者的名称)。实时内核20订阅描述虚拟区域实例的当前状态的状态数据(图9,框164)。响应于订阅请求,区域服务26向实时内核20和区域服务沈之间的链路上的信道公布状态信
肩、ο在一些实施例中,实时内核20的So3D引擎调用操作系统144的用户接口服务以呈现状态数据的人类可感知的视图。例如,So3D引擎可调用接口服务以在显示器132上呈现与当前在该区域内的对象相关联的每个通信者的表示。在一些实施例中,通信者可由图标、缩略图、或可选地用该通信者名称标记的其他图形来表示。在一些实施例中,状态数据在触发了实时内核20的调用的软件应用的图形界面中呈现。在一些实施例中,状态数据在抬头显示器(HUD)界面84的实施例中呈现(参见图5A-5C)。在已经建立与虚拟区域实例的连接后,触发实时内核20调用的软件应用可给予用户请求进入虚拟区域实例内的选项或可代表该用户自动请求进入该虚拟区域实例内。图10示出由实时内核20响应于请求进入虚拟区域的实时内核API调用实现的方法的实施例。根据图10的方法,实时内核20向主存虚拟区域的网络基础结构服务宣称进入该虚拟区域的意图(图10,框168)。在此过程中,实时内核20向区域服务沈发送包含该宣称的消息。该消息可在与区域服务26的现有链路的信道上发送,或者在实时内核20建立的与区域服务沈的新链路上发送。作为相应,区域服务沈确定用户能力是否满足与虚拟区域实例相关联的能力要求。如果用户能力符合能力要求,则区域服务26向实时内核20 返回配置数据。根据虚拟区域实例的描述,配置数据通常包括虚拟区域实例的定义、当前在该虚拟区域实例内的对象的登记、以及与虚拟区域中的对象相关联的实时数据流源和阱的
35集合。实时内核20发起至少一个实时数据流在与至少一个实时数据流源的至少一个网络连接上的传递,其中该至少一个数据流源分别与虚拟区域中的至少一个对象相关联(图 10,框170)。在此过程中,实时内核20基于从区域服务沈接收的配置数据确定与虚拟区域的实例相关联的一个或更多个网络节点。实时内核20随后发起至少一个实时数据流在与至少一个所确定的网络节点的至少一个网络连接上的传递。实时内核20和其他网络节点之间的连接可以是对等连接或服务器仲裁的连接。关于对等连接,连接目标网络节点和实时内核20通常彼此认证,并且随后建立链路,经由该链路向或从连接目标传送至少一个实时数据流。链路通常是单向的且由发射机请求并由接收机接受或拒绝。在所解说的实施例中,实时内核20根据虚拟区域实例的描述中的至少一个流处置定义来处理发起的实时数据流(图10,框17 。在此过程中,实时内核20根据虚拟区域描述中定义的流处理配置将流处理对象集组装成有向图。f.远程控制的流处置图11示出由实时内核20响应于从虚拟区域服务沈接收的处置指令实现的方法的实施例。根据图11的方法,实时内核20从在远程网络节点上操作的区域服务沈接收一个或更多个流处置指令,其中该流处置指令包括用于处理至少一个实时数据流的流处理机的描述(图11,框200)。实时内核20根据流处理机描述创建流处理机(图11,框20 。流处理机通常包括一个或更多个流处置指令中描述的混合功能。该混合功能用于将实时数据流与至少一个其他实时数据流混合以产生混合的实时数据流。实时内核20在包括通过所创建的流处理机处理实时数据流的过程中产生所得数据流(图11,框204)。在一些实施例中,该过程涉及从一个或更多个流处置指令中指定的实时状态信息中确定配置参数值、以及用该配置参数值动态地配置流处理机。图12示出由流处理机配置管理器208(其为实时内核20的组件)根据从区域服务 26接收的流处置指令210创建的流处理机206的实施例。流处理机配置管理器208通常由一个或更多个构成服务和实时内核20的其他组件构成。流处理机配置管理器208从一组处理对象(也称为处理图元或PGE)构造流处理机206。每个处理对象是能够对数据流执行特定功能(例如,变换功能、分立功能、以及混合功能)的软件对象。流处理机配置管理器 208实例化一个或更多个流处置指令中指定的处理对象并根据描述将实例化的处理对象组装成流处理机206的有向图组件212。在一些实施例中,流处置指令用相应的唯一标识符来指定处理对象且流处理机配置管理器208通过向处理对象API发起包括相应一些标识符的调用来实例化处理对象。流处理机206被配置成通过相应处理链216-218处理特定数据类型(例如,音频、视频、以及运动数据类型)的多个数据流214,这些处理链由相应一些处理对象构成。流处理机206另外包括混合对象220 (其在一个或更多个流处置指令中指定)。 在操作中,流处理机206执行混合对象220以从经处理实时数据流216-218的组合产生混合实时数据流222。在一些实施例中,至少一个实例化的处理对象将相应的调用封装到驱动程序模块224,该驱动程序模块至少部分地基于所得数据流222控制本地网络节点的硬件组件。g.实时任务调度
图13示出由实时内核20在调度由实时内核20执行的任务的过程中实现的方法的实施例。根据图13的方法,实时内核20建立与至少一个远程网络节点的至少一个实时数据流连接(图13,框230)。实时内核20处理源自远程网络节点的至少一个实时数据流(图13,框232)。在此过程中,实时内核10通过一个或更多个实时数据处理操作处理该至少一个实时数据流以产生所得数据流。实时内核20监视该至少一个实时数据流的处理(图13,框234)。在一些实施例中,实时内核10监视一个或更多个以下参数所得数据产生的速率、本地网络节点的至少一个处理器的利用、以及本地网络节点的至少一个连网资源的带宽利用。在一些实施例中, 实时数据流被分组成帧且实时内核20在根据本地时钟设定的每一相继固定长度间隔期间监视每一帧的处理,该本地时钟通常与远程主时钟服务同步。基于该监视,实时内核20确定实时数据流的处理是否偏离性能目标。在一些实施例中,性能目标包括对产生所得数据流的基于时间的阈值。例如,在一些实施例中,性能目标是对产生所得数据流的帧的速率的谓项(即,条件)。该类型的示例性的性能目标包括目标阈值和目标范围。响应于确定该至少一个实时数据流的处理偏离性能目标,实时内核20根据实时性能目标例程修改该处理(图13,框236)。图14示出由实时内核20基于对至少一个实时数据流的处理的监视而执行的方法的实施例。响应于确定对该至少一个实时数据流的处理没有满足性能目标(图14,框238), 实时内核20将计算资源负载减少至较低水平(图14,框M0)。取决于实时性能目标例程的设计,实时内核20通常以下列方式中的一种或更多种来减少计算资源实时内核20可忽略实时数据流的一个或更多个部分的处理(图14,框对2);实时内核20可忽略一个或更多个实时数据处理操作(图14,框对4);以及实时内核20可用不同的相应数据处理操作替代至少一个实时数据处理操作(图14,框M6)。在忽略实时数据流的一个或更多个部分的处理的过程中(图14,框对2),实时内核20通常执行以下操作中的至少一个忽略一个或更多个由性能目标之外的相应性能值表征的数据处理操作;以及基于分别指派给各个数据处理操作的优先级值优先忽略一个或更多个数据处理操作。如果该至少一个实时数据流的处理满足性能目标(图14,框238)且计算负载已经通过以上描述的任一种方法被减少至较低水平(图14,框对8),则实时内核20从该较低水平增加计算负载(图14,框250)。实时内核20通常根据启发通过反转一个或更多个用于在框240减少计算资源负载的操作来增加计算资源。如果该至少一个实时数据流的处理满足性能目标(图14,框238)且计算负载并未通过以上描述的任一种方法被减少至较低水平 (图14,框M8),则实时内核20维持对实时数据流的当前处理。在一些实施例中,实时内核20实例化对至少一个实时数据流执行相应一些数据处理操作的处理对象。实时内核20从一些被实例化的处理对象建立有向图并通过该有向图处理该至少一个实时数据流。取决于实时性能目标例程,实时内核20可通过从有向图中删除一个或更多个被实例化的处理对象而修改实时数据流的处理。在一些实施例中,处理对象被指派相应的优先级值,且实时内核20通过基于被指派的优先级值从有向图中移除一些被实例化的处理对象来删除处理对象。例如,在这些实施例中的一些中,该删除包括从有向图中移除一些被实例化的处理对象,这些被实例化的处理对象被指派的相应优先级值不满足优先级阈值。在一些实施例中,实时内核20从一些被实例化的处理对象建立第二有向图,第二有向图被用于处理源自本地网络节点和至少一个远程网络节点之一的第二实时数据流。在这些实施例的一些中,第一和第二有向图被指派相应的优先级值,且实时内核通过基于被指派的优先级值优先修改第一和第二有向图之一来修改第一和第二实时数据流的处理。例如,实时内核可卸下第一和第二有向图中被指派最低优先级值的那一个。在一些实施例中,实时内核20通过有向图处理第二实时数据流,其中第二实时数据流源自本地网络节点和至少一个远程网络节点之一。在这些实施例的一些中,第一和第二实时数据流被指派相应的优先级值,且实时内核20基于被指派的优先级值优先修改对第一和第二实时数据流之一的处理。在一些实施例中,实时内核20建立本地网络节点和多个远程网络节点之间的相应实时数据流连接。实时内核20通过有向图处理源自相应一些远程网络节点的实时数据流。在这些实施例的一些中,实时数据流被指派相应的优先级值,且实时内核20基于被指派的优先级值优先修改对一个或更多个实时数据流的处理。有向图通常包括相应一些被实例化的处理对象的多个有向链。实时内核20通常通过每个有向链处理相应的一个实时数据流。在这些实施例的一些中,实时内核20迭代地修改实时数据流的处理直至处理落在指定的性能目标之内。在每次迭代期间,该修改通常包括执行以下一者或更多(i)从有向图中移除一个或更多个链以及(ii)从有向图中删除一个或更多个被实例化的处理对象。V.示例性实时内核实施例A.引言图15示出实时内核20的实施例沈0。实时内核260支持2D/3D图形呈现引擎、音频混合及开关引擎在不同网络节点上的远程配置和执行以创建两个或更多个通信者之间的物理存在性的感觉。在管理在同一时间在单个虚拟区域实例中交互的所有通信者的过程中,区域服务沈经由实时内核沈0的分组传输组件(本文称为STRAW服务沈8)远程配置实时内核260和其他网络节点之间的会话。在一些实施例中,实时内核沈0点对点(P2P) 配置数据流(例如,实时音频数据流)以便最小化与区域服务26的通信。区域服务沈也可混合数据流并在必要时将其输送至客户端网络节点。实时内核260将向区域服务沈报告P2P连接故障以便区域服务沈可确定何时为客户端网络节点混合数据流。实时内核沈0 具有小初始覆盖区域,并在网络连接上加载更新和增加功能性作为插件。实时内核260包括一组管理器和服务。实时内核管理器有连接和服务混合管理器沈2、区域/地带管理器沈4、以及插件管理器沈6。实时内核服务有STRAW服务沈8、SODA 处理机服务270、媒体服务271、音频流服务272、So3D接口服务274、资产缓存服务275、一个或更多个社交服务器277,记录、回放及传输总线服务276、实时调度器服务278、时间服务观0、SIP服务观2、本地HID/RDS驱动程序处理机服务观4,以及用于包括本地音频回放观6、本地扬声器观8、本地话筒290和Skype 音频的本地音频设备的接口服务。在一个示例性实施例中,实时内核沈0由以下运行时封装组件实现库库名称腿
SORK.DLL实时调度器278
Compress.DLL压缩引擎
Media-DLL用于流送音频传输的媒体服务271
SODA.DLL用于流送SOD定义传输的SODA信道服务
270
GIPS.DLLGIPS语音组件
OpenAL.DLL打开用于声卡支持的音频库
AudioSvc.DLL音频流服务272
TransBus.DLL包括音频流服务272的媒体传输总线
OpenAL.DLL声卡
STRAW.DLLSTRAW服务268 (分组传输引擎)
CSMMgr.DLL連接和服务器混合管理器262
AreaZone-DLL区域/地帯管理器264
ArtCache.DLL提供对本地数据库中的样式(art)的SODA
接ロ的资产缓存服务
So3D.DLL对3D呈现引擎的SODA接ロ
TimeSID.DLL网络时间标准接ロ
PlugInMgr-DLL插件管理器其他插件加密算法压缩算法认证算法凭证音频混合音频源音频编解码器音频计算图形效果物理延伸脚本延伸输入设备主存
B.实时内核设计如图15所示,实时内核260被设计为服务、插件和实时调度器的集合,其构成用于根据从区域服务沈接收的指令呈现虚拟区域通信环境的平台。各服务协作以通过音频和图形呈现配置根据网络特性实现工作在不同级别的该平台。插件是不同种类的,每个种类附着于插件管理API且每个种类具有其自己的种类API。实时调度器278确保音频和图形呈现以均勻帧速率发生。根据虚拟区域的实例由区域服务26通过在STRAW UDP套接字(参见VI部分,其包含关于SODA记录的示例性集合的SODA定义)上传送的SODA定义记录来配置该平台。STRAW服务268使用公布/订阅模型来多路分解SODA记录流。SODA记录仅在订户存在于STRAW套接字的另一端时才被传送。收到的SODA记录在抵达时被传递给一个或更多个订户。服务支持供So3D图形引擎和HUD 84使用的本地API。以下小节描述了实时内核260及其组件的实施例的安装、设计以及操作。1.安装a.概览在一些实施例中,基于虚拟区域的呈现平台经由因特网作为软件包被下载为安装包。其被HTTP下载从下载服务器传递。在操作Microsoft Windows 操作系统的客户端网络节点上,平台软件包是.msi包。初始安装是在更新变为可用时在下载服务器上被修改的单个包。当新的客户端网络节点执行当前安装时,不需要其他更新直至创建作为后续更新的此种时间。实时内核260利用插件来定制应用。必要的插件包括在安装包内。组件可不时地被独立更新(例如,实时内核服务可以是修正发布的且可以增加插件)。在这种情况下,可为修正发布创建分离的Windows .msi安装包并向更新服务器登记。安装的平台软件将被通知该更新,并将为通信者提供升级选项。一些通信者可延迟升级直至一个以上更新可用。当通信者最终同意升级时,所有可用的更新将被加载并被顺序应用。插件的多个版本可在同一时间在客户端网络节点上呈现。这是因为客户端网络节点通常商定特征,并选择适合API和版本要求的插件。每个插件广告其API和变量。这些插件将具有不同的文件名以避免文件系统中的名称冲突。具有相同API和不同变量的两个插件是不同的实现,且由请求该插件的服务作出选择(或许例如通过与服务器商定)。当加载与现有插件具有相同API和变量的插件时,这是隐错修正。新的插件替代旧的插件。 服务始终由升级替代。从来没有具有相同API的两个服务。Windows 安装使用清单和捆绑的Windows 相关的DLL以保证无论Windows⑧环境的更新状态如何皆起效的产品。 Windows 并排(side-by-side)特征被用于避免与其他产品安装要求相冲突。b.更新服务器更新服务器包含针对每个支持的主存操作环境的安装包,以及针对之前支持的每个安装包的升级包。客户端网络节点和更新服务器在可靠的STRAW信道上通信。更新服务器公布针对每个支持的主存操作环境的可用升级定义。安装在客户端网络节点上的基于虚拟区域的呈现平台软件随后可订阅升级。更新服务器开始发送合需的软件块。在一些实施例中,客户端版本和升级工具被安装在每个客户端网络节点上以允许用户察看当前客户端软件版本、列出可用的升级以及启动并监视升级过程。客户端网络节
40点将保留已被应用的升级包的GUID的表。该表将向更新服务器呈现该列表,且作为回报, 得到以应用顺序排列的按照GUID的待决升级的列表。它们将具有所附的描述、大小和日期属性。升级仅在下载完成且自动安装报告成功时被标记为“已应用”。自动安装过程包括停止任何运行的SORK服务以便DLL可被重写。通过一系列SODA记录完成下载一升级,因此该过程可被打断并恢复而无需重复任何数据传递。记录包括升级GUID和偏移。因为对回退或重新安装不存在要求,因此无需任何Microsoft Windows “并排”库清单。任何要求的库均可作为升级的一部分被加载。升级工具将产生注册表项或保留一文件,该文件包含被应用的升级的GUID、任何当前加载升级的GUID、其偏移以及对磁盘上包含“迄今为止”的数据的文件的引用。一旦被应用,升级包就被删除。如果期望为多个客户端网络节点缓存升级包,则在将进行该缓存的同一客户端代理处指向它们的每一个。c.更新本地数据库客户端网络节点在本地文件系统中的资产目录中存储基于虚拟区域的呈现平台服务和插件。这些服务和插件是通过API和所附资源自描述的。不保留关于客户端网络节点软件状态的其他信息。当客户端网络节点重新安装基于虚拟区域的呈现平台软件时,或许在OS(操作系统)升级后,现有插件通常被重新验证。新的安装包括所有基础服务和插件,但或许在机器上存在可选插件或应用专用插件,此可选插件或应用专用插件通常被删除或被重验证。在一些实施例中,有效插件的二进制内容被散列并被单向加密,且结果值被存储为用于检查该插件是否可信的所附资源。为了验证可疑插件,当前插件内容被重新散列和加密,且将结果值与现有资源比较。如果该内容与资源不匹配,则该插件是无效的。d.客户端认证网络认证通常在每次实时内核260 —启动时就进行。在一些实施例中,运行帐户网络基础结构服务的帐户服务器被用于认证通信者并为该通信者建立真实用户标识符 (RUID)。帐户服务器创建令牌(随后被包括为RUID的一部分)并将该令牌给予客户端网络节点以向其他服务器认证自己。在此过程中,客户端网络节点在安装时被安全地发出一凭证。该凭证通常是由证书权威机构签发的CA定义的凭证。该证书包含私钥和公钥。基于虚拟区域的呈现平台安装包创建仅包含公钥的新凭证。私钥被安全存储在客户端网络节点上。基于虚拟区域的呈现平台安装包使用私钥创建签名以加密通信者提供的口令的摘要, 并将签名安全传送给帐户服务器。帐户服务器恢复摘要并将其存储为客户端标识秘密。当建立连接时,实时内核260与帐户服务器共享凭证。帐户服务器用其凭证(例如,服务器侧的证书)作出响应。客户端网络节点和帐户服务器使用注册权威机构验证该凭证。一旦得到验证,服务器侧的凭证对任何地点的任何服务器都是有效的。在一些实施例中,帐户服务器还向客户端网络节点提供随机的1 位的质询短语。客户端网络节点用通信者提供的口令的加密摘要散列该质询短语并将其返回作为响应。帐户服务器还用先前获得的该通信者的摘要散列质询短语并验证来自客户端网络节点的响应是匹配的。网络连接现在被认证且通信者被标识为私钥的拥有者。在一些实施例中,帐户服务器向通信者指派具有所附签名的随机客户端ID。该签名是使用该帐户服务器私钥加密的客户端ID的1 位散列。该签名仅可由该帐户服务器创建。接收令牌的任何人可通过使用由帐户服务器公布的公钥解密摘要并将该摘要与客户端ID比较来验证通信者。e.帐户服务器认证图16示出了通过帐户服务器的凭证来认证帐户服务器四6的方法的实施例。根据该方法,客户端网络节点294和帐户服务器296交换凭证(图16,框四8、300)。客户端网络节点四4向帐户服务器296发出服务器ID和服务器令牌用于后来向客户端网络节点 294快速验证帐户服务器四6 (图16,框30 。帐户服务器296随后向客户端网络节点294 发出客户端ID和所附的标识令牌(图16,框304)。使用参与者的公钥来加密在至帐户服务器的流上的认证短语。2.初始化序列图17示出由实时内核沈0的加载器组件在每次启动客户端网络节点上的操作系统时实现的方法的实施例。在此过程中,加载器解析包括一个或更多个内核服务组件的静态内核组件列表(图17,框320)。加载器确定所解析列表中的在本地储存库(例如,本地文件系统中的目录)中缺少的所有内核组件(图17,框322)。加载器检索被确定为缺少的每个内核组件(图17,框324)。在一些实施例中,加载器在客户端网络节点上实例化从远程网络节点(例如,下载服务器或更新服务器)检索缺少的内核组件的更新服务。在已经检索到缺少的内核组件后,加载器从相应一些内核服务组件实例化内核服务(图17,框 326)。被实例化的内核服务被执行以在关于虚拟区域定义的通信环境中与一个或更多个远程网络节点通信(图17,框328)。例如,在一些实施例中,HUD84调用内核服务以与区域服务器通信以便建立如本文详细描述的HUD会话或区域会话。在一些实施例中,实时内核沈0的以下服务在引导时间被加载为Windows 服务 DLL · STRAW 服务 268· SODA 服务 270 媒体服务271·音频流服务272·连接和服务器混合管理器洸2·区域/地带管理器洸4·资产缓存服务275·实时调度器服务278· HUD 84·默认插件在这些实施例中,服务通过名称而非通过⑶ID被加载。一次在客户端网络节点上仅呈现每个服务的一个副本。加载后,SODA信道服务270、媒体服务271、音频流服务272、区域/地带管理器、以及实时调度器服务等待空闲。连接和服务器混合管理器使音频不被配置并等待至区域服务器的连接的定义。默认插件通过⑶ID登记为API类对象。当由⑶ID 在定义中引用时默认插件被加载。HUD 84联络帐户服务器、认证并标识通信者。HUD 84 创建去往集合网络基础结构服务和交互网络基础结构服务的流并填充其最近使用的(MRU) 朋友和区域列表及其频繁朋友和区域列表。资产缓存服务275通常根据启发来联络样式数
42据库服务器并开始缓存数字资源以及更新其GUID映射。3.会话实时内核260管理客户端网络节点和其他网络节点之间的会话。在会话期间,数据在服务器和客户端网络节点之间作为STRAW套接字上的SODA定义记录被共享。数据在公布/订阅模型中共享。实时内核260仅订阅客户端网络节点所需的数据。为了订阅,实时内核260创建与合需服务器的STRAW信道。STRAW信道通过公知的针对特定虚拟区域的 ⑶ID商定。在一些实施例中,STRAW套接字使用通过所配置的DNS提供的地址来连接。区域服务将发送公布消息,该消息指示通信者可用的数据流并用⑶ID句柄标签化每个数据流。实时内核260随后发送针对合需数据流的订阅消息。任何针对订阅信道的区域服务数据的变化作为SODA定义记录被发送给已经订阅那些信道的所有客户端网络节点ο存在两种主要类型的会话(a) HUD会话,其涉及在HUD 84中显示当前关系和存在性信息;以及(b)区域会话,其涉及潜伏或进入虚拟区域实例。a. HUD 会话在HUD会话中,HUD 84联络帐户服务器、RUID服务器、以及集合服务器,并通过 STRAW信道订阅通信者自身的帐户和关系信息。HUD 84随后订阅针对密切相关的联系人和虚拟区域的存在性信息。在该点,HUD 84可显示针对密切相关的联系人的动态存在性信息。b.区域会话在区域会话中,HUD 84订阅关于相关虚拟区域的信息。在一些实施例中,咨询目录服务器以确定主存由HUD指定的虚拟区域的当前区域服务器。创建去往当前区域服务器的STRAW流。HUD订阅与虚拟区域相关联的存在性数据并用当前参与该虚拟区域的其他通信者的名称更新其2D抬头显示器。在该点,通信者“潜伏”在虚拟区域中。通信者的存在可被显示在弹出列表中,且图标被显示在HUD区域表示中(例如,在图5A-5C示出的办公场所中)。如果通信者指导HUD 84进入虚拟区域,随后实时内核向集合服务通知通信者请求进入虚拟区域。订阅与虚拟区域相关联的存在性信息的其他通信者被通知已进入该虚拟区域的新通信者。实时内核沈0引导So3D引擎启动交互环境。So3D引擎订阅区域服务器环境数据 (例如,呈现和运动数据)。区域服务器开始向实时内核260流送所请求的区域服务器环境数据。实时内核将所请求数据传递给So3D引擎,该引擎根据当前可视化模式(例如,2D俯视图、低分辨率视图、或全沉浸性3D视图)呈现数据。区域服务器定义与虚拟区域中的对象相关联的客户端网络节点之间的原始话筒音频媒体流。区域服务器还根据虚拟区域描述中的音频处置指令(例如,空间效果定义和地带定义)创建音频混合元件的定义。连接和服务器混合管理器262侦听音频定义并创建针对每个定义的媒体流,其中该定义包括针对每个P2P音频流的GUID句柄。向本地传输总线276登记每个媒体流并用音频流服务272创建适当的音频混合组件。区域/地带管理器 264还订阅针对音频和针对化身运动和定向数据的SODA定义。当通信者的化身在该虚拟区域中导航时,区域/地带264控制每个音频流的增益/静音。在一些实施例中,区域/地带管理器沈4另外订阅关系数据,区域/地带管理器
43264使用该关系数据经由社交处理器277来控制化身在虚拟区域中的定向/移动/姿势(参见图15)。在此过程中,区域/地带管理器264基于化身在虚拟区域中的位置和关系数据库设定社交处理器277的参数值。这样,当通信者讲话时,可通过改变化身头部的位置和定向来指示关系(例如,当化身进入虚拟区域的地带时将其转向成面对另一化身,或者当进入虚拟区域的媒体地带时将化身定向为获得观看屏上的最佳视图)。在一些实施例中,社交处理器277被第三方开发者定义并经由插件被传递给客户端网络节点。每个社交处理器277 是在特定事件发生(例如,由靠近其他化身、或区域中的位置、或二者触发的自动运动)时被自动执行的指令集。社交处理器277可为控制化身或对象在虚拟区域中的运动的任何任意程序性例程。例如,在一些实施例中,如果化身靠近观看屏,一种类型的社交处理器自动迅速将化身移到虚拟区域描述中定义的网络并将该化身在观看屏的前面居中以便用户可容易地看到观看屏的内容。这样,对于移动化身的复杂操纵的需要便消除了。另一种类型的社交处理器277自动旋转和转动化身以确认另一用户的存在性。例如,此类型的社交处理器的实施例被配置为自动将虚拟区域中的化身从彼此面对重定向为其中化身响应于新的通信者进入虚拟区域而面对新的通信者的相应取向。在这种情形中,与原来在虚拟区域中的化身相关联的通信者不必手动操纵其化身;相反,社交处理器自动旋转其头部以确认存在新的通信者。4.管理会话图18示出了由STRAW服务沈8实现的会话管理方法的实施例。根据图18的方法,在本地网络节点,STRAW服务268根据无连接传输协议(例如 UDP)在传输流上建立与远程网络节点的第一会话(例如,图18,框36 。STRAW服务沈8 创建该会话的定义,其中该定义包括网际协议(IP)地址、端口地址、以及传输协议的全局唯一标识符。STRAW服务沈8向远程网络节点发送该定义。STRAW服务268确定指派给远程网络节点的第一站定义,并将第一站定义存储在表中作为每个打开信道的属性。在此过程中,STRAW服务268解析从远程网络节点接收的站定义记录。站定义记录包括一组字段, 其中每个字段被相应字段类型以及相关联的字段值所定义,且每个字段类型被相应的全局唯一标识符(GUID)标识。代表本地网络节点上的一个或更多个软件实体,STRAW服务沈8自动打开在第一会话中在本地网络节点和远程网络节点之间传送数据的一个或更多个信道(图18,.框 364)。在此过程中,STRAW服务沈8向远程网络节点发送定义本地公布信道的记录和具有与远程公布信道之一的标识符匹配的标识符的每一个本地订阅信道的记录。在第一会话中,STRAW服务268维护标识打开的一些信道的表并将相应的属性值与所标识的信道相关联(图18,框366)。STRAW服务268记录从本地网络节点可用的本地公布信道、一个或更多个软件实体请求的本地订阅信道、从远程网络节点可用的远程公布信道、以及远程网络节点请求的远程订阅信道的属性。在此过程中,STRAW服务268为每个本地公布信道维护一记录,该记录包括指示在本地公布信道上公布数据的能力的软件实体之一的标识符、订阅本地公布信道的远程网络节点的标识符、以及本地公布信道的标识符。 STRAW服务268为每个本地订阅信道维护一记录,该记录包括订阅本地订阅信道的软件实体之一的标识符、指示在本地订阅信道上公布数据的能力的远程网络节点的标识符、本地订阅信道的标识符、以及一个或更多个与本地订阅信道相关联的网络传输参数。STRAW服务268为每个远程公布信道维护一记录,该记录包括指示在远程公布信道上公布数据的能力的远程网络节点的标识符、以及远程公布信道的标识符。STRAW服务268在会话中在一个或更多个打开的信道上在本地网络节点和远程网络节点之间传送数据。在一些实施例中,以每一记录包括一组字段的形式传送数据。记录的每个字段由相应的字段类型以及相关联的字段值所定义,且每个字段类型被相应的GUID 标识。一些记录是包含媒体数据的媒体记录,该媒体数据包括可呈现数据的分组。其他记录是包含配置数据的配置记录,该配置数据包括配置设置的定义。媒体记录和配置记录通常被封装在传输流上的传输记录中。媒体记录通常使用第一数据压缩服务来压缩,而配置记录通常使用第二数据压缩服务来压缩。在传输时,STRAW服务268将传输记录与传送传输记录的相应一些信道的标识符相关联,加密该传输记录,以及按顺序排列加密的传输记录。 在接收时,STRAW服务268解密传输记录并将包含在解密的传输记录中的媒体记录和配置记录分派给订阅的一些软件实体。响应于确定第一会话失败,STRAW服务268根据无连接传输协议自动尝试在第二传输流上建立与远程网络节点的第二会话(图18,框368)。在一些实施例中,STRAW服务 268响应于确定指派给远程网络节点的当前站定义不同于建立第一会话时指派给远程网络节点的第一站定义而确定第一会话失败。响应于成功建立第二会话,STRAW服务沈8自动打开该表中标识的每个信道(图 18,框 370)。5.处理数据流实时内核260支持用于处理由客户端网络节点从其他网络节点接收的数据流的流处理机的远程配置。响应于从区域服务沈接收的指令,实时内核260的各种服务和其他组件协同将处理元件的有向图构造和配置成用于处理数据流的流处理机。区域服务指令根据由区域服务沈管理的虚拟区域所主存的虚拟区域应用来配置流处理机。图19示出由实时内核沈0的组件响应于从区域服务沈接收的远程流处置指令实现的方法的实施例。根据图19的方法,实时内核260从一个或更多个流处置指令解析实时流处理机的描述(图19,框330)。在此过程中,STRAW服务268从区域服务沈接收用于配置流处理机的SODA定义。STRAW服务268将SODA定义分派至连接和服务器混合管理器沈2以及区域 /地带管理器沈4。连接和服务器混合管理器262从一个或更多个流处置指令解析输入源标识符、输出阱标识符、以及一个或更多个数据处理对象的每一者的相应标识符。连接和服务器混合管理器262实例化对应于这些标识符中相应一些标识符的实时流处置对象(图19,框33 。连接和服务器混合管理器沈2向传输总线276登记实例化的对象。传输总线276根据描述创建包括一些被实例化的实时流处置对象的有向图(图 19,框334)。区域/地带管理器264将音频计算SODA定义传递至有向图内指定的音频计算对象。STRAW服务268从对应于输入源标识符的输入源接收实时数据流(图19,框336)。 STRAW服务268将该实时数据流传递至媒体服务271,该媒体服务处理该流并将其传递至传输总线276。传输总线276顺序执行流处理机的处理图元以执行对实时数据流的指定处理。
45
流处理机在对应于输出阱标识符的输出阱产生所得数据流(图19,框338)。所得数据流随后被传递给客户端网络节点的呈现组件。
6.实时内核的服务和其他组件实时内核洲0的组件包括服务、插件、以及库。 a.压缩器库
权利要求
1.一种用于远程控制的实时数据流处置的计算机实现的方法,包括在本地网络节点(1 从远程网络节点(16)接收一个或更多个流处置指令,其中所述一个或更多个流处置指令包括对用于处理至少一个实时数据流的流处理机0 的描述;在所述本地网络节点(16)根据所述描述创建流处理机0 ;以及在所述本地网络节点(16)产生所得数据流,其中所述产生包括通过所创建的流处理机02)处理实时数据流。
2.如权利要求1所述的方法,其特征在于,所述产生包括从在所述一个或更多个流处置指令中指定的实时状态信息确定配置参数值,以及用所述配置参数值动态配置所述流处理机02)。
3.如权利要求1所述的方法,其特征在于,所述创建包括建立具有在所述一个或更多个流处置指令中指定的混合功能的所述流处理机(22),且所述产生包括根据所述混合功能将所述实时数据流与至少一个其他实时数据流混合以产生经混合的实时数据流。
4.如权利要求1所述的方法,其特征在于所述创建包括实例化在所述一个或更多个流处置指令中指定的处理对象并根据所述描述将被实例化的处理对象组装成所述流流处理机0 的有向图组件;以及所述处理包括通过所述有向图处理所述实时数据流。
5.如权利要求4所述的方法,其特征在于,所述产生包括从在所述一个或更多个流处置指令中指定的实时状态信息确定针对被实例化的处理对象的配置参数值,以及用所述配置参数值配置所述处理对象。
6.如权利要求4所述的方法,其特征在于,所述实例化包括实例化在所述一个或更多个流处置指令中指定的混合对象,且所述产生包括执行所述混合对象以从所述实时数据流和至少一个其他实时数据流的组合产生经混合的实时数据流。
7.如权利要求4所述的方法,其特征在于,至少一个被实例化的处理对象将相应的调用封装到驱动程序模块中,所述驱动程序模块至少部分地基于所述所得数据流控制所述本地网络节点(16)的硬件组件。
8.如权利要求4所述的方法,其特征在于,所述一个或更多个流处置指令用相应的唯一标识符指定所述处理对象且所述实例化包括向处理对象应用程序接口程序(API)发出包括相应一些所述标识符的调用。
9.如权利要求1所述的方法,其特征在于,所述一个或更多个流处置指令包括用于处理具有不同于所述第一实时数据流的数据类型的至少一个实时数据流的第二流处理机 (22)的第二描述,所述创建包括根据所述第二描述创建第二流处理机(22),且所述产生包括通过所述第二流处理机0 处理实时数据流。
10.如权利要求1所述的方法,其特征在于,所述本地网络节点(16)与虚拟区域08) 中的第一对象相关联,且所述方法进一步包括从与所述虚拟区域08)中的第二对象相关联的第二远程网络节点接收实时数据流。
11.如权利要求10所述的方法,其特征在于,所述一个或更多个流处置指令包括描述所述虚拟区域08)中的所述第一和第二对象的相应位置的实时位置信息,并且所述产生包括从所述实时位置信息确定配置参数值并用所述配置参数值配置所述流处理机02)。
12.如权利要求11所述的方法,其特征在于,进一步包括从与所述虚拟区域08)中的第三对象相关联的第三远程网络节点接收第二实时数据流,其中所述创建包括建立具有在所述一个或更多个流处置指令中指定的混合功能的所述流处理机(22),且所述产生包括根据所述混合功能组合所述第一实时数据流和所述第二实时数据流。
13.如权利要求11所述的方法,其特征在于,所述一个或更多个流处置指令包括用于处理具有不同于所述第一实时数据流的数据类型的至少一个实时数据流的第二流处理机0 的第二描述,所述方法还包括从第三远程网络节点接收第二实时数据流。其中所述创建包括根据所述第二描述创建第二流处理机(22),且所述产生包括根据一个或更多个所述配置参数值配置所述第二流处理机0 并通过所述第二流处理机02)处理所述第一实时数据流和所述第二实时数据流。
14.如权利要求10所述的方法,其特征在于所述一个或更多个流处置指令包括描述所述虚拟区域08)中的所述第一和第二对象的相应位置的实时位置信息;所述创建包括建立具有在所述一个或更多个流处置指令中指定的一个或更多个对象属性处理功能的所述流处理机02);所述产生包括从所述实时位置信息确定对象配置参数值,以及在产生所述所得数据流的同时用所述对象配置参数值动态配置所述一个或更多个对象属性处理功能;以及所述生成包括至少部分地基于所述所得数据流呈现包括所述虚拟区域08)内的所述第一和第二对象的视觉表示的可见输出。
15.如权利要求14所述的方法,其特征在于,所述一个或更多个对象属性处理功能中的至少一个被配置为基于所述第一对象在所述虚拟区域08)中的位置在取向、位置、移动以及姿势中的至少一者上动态控制所述第一对象的所述视觉表示。
16.如权利要求1所述的方法,其特征在于,所述指定的数据类型是音频且所述生成包括生成可听的输出。
17.如权利要求16所述的方法,其特征在于,所述创建包括建立具有在所述一个或更多个流处置指令中指定的一个或更多个音频处理功能的所述流处理机02)。
18.如权利要求17所述的方法,其特征在于,所述网络节点与虚拟区域08)中的第一对象相关联,所述方法进一步包括从与所述虚拟区域08)中的第二对象相关联的第二网络节点接收所述实时数据流,且其中所述一个或更多个流处置指令包括描述所述虚拟区域 (28)中的所述第一和第二对象的相应位置的实时位置信息,以及所述产生包括从所述实时位置信息确定音频处理配置参数值并用所述音频处理配置参数值配置所述流处理机02)。
19.如权利要求16所述的方法,其特征在于,所述创建包括建立具有在所述一个或更多个流处置指令中指定的混合功能的所述流处理机(22),且所述产生包括根据所述混合功能将所述实时数据流与至少一个其他实时音频数据流相组合。
20.如权利要求1所述的方法,其特征在于,还包括在所述本地网络节点(16)存储从所述远程网络节点接收的远程公布定义,其中所述定义描述可从一个或更多个远程网络节点获得的实时数据流;存储由所述本地网络节点(16)的本地实时内核组件所请求的实时数据流的本地订阅定义;以及向一个或更多个所述远程网络节点发送对具有匹配的远程公布定义的每个所述本地订阅定义的相应实时数据流请求。
21.如权利要求20所述的方法,进一步包括在所述本地网络节点(16),根据所述本地订阅定义将响应于所述请求从所述一个或更多个远程网络节点接收的实时数据流引导至相应的所述本地实时内核组件。
22.如权利要求1所述的方法,进一步包括至少部分地基于所述所得数据流在所述本地网络节点(16)生成人类可感知的输出。
23.一种装置,包括存储计算机可读指令的计算机可读介质;以及耦合至存储器的数据处理单元,用于执行所述指令,并至少部分地基于所述指令的执行来执行操作,所述操作包括在本地网络节点(16)从远程网络节点接收一个或更多个流处置指令,其中所述一个或更多个流处置指令包括对用于处理至少一个实时数据流的流处理机0 的描述; 在所述本地网络节点(16)根据所述描述创建流处理机(22),以及在所述本地网络节点(16)产生所得数据流,其中所述产生包括通过所创建的流处理机02)处理实时数据流。
24.其中含有计算机可读程序代码的至少一种计算机可读介质,所述计算机可读程序代码适于被计算机执行以实现包括以下动作的方法在本地网络节点(16)从远程网络节点接收一个或更多个流处置指令,其中所述一个或更多个流处置指令包括对用于处理至少一个实时数据流的流处理机0 的描述; 在所述本地网络节点(16)根据所述描述创建流处理机0 ;以及在所述本地网络节点(16)产生所得数据流,其中所述产生包括通过所创建的流处理机02)处理实时数据流。
25.一种用于实时数据流处置的计算机实现的方法,包括从一个或更多个流处置指令010)中解析对实时流处理机006)的描述,其中所述解析包括从所述一个或更多个流处置指令(210)解析输入源标识符、输出阱标识符、以及一个或更多个数据处理对象中的每一者的相应标识符;实例化对应于相应一些所述标识符的实时流处置对象; 根据所述描述创建包括一些被实例化的实时流处置对象的有向图012); 从对应于所述输入源标识符的输入源接收实时数据流;以及在对应于所述输出阱标识符的输出阱产生所得数据流,其中所述产生包括通过所述有向图(212)处理所述实时数据流。
26.如权利要求25所述的方法,其特征在于,所述解析包括从所述一个或更多个流处置指令OlO)中提取数据处理对象的标识符,以及所述创建包括从对应于所提取的标识符的实时流处置对象的实例化组装所述有向图012)。
27.如权利要求25所述的方法,其特征在于,所述解析包括从所述一个或更多个流处置指令OlO)中提取音频处理对象的标识符,以及所述处理包括通过对应于相应一些所提取的标识符的一个或更多个被实例化的音频处理对象来处理所述实时数据流。
28.如权利要求25所述的方法,其特征在于,所述实例化包括向对象库查询所述相应标识符,响应于所述查询从所述对象库检索对象,以及实例化所检索的对象。
29.如权利要求观的方法,其特征在于,所述实例化包括向处理对象应用程序接口 (API)程序发出包括相应一些所述标识符的调用。
30.如权利要求25所述的方法,其特征在于,所述产生包括从在所述一个或更多个流处置指令O10)中指定的实时状态信息确定配置参数值,以及用所述配置参数值动态配置所述有向图012)中的一个或更多个所述被实例化的实时流处置对象。
31.如权利要求25所述的方法,其特征在于所述接收包括从对应于所述描述中的第二输入源标识符的第二输入源接收第二实时数据流;以及所述产生包括通过所述有向图(21 处理所述第二实时数据流。
32.如权利要求31的方法,其特征在于,所述实例化包括实例化对应于相应一个被解析的标识符的实时流混合对象O20),所述创建包括将被实例化的实时流混合对象合并到所述有向图(21 中,且所述产生包括执行所述被实例化的实时流混合对象O20)以组合所述第一所述实时数据流和所述第二实时数据流。
33.如权利要求32所述的方法,其特征在于,所述第一输入源对应于来自第一远程网络节点的传入实时数据流014)的定义,而所述第二输入源对应于来自第二远程网络节点的传入实时数据流014)的定义。
34.如权利要求25所述的方法,其特征在于所述解析包括从所述一个或更多个流处置指令OlO)中解析对第二实时流处理机 (22)的第二描述,所述第二描述包括第二输入源标识符、第二输出阱标识符、以及一个或更多个数据处理对象中的每一者的相应标识符;所述创建包括根据所述第二描述从一些被实例化的实时流处置对象创建第二有向图;所述接收包括从对应于所述第二输入源标识符的第二输入源接收第二实时数据流,其中所述第一和第二实时数据流在数据类型方面不同;以及所述产生包括通过所述第二有向图处理所述第二实时数据流至对应于所述第二输出阱标识符的第二输出阱。
35.如权利要求34所述的方法,其特征在于,所述第一实时数据流和所述第二实时数据流被并发处理。
36.如权利要求25所述的方法,其特征在于,至少一个所述被实例化的实时流处置对象封装对控制本地硬件组件的驱动程序模块的相应调用。
37.如权利要求25所述的方法,其特征在于,所述解析、所述实例化、所述创建、所述接收、所述产生、以及所述生成在与虚拟区域08)中的第一对象相关联的本地网络节点(16) 上执行,且所述接收包括从与所述虚拟区域08)中的第二对象相关联的远程网络节点接收所述实时数据流。
38.如权利要求37所述的方法,其特征在于,所述一个或更多个流处置指令(210)包括描述所述虚拟区域08)中的所述第一和第二对象的相应位置的实时位置信息,并且所述产生包括从所述实时位置信息确定配置参数值并用所述配置参数值动态配置所述有向图中的一个或更多个所述被实例化的实时流处置对象。
39.如权利要求38所述的方法,其特征在于,所述接收包括从与所述虚拟区域08)中的第三对象相关联的第二远程网络节点接收第二实时数据流,所述创建包括建立具有对应于相应一个被解析的标识符的被实例化的混合对象的所述有向图,且所述产生包括执行所述被实例化的混合对象O20)以组合所述第一实时数据流和所述第二实时数据流。
40.如权利要求38所述的方法,其特征在于所述解析包括从所述一个或更多个流处置指令OlO)中解析对第二实时流处理机 (22)的第二描述,所述第二描述包括第二输入源标识符、第二输出阱标识符、以及一个或更多个数据处理对象中的每一者的相应标识符;所述创建包括根据所述第二描述从一些被实例化的实时流处置对象创建第二有向图;所述接收包括从对应于所述第二输入源标识符的第二输入源接收第二实时数据流,其中所述第二输入源对应于来自第二远程网络节点的传入实时数据流的定义,且所述第一和第二实时数据流在数据类型方面不同;以及所述产生包括通过所述第二有向图处理所述第二实时数据流至对应于所述第二输出阱标识符的第二输出阱。
41.如权利要求38所述的方法,其特征在于所述解析包括从所述一个或更多个流处置指令OlO)中提取图形对象外观处理对象的标识符;以及所述产生包括通过对应于相应一些所述被提取的标识符的一个或更多个被实例化的图形对象外观处理对象来处理所述实时数据流,以及至少部分地基于所述第一对象在所述虚拟区域08)中的位置动态配置所述被实例化的图形对象外观处理对象以在取向、位置、 移动以及姿势中的至少一者上控制所述第一对象的视觉表示。
42.如权利要求25所述的方法,其特征在于,所述解析、所述实例化、所述创建、所述接收、所述产生、以及所述生成是在远程网络节点上执行的,且所述方法进一步包括将在本地网络节点(16)上执行的用户级应用的接口元件与所述实时数据流相关联,并将所述实时数据流从所述本地网络节点(16)传送至所述远程网络节点。
43.如权利要求42所述的方法,其特征在于,进一步包括将所述一个或更多个流处置指令从所述本地网络节点(16)传送至所述远程网络节点。
44.如权利要求43所述的方法,其特征在于,所述用户级应用是桌面应用程序。
45.如权利要求44所述的方法,其特征在于,所述用户级应用是微软Office 桌面应用程序。
46.如权利要求25所述的方法,其特征在于,所述流处置指令(210)在不引用函数的情况下指定所述实时流处理机02)。
47.如权利要求25所述的方法,其特征在于,所述流处置指令(210)在不引用流类型的情况下指定所述实时流处理机02)。
48.如权利要求25所述的方法,其特征在于,所述产生包括在每个相继的固定长度间隔期间从所述输出阱到所述输入源地遍历所述有向图(212)。
49.如权利要求25所述的方法,其特征在于,所述解析包括解析一个或更多个记录,每个记录包括相应的定义类型、相应的定义长度、以及因定义类型而异的字段和相应的因定义类型而异的定义中的至少一者。
50.如权利要求25所述的方法,进一步包括至少部分地基于所述所得数据流生成人类可感知的输出。
51.一种装置,包括存储计算机可读指令的计算机可读介质;以及耦合至存储器的数据处理单元,用于执行所述指令,并至少部分地基于所述指令的执行来执行操作,所述操作包括从一个或更多个流处置指令(210)解析对实时流处理机0 的描述,其中所述解析包括从所述一个或更多个流处置指令解析输入源标识符、输出阱标识符、以及一个或更多个数据处理对象中的每一者的相应标识符,实例化对应于相应一些所述标识符的实时流处置对象, 根据所述描述创建包括一些被实例化的实时流处置对象的有向图(212), 从对应于所述输入源标识符的输入源接收实时数据流(214),以及在对应于所述输出阱标识符的输出阱产生所得数据流,其中所述产生包括通过所述有向图(212)处理所述实时数据流。
52.其中含有计算机可读程序代码的至少一种计算机可读介质,所述计算机可读程序代码适于被计算机执行以实现包括以下动作的方法从一个或更多个流处置指令(210)解析对实时流处理机0 的描述,其中所述解析包括从所述一个或更多个流处置指令解析输入源标识符、输出阱标识符、以及一个或更多个数据处理对象中的每一者的相应标识符;实例化对应于相应一些所述标识符的实时流处置对象; 根据所述描述创建包括一些被实例化的实时流处置对象的有向图012); 从对应于所述输入源标识符的输入源接收实时数据流014);以及在对应于所述输出阱标识符的输出阱产生所得数据流,其中所述产生包括通过所述有向图(212)处理所述实时数据流。
53.一种用于实时数据流处置的计算机实现的方法,包括建立本地网络节点(16)和至少一个远程网络节点(230)之间的至少一个实时数据流连接;在所述本地网络节点(16)处,处理源自所述远程网络节点的至少一个实时数据流,其中所述处理包括通过一个或更多个实时数据处理操作处理所述至少一个实时数据流以产生所得数据流032);监视所述处理034);以及响应于基于所述监视确定所述处理偏离性能目标,根据实时性能目标例程修改(236) 所述处理。
54.如权利要求53所述的方法,其特征在于,所述修改(236)包括响应于确定所述处理没有满足所述性能目标而省略对所述实时数据流的一个或更多个部分的处理。
55.如权利要求53所述的方法,其特征在于,所述修改(236)包括响应于确定所述处理没有满足所述性能目标而省略一个或更多个所述实时数据处理操作。
56.如权利要求55所述的方法,其特征在于,所述省略包括省略由所述性能目标之外的相应性能值所表征的一个或更多个所述数据处理操作。
57.如权利要求55所述的方法,其特征在于,所述数据处理操作中的一些被指派相应的优先级值,且所述省略包括基于所述被指派的优先级值优先省略一个或更多个所述数据处理操作。
58.如权利要求53所述的方法,其特征在于,所述修改(236)包括响应于确定所述处理没有满足所述性能目标用不同的相应实时数据处理操作替换至少一个所述实时数据处理操作。
59.如权利要求53所述的方法,其特征在于,一个或更多个所述实时数据处理操作被指派相应的优先级值,所述实时性能目标例程包括启发,该启发基于所述被指派的优先级值确定所述数据处理操作中要省略的数据处理操作,且所述修改(236)是根据所述启发来执行的。
60.如权利要求59所述的方法,其特征在于,所述启发基于所述被指派的优先级值按基于时间的性能统计的加权来确定所述数据处理操作中要省略的数据处理操作。
61.如权利要求53所述的方法,其特征在于,所述修改(236)包括迭代地修改所述处理直至所述处理落在指定的性能目标之内。
62.如权利要求53所述的方法,其特征在于,所述处理(232)包括实例化处理对象, 所述处理对象中的一些用于执行相应一些所述数据处理操作;从一些被实例化的处理对象建立有向图;以及通过所述有向图处理所述实时数据流。
63.如权利要求62所述的方法,其特征在于,所述修改(236)包括从所述有向图中删除一个或更多个所述被实例化的处理对象。
64.如权利要求63所述的方法,其特征在于,所述处理对象中的一些被指派相应的优先级值,且所述删除包括基于所述被指派的优先级值从所述有向图中移除一些所述被实例化的处理对象。
65.如权利要求64所述的方法,其特征在于,所述删除包括从所述有向图中移除被指派没有满足优先级阈值的相应优先级值的一些被实例化的处理对象。
66.如权利要求62所述的方法,其特征在于,所述处理(232)包括从一些被实例化的处理对象建立第二有向图,并通过所述第二有向图处理源自所述本地网络节点(16)和所述至少一个远程网络节点之一的第二实时数据流。
67.如权利要求66所述的方法,其特征在于,所述第一和第二有向图被指派相应的优先级值,且所述修改(236)包括基于所述被指派的优先级值优先修改所述第一和第二有向图中的一者。
68.如权利要求67所述的方法,其特征在于,所述修改(236)包括在所述第一和第二有向图中被指派最低优先级值的相应有向图中省略对所述第一和第二实时数据流之一的处理。
69.如权利要求62所述的方法,其特征在于,所述处理(23 包括通过所述有向图处理源自所述本地网络节点(16)和所述至少一个远程网络节点之一的第二实时数据流。
70.如权利要求69所述的方法,其特征在于,所述第一和第二实时数据流被指派相应的优先级值,且所述修改(236)包括基于所述被指派的优先级值优先修改对所述第一和第二实时数据流中的一者的处理。
71.如权利要求62所述的方法,其特征在于,所述建立(230)包括在所述本地网络节点 (16)和多个远程网络节点之间建立相应的实时数据流连接,且所述处理(23 包括通过所述有向图处理源自相应一些所述远程网络节点的实时数据流。
72.如权利要求71所述的方法,其特征在于,所述实时数据流被指派相应的优先级值, 且所述修改(236)包括基于所述被指派的优先级值优先修改对一个或更多个所述实时数据流的处理。
73.如权利要求71所述的方法,其特征在于,所述有向图包括相应一些所述被实例化的处理对象的多个有向链,且所述处理(23 包括通过每个所述有向链处理相应一个所述实时数据流,其中每个所述实时数据流源自所述本地网络节点(16)和所述远程网络节点中的相应一个。
74.如权利要求73所述的方法,其特征在于,所述修改(236)包括迭代地修改所述处理直至所述处理落在所述指定的性能目标之内,并且在每次迭代期间,所述修改包括执行以下一者或更多(i)从所述有向图中移除一个或更多个所述链以及(ii)从所述有向图中删除一个或更多个所述被实例化的处理对象。
75.如权利要求53所述的方法,其特征在于,所述性能目标包括对产生所述所得数据流的基于时间的阈值。
76.如权利要求53所述的方法,其特征在于,进一步包括在所述本地网络节点(16)处从远程网络节点接收一个或更多个流处置指令,所述流处置指令包括向所述一个或更多个实时数据处理操作指派相应的优先级值,其中所述修改(236)包括基于所述被指派的优先级值修改所述处理。
77.如权利要求53所述的方法,其特征在于,所述修改(236)包括响应于确定所述处理没有满足所述性能目标而将计算资源负载减少至较低水平。
78.如权利要求77所述的方法,其特征在于,所述修改(236)包括响应于确定所述处理满足所述性能目标而从所述较低水平增加所述计算资源负载。
79.如权利要求53所述的方法,其特征在于,所述实时数据流被分组成帧,且在每个所述帧上执行所述监视。
80.如权利要求79所述的方法,其特征在于,所述处理(23 包括在根据本地时钟设定的每个相继固定长度间隔期间处理所述实时数据流的所述帧。
81.如权利要求80所述的方法,其特征在于,还包括在所述本地网络节点(16)将所述本地时钟与远程主时钟服务同步。
82.如权利要求53所述的方法,其特征在于,所述监视(234)包括监视所述本地网络节点(16)的至少一个处理器的利用。
83.如权利要求53所述的方法,其特征在于,所述监视(234)包括监视所述本地网络节点(16)的至少一个连网资源的带宽利用。
84.如权利要求53所述的方法,进一步包括在所述本地网络节点(16)生成响应于所述所得数据流的人类可感知的输出。
85.如权利要求84所述的方法,其特征在于,所述本地网络节点(16)和所述远程网络节点与虚拟区域08)中的相应对象相关联,且所述人类可感知的输出是在显示器上对所述虚拟区域0 中的对象的可视化。
86.一种装置,包括存储计算机可读指令的计算机可读介质;以及耦合至存储器的数据处理单元,用于执行所述指令,并至少部分地基于所述指令的执行来执行操作,所述操作包括建立本地网络节点(16)和至少一个远程网络节点(230)之间的至少一个实时数据流连接,在所述本地网络节点(16)处,处理源自所述远程网络节点的至少一个实时数据流,其中所述处理包括通过一个或更多个实时数据处理操作处理所述至少一个实时数据流以产生所得数据流032);监视所述处(234),以及响应于基于所述监视确定所述处理偏离性能目标,根据实时性能目标例程(236)修改所述处理。
87.其中含有计算机可读程序代码的至少一种计算机可读介质,所述计算机可读程序代码适于被计算机执行以实现包括以下动作的方法建立本地网络节点(16)和至少一个远程网络节点(230)之间的至少一个实时数据流连接;在所述本地网络节点(16)处,处理源自所述远程网络节点的至少一个实时数据流,其中所述处理包括通过一个或更多个实时数据处理操作处理所述至少一个实时数据流以产生所得数据流032);监视所述处理034);以及响应于基于所述监视确定所述处理偏离性能目标,根据实时性能目标例程(236)修改所述处理。
88.一种计算机实现的方法,包括在本地网络节点(16)上根据无连接传输协议在传输流上建立与远程网络节点的第一会话(362);代表所述本地网络节点(16)上的一个或更多个软件实体,自动打开在所述第一会话中在所述本地网络节点(16)和所述远程网络节点之间传送数据的一个或更多个信道 (364);在所述第一会话中,维护标识打开的一些所述信道的表并将相应的属性值与所标识的信道相关联(366);响应于确定所述第一会话失败,根据所述无连接传输协议自动尝试在第二传输流上建立与所述远程网络节点的第二会话(368);以及响应于成功建立所述第二会话,自动打开所述表中标识的每个所述信道(370)。
89.如权利要求88所述的方法,其特征在于,所述建立(36 包括确定指派给所述远程网络节点的第一站定义且所述维护包括将所述第一站定义存储在所述表中作为每个所述打开的信道的属性。
90.如权利要求89所述的方法,其特征在于,进一步包括发现所述第一会话的失败,其中所述发现包括确定指派给所述远程网络节点的当前站定义并响应于确定所述当前站定义不同于所述第一站定义而确定所述第一会话失败。
91.如权利要求89所述的方法,其特征在于,所述确定包括解析从所述远程网络节点接收的站定义记录,其中所述站定义记录包括一组字段,每个字段由相应字段类型以及相关联的字段值所定义,且每个字段类型被相应的全局唯一标识符(GUID)所标识。
92.如权利要求88所述的方法,其特征在于,进一步包括记录从所述本地网络节点 (16)可用的本地公布信道、所述一个或更多个软件实体所请求的本地订阅信道、从所述远程网络节点可用的远程公布信道、以及所述远程网络节点所请求的远程订阅信道的属性。
93.如权利要求92所述的方法,其特征在于,所述记录包括为每个所述本地公布信道维护一记录,所述记录包括指示在所述本地公布信道上公布数据的能力的所述软件实体中的一者的标识符、订阅所述本地公布信道的远程网络节点的标识符、以及所述本地公布信道的标识符。
94.如权利要求92所述的方法,其特征在于,所述记录包括为每个所述本地订阅信道维护一记录,所述记录包括订阅所述本地订阅信道的所述软件实体中的一者的标识符、指示在所述本地订阅信道上公布数据的能力的远程网络节点的标识符、所述本地订阅信道的标识符、以及一个或更多个与所述本地订阅信道相关联的网络传输参数。
95.如权利要求92所述的方法,其特征在于,所述记录包括为每个所述远程公布信道维护一记录,所述记录包括指示在所述远程公布信道上公布数据的能力的远程网络节点的标识符、以及所述远程公布信道的标识符。
96.如权利要求92所述的方法,其特征在于,所述打开包括向所述远程网络节点发送定义所述本地公布信道的记录。
97.如权利要求92所述的方法,其特征在于,所述打开包括向所述远程网络节点发送具有与所述远程公布信道中的一者的标识符匹配的标识符的每个所述本地订阅信道的记录。
98.如权利要求88所述的方法,其特征在于,所述建立(362)包括创建所述会话的定义,其中所述定义包括网际协议(IP)地址、端口地址、以及传输协议的 全局唯一标识符;并向所述远程网络节点发送所述定义。
99.如权利要求88所述的方法,其特征在于,进一步包括在所述会话中在所述一个或更多个打开的信道上在所述本地网络节点(16)和所述远程网络节点之间传送数据。
100.如权利要求99所述的方法,其特征在于,所述传送包括在记录中传送所述数据, 每个所述记包括一组字段,每个所述字段由相应的字段类型以及相关联的字段值所定义, 且每个所述字段类型被相应的GUID所标识。
101.如权利要求99所述的方法,其特征在于,所述传送包括传送包含包括可呈现数据的分组的媒体数据的媒体记录,以及传送包含包括配置设置的定义的配置数据的配置记录。
102.如权利要求101所述的方法,其特征在于,所述传送包括将媒体记录和配置记录封装在所述传输流上的传输记录中。
103.如权利要求102所述的方法,其特征在于,所述封装包括使用第一数据压缩服务压缩一些所述媒体记录,以及使用第二数据压缩服务压缩一些所述配置记录。
104.如权利要求102所述的方法,其特征在于,所述封装包括将所述传输记录与传送所述传输记录的相应一些所述信道的标识符相关联,加密所述传输记录,以及按顺序排列所述经加密的传输记录。
105.如权利要求102所述的方法,其特征在于,进一步包括在所述本地网络节点(16) 接收从所述远程网络节点传送的一些所述传输记录,其中所述接收包括解密所述传输记录并向所述软件实体中的一些订阅软件实体分派包含在所述经解密的传输记录中的所述媒体记录和所述配置记录。
106.一种装置,包括存储计算机可读指令的计算机可读介质;以及耦合至存储器的数据处理单元,用于执行所述指令,并至少部分地基于所述指令的执行来执行操作,所述操作包括在本地网络节点(16)上根据无连接传输协议在传输流上建立与远程网络节点的第一会话(362);代表所述本地网络节点(16)上的一个或更多个软件实体,自动打开在所述第一会话中在所述本地网络节点(16)和所述远程网络节点之间传送数据的一个或更多个信道 (364);在所述第一会话中,维护标识打开的一些所述信道的表并将相应的属性值与所标识的信道相关联(366);响应于确定所述第一会话失败,根据所述无连接传输协议自动尝试在第二传输流上建立与所述远程网络节点的第二会话(368);以及响应于成功建立所述第二会话,自动打开所述表中标识的每个所述信道(370)。
107.其中含有计算机可读程序代码的至少一种计算机可读介质,所述计算机可读程序代码适于被计算机执行以实现包括以下动作的方法在本地网络节点(16)上根据无连接传输协议在传输流上建立与远程网络节点的第一会话(362);代表所述本地网络节点(16)上的一个或更多个软件实体,自动打开在所述第一会话中在所述本地网络节点(16)和所述远程网络节点之间传送数据的一个或更多个信道 (364);在所述第一会话中,维护标识打开的一些所述信道的表并将相应的属性值与所标识的信道相关联(366);响应于确定所述第一会话失败,根据所述无连接传输协议自动尝试在第二传输流上建立与所述远程网络节点的第二会话(368);以及响应于成功建立所述第二会话,自动打开所述表中标识的每个所述信道(370)。
108.—种在本地网络节点(16)上执行的方法,所述方法包括解析包含一个或更多个内核服务组件的内核组件的列表(320);确定所述被解析的列表中在本地储存库中缺少的所有内核组件(322);检索被确定为缺少的每个所述内核组件(3M);从一些所述内核服务内核组件实例化内核服务(3 );执行所述被实例化的内核服务以在关于虚拟区域08)定义的通信环境中与一个或更多个远程网络节点通信(3 )。
109.如权利要求108所述的方法,其特征在于,所述实例化(326)包括实例化流连接内核服务,且所述执行(328)包括执行所述流连接内核服务以动态加载提供可靠性功能、认证功能、以及加密功能中的至少一者的至少一个流传输插件。
110.如权利要求109所述的方法,其特征在于,所述执行(328)包括响应于从所述远程网络节点中的一者接收的网络连接定义动态加载所述至少一个流传输插件。
111.如权利要求108所述的方法,其特征在于,所述实例化(326)包括实例化实时调度器内核服务,且所述执行(328)包括执行所述实时调度器内核服务以动态加载提供时间同步功能的时间服务插件。
112.如权利要求111所述的方法,其特征在于,所述执行(328)包括响应于从所述远程网络节点中的一者接收的网络连接定义动态加载所述时间服务插件。
113.如权利要求108所述的方法,其特征在于,所述实例化(326)包括实例化一个或更多个流处置内核服务,且所述执行(328)包括执行所述一个或更多个流处置内核服务以从提供流处理功能的一个或更多个插件动态创建和配置至少一个流处理机02)。
114.如权利要求113所述的方法,其特征在于,所述执行(328)包括响应于从所述远程网络节点中的一个远程网络节点接收的流处理机描述动态创建和配置所述流处理机02)。
115.如权利要求114所述的方法,其特征在于,所述执行(328)包括根据所述流处理机描述将多个所述插件组装到有向图中。
116.如权利要求115所述的方法,其特征在于,所述执行(328)包括根据从所述一个远程网络节点接收的第二流处理机描述将所述插件中的一者组装到第二有向图中,所述第一和第二有向图具有不同的相应插件拓扑。
117.如权利要求114所述的方法,其特征在于,所述配置包括在所述流处理机02)正处理从所述一个远程网络节点接收的实时数据流的同时动态配置所述流处理机02)。
118.如权利要求114所述的方法,其特征在于,所述一个或更多个远程网络节点与所述虚拟区域08)中的相应对象相关联,且所述配置包括基于所述虚拟区域08)中的对象的位置确定配置参数值并用所述配置参数值配置所述流处理机0 中的所述插件中的一些。
119.如权利要求108所述的方法,其特征在于,进一步包括在所述本地网络节点(16)上向网络基础结构服务宣称要进入所述虚拟区域08)的意图,以及从所述网络基础结构服务接收对用于呈现所述虚拟区域08)所需的插件的标识。
120.如权利要求119所述的方法,其特征在于,进一步包括在所述本地网络节点(16)上从远程网络节点检索所述本地网络节点(16)中缺少的一些所述插件。
121.如权利要求119所述的方法,其特征在于,进一步包括在所述本地网络节点(16) 上呈现所述虚拟区域08)的过程中加载至少一个所述插件并调用被加载的插件的一个或更多个函数。
122.如权利要求108所述的方法,其特征在于,进一步包括在所述本地网络节点(16)和所述远程网络节点中的一个远程网络节点之间建立网络会话,其中所述建立包括接收对所标识的传输应用程序接口(API)的变量集的标识、从所述集中选择一个变量、以及在所述会话中在所述本地网络节点(16)和所述一个远程网络节点之间传递实时数据流的过程中调用所选择变量的一个或更多个函数。
123.如权利要求122所述的方法,其特征在于,所述调用包括加载支持所标识的传输 API的传输插件并调用所述传输插件的一个或更多个函数。
124.—种装置,包括存储计算机可读指令的计算机可读介质;以及耦合至存储器的数据处理单元,用于执行所述指令,并至少部分地基于所述指令的执行来执行操作,所述操作包括解析包含一个或更多个内核服务组件的内核组件的列表(320), 确定所述被解析的列表中在本地储存库中缺少的所有内核组件(322), 检索被确定为缺少的每个所述内核组件(3M), 从一些所述内核服务内核组件实例化内核服务(326),以及执行所述被实例化的内核服务以在关于虚拟区域08)定义的通信环境中与一个或更多个远程网络节点通信(3 )。
125.其中含有计算机可读程序代码的至少一个计算机可读介质,所述计算机可读程序代码适于被计算机执行以实现包括以下动作的方法解析包含一个或更多个内核服务组件的内核组件的列表(320); 确定所述被解析的列表中在本地储存库中缺少的所有内核组件(322); 检索被确定为缺少的每个所述内核组件(3M); 从一些所述内核服务内核组件实例化内核服务(326),以及执行所述被实例化的内核服务以在关于虚拟区域08)定义的通信环境中与一个或更多个远程网络节点通信(3 )。
126.—种在本地网络节点(16)上执行的方法,包括配置所述本地网络节点(16)以支持在由虚拟区域(28)定义的上下文中与至少一个远程网络节点实时通信,所述配置包括响应于对枚举支持指定的应用编程接口(API)的所有插件的调用,返回包含插件数据库中与所指定的API相关联的所有插件的标识符的列表(442),响应于对枚举由所述插件中所标识的一个插件支持的给定API的变量的调用,传递包括由所标识的插件支持的所述给定API的所有变量的标识符的列表046),以及响应于对实例化由所述插件中所标识的一个插件支持的所标识的API的所标识的一个变量的调用,加载所标识的插件并提供至所标识的变量的实例的指针G50);以及建立所述配置的本地网络节点(16)和所述至少一个远程网络节点之间的至少一个实时数据流连接。
127.如权利要求1 所述的方法,其特征在于所述加载(450)包括创建基础插件对象以及所返回的指向所述基础插件对象的指针,以及进一步包括执行所标识的变量实例,其中所述执行包括通过继承向所标识的变量投掷1所述基础插件对象。
128.如权利要求1 所述的方法,其特征在于,所述通信包括响应于调用而实例化集合中的所述插件中的一些,以及将所述被实例化的插件组装到有向图中,所述调用包括所述集合中的所述插件的标识符和由所述集合中的所述插件分别支持的API中的一个或更多个的标识符。
129.如权利要求1 所述的方法,其特征在于,根据从远程网络节点接收的流处置描述执行所述组装。
130.如权利要求1 所述的方法,其特征在于,所述返回、所述传递、和所述加载是独立于API类型而执行的。
131.如权利要求1 所述的方法,其特征在于,所述插件中的至少一个插件支持多个 API和该插件支持的所述多个API中的至少一个API的多个变量。
132.如权利要求1 所述的方法,其特征在于,进一步包括在关于虚拟区域08)定义的通信环境中与一个或更多个远程网络节点通信,其中所述通信包括执行所标识的变量实例。
133.如权利要求132所述的方法,其特征在于,所述通信包括实例化提供流传输功能的至少一个所述插件。
134.如权利要求132所述的方法,其特征在于,所述通信包括实例化提供音频流处理功能的至少一个所述插件。
135.如权利要求132所述的方法,其特征在于,所述通信包括实例化提供视觉图形效果功能的至少一个所述插件。
136.如权利要求132所述的方法,其特征在于,所述通信包括实例化提供冲突检测功能的至少一个所述插件。
137.如权利要求1 所述的方法,其特征在于,还包括发现所述本地网络节点(16)上可用的插件G30);向所述插件查询其支持的所有应用编程接口(API) (432);以及基于所述查询,在计算机可读介质上的插件数据库中存储所述插件与它们分别支持的 API之间的关联(434)。
138.—种装置,包括存储计算机可读指令的计算机可读介质;以及耦合至存储器的数据处理单元,用于执行所述指令,并至少部分地基于所述指令的执行来执行操作,所述操作包括配置本地网络节点(16)以支持在由虚拟区域08)定义的上下文中与至少一个远程网络节点实时通信,所述配置包括响应于对枚举支持指定的应用编程接口(API)的所有插件的调用,返回包含插件数据库中与所指定的API相关联的所有插件的标识符的列表(442),响应于对枚举由所述插件中所标识的一个插件支持的给定API的变量的调用,传递包括由所标识的插件支持的所述给定API的所有变量的标识符的列表046),以及响应于对实例化由所述插件中所标识的一个插件支持的所标识的API的所标识的一个变量的调用,加载所标识的插件并提供至所标识的变量的实例的指针G50);以及建立所述配置的本地网络节点(16)和所述至少一个远程网络节点之间的至少一个实时数据流连接。
139.其中含有计算机可读程序代码的至少一种计算机可读介质,所述计算机可读程序代码适于被计算机执行以实现包括以下动作的方法配置本地网络节点(16)以支持在由虚拟区域08)定义的上下文中与至少一个远程网络节点实时通信,所述配置包括响应于对枚举支持指定的应用编程接口(API)的所有插件的调用,返回包含插件数据库中与所指定的API相关联的所有插件的标识符的列表(442),响应于对枚举由所述插件中所标识的一个插件支持的给定API的变量的调用,传递包括由所标识的插件支持的所述给定API的所有变量的标识符的列表046),以及响应于对实例化由所述插件中所标识的一个插件支持的所标识的API的所标识的一个变量的调用,加载所标识的插件并提供至所标识的变量的实例的指针G50);以及建立所述配置的本地网络节点(16)和所述至少一个远程网络节点之间的至少一个实时数据流连接。
全文摘要
实时内核(20)支持在相应网络节点(12,14)上操作的通信者之间的实时通信。该实时内核(20)处置连接到通信者、虚拟区域(28)、以及其它网络资源、响应于用户输入开关这些连接、以及混合实时数据流的复杂任务。该实时内核(20)使开发者能够专注于开发高级通信功能而非低级衔接代码。实时内核(20)施加相对低的计算资源要求,以便实时通信性能能使用当前可用的宽范围计算设备和网络连接来达成。
文档编号G06F3/048GK102362269SQ200980150169
公开日2012年2月22日 申请日期2009年12月4日 优先权日2008年12月5日
发明者D·范威尼, J·阿尔特梅尔 申请人:社会传播公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1