用于完全可配置的实时处理的系统和方法与流程

文档序号:12512652阅读:367来源:国知局
用于完全可配置的实时处理的系统和方法与流程
装置的激增已经导致产生了不断增加的巨量数据。当前处理方法不适合于处理此数据。因此,所需的是解决此问题的系统和方法。附图简要说明为了更完整的理解,现在参考结合附图进行的以下描述,附图中:图1A示出具有可定制和可配置处理功能以及可配置支持功能的中立输入/输出(NIO)平台的一个实施例;图1B示出可存在于基于图1A的NIO平台的NIO平台实例内的数据路径的一个实施例;图1C和1D示出作为堆栈的部分的图1A的NIO平台的实施例;图1E到1I示出其中可部署图1A的NIO平台的环境的实施例;图1J到1L示出在其上可以运行图1A的NIO平台的系统的实施例;图2A示出图1A的NIO平台的更详细实施例;图2B和2C示出可存在于NIO平台实例内的层级体系布置的实施例;图3示出可存在于NIO平台实例内的服务的一个实施例;图4A示出图2A的NIO平台的另一实施例;图4B示出基于图4A的NIO平台的NIO平台实例的一个实施例;图4C示出相对于时间绘制的显示图4B的NIO平台实例的核心进程和多个服务的操作的图的一个实施例;图5A到5C示出图3的服务的各种实施例;图5D和5E示出图3的服务内的块如何与所述服务和所述服务内的其它块解耦的实施例;图5F示出图3的服务的实施例;图5G示出对应于图5F的服务内的块的多个块线程的实施例;图6A示出可以供图1A、2A和4A的NIO平台使用的方法的一个实施例;图6B到图8示出图6A的各个步骤的更详细实施例;图9A和9B示出分别从平台角度和堆栈角度来看的图2A的NIO平台的另一实施例;图9C示出可存在于图9A和9B的NIO平台内的层级体系的一个实施例;图9D示出可存在于图9A和9B的NIO平台内的服务的一个实施例;图10示出可发生在图9A和9B的NIO平台内的通信的一个实施例;图11A和11B示出可以用于图9A和9B的NIO平台中的消息处理模块的实施例;图12示出在图9A和9B的NIO平台内的各种部件之间的交互的一个实施例;图13示出当启动一个实例时在图9A和9B的NIO平台的各种部件之间的交互的一个实施例;图14和15示出可以在图13的交互期间使用的方法的实施例;图16A到16D示出可以由图9A和9B的NIO平台的服务所使用的方法的实施例;图16E示出可以由图9A和9B的NIO平台内的块所使用的方法的一个实施例;图17示出显示了用户对图9A和9B的NIO平台900的观点的环境的一个实施例;图18示出可以用于创建并配置NIO平台的工作流的一个实施例;图19A示出在运行时在其内配置服务的服务配置环境的一个实施例;图19B示出在运行时在其内配置块的块配置环境的一个实施例;图20A和20B示出可以用于图19B的块配置环境内的块类别的实施例;图21示出在其内使用配置信息以不同方式基于同一块类别来配置两个块的环境的一个实施例;图22示出在其内使用配置信息以不同方式基于同一服务类别来配置两个服务的环境的一个实施例;图23示出具有基础块类别和基于基础块类别的多个块的环境的一个实施例;图24和25示出使用来自图23的环境的块而建置的服务的实施例;图26示出其中运行图24和25的服务的NIO平台被耦合到外部源和/或目的地的环境的实施例;图27和28示出可以由图26的NIO平台执行以分别创建并配置块和服务的方法的实施例;图29示出实时公布系统可以在其中操作的环境的一个实施例;图30示出由形成图29的实时公布系统的部分的NIO平台提供的功能的一个实施例;图31示出可以在图30的NIO平台内使用的服务的一个实施例;图32和33A示出图31的服务中的一个服务的更详细实施例;图33B示出可以在图31的NIO平台内使用的方法的一个实施例;图34示出由服务器提供的功能的一个实施例,该服务器形成图29的实时公布系统的组成部分;图35示出可以由图29的实时公布系统创建的矩阵的一个实施例;图36A到36E示出可以供图35的矩阵使用的拼块(tile)的各种实施例;以及图37到40E示出可以供图29的实时公布系统使用的方法的实施例。详细描述本公开针对于用于完全可配置的实时处理的系统和方法。应理解,以下公开内容提供许多不同的实施例或例子。在下文描述了部件和布置的具体例子来简化本公开。当然,这些仅是例子,且不希望是限制性的。另外,本公开可能在各个例子中重复参考数字和/或字母。此重复是出于简明和清楚的目的,并且自身不指示所论述的各个实施例和/或配置之间的关系。本公开描述包含支持一个或多个服务的核心的中立输入/输出(NIO)平台的各种实施例。虽然在一些实施例中平台自身可以在技术上被视为可执行应用程序,但可将核心视为应用程序引擎,其运行被称为服务的任务特定的(taskspecific)应用程序。使用通过核心辨识的所限定的模板来构建所述服务,但所述模板可以在一定程度上定制。核心被设计成管理并支持所述服务,且所述服务继而管理块,所述块向它们的相应服务提供处理功能。由于通过NIO平台的核心、服务和块所提供的运行时环境的结构和灵活性,所述平台能够实时地异步地处理来自一个或多个源的任何输入信号。参考图1A,示出NIO平台100的一个实施例。NIO平台100可配置成接收任何类型的信号(包含数据)来作为输入,处理那些信号,并且产生任何类型的输出。NIO平台100能够支持实时地或准实时地接收、处理并产生的此进程。输入信号可为流式(streaming)或任何其它类型的连续或非连续输入。当在实时地且准实时地执行处理时提到NIO平台100时,意味着除了NIO平台实例的输入与输出之间的可能的排队以外,不存在存储。换句话说,因为没有存储读取和写入时间,所以在NIO平台实例的输入与输出之间仅存在处理时间,甚至对于进入NIO平台100的流数据也如此。应注意,这意味没有办法恢复已经进入NIO平台100并且已经被处理的原始信号,除非所述原始信号是输出的部分,或者NIO平台100已经被配置成保存所述原始信号。原始信号被NIO平台100接收、处理(其可涉及改变和/或摧毁原始信号),且产生输出。在除了可能的排队以外不存在任何存储的情况下,发生所述接收、处理以及输出的产生。并非存储且删除原始信号,而是从不存储原始信号。原始信号一般变得不相关,因为基于原始信号的输出才是重要的,尽管所述输出可能含有一些或全部原始信号。可以在其它地方(例如,在原始信号的源处)获得原始信号,但可能不能从NIO平台100恢复所述原始信号。应理解,NIO平台100可以被配置成在接收时或在处理期间存储原始信号,但这与NIO平台的执行实时和准实时处理的能力分开。举例来说,虽然NIO平台100在实时和准实时处理期间不需要长期(例如,长于任何必要的缓冲)存储器存储,但如果特定应用程序需要对存储器(例如,硬盘驱动器、可移除存储器,和/或远程存储器)进行存储以及从存储器进行检索,那么会对其进行支持。NIO平台100的内部操作使用NIO数据对象(在本文中被称作niogram)。传入信号102在NIO平台100的边缘处被转换为niogram,并且用于平台内通信和处理中。这允许NIO平台100处置任何类型的输入信号,而不需要改变平台的核心功能。在其中部署多个NIO平台的实施例中,niogram可用于平台间通信中。niogram的使用允许NIO平台100的核心功能以标准化方式操作,而不管niogram中含有的特定类型的信息如何。从一般系统的角度来看,不管输入数据类型如何,都以相同方式执行相同的核心操作。这意味着可以针对niogram来优化NIO平台100,所述niogram自身可以针对特定应用程序的特定类型的输入进行优化。niogram的基本结构被设计成允许niogram内的信息在移动穿过NIO平台100时发生改变。举例来说,可以将不同类型的信息添加到niogram或者从niogram移除(例如,可以将含有来自射频识别符(RFID)标签的RFID值的niogram修改成包含从其读取标签的对应产品的有效期)。此外,可以将多个niogram合并为单个niogram,并且可以将单个niogram分割为多个niogram。NIO平台100还可以根据需要创建并摧毁niogram。创建niogram、摧毁niogram以及改变niogram的内部信息的能力使得NIO平台100能够以许多不同方式根据语境来充实信息,而不改变niogram的基本结构,并且此充实可以实时地或准实时地发生。NIO平台100被设计成使用处理功能106和支持功能108以可定制且可配置的方式处理niogram。处理功能106一般可由用户定制和配置。可定制意味着用户可以修改提供处理功能106的源代码的至少一部分。换句话说,可以在代码层级处对确定将如何处理已经被转换为一个或多个niogram的输入信号的任务特定的软件指令直接进行存取并且进行修改。可配置意味着可以通过例如选择或取消选择功能和/或限定配置参数的值等动作来修改处理功能106。这些修改不要求对基础源代码进行直接存取或改变,并且可以使用配置文件、通过接口发出的命令和/或以其它所限定的方式,在不同时间(例如,在运行期间之前或在运行时)执行。支持功能108一般仅可由用户配置,其中修改被限于例如选择或取消选择功能和/或限定配置参数的值等动作。在其它实施例中,支持功能108也可以是可定制的。应理解,在一些实施例中,修改处理功能106和/或支持功能108的能力可能受到限制或者不存在。支持功能108通过在运行时处置NIO平台100的一般配置且提供用于开始和停止处理功能的管理功能,来支持处理功能106。可以将所得的niogram转换为任何信号类型以用于输出104。参考图1B,NIO平台实例101的一个实施例示出在接收到输入信号102时开始且继续到产生输出104的数据路径。当启动图1A的NIO平台100时创建NIO平台实例101。可在本文中将NIO平台在启动之前称作“NIO平台”,且在启动之后称作“NIO平台实例”,但可互换地使用所述术语用于启动之后的NIO平台。如上文所描述,NIO平台实例101沿着数据路径在内部使用niogram。在本例子中,可以在块110中过滤输入信号102以便移除噪声,所述噪声可包含不相关的数据、信号中的不需要的特性(例如,环境噪声或干扰),和/或输入信号的任何其它不想要的部分。可以在NIO平台实例101的边缘(如箭头112指示)处丢弃被过滤的噪声,并且不会将所述噪声引入到NIO平台实例101的更复杂的处理功能中。还可以使用所述过滤来丢弃信号的信息中的一些,同时保持来自所述信号的其它信息。所述过滤会节约处理时间,因为NIO平台实例101的核心功能可以集中于具有已知结构的相关数据,以用于后过滤处理。在其中处理整个输入信号的实施例中,可能不会发生此过滤。作为在边缘处发生的过滤的补充或替代,过滤可以在将信号转换为niogram之后发生在NIO平台实例101内部。将未丢弃的信号和/或剩余的信号信息转换为niogram,以供在块114中的内部使用,并且在块116中处理niogram。可以在块118中将niogram转换为用于输出104的一个或多个其它格式,包含动作(例如,致动信号)。在其中输出niogram的实施例中,将不会发生块118的转换步骤。参考图1C,示出堆栈120的一个实施例。在本实例中,NIO平台100与操作系统(OS)122交互,所述操作系统继而与装置124交互。所述交互可为直接的,或者可以通过一个或多个其它层,例如解译器或虚拟机。装置124可以是虚拟装置或物理装置,并且可以是独立的或者被耦合到网络。参考图1D,示出堆栈126的另一实施例。在本实例中,NIO平台100与软件的较高层128a和/或软件的较低层128b交互。换句话说,NIO平台100可以提供堆栈126的功能的一部分,同时软件层128a和/或128b提供堆栈的功能的其它部分。虽然未示出,但应理解,图1C的OS122和装置124可以在存在软件128b的情况下被定位在软件层128b的下方,或者在不存在软件层128b的情况下被直接定位在NIO平台100的下方(如图1C中)。参考图1E,在一个实施例中,使用图1A的NIO平台100来示出环境130。如所示,NIO平台100支持实例到实例或实例到装置和系统,这使得NIO平台100能够根据单个应用程序逻辑/背景要求而广泛地或特定地预订自或发布到一个或多个其它平台。NIO平台100提供所需功能,以接收、处理和/或作用于从一个或多个外部源132(如通过箭头102表示)和/或从NIO平台100自身(如通过箭头134表示)接收的任何输入信号。一旦如NIO平台100的配置所限定来处置输入信号,便可将输入信号和/或可能通过处理而产生的其它信号输出到一个或多个外部目的地132(如通过箭头104表示)和/或输出到NIO平台100自身(如通过箭头134表示)。在本实施例中,除了排队(在需要时)以外,不存储输入信号,且不需要使用数据库或其它永久存储机制来用于由NIO平台100处置的信息。可以多种方式处置排队,包含使用存储器/随机存取存储器(RAM)和/或其它机制,例如持久层(例如,SQLite持久层)。因为所接收的输入信号被实时地或准实时地处置并且NIO平台100不受数据库存取限制约束,所以可以比依赖于数据库存取或者需要在处理之前存储数据的系统中可以实现的速率高得多的速率发生吞吐。在一些实施例中,NIO平台100根据需要分配功能和解除分配功能,进而使平台的占用区域最小化。NIO平台100经由可以被配置成解决特定需要的通用架构来提供其功能。虽然所述架构可能被实施为专用集成电路(ASIC)或另一专用实施例,但架构自身是可配置的,并且因此是高度灵活的。此外,所述架构能够在一个平台实例中处理信号,并且随后将经处理的信号传递回到自身,以供在同一或另一平台实例中进行进一步处理。这种在内部与自身联系的能力使得所述架构能够利用多个同时执行的相关平台实例。在每个平台实例完全可配置的情况下,所述架构能够快速地处理大量信息,同时还提供高度可定制输出。可以相对OS独立的方式来实施NIO平台100。举例来说,可以使用例如Python等语言来实施NIO平台100。为了提供额外的OS中立,设计决策可包含避免使用OS特定的(OSspecific)库调用,和/或可避免包含OS特定的模块。NIO平台100可通过被配置成支持平台实例、高级动态语境人工智能和/或系统监视的服务来提供自知功能能力。关于实例,预先配置的服务可基于与信号类型和源、自知功能的层级以及动作相关的特定索引。所述服务可用于装置和/或系统诊断以及质量控制。关于高级动态语境人工智能,驻留在NIO平台100内的进程内的定制开发的复合语境对于使用情况、业务流程、装置或信号产生器的系统,或单个装置规格可以是特定的(specific)。关于系统监视,NIO平台100可用于监视自身(即,NIO平台100)的状态或条件以作为自知系统。为了实现此监视,可以产生对应于NIO平台100的当前状态的niogram。这些niogram中含有的细节的范围可以是从NIO平台100的中央处理单元(CPU)使用的量到从NIO平台100的一个方面产生的错误。这些niogram随后可以由服务处理并且与内部动作进行组合,从而创建自知且有前瞻性的系统监视解决方案。另外,可以设置NIO平台100的单独实例来应用此系统监视逻辑,并且可以在那里发送来自内部监视服务的niogram。可以在装置124上存储并执行NIO平台100。NIO平台100可以是驻留在装置124上的应用程序且/或可以嵌入于装置124中。装置124的实例包含单板机计算(SBC)和板载计算(OBC)平台、蜂窝电话(包含智能电话)、个人数字助理(PDA)、上网本、平板计算机、膝上型计算机、桌上型计算机、工作站、服务器、设备(例如,制造设备、监视设备和安全设备)、家用电器(例如,冰箱、炉灶、烤箱、咖啡机、立体声音响和电视机),车辆和其它移动系统(例如,空气、陆地、海洋和/或空间飞行器,无论是有人驾驶还是自主的),和能够执行指令并且支持NIO平台100的架构中的一些或全部的任何其它装置。去往和来自NIO平台100的通信可以是直接的(例如,经由对等网络、特设网络,或使用直接连接)、间接的(例如,通过服务器或其它代理(例如,在客户端-服务器模型或无线网络中)),或者可以使用直接和间接通信的组合。参考图1F,示出环境140的一个实施例,其中分布由NIO平台100提供的功能,如分别通过装置124a和124b上的NIO平台100a和100b表示。虽然仅示出两个NIO平台100a和100b,但应理解,可以跨许多装置来分布所述功能。所分布的NIO平台100a和100b可以彼此通信(如通过箭头142和144表示)。每个所分布的NIO平台100a和100b可以与外部源/目的地132通信,只有NIO平台100a和100b中特定的一个可以被配置成用于与外部源/目的地132通信,或者一个NIO平台100a或100b可以被配置成从外部源132接收通信,而NIO平台中的另一个可以被配置成将通信发送到外部目的地132。在图1F的另一实施例中,每个NIO平台100a和100b可以是具有全部功能的完整平台,并且可被配置成彼此通信和/或与外部源/目的地132通信,以便完成指定任务。在这些实施例中,一个NIO平台100a或100b可为离线的,除非需要(例如,如果另一平台失效或者变得过载)。在其它实施例中,虽然每个NIO平台100a和100b提供全部功能,但可能使用不了一个或两个平台上的某些功能。这使得能够在多个装置上使用同一NIO平台,同时仍将特定功能分配给一个或多个特定装置。参考图1G,示出环境150的一个实施例,其中通过提供来自一个或多个远程位置的服务的一个或多个存储和/或处理系统152来提供(例如,由云计算提供)由NIO平台100提供的一些或全部功能。应理解,存储和/或处理系统152可具有分布式控制,其中功能是由不同实体提供并,且在NIO平台100内进行组合。参考图1H,示出环境160的一个实施例,其中仅在装置124内使用由NIO平台100提供的一些或全部功能。在本实施例中,装置124不与外部源/目的地132通信,除非需要用于例如安装、维护和/或配置等目的。参考图1I,示出环境165的一个实施例,其中多个NIO平台100a和100b在单个装置124上运行。虽然仅示出两个NIO平台100a和100b,但应理解,可以在单个装置上部署NIO平台100的许多实例。NIO平台100a和100b可以彼此通信(如通过箭头142和144表示)。每个所分布的NIO平台100a和100b可以与外部源/目的地132通信,只有NIO平台100a和100b中特定的一个可以被配置成用于与外部源/目的地132通信,或者一个NIO平台100a或100b可以被配置成从外部源132接收通信,而NIO平台中的另一个可以被配置成将通信发送到外部目的地132。应理解,图1E到1I的环境可以通过各种方式进行组合。举例来说,NIO平台100的功能可以分布在图1F的装置124a与图1G的云152之间。参考图1J,示出系统170的一个实施例。系统170是图1D到1F、1H和1I的装置124和/或图1E到1G和1I的外部源/目的地132的一部分或全部的一个可能的实例。系统170可包含控制器(例如,处理器/中央处理单元(“CPU”))172、存储器单元174、输入/输出(“I/O”)装置176,和网络接口178。通过数据输送系统(例如,总线)180使部件172、174、176和178互连。电源(PS)182可以经由电力输送系统184(使用数据输送系统180示出,但电力和数据输送系统可为分开的)将电力提供给系统170的部件。应理解,系统170可被不同地配置,且所列举的部件中的每一个都可以实际上表示若干不同部件。举例来说,CPU172可以实际上表示多处理器或分布式处理系统;存储器单元174可包含不同层级的高速缓冲存储器、主存储器、硬盘和远程存储位置;I/O装置176可包含监视器、键盘和类似者;且网络接口178可包含提供到网络186的一个或多个有线和/或无线连接的一个或多个网卡。因此,在系统170的配置中预期宽范围的灵活性,其范围可从主要配置用于单个用户或自主操作的单个物理平台到例如云计算系统等分布式多用户平台。系统170可以使用任何操作系统(或多个操作系统),包含由微软(例如,WINDOWS)、苹果(例如,MacOSX)、UNIX和LINUX提供的操作系统的各种版本,并且可以包含根据系统170的用途、专门为手持式装置(例如,iOS、Android、Blackberry和/或WindowsPhone)、个人计算机、服务器和其它计算平台开发的操作系统。操作系统以及其它指令(例如,用于电信和/或由装置124提供的其它功能)可以存储在存储器单元174中,并且由处理器172执行。举例来说,如果系统170是装置124,那么存储器单元174可以包含用于提供NIO平台100以及用于执行本文中所描述的方法中的一些或全部方法的指令。网络186可为单个网络,或者可以表示多个网络,包含不同类型的网络,无论是无线还是有线。举例来说,装置124可以经由包含耦合到数据包网络的蜂窝链路的网络而耦合到外部装置,或者可以经由数据包链路进行耦合,例如耦合到数据包网络或公共交换电话网络(PSTN)的广本地区域网络(WLAN)。因此,可以使用许多不同网络类型和配置来使装置124与外部装置耦合。参考图1K,示出系统180的一个实施例。系统180是图1D到1F、1H和1I的装置124和/或图1E到1G和1I的外部源/目的地132的一部分或全部的另一可能的实例。系统180可以类似于图1J的系统170,但可能仅含有CPU172和存储器174。例如电源182和I/O176等其它部件可在外部。在本实例中,系统180可能不具有网络能力。在其它实施例中,系统180可以使用例如网络接口178等网络接口来接入例如网络186等网络。参考图1L,示出系统190的一个实施例。系统190是图1D到1F、1H和1I的装置124和/或图1E到1G和1I的外部源/目的地132的一部分或全部的另一可能的实例。系统190可以类似于图1J的系统170,但可能仅含有CPU172。存储器174和例如电源182和I/O176等其它部件可在外部。举例来说,系统190可能依赖于外部驱动。在本实例中,系统190可能不具有网络能力。在其它实施例中,系统190可以使用例如网络接口178等网络接口经由例如网络186等网络来访问存储器174。参考图2A,NIO平台200示出图1A的NIO平台100的更详细实施例。在本实例中,NIO平台200包含两个主要部件:用于将提供可配置的处理功能106的一个或多个服务的服务类别202,和用于将提供对于所述服务的支持功能108的核心的核心类别206。每个服务对应于用于一个或多个块的块类别204,所述一个或多个块含有用于处理niogram的所限定的任务特定的功能。核心包含:服务管理器208,其将管理服务(例如,起动和停止服务);以及平台配置信息210,其限定将如何配置NIO平台200,例如当启动实例时什么服务可用。当启动NIO平台200时,核心和对应的服务形成NIO平台200的单个实例。应理解,NIO平台200的多个并发实例可以在单个装置(例如,图1D的装置124)上运行。每个NIO平台实例具有其自己的核心和服务。最基本的NIO平台实例是没有服务的核心。将存在由核心提供的功能,但将不存在所述功能可以对其操作的服务。因为通过块中存在的可执行代码来限定NIO平台实例的处理功能,且将所述服务配置为一个或多个块的集合,所以含有单个块的单个服务是发生对niogram的任何处理所需的最低配置。应理解,图2A示出各种类别与其它部件之间的关系。举例来说,块类别实际上不是服务类别的部分,但块与服务相关。此外,虽然出于此实例的目的,将服务管理器视为核心的部分(且因此使用核心类别来创建),但核心配置信息不是核心类别的部分,而是用于配置核心和NIO平台200的其它部分。另外参考图2B和2C,分别将两个NIO平台实例222和224的实施例示出为在启动NIO平台(例如,图2A的NIO平台200)时创建的层级体系。NIO平台实例222是NIO平台#1的实例,且NIO平台实例224是NIO平台#2的实例。NIO平台#1和#2可为不同的平台,或者可为同一平台的不同配置。可以在单个装置上或者在单独的装置上同时启动和执行多个NIO平台实例,且可以单独地关闭每个实例。NIO平台实例可以基于同一NIO平台,在此情况下,所述实例将在启动时具有等同的功能。可替代地,NIO平台实例可以基于不同的NIO平台配置,在此情况下,实例将在启动时具有不同的功能,其中特定实例的功能是基于基础NIO平台的特定配置。每个NIO平台实例222和224含有核心228和一个或多个服务230,且每个服务230含有一个或多个块232。每个NIO平台实例222和224可以运行不同数目的服务230,且那些服务230可使用不同数目的块232。在单个NIO平台实例222或224内运行的服务230可在功能上等同、在功能上不同、相关(例如,一个服务可执行一连串任务中的一个任务,且随后另一服务可执行下一任务)和/或不相关。此层级结构使得能够在不同层级处访问NIO平台200的可配置性,所述不同层级中的每一个提供配置进程中的不同粒度水平。可以通过添加、移除和/或修改形成实例的服务230来配置每个NIO平台实例222和224。可以通过添加、移除和/或修改形成服务230的块232、通过修改块232的布置来改变穿过块232的数据路径、通过设定对应于所述服务的各种配置参数,和/或通过使得服务230能够使用由核心228提供的功能,来配置服务230。在一些实施例中,还可以通过添加、移除和/或修改对应的服务类别202中含有的指令(例如,源代码)来定制服务230。可以通过添加、移除和/或修改对应的块类别204中含有的指令(例如,源代码)来定制块232。还可以通过设定对应于块的各种配置参数来配置块232。应理解,一旦使用平台配置信息210来配置,便可将NIO平台200减小到最小占用区域。在一些实施例中,这可涉及移除或以其它方式限制可配置和/或可定制的功能,其中仅保留关于处理功能106的所限定的服务类别202和/或块类别204。类似地,还可以从支持功能108移除未使用的模块和/或核心部件(稍后论述)。即使使得NIO平台200不再可由用户定制或配置,应理解,在一些实施例中,仍可对现有的服务类别202和/或块类别204进行更新和其它改变。移除和/或以其它方式限制可配置性和/或可定制性可用于确保一旦按需要进行限定,便不改变现有的功能。应理解,支持功能108将仍保留在NIO平台100中来管理运行实例中的服务230和/或块232。因此,可以将NIO平台200精简为更常规的应用程序式样格式,以用于为了目标目的进行分布、安装和/或使用,但服务230和/或块232将仍经由由NIO平台200提供的核心环境来运行。另外参考图3,使用多个块232a、232b、…和232M(基于块类别204)来示出服务230的一个实施例(基于如在图2B的实例222或图2C的224之一中启动的图2A的服务类别202中的一个),其中M为服务230所含有的块的总数。可将服务230视为框架,所述框架负责将所含有的块群组(例如,块232a到232M)装配为工作流,从而限定服务230内的niogram将遵循的逻辑路径。虽然块232a到232M可能实际上未链接在服务230内,但服务230可以管理调用块232进行处理的次序,且如此将服务230内的niogram引导到适当的下一块。起动服务230会使得NIO平台200的实例能够使用所述块的功能来处理niogram。因此,M的值大于或等于一,因为不具有块232的服务230将不提供功能。应理解,服务230可以包含不一直使用的块,例如仅在出现特定条件分支的情况下执行的块。虽然可以创建全部定制服务类别202和块类别204,并且与用于定制服务230和块232的NIO平台200一起使用,但可以整体地或部分地预先限定一些或全部服务230和/或块232的功能。举例来说,可以在对应的服务类别202中限定针对于接收和转发特定类型的消息的服务230,源和目的地的配置参数除外。起动服务230将自动地起动将与所述服务一起使用的块232,并且向NIO平台200的实例提供所述服务的接收和转发功能。可以经由平台配置信息210或以另一种方式(例如,通过使用通过接口发出给服务230和/或块232的命令)添加源和目的地。在更复杂的实例中,可以通过借助提供块类别204的原始代码或者通过选择预先限定的块类别204来限定服务230内的块232的一个或多个块类别204的行为,可修改很大程度上预先限定的服务230。举例来说,服务230可以处理所接收的消息,并且根据所述消息的内容将所述消息转发到各种不同目的地中之一。此条件功能可以通过以下方式来实现:写入用于包含在用于将在服务230中使用的新块的新块类别204中的指令;写入用于包含在用于已经是服务230的部分的块232的块类别204中之一的指令;和/或配置已经启用此条件功能的现有块类别204。可以在多个平台实例中使用单个所限定的服务230,且可以在多个服务中使用单个所限定的块232。应理解,通过定制和/或重新配置服务类别202/服务230来修改服务230,可要求重新起动当前使用那个服务230的任何平台实例,以便让所述修改生效,因为平台实例可能原本会继续运行在启动时实例化的服务230的先前版本。类似地,通过定制和/或重新配置块类别204/服务232来修改块232,可要求重新起动当前使用那个块232的任何服务230,以便让所述修改生效,因为服务230可能原本会继续运行在启动时实例化的块232的先前版本。另外参考图4A和4B,将图2A的NIO平台200的另一实施例示出为启动之前的NIO平台400(图4A)和启动之后的NIO平台实例402(图4B)。图4A示出NIO平台400,其具有用于创建和配置NIO平台实例402的核心228、服务230a到230N和块232a到232M的核心类别206、服务类别202、块类别204和配置信息210。应理解,虽然在图4B中未示出,但核心类别206、服务类别202、块类别204和配置信息210一般继续作为NIO平台实例402的部分而存在。具体参考图4B,可将NIO平台实例402视为运行时环境,核心228在其内创建和运行服务230a、230b、...和230N。每个服务230a到230N可以具有不同数目的块。举例来说,服务230a包含块232a、232b和232c。服务230b包含单个块232d。服务230N包含块232e、232f、...和232M。服务230a到230N中的一个或多个可由核心228停止或起动。当停止时,由那个服务提供的功能将不可用,直到所述服务由核心228起动为止。可在核心228与服务230a到230N之间以及服务230a到230N自身之间发生通信。在本实例中,核心228和服务230a到230N的每个服务从操作系统/硬件角度来看是单独的进程。因此,图4B的NIO平台实例402将运行N+1个进程,且操作系统可以与任何其它进程一样跨多核心装置分布所述进程。应理解,特定服务的配置可部分取决于考虑到将创建的进程的数目的设计决策。举例来说,从进程观点来看,在一些实施例中可能需要具有众多但更小的服务,而在其它实施例中可能需要具有更少但更大的服务。NIO平台400的可配置性使得能够通过修改230a到230N的每个服务的功能来相对容易地实施这些决策。在其它实施例中,可将NIO平台实例402结构化以将核心228和/或服务230a到230N运行为线程而非进程。举例来说,核心228可为进程,且可将服务230a到230N运行为核心进程的线程。参考图4C,图410的一个实施例示出相对于表示时间的轴412而绘制的图4B的核心进程228和服务230a、230b和230N。更具体来说,图410示出核心进程228和服务230a、230b和230N相对于彼此的停止和起动时间的实例,其中多个服务在一些时间同时运行,且其中没有服务在其它时间运行。在时间t0处,NIO平台实例402不运行。在时间t1处,使用如由线414指示的核心进程228来起动NIO平台实例402。核心进程228一般在NIO平台实例402运行的全部时间保持运行,因为NIO平台实例402的存在需要核心进程228。应理解,如果核心进程228崩溃,那么服务230a、230b和230N可以继续运行,只要它们是与核心进程228分开的进程。然而,核心进程228不再可用于与服务进程通信或以其它方式控制它们,并且因此当核心进程结束时,NIO平台实例402不再存在,即使服务进程继续运行也如此。如果服务230a、230b和230N是核心进程228的线程,那么服务230a、230b和230N将通常在核心进程228崩溃的情况下结束。在时间t2处,起动服务230a,如由线416指示。在时间t3处,停止服务230a,但核心进程228继续运行,即使没有服务在此时运行也如此。在时间t4处,起动服务230N,如由线422指示。在时间t5处,重新起动服务230a,如由线418指示。在时间t6处,起动服务230b,如由线420指示。在时间t7处,停止服务230b。在时间t8处,停止服务230a和230N。在时间t9处,停止核心进程228,这会关闭NIO平台实例402。如果在停止核心进程228时服务仍在运行,那么核心进程228可以在停止之前关闭运行的服务。参考图5A到5C,示出图3的服务230的实施例。在图2A的处理功能106中限定的任何服务230可以通过添加、移除和/或修改形成那个服务的块232中的一个或多个来更改。服务230内的每个块232含有指令。特定块232内的指令可为简单的或复杂的。因此,取决于所使用的块232以及每个块232内含有的指令,可以许多不同方式来实施被配置成提供特定功能的特定服务230。在此方面,可将服务230视为可执行程序,其可以许多不同方式来编写,并且随后由NIO平台实例402执行。具体参考图5A,服务230的一个实施例是由单个块232形成。这是具有功能的服务230的最低要求。具体参考图5B,服务230的另一实施例是由链接在一起以形成块“链”的两个块232a和232b形成。在此实施例中,块232a馈送到块232b中。应理解,块232a和232b可能实际上未链接在服务230内,而是服务230通过引导作为块232a的输出的niogram变为对块232b的输入而从操作的角度“链接”所述块。具体参考图5C,使用更复杂的块结构来示出服务230的又另一实施例。虽然服务230是由块232a到232e的“链”构成,但应理解,可能不以线性方式执行块232a到232e。换句话说,块232a到232e可包含改变服务230内的执行次序的指令。举例来说,块可含有条件性的指令,其中取决于如何满足条件来选择和执行下一个块。此外,应理解,块232a到232e实际上不需要以执行的次序布置,且使用平台配置信息210来限定服务230,且在一些实施例中,限定块232a到232e之间的各种相依性。块232a到232e以及那些块的布置可经过优化,以用于与特定服务230一起使用。举例来说,可针对对应于服务的处理需要的特定执行模式来优化块232a到232e。图5C的块232a到232e用于示出可能出现在服务230内的各种可能的组合,但应理解,可以使用未示出的其它组合。在本实施例中,块232a能够调用或以其它方式返回到自身(如由箭头502指示)。块232a馈送到块232b中(如由箭头504指示)和/或块232c中(如由箭头506指示)。举例来说,块232a可以将niogram分裂为两个niogram。可以将一个niogram传递到块232b,且可以将另一niogram传递到块232c。在另一实例中,块232a可以含有用于条件分支的指令,且对niogram的评估可确定是否将niogram发送到块232b或块232c。可替代地,块232a可以将niogram发送到块232b和块232c两者。块232b和232c中的一个或两者随后可以在接收到niogram之后对其进行过滤,或者可以将另一块(未示出)添加在块232b或232c中的一个或两者之前,从而在niogram到达所述块之前对其进行过滤。块232b和232c中的一个或两者可以馈送到块232d中(如分别由箭头508和510指示),这示出多个块如何可以馈送到单个块中。举例来说,可以将来自块232b和232c中的每一个的niogram传递到块232d,在那里对niogram进行组合,或者以其它方式处理。在另一实例中,可以从块232b和232c中的仅一个接收niogram,这取决于若干因素,例如那些块内的处理以及在块232a中执行的条件语句是否将niogram传递到块232b和232c中的仅一个。块232d馈送到块232e中(如由箭头512指示)。应理解,可在整个链中不具有链接的情况下调用块。举例来说,块232a可使用块232b来获得值(例如,执行计算且返回值),并且随后在返回所述值之后使用块232c继续执行。在此情况下,将不存在箭头508。块232b返回值的方式取决于所述块的特定实施方案。如将在下文描述,可将所述块实施成使得通过服务将块的输出发送(route)到另一块、可实施成支持块之间的直接调用,或者可以使用用于存取块的一个或多个命令来实施。不管实施方案如何,从此角度来看,可将块232a到232e视为可以基于由特定块提供的所需的功能而在程序内调用的程序的模块化部件。应理解,虽然可使用块232的复杂布置来创建服务230,但在一些实施例中,可能需要将块布置在单个链中来创建经优化的执行路径。此外,在一些实施例中,可将图5C的服务230创建为单个块。虽然对服务230的输入常常首先馈送到链中的初始块(例如,块232a),但可通过服务230内的任何块,基于如何配置服务230和/或块232a到232e,来处置输入。举例来说,输入可进入块232b,且被传递到块232a和/或232d。块232b可继而保持作为块232a的输出路径的部分。这允许特定服务230内的大量灵活性。应理解,当本公开涉及服务230接收输入时,所述输入实际上是由服务230内的块232接收。类似地,输出是由服务230内的块232产生。然而,因为服务230包含在服务230内使用的块232,所以一般可将服务230描述为接收输入且产生输出。因此,可以许多不同方式配置单个服务230。虽然优化可能指示用于特定用途的特定所需的服务配置,但可基于若干因素来精细调整服务230,所述因素例如为服务的所需的功能,和NIO平台200将在其上运行的装置124的特性(例如,例如缓存大小和处理量等存储器限制、处理器速度、处理器核心的数目,和/或输入数据流的数据速率)。此可配置性使得NIO平台200能够在需要时,通过改变服务230和块232(可能时)而非核心228的结构,而针对许多不同环境进行优化。参考图5D和5E,分别示出服务230a和230b的实施例。在当前实施例中,每个块232从使用所述块所借助的服务230解耦,并且从由服务230使用的其它块232解耦。每个块232是自含式实体,其异步地接收输入,以由所述块的内部代码限定的方式处理那个输入,且产生输出。所述块的异步性是可能的,因为块232不知道其为服务230的部分,或者其与作为功能链的部分的其它块相关联。块232简单地在数据到达时处置数据且产生输出。块的功能从服务230中的其它块232的解耦,使得能够再次使用每个块232,而不必更改块232自身内的代码。举例来说,如果块232被配置成在完成其自己的处理之后调用特定目的地块,而且如果块232移动到同一服务230内的功能路径的不同位置,那么将有可能必须针对其中使用块232的每个服务230来修改此调用。可替代地,因为块232被解耦并且服务230被配置成管理块的输出,所以块232可以针对不同的服务或者在同一服务内移动期间保持不变,即使可能不同地发送其输出也如此。通过使服务230负责块232之间的数据流路径,简化了实际的块结构,并且除了其自己的处理并且在最后向服务230通知输出可用以外不需要注意任何事情。以此方式将块的功能从服务230和其它块232解耦还使得能够为具有不同功能的另一块换出所述块,这使得服务修改更容易。在图5D和5E中示出此解耦,其分别表示服务230a和230b的实施例。每个服务230a和230b具有相同数目的块232。然而,块的次序是不同的,并且最终的输出是不同的。举例来说,图5D的服务230a具有以下功能链:块232a(输入)、块232b(过滤)、块232c(转换为niogram)、块232d(比较niogram)、块232e(组合niogram),和块232f(输出为致动)。对比而言,图5E的服务230b具有以下功能链:块232a(输入)、块232b(过滤)、块232c(转换为niogram)、块232e(组合niogram)、块232d(比较niogram),和块232g(输出为电子邮件)。在下表1(针对服务230a)和表2(针对服务230b)中以源和目的地信息的形式示出这些功能链。举例来说,每个服务230a和230b可管理列表,表,或具有此类信息的其它数据存储结构。应理解,数据存储结构中的块的实际次序可变化,只要服务230a和230b可以使用来自特定源块的输出告知将服务于哪个(些)目的地块。源块目的地块块232a块232b块232b块232c块232c块232d块232d块232e块232e块232f表1源块目的地块块232a块232b块232b块232c块232c块232e块232e块232d块232d块232g表2如可看到,已经在服务230b中更改了服务230a中的块232d和232e的执行次序。因为块被解耦,所以可以简单地通过修改服务230b中的块(例如,源/目的地对)的次序来完成更改,并且不需要对块自身或者对块232d和232e前面或后面的块进行改变。两个服务230a和230b之间的另一差异在于,图5E的输出块发送电子邮件,而非图5D的致动。一种执行功能中的此改变的方式是为图5E的块232g换出图5D的块232f。当块232f和232g仅含有为了它们的目的所需的特定功能时,可以这样做。另一种执行功能中的此改变的方式将是修改块232f以向其给予块232g的所需的功能,或者创建具有所需的功能的新块。又另一种方式将是设定块232f的配置参数来选择所需的功能,假设块232f已经含有用于产生致动和电子邮件两者来作为输出的功能。不管针对块232f和232g实施功能的方式如何,块的解耦方面意味着前面的块232e(图5D)或232d(图5E)不知道改变且不受到影响。另外参考图5F和5G,示出服务230(图5F)和多个块线程(图5G)的实施例。在本实例中,服务230包含五个块232a到232e,其还可分别被称作块1到5。由于块232a到232e的异步性质,所以服务230中的块232a到232e中的一些或全部可以同时处理niogram。换句话说,不同的niogram可以由单个服务230的不同块232a到232e同时处理。此外,由于线程处理,所以单个块232a到232e可以同时处理多个niogram。同时处理多个niogram的能力可以增加服务230的处理量。通过在多个并发线程中执行块的功能来复制块232a到232e中的一个或多个块的能力使得服务230能够按需要动态地缩放其处理容量。举例来说,这允许服务230增加其处理容量来处置输入浪涌,并且随后一旦浪涌平息便减小其处理容量。块232a到232e的每个块花费一段时间(例如,一秒或一秒的分数)来处理单个信号或niogram,但应理解,特定块的实际速率可取决于若干因素而变化,所述因素例如为块的复杂性、niogram的内容、服务230在其上运行的装置的处理器速度、处理器核心的数目,和/或缓存的大小。出于实例的目的,块232a能够在0.5秒内处理信号并且产生niogram的输出,块232b能够在1.5秒内处理niogram,块232c能够在1.0秒内处理niogram,块232d能够在0.5秒内处理niogram,且块232e能够在1.0秒内处理niogram。如果每个块仅可存在一个线程,假设对服务230的输入速率高于最慢的块的处理速率,那么花费最长时间来处理信号或niogram的块将确定服务230的处理量。在此情况下,块232b将是瓶颈,并且在块232a到232e的每个块仅存在一个线程的情况下,将把服务的处理量限制为每1.5秒一个niogram。如果块232b不是瓶颈,那么块232c和232e将是瓶颈。块232a和232d将不是瓶颈,因为它们比其它块处理得更快。在每个块232a到232e仅一个线程的情况下,服务230将每1.5秒处理五个niogram(例如,每个块232a到232e中一个niogram),且具有每1.5秒一个niogram的输出,但这将不是高效的,因为五个块中的四个块将花时间等待块232b。一种解决此问题的方式将是把块232a到232e构建成使得服务230中的所有块以大致相同的速率处理niogram。然而,这是处置问题的相对低效的方式,因为任何改变都可能会影响一个或多个块的处理速率,并且将必须以此方式平衡每个新服务。这种方法将会使NIO平台200内的服务的设计和实施复杂化。因此,如图5G中所示,NIO平台200被设计成使得服务230可以利用单个块的并发线程,这允许服务230按需要动态地缩放其处理容量。继续先前实例,块1以每niogram0.5秒的速度执行,因此其每秒处理两个信号,并且每秒输出两个niogram。假设块1以每0.5秒一个niogram的稳定速率输出其niogram。在本实例中使用这个以及其它简化(例如,以秒测得的块执行速度)来用于示出的目的,并且应理解,输入可不规则、处理可以发生得快得多,并且实际执行服务内的线程处理可能复杂得多。块2运行了三个线程1、2和3。应注意,块2的每个线程仅处理一个niogram,并且将需要总共三个并发线程来在块2所需的1.5秒处理时间期间处理由块1输出的三个niogram。块3运行了两个线程1和2。块4仅运行了线程1。块5运行了两个线程1和2。如果输入减少,那么线程的数目可减小。如果输入速率下降到每1.5秒一个信号或更少,那么将存在每个块的仅单个线程。如果输入速率增加,那么线程的数目可增加,并且块1和5也可以具有额外的线程。因此,NIO平台200能够动态地缩放其处理容量来处置例如变化的输入速率等情境。在其中竞争条件或类似线程冲突问题可能呈现同时执行的线程之间的问题的情况下,可使用资源锁定和解锁。举例来说,如果块5线程1和2将写入到文件以作为输出,那么可能不希望允许它们两者同时写入到文件。因此,一个线程可获取锁、写入到文件,且随后释放锁。另一线程无法写入到文件,直到锁被释放。在其它情况下,竞争条件或其它线程冲突问题可能不是关注点。应注意,虽然在本实施例中将服务内交互解耦,但某些块232可能知道服务230外部的源和/或目的地。举例来说,块232a可被配置成轮询数据源或以其它方式从数据源抽取数据,并且将需要知道所述源(例如,所述源的网络地址)以便完成其目的。同样,块232e和232f可被配置成知道目的地。应理解,一些实施例可以使用以块负责调用下一块的方式实施的块232。换句话说,可耦合块232,其中块知道其应将其输出传递到的下一块。举例来说,块232可含有识别将把输出发送到的另一块的指令。块232随后可以在输出可用时执行那些指令,并且直接调用下一块,而不需要服务230处置输出。在这些实施例中,块232仍可以异步的方式执行。虽然此实施方案在本申请的范围内,但由于将由此实施方案导致的额外的复杂性和可重用性的缺乏,其不在此实施例中使用。参考图6A,方法600示出可以由图1B的NIO平台实例101或图4B的NIO平台实例402执行的进程的一个实施例。在步骤602中,启动平台实例。在步骤604中,可配置一个或多个服务和/或块。举例来说,可使用定制代码和/或配置参数来配置块232,并且可通过将各种块指派给服务230且限定那些块之间的数据流,和/或通过设定各种配置参数,来配置所述服务。在步骤606中,起动所配置的服务230和块232中的一个或多个。在步骤608中,如实例中的服务230和块232所限定来处理输入数据。在其它实施例中,可以在启动平台实例之前配置一个或多个服务和/或块。参考图6B,方法610示出图6A的步骤604的更详细实施例。在步骤612中,选择或限定一个或多个块232以用于服务230中。举例来说,可选择预先限定的块232以用于以它们的当前形式使用,或者可以经过选择和修改。还可以通过将指令插入到空白块中并且将所述块保存为新块而创建定制块232。在步骤614中,通过创建新服务并且使用识别待使用的块232和那些块232的布置(例如,数据流)的信息来配置所述服务而限定服务230。还可以设定用于服务230的配置参数。在其它实施例中,可以通过设定与服务230相关联的配置参数和/或通过添加、移除和/或修改块以及通过修改针对块232限定的数据流,而配置现有的服务230。在步骤616中,保存服务230。应理解,如果将无修改地使用现有的服务230,那么方法610将仅涉及选择服务230来使用,因为对应的块232将已经与服务230相关联。在一些实施例中,可以在选择或限定块232之前创建服务230,并且随后可以使用块和其它信息来更新服务。参考图7,方法700示出图6A的步骤602和606的更详细实施例。在步骤702中,启动平台实例,其包含启动核心进程。在步骤704中,核心进程使用可用的配置信息来发现平台实例的服务230。除了其它项目之外,所述配置信息还识别是否任何服务230被配置成自动起动(auto-start),如步骤706所表示。如果一个或多个服务230被配置成自动起动,那么方法700移动到步骤708。在步骤708中,在不需要额外的起动命令的情况下起动服务,并且方法700随后移动到步骤710。如果没有服务230被配置成自动起动,那么方法700从步骤706移动到步骤710。在步骤710中,作出关于是否已经接收到任何命令的确定。如果尚未接收到命令,那么可重复步骤710,直到接收到命令为止。如果已经接收到命令,那么方法700移动到步骤712。在步骤712中,作出关于是否已经接收到任何服务起动/停止命令的确定。换句话说,是否已经接收到起动服务230或者停止同时运行的服务230的命令。如果步骤712的确定指示已经接收到起动或停止命令,那么方法700继续进行到步骤714。在步骤714中,作出关于命令是起动命令还是停止命令的确定。如果步骤714的确定指示接收到停止命令,那么方法700继续进行到步骤716,其中停止在停止命令中识别的服务。如果步骤714的确定指示接收到起动命令,那么方法700继续进行到步骤718,其中起动在起动命令中识别的服务。在步骤716或步骤718的执行之后,方法700返回到步骤710。如果步骤712的确定指示尚未接收到起动或停止命令,那么方法700继续进行到步骤720。在步骤720中,作出关于是否已经接收到关闭平台实例的命令的确定。如果步骤720的确定指示接收到关闭命令,那么方法700继续进行到步骤722,其中关闭平台实例。这可能需要在关闭平台实例之前关闭任何运行的服务230。如果步骤720的确定指示未接收到关闭命令,那么方法700继续进行到步骤724。在步骤724中,执行命令(其不是服务停止/起动命令或关闭实例命令)。方法700随后返回到步骤710。方法700可以从步骤710重复多次,在请求时起动和停止服务和/或执行其它命令,直到关闭平台实例为止。应理解,图7中的一些步骤的次序可以变化,例如步骤712、720和724的次序。此外,未示出一些步骤,例如用于处置错误(例如,对无效命令的请求)的步骤。参考图8,方法800示出图6A的步骤608的更详细实施例。在步骤802中,如NIO平台实例的配置所限定的,接收一个或多个输入信号流。举例来说,NIO平台实例402可被配置成从一个或多个流源抽取和/或接收数据。这些信号流可含有任何类型的模拟和/或数字信号,并且可以含有数据。在步骤804中,如NIO平台实例的配置所限定的,实时地从信号流提取信号。此步骤可包含进行过滤,以从相关的信号信息分离噪声。在步骤806中,如NIO平台实例的配置所限定的,将所提取的信号转换为niogram,以进行内部处理。在步骤808中,执行内部处理,其可包含实时语境充实。所发生的特定处理和语境充实(在适用时)取决于NIO平台实例402的配置。在步骤810中,如平台实例的配置所限定的,由NIO平台实例402产生输出。所述输出可以niogram和/或任何类型的信号的形式呈现,包含任何格式类型的数据和/或致动信号。参考图9A和9B,NIO平台900示出从平台角度(图9A)和堆栈角度(图9B)来看的图1A的NIO平台100、图2A的NIO平台200或图4A的NIO平台400的更详细实施例。出于实例的目的,以编程语言Python编写NIO平台900,但应理解,可以使用任何合适的编程语言,包含(但不限于)例如C++等语言。将NIO平台900建置在核心906上。当启动时,核心进程创建核心服务器(在本文一般被称作核心),其形成NIO平台900的基础结构。从功能角度来看,服务部件902包含服务916和块918,即使在图9B的堆栈中分开地示出服务902和块918也如此。如先前所描述,服务部件902通过使得能够限定和改变块和服务功能而负责用户限定的功能。服务部件902中的大多功能可为用户特定的,这允许高度定制。在本实例中,将服务部件902提供为服务类别917,其限定如何创建和执行服务916。服务916的执行包含发送信号、执行命令,以及限定类别结构。可将形成服务部件902的服务类别917中的一些或全部进行扩展以限定新的功能。这以中立的方式提供大量灵活性,因为用户可以通过服务部件902限定所需的任何功能,并且将通过NIO平台900执行功能。一般来说,一个平台实例中的服务部件902不依赖于或者知道另一平台实例的服务部件,这允许在不必考虑配置将如何影响其它平台实例的情况下配置每个特定平台实例。此外,改变服务部件902中的功能对核心906没有影响。这确保不必修改核心906来与服务部件902兼容。在本实例中,从功能角度来看,服务部件902包含块918、块类别917、块实例(还被简称为“块”)、块群组、命令、服务916,和niogram。在NIO平台900中,块类别919可包含用于定制块934和具有预先限定的功能的块(例如,RFID块924、短消息服务(SMS)块926、传感器块928、可编程逻辑控制器(PLC)块930和全球定位卫星(GPS)块932)两者的类别。虽然未示出,但应理解,可限定许多其它块918来用于与使用以下各项的系统一起使用:电子产品码(EPC)(新泽西州劳伦斯维尔市的EPCglobalInc.的商标)、低层级读取器协议(LLRP)信息、电子邮件(例如,简单邮件传送协议(SMTP))、超文本传送协议(HTTP)文档,和/或任何其它协议。块919是指定块实例的元数据模板和计算功能的类别。在本实例中,块918是由扩展BaseBlock类别的块类别919建置,并且可以通过超驰由BaseBlock类别提供的以下五种基本方法中的任一个来指定定制行为:BaseBlock.initialize、BaseBlock.configure、BaseBlock.start、BaseBlock.stop和BaseBlock.processSignals。这些方法由对应于块918的服务916使用。调用BaseBlock.initialize方法,以使用对应的块类别919来将块918实例化。调用BaseBlock.configure方法,以使用所保存的块配置来在初始化之后配置块918。调用BaseBlock.start方法,以在实例化和配置之后起动块918。调用BaseBlock.stop方法,以停止块918(例如,当已经停止所含有的服务916时)。BaseBlock.processSignals含有由块918提供的主要处理功能。BaseBlock.processSignals方法处理(有可能清空)传入信号的列表,并且在(例如,经由下文论述的notifySignals方法)完成时,通知服务916。当从块类别919将块918实例化时创建块实例。可将块实例视为NIO平台900中的基本计算单元,并且可如实例化的块类别919所规定的,进行定制和配置。块实例仅存在于服务916内部。因此,当起动或停止服务916时,也起动或停止那个服务916内部的块918。在NIO平台900的本实例中,不存在块918在服务916外部运行的概念。用于配置块918的块配置可再用于不同的服务916中,并且可被视为块918的所保存的配置。当改变块918的配置时,将针对含有所述块的所有服务916中的所有块918来改变所述配置。然而,如果服务916正在运行,那么可能仅在重新起动服务916之后更新正在运行的块实例的配置。在其它实施例中,可以在不重新起动服务916的情况下更新块实例。举例来说,如果块实例当前不由服务916使用,那么可以停止块实例、使用新的块配置进行重新配置,并且重新起动。替代地,如果不在使用中,那么可以摧毁块实例,并且可以使用新的块配置将新的块实例实例化。在这些实施例中,服务916可以持续运行或者可以暂停,而非停止并重新起动。外面的代理(例如,其它服务和/或外部API)可以经由命令API(下文论述)来修改特定块918的行为。在命令API内,可以通过服务层级块别名和/或块群组层级来参考块实例。出于此原因,在本实例中不需要全局独特的块识别符,但它们可能用于一些实施例中。块实例可以直接接收和发送信号,而不经过服务916。在此方面,块918可用作接口,信号可通过所述接口进入NIO平台900,并且从NIO平台900发送。另外参考图9C,将层级体系990的一个实施例示出为具有单个服务916、块918和块群组992与994。块群组提供可以与其它块一样落入服务916中的块配置的可再使用的组件。块群组的配置之所以装配服务916的原因在于存在限定块918之间的niogram流的块列表和块映射。每当这些内部块中的一个产生niogram时,块群组的逻辑处置那些niogram到链中的接下来的块的路由,类似于服务916将如何处置此类路由。举例来说,块群组可包含一个或多个控制器(例如,一个或多个块或其它控制机制),其含有用于处置块群组内的路由来控制块群组内的数据流的逻辑。在这些实施例中,服务916可以将块群组的控制块视为服务916内的仅另一块,并且可以就像其它非群集块一样与所述控制块通信。在本实施例中,块群组992和994特定地限定niogram的进入点和退出点。对比而言,niogram可以通过任何恰当地配置的块918来进入和离开服务916。在其它实施例中,块群组992和994可能不特定地限定这些进入点和退出点。块群组在一些实施例中可以嵌套,其中块群组形成另一块群组的部分。这在图9C中示出为块群组994嵌套在块群组992内部。嵌套的块群组仅可以通过较高层级块群组与服务916通信。举例来说,块群组994仅可以通过块群组992而非直接地与服务916通信。在其它实施例中,服务916可以具有对嵌套的块群组的直接存取权。由于块群组将在服务916内部使用,所以服务916可能需要存取内部块918的命令(稍后论述)。在NIO平台900的本实例中,这可以通过限定块群组的配置内部的命令映射来完成。在限定这些映射之后,当对块群组调用某一命令时,所述块群组知道将命令按序传递到内部块中的一个。应理解,不是每个内部块命令都可能需要暴露于块群组的命令映射中的服务916。因此,可以基于若干因素来提供存取,所述因素例如为块群组的特定功能以及服务916如何使用那个功能。虽然块918具有用于niogram的特定进入点和退出点,但块群组可以具有一个以上进入点和/或退出点。更具体来说,块918仅具有一个可能的进入点来供服务链中的先前块918使用。对比而言,块群组具有可被视为niogram处理的开始点的许多块918。结果,块群组的配置选项中的一者限定niogram处理的一个或多个开始点。随后,当服务916将niogram传递到块群组时,将把那些niogram转发到开始点列表中的每个块918。类似地,块群组可被配置成限定结束点列表。当此列表中指定的块918产生niogram时,块群组的逻辑处置向母服务916和/或母块群组通知那些niogram的进程。出于实例的目的,块群组的一个实施例可包含各种配置选项,例如块、块映射(blockMappings)、命令映射(commandMappings)、起动点(startPoints)和结束点(endPoints)。对象“块”提供块群组内的所有块918的块名称到每个块918的唯一块别名的映射。对象“blockMappings”提供块别名到属于块群组的链的接下来的块别名的列表的映射(即,哪一块918馈送到哪一块中)。对象“commandMappings”提供命令到内部块命令的映射。阵列“startPoints”是限定应该用作块群组的开始点的块别名的字符串阵列。当将niogram从服务916递送到块群组时,在startPoints阵列中列举的块918将接收用于处理的niogram。阵列endPoints是限定应该用作块群组的结束点的块别名的字符串阵列。当endPoints阵列中列举的块918产生niogram时,通知将在块群组外部向上传播。另外参考图9D,如先前所描述,服务916是NIO平台的可配置处理功能的主要组织部件。每个服务916维护块路由器921、用于每个块918a到918M的块控制器922、其自己的配置参数、用于那个服务的块实例的列表,和块别名的关联性列表。在其中服务916是进程的本实施例中,服务进程可处置服务916与服务管理器914之间的所有通信。在其它实施例中,块路由器921或服务916内的另一部件可处置这些通信。块控制器922a到922M用作块路由器921与其相应的块918a到918M之间的中介。在执行此中介功能时,块控制器922a到922M模仿块路由器921和块918a到918M两者。举例来说,块路由器921可以将块控制器922a实例化,所述块控制器922a继而将块实例918a实例化。在其它实施例中,块路由器921可以将块控制器922a和块实例918a实例化。在实例化之后,块路由器921与块控制器922a通信,好像块控制器922a是块918a一样。类似地,块918a与块控制器922通信,好像块控制器922是块路由器921一样。因此,块控制器922a到922M的移除将不会阻止块路由器921与块918a到918M之间的通信,而是将从服务916移除由块控制器922a到922M提供的功能,除非那个功能包含在所述服务中的其他地方(例如,在块路由器921和/或块918a到918M中)。块控制器922a到922M可被配置成针对它们的相应的块918a到918c执行错误处置和/或其它功能。一般来说,仅许多块或所有块有可能需要的功能可能会由块控制器922a到922M提供。这使得通用块控制器能够用于块918,而不管那个特定块的功能如何。因此,每个块控制器922a到922M在本实例中是等同的。在其它实施例中,基于特定块的需要和/或其它准则,具有不同配置的块控制器可用于不同的块。块控制器922a到922M可被配置成作出关于是否将信息传递到块路由器921的某些决策。举例来说,当块918a引发错误时,块控制器922a捕获到所述错误。块控制器922a随后可以决定如何处置所述错误,包含将所述错误传递到块路由器921、忽略所述错误,和/或采取其它动作。举例来说,如果所述错误指示块实例918a已经停止工作,那么块控制器922a可以前瞻性地通知块路由器921,或者可以等待通知块路由器921,直到块路由器921试图使用所述块实例为止。移除块控制器922a将移除此错误处置功能,使得当块918a引发错误时,块路由器921将捕获到所述错误。块路由器921通过限定服务916内的块918a到918M之间的niogram流来处置块918a到918M之间的数据流。更具体来说,通过块路由器921经由Blockrouter.notifySignals()方法和processSignals()方法来管理服务916内的块实例之间的通信。Blockrouter.notifySignals()调用是由准备好输出的块918发出。Blockrouter.notifySignals()方法识别源块,并且含有形成输出的niogram。举例来说,可以将Blockrouter.notifySignals()实施为Blockrouter.notifySignals(源块识别符,niogram)。在当前实施例中,每当服务916内的块918具有输出、且所述块根本不需要知道所述服务时,作出此调用。换句话说,块918接收输入、进程、输入、调用Blockrouter.notifySignals(),且甚至在不知道其为服务的部分的情况下进行。在其它实施例中,块918可能知道它是其一部分的服务916,这使得块918能够向特定服务916通知信号。虽然在本实施例中将输出自身作为方法调用中的参数进行传递,但应理解,可使用其它进程来传送输出。举例来说,可传递对输出的指针而非输出自身。当调用Blockrouter.notifySignals()时,块路由器921查找路由表中的源块918,以确定输出应被引导到的目的地块918。块路由器921随后接连地对接下来的块中的每一者调用processSignals()。processSignals()方法识别目的地块且含有待处理的niogram(例如,作为源块的输出的niogram)。举例来说,可以将processSignals()方法实施为processSignals(目的地块识别符,niogram)。虽然在本实施例中将niogram自身作为方法调用中的参数进行传递,但应理解,可使用其它进程来传送niogram。举例来说,可传递对niogram的指针而非niogram自身。通过对processSignals()的每次调用,块路由器921可以启动服务进程的新线程中的被调用的块实例。在本实例中,块918异步地操作(即,每个块918与其它块独立地执行)。当块918将niogram发布到另一块918时,接收块立即执行。这意味着在块918之间不存在对niogram的缓冲,除非按需要(例如,如果使用线程池,且不存在用于接收块的当前可用的线程,那么可发生缓冲),并且在块918可以处理数据时,数据尽快地通过服务916。给定块918的处理速度可取决于块的指令的复杂性,以及块控制之外的因素,例如装置的处理器的速度和分配给块的线程的处理器时间量。由通过服务API发出的命令来起动和停止服务916。当服务916接收到起动命令时,其“起动”服务916所含有的所有块918。类似地,当服务916接收到停止命令时,其“停止”服务916所含有的所有块918。应注意,块918可能实际上未被“起动”,而是仅被通知已经起动封装它们的服务916。在需要时,块918随后可以使用通知钩来执行某一功能(例如,轮询外部API并且需要知道何时开始轮询的块918可以将通知用作轮询触发)。在一些实施例中,停止服务916可导致任何对应的块实例中的任何信息(例如,本地状态)的损失。举例来说,在将Python对象用于块实例的当前实例中,可通过调用Blockinstance.destroy()方法来擦去块对象。在其它实施例中,可能需要在停止服务916之后维持本地状态。举例来说,作为在停止服务916时擦去实例化的块的本地状态的替代,可以替代地暂停服务916,来暂时停止服务的执行,而不会丢失潜在有价值的数据。这可以通过将停止命令发出到服务916中的所有块918来完成,而不进行通常相关联的清除(例如,不调用Blockinstance.destroy())和/或以其它方式。命令用于与块918交互,并且必须可从块918外部到达。因此,需要知道块918如何限定和暴露命令。举例来说,块918可用于提供SMS功能。为实现此,块918可以被配置成暴露命令“sendSMS”。为了块918在NIO平台900内起作用,将在可执行指令中在块918中编写用于实际发送SMS的方法,并且随后所述方法将必须被断言为命令,以使得其可通过(例如)RESTAPI到达。取决于块结构的特定实施方案(例如,名称(例如,块的方法名称)、标题(例如,描述性名称)和自变量),可以各种方式来格式化调用方法的命令。应注意,此可为用于起动/停止服务的同一命令结构。如先前所描述的,niogram是用于服务内数据传输(例如,在块/块群组之间)的主要机制。所有块918可以接受并发射基础niogram类别的通用niogram。所述基础niogram类别一般不具有所需的字段,并且不需要验证。基础niogram类别仅暴露添加或移除属性的方式,以及将niogram串行化/解除串行化为不同形式(例如,JavaScript对象标记法(JSON))的方式。在本实例中,基础niogram的实例可以自由地添加或移除属性。可以将基础niogram划入子类别,以用于块918中。然而,在本实施例中,NIO平台900将不维持对这些子类别的任何知晓,并且其它块918将预期基础niogram。一般来说,块918不应该依赖于处理基础niogram的子类别,除非是强制性的。仅使用基础niogram类别确保了可以最小的影响在不同的服务中再使用块918。对块918的过滤应一般经由niogram的类型属性而非类别类型来进行。因此,虽然可以为了便利和/或封装来扩展通用niogram类别,但接收块918应仅考虑传入niogram的属性。使用niogram的基础类别的另一益处是实现实时交叉参考。举例来说,niogram可以开始时含有来自一个源的数据,并且随后使用来自另一个源的数据充实其信息。所得的niogram将含有来自两个源的信息,而非必须随身携带多个niogram类型。继续参考图9B,模块904是含有预先限定的代码的模块,NIO平台900可以自身使用所述代码,且块918也可以使用所述代码。模块904可以提供关于每个模块限定的功能,所述模块例如为登录模块938、安全模块940、线程处理模块942、通信模块944、调度器模块946、存留模块948,和/或网络服务器模块950。模块904中的一些或全部被设计成使得它们可以针对同一功能的不同实施方案而进行交换,而不会影响现有的块或平台功能。NIO平台900内的模块904的作用是针对不同平台实例提供可交换的功能,而不会影响块918和核心906。模块904提供可以被块918和核心906调用的API。通过所调用的模块904的功能来限定API调用的结果。在模块904中限定的功能跨越整个平台实例。因此,当改变模块904内的功能时,整个平台实例将使用模块的新版本。举例来说,如果改变登录模块938以登录到远程数据库而不是本地文件,那么(核心906中以及服务916中的)所有登录调用将相应地开始登录。然而,这些改变可能需要平台实例重新开始起作用。模块904支持NIO平台900的以下能力:在不同的环境内运行而不必修改NIO平台900的核心设计。举例来说,如果特定环境不支持某一所需的特征,那么可以使用所述环境所支持的功能来重新配置或更换负责那个特征的模块904。因此,通过按需要改变模块904,可以在具有不同需要的变化环境中运行平台实例。取决于特定模块904的功能,模块904可能需要基于可变数据来初始化其功能。举例来说,登录模块938可能需要在其处保存信息的文件名,而通信模块944可能需要平台实例中的当前发布者的列表。为了实现此,核心906和服务916两者通过调用设置方法、并且将语境信息与此数据一起传递而初始化模块904。对于服务916,模块的初始化数据可以直接到来,或者作为服务的初始化数据的部分间接地到来。举例来说,可以通过提供模块904的数据驻留在其中的配置文件的名称而间接地提供数据。对于核心906,数据可以驻留在全系统配置文件中,可以在起动期间读取所述全系统配置文件,且随后用于初始化模块904。登录模块938用于提供登录功能,并且与所有模块904一样,可以提供定制的解决方案,或者可以使用现有的解决方案,例如Python的内置登录模块。在初始化时,登录模块938接收详述NIO平台900中活动的适配器的参数,所述适配器可包含用于登录到本地文件的适配器、用于登录到共享数据库(例如,MySQL)的适配器,和/或用于创建niogram并且通过NIO平台900发布niogram的适配器。在本实例中,登录模块938暴露两个类别,一个用于登录,且一个检索所登录的信息。这使得核心906和服务916(其可为单独的进程)能够登录到单个环境。安全模块940使得块918能够与内部或外部安全应用程序介接。在本实例中,安全模块940提供认证方法和授权方法,其两者都可被超驰(override)。所述认证方法使得安全模块940能够认证用户。此方法可以采用自变量,并且将返回SecureUser类别的实例(见下文)。认证的实例包含用户名/口令、OAuth安全令牌和MAC地址。所述授权方法使得安全模块940的消费者能够针对于某一组SecureTask向认证用户(例如,SecureUser)授权。现有形式的认证包含存取控制列表、基于角色的安全,和用户/群组/其它许可(例如,755)。这使得块918能够将相同的安全实施方案用作核心906,而不关注实际上如何实施所述安全。除了超驰安全模块940的方法之外,安全实施方案还可以超驰可为安全的两个对象,其为SecureUser和SecureTask。SecureUser是表示用户的类别。不存在所需的字段,且这些对象将由认证方法返回。当实施安全模块940时,应超驰此类别,以映射到安全系统中的用户。SecureTask是表示将要做的一些事情的类别。一般来说,SecureUser可以或无法执行SecureTask。将把这些任务传递到认证方法,并且将针对于所述任务来认证SecureUser。安全模块940应使用其希望是安全的任务来超驰此类别。线程处理模块942提供线程处理支持,并且可以提供一个或多个线程处理选项。举例来说,两个线程处理模块可为可用的,其中仅在需要时使用非原生线程处理。在本实施例中,主要NIO平台进程可能不需要任何线程定制,并且可以在Python的常规线程处理模块下运行。然而,服务916和块918可以受益于具有大量轻线程以及在较短时间量内启动异步任务的能力。因此,NIO平台900可以提供用于Python的线程处理功能的包装器,其目的是使得其对开发者透明,并且允许从一个线程处理模式切换为另一线程处理模式。可以通过设定来指定将实际用于特定服务916的线程处理模块。通信模块944使得平台内的服务916能够预订并发布niogram。可以在平台实例内或平台实例之间输送niogram。通信模块944可以使用ZeroMQ或类似的库作为发布和预订机制。应注意,在需要时可以在服务916之间发生排队,并且可以通过通信模块944经由ZeroMQ或另一选定库来处置这种排队。通信模块944暴露两种类别,发布者类别和预订者类别。每个类别可包含被视为旗标的自变量的列表,并且预订者在所有旗标都匹配时与发布者匹配。在NIO平台900运行的个别通信模块944内控制处置预订/发布机制的所有功能。当服务916想要发布时,其简单地向通信模块944发布,并且通信模块944确定所发布的niogram将去往哪里。举例来说,假设存在如下四个发布者A到D:(A)发布者(类型=RFID,源=坞门);(B)发布者(类型=RFID,源=传送机);(C)发布者(类型=条形码,源=传送机);以及(D)发布者(类型=RFID,源=架子)。预订者可以如下指定向其进行预订的发布者。预订者(类型=)将从A、B和D接收发布。预订者(类型=,源=[坞门,传送机])将从A和B接收发布。预订者(源=)将从B和C接收发布。调度器模块946促进以所调度的间隔或者在未来的单个点处执行任务。调度器模块946可以包含在NIO平台900中,使得在给定环境中的特定调度器出现问题的情况下,可以更换调度器。调度器模块946经由“工作”类别的实例进行操作,将仅需要所述类别,以在结束时取消工作。调度器模块946的实施负责初始化,并终止基础调度器。存留模块948使得块918和核心部件能够“存留”与它们相关的某些信息,所述信息将通过平台实例重新起动而幸存。存留模块948可以选择在无论何处和无论如何保存其想要的东西(例如,在纯文本文件或本地数据库中)。其暴露可以在块918内用于存取(例如,保存、加载和清除)此功能的若干方法。网络服务器模块950使得服务916和/或块918能够暴露网络服务器,以用于在隔离的端口上进行交互。另外,核心906可以使用网络服务器模块950来暴露主控API908的网络服务器。网络服务器模块950为使用若干方法(例如,打开、处置和关闭)来这样做的每一个提供接口。网络服务器模块950可以使用库,例如Python中的CherryPy库。这移除对CherryPy的核心依赖性,并且允许块编写器将同一网络服务器功能用作核心906。这不仅允许替代其它库,并且还允许块编写器容易地暴露网络服务器,而不必担心与核心的API908冲突。在本实例中作为不同的进程而操作的服务916可以通过直接通过其自己的网络服务器接收数据而减轻核心进程上的负载。在没有这个的情况下,块/服务使用命令来通过HTTP接收数据,但那些命令经过调节,并且通过核心906。通过使用网络服务器模块950,块918可以直接向端口收听传入的HTTP请求,并且在不加载核心进程的情况下相应地处置所述请求。在本实例中,核心906包含API908、服务管理器914和配置管理器910。配置管理器910包含配置911、加载器952和发现功能954,其在一些实施例中可为加载器952的部分。在其它实施例中,配置管理器910可能不作为部件而存在,但加载器/发现功能和配置可以继续存在于核心906内(例如,作为服务管理器914的部分或在其它地方)。在一些实施例中,核心906还可以包含核心部件912。核心906维持由NIO平台900提供的服务916。核心906不直接暴露于服务部件902,并且可以使用模块904。API908表示多个API,但应理解,块918和块群组可以能够接收和/或发送信息,而不通过核心906中的API908进行传递。举例来说,块可以能够在不使用API908的情况下发送和接收SMS消息。应理解,可以限定许多不同的API和API调用,且下文描述的实例仅用于示出可以如何存取和管理NIO平台900的各种部件。在本实例中,API908包含块API、块配置API、命令API、用于提供定制API的机制,和服务API。块API使得用户能够更改加载于NIO平台900中的块918的状态。举例来说,块API使得用户能够添加、重新加载和/或移除块918,而不必重新起动块918位于其中的实例。出于实例的目的,块API遵循创建、读取、更新、删除(CRUD)模型,暴露四种方法来与块918交互,并且暴露实例端点来与块的实例交互。创建方法将新的块918添加到实例,并且可以多种方式来完成。举例来说,可以附加文件、模块和/或包以用作块918,可以参考在其中加载块代码的文件名,可以参考远程托管的块,且/或可以指定类别,并且NIO平台900可以被配置成定位和检索所述类别的代码。读取方法返回块918的列表,并且因此暴露NIO平台900的功能。除了块918的列表之外,读取方法还可以返回其它块元信息,例如版本、依赖性和安装时间。更新方法刷新NIO平台900中的块918。这可包含重新加载块的代码、重新验证并且更新参考。更新方法可能不更新当前在运行的服务916中的块实例的块代码。在这些情况下,可能必须重新起动服务916来实现块代码。在其它实施例中,可以在不必重新起动服务916的情况下更新块实例。删除方法使得能够从NIO平台900删除块918。还将删除块918的任何块实例。在运行的服务916中的任何块918将继续运行,但当重新起动服务916时,将引发错误,且服务916将不能够起动,除非对服务916进行更新来反映所述删除。实例方法使得能够与块918的实例进行交互。举例来说,可将“实例”视为实质上是/instances?block=BlockName的别名的定制端点。所述实例方法允许用户修改与给定块918相关联的块实例。这在下文将关于块实例API更详细地论述。块配置API使得用户能够更改加载于NIO平台900中的块实例的状态。因为块配置是块918的经配置的实例,所以一些API调用可通过先前描述的块API而发生。出于实例的目的,块配置API遵循CRUD模型,但还可以限定一些替代方法。创建方法添加新的块配置。为了创建块配置,为了所述配置,必须存在相关的块918。因此,配置创建可以经过块API内的指定块的API端点。配置创建还可以经过NIO平台的块配置API,只要指定有效的块918即可。读取方法返回块配置的列表,但可能存在查看在NIO平台900内配置的块配置的多种方式。举例来说,通过命中主要块配置端点,将返回NIO平台900中的所有配置。可以通过将块名称指定为参数或者将GET发出到块配置的端点来实现进一步细化。GET调用将返回配置的名称以及块918内所限定的配置。更新方法更新NIO平台900上的块配置的配置。作为当前运行的服务916的部分的块918将在重新起动服务916之前不会实现它们的配置更新。删除方法使得能够从NIO平台900删除块配置。这会从NIO平台900移除块配置,但不是块918自身。如果块918是运行的服务916的部分,那么服务916将继续以原始的块代码运行。当重新起动服务916时,将引发指示无法找到块918的错误。命令API使得用户能够与先前描述的命令处置程序交互,所述命令处置程序已经经过限定来暴露块918的命令。可以命令服务916和块918两者。然而,在本实施例中,因为块918并非独立而是存在于服务916内,所以调用者必须经过服务916来命令块918。取决于特定实施方案,可以许多不同方式调用命令,包含超文本传送协议(HTTP)方法,例如GET和POST。被调用的块918应该限定对每种类型的所允许的调用的恰当处置。命令方法可用于命令服务916内部的块918。举例来说,可将所述方法结构化为/services/ServiceName/BlockAlias/commandName。此API调用的根是服务916,这是因为在那个服务916内部的块918是将被命令的块。如果指定服务916不存在,那么将引发错误。所述方法中的下一部件是BlockAlias。这将默认是块配置名。然而,如果服务建置者希望在服务916内包含一个以上同一块918,那么可以针对那个块918的每个配置来限定块别名。最终部件是命令名。此命令必须是如由连接到BlockAlias的块918限定的有效命令。用于限定定制API的机制充分利用块918限定定制命令处置程序的能力。因此,可以将定制API编写为块918,且实施为服务916内的块配置。举例来说,服务建置者可以将API块918投入服务916中的任何点中。API块918不影响服务916的操作,而是提供新的API端点,其可用于充分利用在插入块918的点处的服务916的属性。服务API使得用户能够更改NIO平台900中的服务916的状态。出于实例的目的,服务API遵循CRUD模型,以及允许用户起动/停止服务916的命令模型。创建方法将新的服务916添加到NIO平台900。服务916的规格(例如,块和块映射)可以包含在调用的主体中。读取方法返回服务916及其配置的列表。此信息可包含服务916内的块918、服务916的状态(例如,运行或停止),和在创建服务916时指定的任何其它配置选项。更新方法更新服务的配置。如果服务916当前在运行,那么将接受配置更新,但在重新起动服务916之前将不会实现改变。删除方法从NIO平台900移除服务916。如果服务916当前在运行,那么此调用将返回错误。服务916应在被删除之前停止。命令方法用于起动或停止服务916。如果服务916的配置存在问题(例如,存在不存在的块918、具有无效块918的块实例,和/或其它验证问题),那么调用将返回错误。继续参考图9A和9B,在本实施例中,配置管理器910管理NIO平台900的当前实例的配置911、在需要时加载服务916和块918以进行检查,并且执行自动发现。理想上,核心902对其功能(例如,块918)或其配置(例如,块实例和服务916)不具有依赖性。依赖性的此缺乏使得能够使用可重新定位的实例配置,例如由用户指定的一个或多个目录。随后,当启动NIO平台900的实例时,将识别实例配置的位置,并且NIO平台900将加载实例的块918、服务916,和来自那个位置的其它所需的部件。这使得用户能够对他们的配置进行版本控制、在同一机器上创建多个配置,并且容易地共享和检查他们的配置。可以许多不同方式在NIO平台900内表示配置。举例来说,块实例和服务916可以使用JSON纯文件、SQLite数据库和/或压缩文件,而块918可以使用python文件或python模块目录。应理解,这些仅是实例,且可使用许多不同格式来表示配置信息。NIO平台900可包含不同类型的配置,这取决于正在描述NIO平台900的什么部分。实例包含核心配置、平台配置、核心部件配置、服务配置,和块配置。应理解,可将这些配置存储为单独文件,或者可以进行组合。此外,可以将这些配置中的任一者划分为多个配置,或者以许多不同方式进行组合。核心配置针对于与核心906相关的设定。这些值可为核心906私有的,并且可让服务902看见。平台配置针对于整个NIO平台900的设定。这些包含核心906和服务902可见的所有设定。核心部件配置针对于与特定核心部件相关的设定。服务配置针对于与特定服务916相关的设定。块配置针对于与特定块918相关的设定。NIO平台900可以使用详述什么包含在NIO平台900中的配置数据文件。此数据文件可以不同于实际上在配置目录内部的数据文件。举例来说,如果用户将块文件复制到块目录中,那么实例可能拾取不了块文件,直到经由块API加载块文件为止。此时,实例可将那个块918加载到配置数据文件中。类似地,可将块实例配置复制到目录,但在重新起动实例之前可能辨识不出。在其它实施例中,可能不需要实例重新起动以便辨识出块实例配置。在一些实施例中,数据可能驻留在远程位置处(例如,在远程数据库或数据结构服务器中),这允许在不同的平台实例之间共享定义。在这些实施例中,可以通过平台设定来指定用于加载特定配置的处置程序。NIO平台900随后将把指定处置程序实例化,且使用其来获取实例配置。在下文示出NIO平台900的实例配置目录的一个实例,括号中是注释。继续参考图9A和9B,核心部件912是含有NIO平台900可以使用的预先限定的代码的模块。核心部件912向NIO平台900提供功能,且可包含多个模块,例如监视模块956、消息处理模块958、通信管理器模块960,和/或实例分布模块962。核心部件912略微不同于由配置管理器910和服务管理器914提供的核心功能。虽然核心功能一般向块编写器隐藏,且是NIO平台900的操作所需的,但核心部件912是可交换的部件(类似于模块904),其定位在核心906内,且提供可由核心906使用的功能。与核心功能一样,核心部件912向块编写器隐藏(不同于模块904)。不同于核心功能,NIO平台900的运行不需要核心部件912。然而,应理解,NIO平台900的某些实施方案可能由于平台的配置而依赖于核心部件912,在此情况下,将需要核心部件912中的一个或多个的功能来提供所要的功能。换句话说,NIO平台900可能在没有所需的核心部件912的情况下运行,但将不可用于完成某些任务。在其它实施例中,NIO平台900可能在没有所需的核心部件912的情况下不起动。另外参考图10,在NIO平台900内部的环境1的一个实施例示出通信管理器模块960针对参与发布/预订操作的所有进程充当代理人。为了实现此,通信管理器模块960与先前所描述的通信模块944交互。当启动含有发布/预订功能的服务916时,通信管理器模块960将两个端口指派给服务916。一个端口用于预订管理数据,且另一端口用于发布管理数据。正由服务916使用的通信模块944针对服务而跟踪这些端口。通信管理器模块960向服务916中的发布者(例如,对应于服务的通信模块944)预订。当通信管理器模块960从服务916接收到消息时,通信管理器模块960将消息广播到现有的服务。这辅助维持所有服务916之间的关于NIO平台900中的发布者的同步状态。在其中多个平台实例同时运行的一些实施例中,不同平台实例的通信管理器模块960可以共享内部通道来辅助各种实例之间的通信。在其中多个平台实例同时运行的其它实施例中,一个通信管理器模块960可以充当其它通信管理器模块的代理人。在图10中示出由通信模块944和通信管理器模块960提供的基本通信进程。出于示出的目的,在图10中将每个步骤标记为圆中的数字。在步骤1中,通信管理器模块960使用新服务916a的通道信息来填充从服务管理器914接收的服务语境1002。这包含先前介绍的预订/发布端口。在步骤2中,服务管理器914在新服务916a的初始化期间传递具有通道信息的语境。在步骤3中,新服务的通信管理器916a经由正由服务916a使用的通信模块944a而打开发布者,并且将其自己的信息提供给通信管理器模块960。新服务的通信模块944a还打开预订者以用于接收关于其它服务的信息。在步骤4中,通信管理器模块960向其它服务(例如,服务916b)广播在步骤3中接收到的发布者信息。在步骤5中,另一服务916b使用其通信模块944b来打开到新服务916a的发布者的预订者。服务916b随后可以直接从服务916b接收其预订的通信。应理解,可以许多不同方式来完成所描述的通信进程。举例来说,虽然本实施例示出使用通信管理器模块960来辅助在通信模块944a和944b之间建立直接通信的进程,但通信管理器模块960可以继续接收和广播由通信模块944a和944b发布的消息。在其它实施例中,通信模块944a和944b可以不直接通信,并且可以仅向通信管理器模块960预订和发布。再次参考图9A和9B,可以在一个以上平台实例正在共享服务916时使用实例分布模块962。举例来说,在分布式系统中,其中多个平台实例为了分担运行的既定服务916的负载而一起工作,必须维持关于当前在分布式系统中的平台实例的信息。此信息使得分布式系统中的每个平台实例能够发现其它实例是否正在运行。举例来说,每个平台实例可以ping其它实例,并且当检测到实例不起作用时,可以移除对不起作用的实例的任何现有的依赖性。实例分布模块962维持分布式系统中的其它平台实例的列表,以及关于每个平台实例的元数据(例如,每个实例已经运行了多长时间、在每个实例中有多少服务916正在运行、通信端口和/或其它信息)。在一些实施例中,实例分布模块962将驻留在分布式系统内的每个平台实例上,并且在添加或移除平台实例时自我更新。每当更新此列表时,将通过块和核心部件的通信模块944来发布相关信息以进行消费。为了实现此,每个平台实例中的实例分布模块962向每一个其它平台实例中的实例分布模块962预订。当实例的实例分布模块962检测到改变(例如,新实例或废弃的实例)时,其向剩余的实例分布模块962发布那个相关信息。接收到此信息的实例分布模块962随后相应地更新它们的相应列表。可以集中或分布发布。因为负载平衡倾向于取决于建置服务916的方式以及每个服务916的度量(例如,处理量),所以可以在服务916内执行启动新平台实例以及拆毁平台实例的实际平衡进程。这将负载平衡的责任施加到服务916。在其它实施例中,核心906可以在负载平衡中起到更大的作用。参考图11A和11B,消息处理模块958提供让外部系统发送信息以及从NIO平台900接收信息的方式。应理解,可以许多不同方式完成这些通信,并且这些通信可以取决于特定外部系统的实施方案而变化。举例来说,一些外部系统可能询问可用的数据并且基于响应而制定请求,而其它外部系统可能确切地知晓要请求什么数据以及要提供什么数据。在一些实施例中,可以通过结合网络服务器模块950使用命令来取代消息处理模块958。图11A示出其中外部系统1102询问可用的数据并且基于响应而制定请求的实施例。出于示出的目的,在图11A中将每个步骤标记为圆中的数字。在步骤1中,通过消息处理模块958经由REST接口964/API908来接收来自外部系统1102的询问消息(例如,请求)。在步骤2中,消息处理模块958接受所述询问,添加且/或注册服务,并且将服务的信息(例如,统一资源定位符(URL))发送到外部系统1102。在步骤3中,外部系统1102使用所接收的信息将消息(例如,HTTP调用)发送到服务管理器914。在步骤4中,服务管理器914随后将所述消息置于通道中以用于发布到服务916。图11B示出其中外部系统1104确切地知晓要请求什么数据以及要提供什么数据的实施例。出于示出的目的,在图11B中将每个步骤标记为圆中的数字。在步骤1中,通过消息处理模块958经由REST接口964/API908来接收来自外部系统1104的请求。在步骤2中,消息处理模块958将所述请求转发到外部数据接收器服务(其可为服务管理器914的部分或与其分开)。在步骤3中,服务管理器914处理所述调用以将特定消息发布到服务916。继续参考图9A和9B,服务管理器914处置核心906与在平台实例中运行的服务916的交互。服务管理器914处置起动和停止服务916,并且还可以管理服务的传入命令(例如,经由REST接口964/API908接收的命令)。服务管理器914可以使用由模块904和核心部件912提供的功能。可以经由API908从NIO平台900外部存取服务管理器914。参考图12,在NIO平台900内部的环境1200的一个实施例示出服务916和核心906。如先前所描述,服务进程处置与服务管理器914的通信,例如通过RESTAPI908接收的命令。块路由器921经由对应的块控制器922来处置块918之间的服务内通信(在其中存在块控制器922的实施例中)。加载器952和发现功能954可由服务管理器914用来加载服务和/或块类别以用于发现目的。外部源/目的地1202和1204可以经由块918和/或经由RESTAPI908进行通信。参考图13,在NIO平台900内部的环境1300的一个实施例示出图9A和9B的NIO平台900的各种部件进行交互以启动平台实例和服务916。出于示出的目的,在图13中将每个步骤标记为圆中的数字。在步骤1中,在启动新的核心进程906之后,核心进程存取配置管理器910并且检索一个或多个配置911。所述配置提供关于哪些(如果有)模块904和核心部件912在NIO平台900内可用的信息。在步骤2中,核心进程906随后针对可用的每个模块904而创建并初始化模块904以供使用。在步骤3中,核心进程906针对可用的每个核心部件912而创建并初始化核心部件912。在步骤4中,起动服务管理器914。在步骤5中,服务管理器914经由配置管理器910来存取服务配置信息。在步骤6中,服务管理器914随后调用加载器952/发现功能954来发现NIO平台900中可用的所有服务916和块918。加载器952可以存取在其中存储了服务916和块918的存储库1302,并且在需要时加载每个服务916和/或块918,来对其进行检查并且发现它们的特性。此进程可包含检查每个块918以查看所述块是否需要特定模块。举例来说,块918可以明确地限定其需要的模块,或者加载器可以检查块的代码来确定其是否使用任何模块。在步骤7中,对于被配置成自动起动的每个服务916,服务管理器914使用对应于那个服务的配置信息来启动服务916。虽然未示出,但服务管理器914还可以在此进程期间通过网络服务器模块950来暴露对REST接口964/API908的处置。参考图14,方法1400示出当启动平台的实例时可以由图9A和9B的NIO平台900执行的进程的一个实施例。在本实例中,已经启动核心进程,并且在步骤1402之前运行,但尚未启动模块或服务。方法1400是可以在图13的步骤1到4期间发生的进程的更详细实施例。在步骤1402中,核心进程存取配置信息,且在步骤1404中,使用配置信息来识别可用的模块904和/或核心部件912。步骤1404可以在需要时在步骤1404的发现进程期间使用加载器952/发现功能954,在此情况下,将在步骤1404之前执行步骤1412的至少部分。在步骤1406中,核心进程创建语境来存储各种模块的信息。在步骤1408中,核心进程起动并且配置每个可用的模块904。应注意,可以在步骤1408之前或者在起动时将模块904实例化,但在起动每个模块时发生配置。在配置期间,将配置信息和/或语境传递到正被配置的模块904。模块904随后使用其自己的信息来更新语境,例如核心进程和/或模块904中的另一者调用当前模块可能需要的信息。在步骤1410中,核心进程起动并且配置每个可用的核心部件912。应注意,可以在步骤1408之前或者在起动时将核心部件912实例化,但在起动每个模块时发生配置。在配置期间,将配置信息和/或语境传递到正被配置的核心部件912。核心部件912随后使用其自己的信息来更新语境,例如核心进程、模块904中的一者和/或核心部件912中的另一者调用当前模块可能需要的信息。应注意,当前实施例在起动核心部件912之前起动模块904。因为模块904无法使用核心部件912,但核心部件912可以使用模块904,所以步骤的此次序使得模块904能够在将语境传递到核心部件912之前更新语境。因为模块904不需要来自核心部件912的语境,所以这是更高效的进程。然而,在其它实施例中,所述步骤可颠倒或甚至混合,其中以某一其它次序起动模块904和核心部件912。在这些实施例中,所有模块可以接收所有其它模块的语境。在步骤1412中,核心进程起动并配置其它核心部件,例如服务管理器914和加载器952/发现功能954。服务管理器914随后可以起动服务,如图15中所描述。参考图15,方法1500示出在服务管理器914被起动且由核心进程配置之后可以由图9A和9B的NIO平台900执行的进程的一个实施例。在本实例中,已经启动模块904和核心部件912,且存在具有关于那些模块的信息的语境。方法1500是可以在图13的步骤5到7期间发生的进程的更详细实施例。在步骤1502中,服务管理器914存取服务916的配置信息,且在步骤1504中,调用加载器952/发现功能954来发现可用于NIO平台900的服务916和块918。在步骤1506中,服务管理器914可以获得语境(例如,具有用于模块904和核心部件912的信息的语境)或者可以创建新的语境以供服务916使用。在步骤1508中,服务管理器914起动,并配置被配置成自动起动的每个可用的服务916。应注意,可以在步骤1508之前或者在起动时将服务916实例化,但在本实施例中在起动每个服务916时发生配置。在其它实施例中,可以在将服务916实例化时发生配置中的一些或全部。在配置期间,将配置信息和/或语境传递到正被配置的服务916。服务916随后使用其自己的信息来更新语境。在步骤1510中,服务管理器914通过网络服务器模块950来暴露对REST接口964/API908的处置,但此步骤可以在方法1500中较早地发生。在步骤1512中,服务管理器914等待指令,例如用于服务916的停止和起动命令。参考图16A,方法1600示出在起动对应的服务916之后可以由图9A和9B的NIO平台900的服务进程执行的进程的一个实施例。如先前所陈述,当起动服务916时,由服务管理器914将服务语境传递到服务进程。在步骤1602中,服务进程接收服务语境。在步骤1604中,服务进程初始化服务进程自身所需的任何模块以及在服务916中使用的块918所需的模块。服务进程可以直接使用模块,例如登录模块938和线程处理模块942。一些模块(比如通信模块944)可由服务进程使用来辅助块918设置通信通道。块918可以直接使用其它模块。在步骤1606中,块路由器921启动属于服务916的块918。参考图16B,方法1610示出在起动对应的服务916之后可以由图9A和9B的NIO平台900的服务进程执行的进程的一个实施例。举例来说,方法1610可为图16A的步骤1606的更详细实施例,并且可以对每个块918发生。在步骤1612中,将块918初始化以创建块实例。在步骤1618中,配置块实例,其可包含传递信息,例如块实例使用模块所需的模块信息。在步骤1616中,起动块实例。如先前所描述,起动块实例可包含向块实例通知已经起动对应的服务916。如果被配置成这样做,那么块实例随后可以将所述通知用作触发来执行指令。在没有此通知的情况下,块实例可以保持闲置,直到被processSignals()调用为止。参考图16C,方法1620示出可以由图9A和9B的NIO平台900的块路由器921执行的进程的一个实施例。在步骤1622中,块路由器921从块918接收输出通知。在步骤1624中,块路由器921查找路由表中的接下来的块,且在步骤1626中,调用接下来的块来处理输出。如先前所描述,此进程可涉及例如Blockrouter.notifySignals()和processSignals()等调用。如先前所描述,由于块918的异步性质,所以服务916中的块918中的一些或全部可以同时处理niogram。此外,单个块918可以通过使用线程处理来执行多个并发线程中的块的功能而同时处理多个niogram。对于此进程不需要改变方法1620,因为每个processSignals()调用启动新的线程。在本实例中,线程可生成block.processSignals()的目标。在需要时,块918可包含用于获取和释放锁的指令,以防止同时执行的线程之间的问题。可以逐块地包含这些指令,因为竞争条件或其它线程冲突问题对于一些块来说可能不是关注点。参考图16D,方法1630示出可以由图9A和9B的NIO平台900的块路由器921执行的进程的一个实施例。在步骤1632中,块路由器921接收消息。所述消息可能来自块918并且既定用于RESTAPI908/964,或者可能来自RESTAPI且被引导到块。在步骤1634中,块路由器921将消息继续传递到目的地(例如,经由RESTAPI908/964、通过将消息发布到通道,或者经由另一传送机制)。参考图16E,方法1640示出可以由图9A和9B的NIO平台900的块918执行的进程的一个实施例。在步骤1642中,块918接收一个或多个信号和/或niogram。块918可以在所述块直接耦合到外部源的情况下接收信号,并且可以从另一块接收niogram(直接地接收或者经由块路由器921,其取决于特定实施方案)。应理解,接收包含块918可借以获得数据的主动进程,例如从外部源抽取数据。在步骤1644中,块918基于块的内部指令而执行处理。如先前所描述,这些指令的范围可从简单到复杂,这取决于块918的特定配置。在步骤1646中,一旦步骤1644的处理产生输出,块918便可以发出存在输出的通知(例如,通过通知块路由器921),且/或可以将输出直接发送到外部源,这取决于块的内部指令。再次参考图9A和9B,NIO平台900包含可为API908的部分的REST接口964。REST接口964辅助与外部工具和系统通信,所述外部工具和系统例如为控制台972、企业监视工具974、企业应用程序976,和外部装置978(例如,移动装置、服务器、数据库、机器、制造设备,和/或任何其它装置、系统,和/或NIO平台900被配置成与其通信的应用程序)。NIO平台900可以针对特定语言(例如,Python)使用运行时环境966,并且还与正在运行NIO平台900的无论什么装置上的操作系统968交互。参考图17,环境1700的一个实施例示出用户对图9A和9B的NIO平台900和外部装置、系统和应用程序1706的角度。举例来说,外部装置、系统和应用程序1706可类似于或等同于图1E到1G和1I的外部源/目的地132。从用户的角度来看,隐藏了大多数核心的功能(未示出)。用户具有经由RESTAPI908、964从外部系统和应用程序1706对NIO平台900的一些部件的存取权。外部装置、系统和应用程序1706可包含移动装置1708、企业应用程序1710、用于NIO平台900的管理控制台1712,和/或可以经由RESTAPI存取NIO平台900的任何其它外部系统和应用程序1714。使用外部装置、系统和应用程序1706,用户可以将命令1704(例如,起动和停止命令)发出到服务916,所述服务继而处理或停止处理niogram1702。如上文所描述,服务916使用块918,所述块可以从各种外部装置、系统和应用程序1706接收信息以及向其发送信息。外部装置、系统和应用程序1706可充当信号源,其使用以下各者作为块918的输入而产生信号:传感器(例如,运动传感器、振动传感器、热传感器、电磁传感器,和/或任何其它类型的传感器)1716、网络1718、RFID1720、语音1722、GPS1724、SMS1726、RTLS1728、PLC1730,和/或任何其它模拟和/或数字信号源1732。外部装置、系统和应用程序1706可充当由块918产生的任何类型的信号(包含致动信号)的信号目的地。应理解,如本文使用的术语“信号”包含数据。参考图18,图1800示出从NIO平台1802(其可类似于或等同于图1A的NIO平台100、图2A的200、图4A的400,和/或图9A和9B的900)的创建运行到启动的工作流的一个实施例。所述工作流开始于库1804。库1804包含核心类别206(其包含本实例中的任何核心部件和模块的类别)、基础服务类别202、基础块类别1806,和从基础块类别1806扩展的块类别204。每个经扩展的块类别204包含任务特定的代码。用户可以修改和/或创建用于库1804中的现有的块类别204的代码,且/或创建具有所要的任务特定的功能的新块类别204。虽然未示出,但还可以定制基础服务类别202,且各种经扩展的服务类别可以存在于库1804中。配置环境1808使得用户能够限定已经从库1804选择的核心类别206、服务类别202和块类别204的配置,以便限定将从NIO平台1802内的类别实例化的对象的平台特定的行为。NIO平台1802将运行如由平台自身的架构限定的对象,但配置进程使得用户能够限定NIO平台1802的各种任务特定的操作方面。所述操作方面包含将运行哪些核心部件、模块、服务和块,核心部件、模块、服务和块将具有什么性质(如通过架构准许),以及将何时运行服务。此配置进程产生配置文件210,其用于配置将通过NIO平台1802从核心类别206、服务类别202和块类别204实例化的对象。在一些实施例中,配置环境1808可为图形用户接口环境,其产生被加载到NIO平台1802中的配置文件。在其它实施例中,配置环境1808可以使用NIO平台1802的REST接口908、964(图9A和9B)将配置命令发出到NIO平台1802。因此,应理解,存在可创建且产生配置信息以供NIO平台1802使用的各种方式。当启动NIO平台1802时,识别核心类别206中的每一者,并且使用用于核心、核心部件和模块的适当的配置文件210来将对应的对象实例化和配置。对于将在起动NIO平台1802时运行的每个服务,识别服务类别202和对应的块类别204,且使用适当的配置文件210将所述服务和块实例化和配置。NIO平台1802随后经过配置,并且开始运行来执行由服务提供的任务特定的功能。查看图19A,示出在其内在运行时配置服务230的服务配置环境1900的一个实施例。在NIO平台1802内,使用类别文件202和配置信息1902来创建每个服务230。所述配置信息包含在运行时之前存在的预先限定的信息(例如,作为图2A的平台配置信息210的部分)和在运行时动态地产生的信息。所述动态地产生的信息在启动NIO平台1802之前并不知晓,并且可包含关于图13的环境1300所描述的信息。类别文件202可由多个服务使用,但配置信息1902对于正在创建的特定服务230是唯一的。对于每个服务230,配置信息1902可处于单独文件中,或者可处于较大的文件中,从其提取特定服务的配置信息。在运行时,类别文件202被实例化,且随后将配置信息1902应用于实例化的服务对象。参考图19B,示出在其内在运行时配置块232的块配置环境1904的一个实施例。在NIO平台1802内,使用类别文件204和配置信息1906来创建每个块232。所述配置信息包含在运行时之前存在的预先限定的信息(例如,作为图2A的平台配置信息210的部分)和在运行时动态地产生的信息。所述动态地产生的信息在启动NIO平台1802之前并不知晓,并且可包含关于图13的环境1300所描述的信息。类别文件204可由多个块使用,但配置信息1906对于正在创建的特定块232是唯一的。对于每个块232,配置信息1906可处于单独文件中,或者可处于较大的文件中,从其提取特定块的配置信息。在运行时,类别文件204被实例化,且随后将配置信息1906应用于实例化的块对象。参考图20A和20B,分别示出块232a和232b(未示出)的类别文件204a和204b的实施例。在NIO平台1802内,服务类别文件202和块类别文件204是分别基于基础服务模板(对于服务230)和基础块模板(对于块232)。这些基础模板包含扩展它们的任何类别继承的NIO平台特定的行为。这意味着每个服务类别202和块类别204继承NIO平台特定的行为,这允许对应的服务230或块232在NIO平台架构内起作用。在没有此NIO平台特定的行为的情况下,将不会在NIO平台架构内辨识出类别文件202和204,并且因此可能创建不了对应的服务230和类别232。除了NIO平台特定的行为之外,每个块类别204还含有提供特定任务特定的功能的可执行指令。具体参考图20A,块类别1的类别文件204a包含用于NIO平台的标准基础块代码,并且还含有用于连接到外部信号源(其例如为推特(Twitter))的定制代码。具体参考图20B,块类别2的类别文件204b包含用于NIO平台的标准基础块代码,并且还含有用于发送电子邮件的定制代码。如果不存在含有执行特定任务所需的代码的现有的块类别,那么可使用基础块模板来创建新的块类别,或者可以修改现有的块类别204。虽然服务类别202还可以包含定制代码,但它们很少这样做,这是因为基础服务模板一般提供服务230所需的所有功能。然而,应理解,还可以定制服务类别202。参考图21,示出在其内使用配置信息以不同方式基于同一块类别204来配置两个块232的环境2100的一个实施例。配置信息1906(图19B)允许通过设定在块类别204内限定的可配置参数的值而在运行时配置特定块232。这意味着可以不同方式来配置同一块232,其取决于用于配置块232的配置信息1906中的值。块类别204b(如图20B中所示)含有将由块232接收到的任何信息发送到目的地电子邮件地址的定制代码。所述代码包含目的地电子邮件地址的可配置参数,从而避免必须在每次使用不同的电子邮件地址时改变基础块类别204。这允许在配置信息1906中限定电子邮件地址,这意味着可以使用同一块类别204来创建将它们的电子邮件发送到不同地址的多个块。因此,在本实例中,将使用块类别204b来将两个块232a(还被称作块#1)和232b(还被称作块#2)实例化。块232a和232b将被配置成分别使用配置信息1906a(还被称作块#1配置信息)和1906b(还被称作块配置信息#2)将电子邮件发送到两个不同的地址。当将块232a和232b实例化且配置时,所述两个块将具有相同的电子邮件发送功能,但将把它们的电子邮件发送到不同的电子邮件地址。参考图22,示出在其内使用配置信息以不同方式基于同一服务类别202来配置两个服务230的环境2200的一个实施例。配置信息1902(图19A)允许通过限定将由服务执行哪些块232以及执行块232的次序而在运行时对特定服务230进行有限配置。配置信息1902还可以用于设定在服务类别202内限定的可配置参数的值。这意味着可以不同方式来配置同一服务230,其取决于块232、执行的次序,和用于配置服务230的配置信息1902中的值。在本实例中,服务230的配置信息1902包含在将服务230实例化时建置路由表所需的源块和目的地块。因为块232除了通过服务230以外不具有到彼此的任何连接,所以服务230使用路由表将信息从一个块(源块)引导到下一块(目的地块)。服务230在服务230被实例化之后接收源块和目的地块作为配置信息,因此可以使用同一基础服务类别202来用于不同的服务230。这意味着服务230可以基于特定块232以及在它们的配置信息1902中限定的块执行次序而具有不同的功能。因此,在本实例中,将使用服务类别202来将两个服务230a(还被称作服务#1)和230b(还被称作服务#2)实例化。将分别使用配置信息1902a(还被称作服务#1配置信息)和1902b(还被称作服务配置信息#2)使用不同的块和不同的执行次序来配置服务230a和230b。当将服务230a和230b实例化和配置时,所述两个服务将具有不同的功能。在本实例中,服务230是由服务类别202和配置信息1902构成的事实意味着,在实例化之前,在服务230内不存在可以进行检查来确定块232的执行次序或甚至确定待使用的块232的服务类别202。为了确定服务230的行为,将必须检查配置信息1902。参考图23,使用经扩展以创建各种定制的块类别(未示出)(例如,图18的库1804中的块类别)的基础块类别1806来示出环境2300的一个实施例。随后可以如先前所描述将定制的块类别实例化,从而形成各种块232a到232j。如上文所描述,NIO平台通过使用服务230来组织适当的块232执行特定任务而操作。在本实例中,块232除了通过服务230以外不具有到彼此的任何连接。此组织结构提供若干益处,例如块执行中的异步性、动态扩张和响应于输入改变的块资源的撤回,以及在不必重新起动NIO平台1802的情况下修改服务230和块232的能力。举例来说,如图23中所示,环境2300包含块库,其含有十个块232a到232j。块232a到232j中的每一个是由基础块模板建置,因此每个块与NIO平台架构兼容。块232a到232j除了它们全部可以在NIO平台架构内操作以外,不具有到彼此的连接。每个块232a到232j含有任务特定的代码,其允许那个块执行特定功能。举例来说,块232a连接到Twitter,块232b发送含有从另一块接收到的任何信息的电子邮件,块232c连接到装配线中的机器,块232d为了一个或多个所限定的文本串而过滤从另一块接收到的任何输入,块232e发送关闭装配线上的机器的信号,等等。假设用户想要使用十个块232a到232j来创建两个不同的服务230a和230b。服务230a将监视外部源(例如,Twitter)Twitter以寻找词语“公司名称”,并且在检测到此推文的情况下向user1@companyname.com发送电子邮件。服务230b将监视装配线机器以寻找某些错误代码的出现,并且在检测到错误的情况下向user2@companyname.com发送电子邮件。服务230b还将在检测到错误的情况下关掉机器。服务230a和230b将在单个NIO平台上同时运行,并且异步地且实时地执行它们的任务,而不进行任何数据存储。另外参考图24,使用来自图23的环境2300的块来示出服务230a的一个实施例。通过识别所需的块类别且限定它们的执行次序来创建服务230a。举例来说,块232a(连接到Twitter)的后面将紧跟着块232d(针对“公司名称”进行过滤),且随后在块232d识别出具有“公司名称”的任何推文的情况下块232b将向user1@companyname发送电子邮件。块类别包含可配置参数,其允许定制块类别,而不需要打开块类别并改变它们的代码。图24示出从功能角度来看的服务230a的经配置的外观。服务230a的路由表针对来自源块的任何输出而限定目的地块。如果块不将输出发送到另一块(即,块232b),那么在路由表中不存在条目。不存在块232a的源块,因为块232a直接连接到Twitter。表3示出用于服务230a的路由表的实例。表3由路由表提供的块的解耦的性质以及灵活性允许相对容易地修改服务230a或者用其它块交换块。应理解,必须将任何配置改变和任何新块加载到NIO平台中(假设新块已经不在那里),并且随后必须重新起动服务230a,以让改变起作用。举例来说,如果用户想要用文本消息块交换电子邮件块232b,那么可以使用用于发送文本的合适配置的块来取代块232b。如果块的名称保持相同,那么路由表在一些实施例中甚至可以不改变。如果块的名称不同,那么需要更新路由表,但可能不需要其它改变。表4示出在通过文本消息块232g取代块232b的情况下的用于服务230a的路由表的实例。表4如果用户想要发送文本消息和电子邮件两者,那么可以添加文本消息块232g,使得其在电子邮件块232b旁边存在于服务230a内。在此情况下,可以更新路由表以包含新块232g作为源块232d的另一目的地。表5示出用于具有块232a和块232g两者的服务230a的路由表的实例。表5另外参考图25,使用来自图23的环境2300的块来示出服务230b的一个实施例。通过识别所需的块类别且限定它们的执行次序来创建服务230b。举例来说,块232c(连接到机器)的后面将紧跟着块232d(相对于错误列表进行过滤)。如果检测到错误,那么块232b将向user2@companyname发送电子邮件,且块232e将关掉机器。块类别包含可配置参数,其允许定制块类别,而不需要打开块类别并改变它们的代码。图25示出从功能角度来看的服务230b的经配置的外观。表6示出用于服务232b的路由表的实例。表6参考图26,在环境2600内示出NIO平台1802的一个实施例。环境2600包含Twitter2602和机器2604的入口。如所示,NIO平台1802包含核心228,并且正同时运行两个服务230a和230b。每个服务230a和230b与另一服务独立地执行其所配置的功能。参考图27,方法2700示出可以由图26的NIO平台执行来创建和配置块232的进程的一个实施例。在步骤2702中,识别块类别204连同块的对应的配置信息以及块232所需的动态产生的信息。在步骤2704中,根据块类别204将块232实例化。在步骤2706中,使用对应的配置信息和动态产生的信息来配置块232。参考图28,方法2800示出可以由图26的NIO平台执行来创建和配置服务230的进程的一个实施例。在步骤2802中,识别服务类别202连同服务的对应的配置信息以及服务230所需的动态产生的信息。在步骤2804中,根据服务类别202将服务230实例化。在步骤2806中,使用对应的配置信息和动态产生的信息来配置服务230。参考图29,示出环境2900的一个实施例,其中实时发布系统2901实时地或准实时地异步地捕获、规格化、过滤、区分优先级,并且发布来自多个数据流的数据。不同于常规系统,实时发布系统2901不需要在捕获数据之后将数据存储在数据存储库(例如,数据库)中,而是能够在直接从数据源接收到数据时处理所述数据,并且发布所述数据以供观看显示器。每当从源捕获到额外数据时实时地或准实时地更新显示器,从而向动态更新的显示器提供一致刷新的信息。在本实例中,可能类似于或等同于先前描述的NIO平台100(图1)、NIO平台200(图2A)或NIO平台900(图9A)的NIO平台2902可以与一个或多个发布服务器2904(例如,用于经由网站进行发布的网络服务服务器)一起使用,以提供实时发布系统2901。NIO平台100从一个或多个外部源2906a、2906b、2906c,...,和2906N接收数据,其中N是外部源的总数。所述外部源2906a、2906b、2906c,...,和2906N分别产生数据2908a、2908b、2908c,...,和2908N,其由NIO平台2902捕获。NIO平台2902处理所述数据,并且将所述数据(以niogram或不同的格式)馈送到发布服务器2904,所述发布服务器处置发布信息以供观看的进程。发布服务器2904可以向一个或多个通道发布,所述通道例如为网络2910、电子邮件2912、SMS2914、馈送2916(例如,RSS馈送)、邮递2918(例如,去往社交媒体站点)、语音邮件2920,和/或任何其它通道2922。出于实例的目的,发布服务器2904是网络服务服务器,其被配置成经由一个或多个网页发布信息。实时发布系统2901被配置成从外部源2906a到2906N获得数据,处理所述数据,且实时地或准实时地发布所述数据。NIO平台2902被配置成将相对稳定的数据流(例如,每秒最小数目的niogram)发送到发布服务器2901以进行发布。可以许多不同方式发生发布,但在本实例中是经由相对连续地刷新的拼块矩阵(下文更详细地描述)来完成。实时发布系统2901对外部源2906a到2906N不具有控制,并且无法确保将定期地接收到新的数据。因为新的数据可能并非始终可用于刷新矩阵,所以NIO平台2902可以高速缓冲数据,并且使用经高速缓冲的数据来连续地刷新矩阵。在没有经高速缓冲的数据的情况下,如果到了发送时间却尚未接收到新的数据,那么NIO平台2902将没有东西发送到发布服务器2904。因此,可以实时地或准实时地将新的数据发送到矩阵,并且可以在需要时使用经高速缓冲的数据以确保发布服务器2904接收到稳定的数据供应以进行显示。参考图30,环境3的一个实施例将图29的NIO平台2902示出为被配置成提供捕获数据、并且将所捕获的数据准备好进行发布的各种部件/功能。应理解,可以许多不同方式来组织由部件提供的功能,并且所述功能可以跨额外的部件而散布,或者组合为更少的部件。在本实例中,功能包含从外部源2906a到2906N获得信息且随后变换并过滤数据的数据部件3002a、3002b、3002c,...,和3002M。在本实例中,数据检索、变换和过滤的进程是基于每个源而发生。数据检索部件3002a到3002M可以与外部源2906a到2906N具有一一对应关系,或者单个数据部件可以连接到一个以上外部源。所述功能还包含区分优先级部件3004,其从数据部件3002a到3002M接收经变换和经过滤的数据且对所述数据区分优先级以供发布。如将在下文更详细地描述,这允许向特定类型的数据和/或特定外部源给予发布的优先级,这继而允许按需要对实际显示的数据进行调整。虽然区分优先级部件3004针对所有数据部件3002a到3002M执行优先级区分,但应理解,数据部件3002a到3002M中的每一者可能存在单独的区分优先级部件。在本实例中,区分优先级部件3004将经优先级区分的数据发送到排队部件3006且直接发送到递送部件3008。排队部件3006提供一个或多个队列,数据临时存储在所述队列中,以确保NIO平台2902始终具有要发送到网络服务服务器2904的数据。到递送部件3008的直接路径为服务器2904提供实时或准实时的数据,而不具有由队列部件3006引入的延迟。参考图31,使用源服务3102a到3102M和流服务3104更详细地示出图30的NIO平台2902的一个实施例。源服务3102a到3102M和流服务3104是被配置成在NIO平台2902内操作的服务,如先前实施例中所描述。NIO平台2902包含多个源服务3102a、3102b、3102c,...,和3102M。源服务3102a到3102M被配置成分别从外部源2906a到2906N获得数据。在本实例中,源服务3102a到3102M包含执行关于图30所描述的数据检索、变换和过滤功能的块(未示出)。源服务3102a到3102M将数据传递到流服务3104,其处置关于图30所描述的区分优先级、排队和递送。应理解,在其它实施例中,源服务3102a到3102M和流服务3104中的一者或多者可以组合为单个服务。在仍其它实施例中,源服务3102a到3102M和流服务3104可以被进一步划分。举例来说,可以创建一个或多个额外服务,并且将其配置成处置变换功能、过滤功能、区分优先级功能、排队功能,和/或递送功能。如先前所描述,可以使用许多不同的服务和/或块以许多不同方式配置NIO平台2902来提供相同的功能。参考图32,示出图31的源服务3102a的一个实施例。在本实例中,源服务包含连接块3202、变换块3204、白名单过滤块3206、黑名单过滤块3208,和发布块3210。当块3202到3210结束执行其所配置的处理时,其调用如先前所描述的Blockrouter.notifySignals(),且服务的块路由器调用下一块上的processSignals()。连接块3202被配置成连接到特定外部源,例如Twitter、Facebook、Google+、Instagram、Youtube或提供内容的另一源。连接的类型可基于特定站点,其中一些站点将数据推送到连接块3202,且其它站点需要连接块3202被配置成从那些站点抽取数据。因此,连接块3202的实际配置可取决于以下各者而变化:外部源的API、正获得的信息的类型(例如,流数据对其它非流数据类型)、是否需要认证证书来用于存取,和/或其它因素。变换块3204将所获得的数据转换为niogram,其中每个niogram含有单条内容(例如,Facebook帖子、推文、具有附加图片的文章,或Youtube视频)。在本实例中,不管外部源和数据的类型(例如,视频、音频、图像,和/或文本)如何,将把数据置于niogram中的所限定的字段中。此解构进程会将数据规格化以用于稍后处理。变换块3204可以保留从外部源获得的所有信息,或者可以丢弃信息。变换块3204还可以将其它信息插入到niogram中,例如源类型(例如,Twitter或Facebook)、对应于源数据的用户名、文本(例如,每个内容源的相关文本)、到内容的链接、唯一ID(例如,全局或局部地,例如根据类型),和/或状态旗标(例如,“旧”、“新”或“VIP”)。过滤块3206和3208针对niogram的字段中含有的内容而执行过滤。白名单块3206含有必须存在于字段中来通过过滤器的文本(例如,字或短语),且黑名单块3208含有必须不存在于字段中来通过过滤器的文本。所述文本可处于帖子、图像题注、用户名中和/或其它地方,并且可以取决于特定源和/或待发布的内容而变化。过滤块3206和3208使得能够屏蔽内容,以防止错误肯定并且移除不想要(例如,有异议的、无礼的和/或不相关)的材料。一个或多个定制块3210可以定位在服务3102内的任何地方,或者可以完全省略。在本实例中,不使用定制块3210。发布块3212发布经变换和经过滤的niogram以供服务3104使用。举例来说,发布块3212可以向对所有源服务3102a到3102M共用的publisher_sources通道进行发布。应理解,在其它实施例中,块3202到3212中的一者或多者可以组合为单个块。在仍其它实施例中,块3202到3212中的一者或多者可以被进一步划分。参考图33A,示出图31的流服务3104的一个实施例。在本实例中,流服务包含预订块3302、队列(按照类型)块3304、时戳块3306、新鲜度块3308、优先级块3310、队列(按照优先级)块3312,和输出块3314。当块3302到3312结束执行其所配置的处理时,其调用如先前所描述的Blockrouter.notifySignals(),且服务的块路由器调用下一块上的processSignals()。预订块3302向subscriber_sources预订,其接收由源服务3102a到3102M经由publisher_sources发布的所有niogram。预订块3302将所接收的niogram传递到队列块3304和时戳块3306两者。队列(按照类型)块3304连同队列(按照优先级)块3312可用于提供经高速缓冲的数据,以确保发送数据的稳定流,以供发布到网络服务服务器2904。在本实例中,两个单独的队列块用于确保基于类型和优先级两者来发布内容。队列块3304存储每种类型的外部源(例如,Twitter、Facebook和Google+)的队列。每个队列被配置成保持所限定的数目的niogram。队列块3304按所限定的间隔(例如,每X毫秒或秒)从每个队列发射niogram,并且将突然离开队列的niogram自动重新加载到队列末尾以进行再循环。对队列的新的添加会弹出队列,从而丢弃前面的niogram,并且将新的niogram添加到队列的末尾。重新加载确保队列将保持完整,甚至在不添加新的niogram的情况下也如此。因此,如果外部源不频繁地产生新的内容,用于那种类型的队列中的niogram将通常比对应于频繁更新的类型的队列中的niogram旧。队列块3304可以使用值(例如,节流阀)来展开所发射的niogram。举例来说,如果存在八种类型,且队列块3304被配置成每五秒针对每种类型发射一niogram,那么每五秒发射八个niogram。节流阀可用于使所述八个niogram排队,使得它们的发射跨五秒的窗相对均匀地散布。时戳块3306将识别特定参考时间的时戳指派给每个niogram,例如当那个niogram的内容被时戳块3306接收时。因为最初实时地或准实时地将niogram传递到时戳块3306,所以时戳将接近niogram被对应的源服务接收的时间。在使用新鲜度的实施例中,新鲜度块3308将新鲜度水平指派给每个niogram。向每个niogram指派随时间改变的新鲜度水平(例如,niogram随时间失去其“新鲜度”)。可基于内容(例如,文本可能比图像更快地失去新鲜度)、类型和/或其它因素而应用不同新鲜度水平和不同衰退速率。新鲜度水平使得流服务3104能够基于在多久以前接收到内容来调整内容,以通过网络服务服务器2904进行显示。优先级块3310基于一个或多个所限定的准则而将优先级指派给每个niogram。举例来说,可以使用优先级尺度1到5,其中基于内容(例如,可以向图像指派比文本高的优先级)、类型和/或其它准则而向niogram指派优先级。新鲜度可以影响优先级水平,其中niogram的优先级水平随着其新鲜度减小而减小。在其操作方式方面可能类似于或等同于队列块3304的队列(按照优先级)块3312针对niogram的每个优先级而存储队列。输出块3314接收niogram并且将它们发送到网络服务服务器2904。输出块3314可为能够与网络服务服务器2904直接通信的网络套接字。参考图33B,方法3320的一个实施例示出可以在图29的NIO平台2902内使用的进程。应注意,方法3320聚焦于发布的实时或准实时方面,且不描述排队。在步骤3322中,从外部源获得媒体。在步骤3324中,对媒体进行变换并且插入到niogram中。在此步骤中还可以发生额外的加标签。在步骤3326中,基于白名单和/或黑名单信息对媒体进行过滤。在步骤3328中,作出关于是否基于步骤3326的过滤而丢弃niogram的确定。如果将丢弃niogram,那么方法3320移动到步骤3330,且丢弃niogram。如果不丢弃niogram,那么方法3320移动到步骤3332。在步骤3332中,添加时戳,以将参考时间指派给niogram。在步骤3334中,在使用新鲜度水平来控制媒体的显示的实施例中设定媒体的新鲜度水平。在步骤3336中,将优先级指派给媒体。在步骤3338中,将媒体输出到服务器2904以供显示。参考图34,网络服务服务器2904使用来自NIO平台2902的经区分优先级的数据流来填充并刷新矩阵。在本实例中,网络服务服务器2904具有两个主要功能。第一功能是指派功能3402,网络服务服务器2904使用所述功能将niogram指派给拼块。如将在下文描述的,不是所有niogram都可以被指派给拼块。第二功能是发布功能,网络服务服务器2904使用所述功能经由矩阵发布niogram以供在一个或多个装置显示器3406上观看。参考图35,示出矩阵3500的一个实施例。矩阵3500表示图29的实时发布系统2901可如何组织并呈现所发布的数据、以供在网站上、移动装置应用程序内和/或其它地方观看的一个实例。在本实例中,网络服务服务器2904确定经区分优先级的数据在矩阵3500中属于何处,所述数据随后可以被发布到显示器。举例来说,可使用级联样式表单(CSS)来限定矩阵3500。矩阵3500表示可以在模拟或数字显示器上显示的显示区域(例如,在网络浏览器或其它观看软件内)的一部分或全部。如所示,将矩阵3500划分为十六个拼块(例如,单元)3501、3504、3506,...,和3532,且每个拼块3501到3532表示可以在其中显示数据的矩阵3500的唯一区域。应理解,矩阵3500可具有任何大小和形状,但在本实施例中出于示出的目的是矩形。虽然是矩形,但矩阵3500可以具有如所示的不规则列和/或行,或者列和/或行可为规则的。此外,矩阵3500和/或拼块3501到3532中的一者或多者可为固定或动态的。另外参考图25A到D,使用拼块3502、3504、3510和3512来示出矩阵3500的一部分。在本实例中,向拼块3502、3504和3512指派改变的内容,且拼块3510是静态的(例如,内容不改变)。因为拼块3502、3504和3512含有改变的内容,所以用户可能难以在内容改变之前读取或以其它方式观看拼块的内容。因为内容可能不会再次在矩阵3500中出现,或者从用户的角度来看可能会以某一看似随机的时间出现在另一拼块中,所以一直改变的拼块可能难以观看。因此,拼块3502、3504和3512可分别包含用户可选择的区3602、3604和3606。用户可选择的区3602、3604和3606可为任何形状和/或大小,并且可以定位在其相应的拼块3502、3504和3512内的任何地方。每个用户可选择的区3602、3604和3606使得能够锁定相应的拼块,其防止在将拼块解锁之前内容会改变。举例来说,在图36A中,未选择用户可选择的区3602、3604和3606中的任一者,且相应的拼块3502、3504和3512中的内容正在改变。对比而言,在图36B中,已经选择用户可选择的区3602,其锁定了拼块3502且防止拼块3502的内容被新内容刷新。用户可选择的区3604和3606未被选择,且相应的拼块3504和3512中的内容不断改变。对用户可选择的区域3602的取消选择(例如,第二次选择所述用户可选择的区域)将把拼块3502解锁,且允许刷新内容。当将拼块3502解锁时,拼块3502可即时地刷新,或者可以使用一个或多个其它准则进行刷新。举例来说,对应于拼块3502的定时器可以在锁定拼块3502的同时不断运行。在此情况下,如果定时器在拼块3502被锁定的同时到期,那么拼块3502可基于到期的定时器在解锁时刷新。在其它实施例中,锁定拼块3502可能会冻结定时器,并且将拼块3502解锁可能会将定时器解冻。在此情况下,定时器可在解冻时正常继续,并且可以在定时器到期时刷新拼块3502。具体参考图36C和36D,对拼块3502、3504、3510和3512的选择可在所述拼块被配置成放大的情况下放大所述拼块。举例来说,对图36C和36D两者中的拼块3502的选择(例如,对拼块3502的一部分的用户选择)已经放大了拼块。在一些实施例中,经放大的拼块3502的内容可以继续改变,如图36C中所示。在其它实施例中,在放大拼块3502时,可锁定内容,如图36D中所示。在将拼块3502最小化时,可将拼块3502解锁。在其中放大拼块3502会锁定拼块的内容的情况下,对应的定时器可如先前所描述而操作。参考图36E,更详细地示出拼块3502的一个实施例。在本实例中,拼块3502可包含通过线3612勾勒出的页眉区域3610。页眉区域3610可包含用户可选择的区域3602、对应于当前正由拼块3502显示的媒体的源的用户名3614(在适用时),和识别内容的类型的指示符3616(例如,图标)。拼块3502还可以包含通过线3620勾勒出的页脚区域3618。页脚区域3618可包含对应于当前正由拼块3502显示的媒体的源的源链接,从而使得用户能够选择所述源链接以从原始源加载媒体。举例来说,如果用户正在浏览器中观看矩阵,那么选择所述链接可以在另一浏览器标签或另一浏览器窗口中打开源。在一些实施例中,页眉区域3610和/或页脚区域3618可仅在发生触发时显示,例如用户用鼠标经过或者以其它方式选择拼块。在一些实施例中,页眉区域3610和/或页脚区域3618可能覆盖正由拼块3502显示的媒体的一部分,而在其它实施例中,媒体可以完全显示在页眉区域3610与页脚区域3618之间。在一些实施例中,页眉区域3610和/或页脚区域3618可以部分透明。在一些实施例中,可以基于类型或另一属性向拼块指派特定色彩,使得取决于文本的源而使用不同的色彩背景来显示文本内容。可以许多不同方式来过滤矩阵3500。举例来说,用户可以选择用户名3614,以仅示出来自那个用户的内容。用户还可以选择指示符1516来仅显示来自那个源的内容。可以通过对一个或多个用户名和/或源的选择来堆叠过滤器,从而使得能够创建可定制的显示。另外参考图37,方法3700示出可以在图29的实时发布系统内使用、以将数据指派给矩阵3500的各个拼块3502到3532的进程的一个实例。应理解,这是实时或准实时进程,其中数据经过识别,被指派给拼块3502到3532中的一个,并且进行发布以供实时地或准实时地显示,而不将数据存储在数据存储库中。在步骤3702中,识别用于发布的内容。在步骤3704和3706中,确定将用于显示内容的特定拼块3501到3532,并且将内容指派给拼块。以所限定的方式发生拼块指派。在一些实施例中,可以将一个外部源指派给矩阵3500的一个拼块3501到3532,或者指派给多个拼块(例如,其中数据在拼块之间交错或者以其它方式指派)。举例来说,可以将外部源2906a指派给拼块3501、3506、3510、3514、3518、3528和3532。可以将外部源2906b指派给拼块3504、3508、3522、3524和3530。可以将外部源2906N指派给拼块3512、3516和3526。不将拼块3520指派给任何外部源。可使用拼块3520来提供文章、评论、广告和/或任何其它所要的内容。在一些实施例中,在需要时,例如在出现尖峰时(如将在稍后描述),拼块3520可用于溢出。在指派给特定外部源的拼块内,可以各种方式来更新数据。举例来说,可以将最新的数据指派给将要针对那个外部源进行刷新的下一个拼块,或者可以指派给从可用的拼块群组(例如,在五秒刷新内的所有拼块的群组)选择的拼块。从群组选择拼块可辅助将随机性水平提供给矩阵3500。用于指派进程的拼块的此外部源分组允许广告商或其它赞助商保留某些拼块。此指派进程还使得实时发布系统2901能够为具有更高数据量的外部源保留更多拼块,这通过控制拼块3501到3532的指派而允许某一水平的负载平衡。在其它实施例中,可以将数据随机地指派给拼块,而非将拼块系到特定外部源,且拼块指派可以频繁地改变。举例来说,可以将最新的数据指派给待刷新的下一个拼块,而不管从其获得数据的外部源如何,但这可取决于特定准则,例如拼块对于内容是否不适当(例如,太小而不能显示图像或文本框)。当随机地指派时,可以对拼块进行分组,使得每个外部源具有一定数目的拼块。举例来说,可以向外部源2906a指派X个拼块(其中X为从一到十六的整数)、形成矩阵3500的百分比区域的拼块(例如,形成矩阵区域的至少百分之五十的拼块)、在X与Y之间的数目的拼块(其中X是等于或大于一且小于Y的整数,且Y是从X+1到十六的整数),或者全部大于每拼块指定最小大小的X个拼块。因此,可以许多不同方式指派拼块。还可以基于内容来指派拼块。举例来说,可始终将推文指派给拼块3506和3528。可以始终将图像指派给拼块3501、3504、3520和3516。可以始终将文本指派给拼块3518。其它拼块可以类似地联系到内容的类型,或者可以如先前所描述而指派。这使得设计者能够按需要以已知型式将内容分布在整个矩阵3500上,而不管内容的源如何。不管接收到的数据的量如何,实时发布系统2901被配置成在给定在其内发生发布的约束(例如,矩阵3500中的拼块的数目)的情况下,发布尽可能多的新内容。应理解,可基于用户偏好、带宽限制和/或类似因素来扼制或以其它方式限制内容,并且因此所发布的新内容的量可在用户间变化。在一些实施例中,为了确定应示出哪些内容,可基于以下各项对内容区分优先级:源、内容的类型(例如,图像可具有比文本高的优先级)、新鲜度、基于数个因素的相关度加权,和/或其它准则。可以将一条内容的优先级添加到内容(例如,作为标签),并且在将所述内容指派给拼块时,可用于确定是否用其它内容取代所述内容。因此,拼块的显示属性可基于当前正由那个拼块显示的内容而改变。这意味着可对拼块区分优先级,以用于基于它们的内容进行取代。在本实例中,拼块指派区分优先级是基于确保发布尽可能多的新内容,这一般意味着每当新的内容变得可用时,实时发布系统2901使用新的内容取代较旧的内容。这意味着拼块指派区分优先级决策可集中于在矩阵3500中将取代什么拼块。虽然简单地将新的内容指派给矩阵3500中(或在指派给特定源的拼块群组中)含有最旧内容的拼块是可由实时发布系统2901使用的一种方法,但其它方法可集中于简单的拼块内容年龄(age)之外,例如拼块内容的优先级水平。更具体来说,虽然拼块指派区分优先级可为部分基于年龄的决策,但在一些实施例中,年龄可能不是决定将取代什么拼块的唯一因素或甚至主要因素。举例来说,实时发布系统2901可被配置成在较旧的内容具有比较新的内容更高的优先级级别的情况下,在较旧的内容之前取代矩阵3500中的较新的内容。在一些实施例中,可以将年龄视为确定取代优先级的滑动尺度优先级因素,因此拼块的内容的优先级级别可随着内容变老而随时间减小。换句话说,随着拼块的内容变旧,内容的优先级水平可以某一方式下降(例如,连续地或者基于阶梯函数)。此下降可继续下去,直到拼块的内容下降到原先具有较低优先级水平的较新内容的优先级水平以下为止。使用此方法,将使用新内容取代的拼块是具有最旧内容和/或最低优先级水平的拼块。在步骤3708中,可作出关于所指派的拼块是否准备好刷新的确定。在发生触发时,例如在捕获到新数据时和/或在定时器到期时,刷新矩阵3500内的拼块3501到3532。举例来说,在捕获到新数据时可发生触发,但拼块可能在定时器到期之前不会更新。在较短时间量内接收到新数据时,定时器防止拼块过快地刷新。举例来说,如果将定时器设定为两秒且五条数据在两秒内到达那个拼块,那么定时器可防止最后四条数据在到达时显示,因为用户将有可能难以那么快地消费数据。触发可以每拼块地操作(例如,每个拼块可具有其自己的定时器),或者可以多个拼块或者整个矩阵地操作。一般来说,矩阵3500中的一些或全部拼块3501到3532将被定期地刷新,以维持动态数据的外观。在一些实施例中,至少一个拼块可在任何特定时间刷新。可将不同的触发指派给不同类型的数据。举例来说,图像和推文可具有不同的刷新速率,这可影响已经向其指派内容的拼块的刷新速率。当刷新速率联系到内容自身时,一些拼块3501到3532可被省略而不进行选择。举例来说,拼块3530可被视为对于图像来说太小,并且因此可能在图像是将指派给拼块的下一内容的情况下不被考虑。如果步骤3708的确定指示拼块未准备好,那么方法3700可以重复步骤3708,直到拼块准备好为止。如果拼块准备好,那么方法3700移动到步骤3710,且更新所述拼块。在下文关于表7来示出用于对矩阵3500内的内容进行区分优先级的更详细实例。表7表7示出五个优先级水平,其中水平一最低,且水平五最高。每个优先级水平与三个持续时间相关联,所述持续时间在本实例中是以秒计。每个优先级水平具有最小持续时间、用于新内容的最小持续时间,和最大持续时间。最小持续时间是将显示指派给那个拼块的内容的最短时间周期,除非新内容可用。此持续时间设定使得较高优先级内容能够在矩阵3500中保持比较低优先级内容更长的时间。最大持续时间是在刷新之前将显示内容的最长时间周期,即使所述刷新使用经高速缓冲的内容也如此。此持续时间设定确保将使用不同的内容周期性地刷新矩阵3500。用于新内容的最小持续时间是在使用新内容刷新之前将示出当前内容的时间量。此持续时间设定确保新内容被推送到矩阵3500而覆盖先前内容,但还可以被设定成防止内容以无法消费的快速度被刷新。基于表7,假设没有新内容和/或较高优先级内容可用,那么涉及三个时间周期。在到达最小持续时间之前、在已经到达最大持续时间之后,以及在最小持续时间与最大持续时间之间。在到达拼块的最小持续时间之前,拼块的内容将不会被取代。在经过最大持续时间之后,拼块的内容将始终被取代,甚至被较低优先级内容取代,其中首先取代最旧的拼块。处于最小持续时间与最大持续时间之间的任何拼块基于它们的时间窗中剩余的时间百分比而进行比较。举例来说,优先级二拼块对于十五秒窗口来说分别具有十五秒的最小持续时间和三十秒的最大持续时间。优先级三拼块对于二十秒窗口来说分别具有二十秒的最小持续时间和四十秒的最大持续时间。假设优先级二拼块的内容已经显示了二十秒,且优先级三拼块的内容已经显示了三十秒。优先级二拼块穿过其十五秒窗口的大约百分之三十三,且优先级三拼块穿过其二十秒窗口的百分之五十。在此情况下,将取代优先级三拼块,因为其已经使用了比优先级二拼块更多的其显示时间。在其它实施例中,可仅针对相同优先级的拼块来比较窗口,且较低优先级拼块可始终在较高优先级拼块之前进行刷新,而不管剩余的时间量如何。如果新内容可用,那么将用于新内容的最小持续时间应用于所述拼块。举例来说,优先级一拼块可能已经在其被检查时将其信息显示了五秒。如果可用的内容不是新的,那么什么都不发生,因为七秒的最小持续时间尚未到期。然而,如果可用的内容是新的,那么应用用于新内容的最小持续时间,且刷新拼块,因为最小持续时间是一秒且定时器处于五秒。这使得在新内容变得可用时能够快速地刷新现有的内容,其中较低优先级内容比较高优先级内容更快地被取代。在一些实施例中,可能存在始终被给予优先的优先级水平。举例来说,VIP水平可意味着即使没有拼块准备好刷新也刷新拼块。将内容指定为VIP会确保将即时地发布所述内容,而不管拼块状态如何。应理解,被取代的拼块可仍然是最旧的、剩余最少时间等的拼块,但甚至将超驰用于新内容周期的最小持续时间来显示新内容。举例来说,假设待取代的下一拼块是已经仅使用了其用于新内容的十五秒最小持续时间中的五秒的优先级五拼块。如果VIP内容可用,那么将忽略剩余的十秒,且将使用VIP内容来刷新所述拼块。应理解,可以按需要混合不同类型的拼块指派。这在呈现内容方面提供大量灵活性,且使得能够在内容改变时动态地调整矩阵3500。在本实施例中,将内容发布到矩阵3500,且随后实时地或准实时地使用其它内容进行取代。虽然一些内容可能被暂时高速缓冲并且被递送(例如,以在第一次加载矩阵时快速地填充矩阵3500)和/或再递送(例如,在其中尚未接收到新内容但必须刷新拼块的情形中),但实时发布系统2901不将内容存储在数据存储库中,且一旦系统丢弃所述内容,所述内容便无法被检索到且再显示。换句话说,不存在用户可借以在时间上向后移动穿过拼块的内容的“后退”按钮或其它机制。系统的实时方面意味着信息一直进入,且用于取代先前信息,且先前信息不再可用。应理解,在其它实施例中,可以高速缓冲或者以其它方式保存内容,所述内容包含拼块的内容。另外参考图38,方法3800示出可以由图29的实时发布系统内的网络服务服务器2904使用、以将数据指派给矩阵3500的各个拼块3501到3532的进程的一个实例。应理解,这是实时或准实时进程,其中数据经过识别,被指派给拼块3501到3532中的一个,并且进行发布,以供实时地或准实时地显示。在需要时,可以使用经高速缓冲的数据来防止拼块保持在未刷新或空白状态,如先前所描述。在步骤3802中,从NIO平台2902接收到媒体。在步骤3804中,作出关于任何适当的拼块定时器是否已经到期的确定。举例来说,如果将媒体标记为“新”,那么适当的拼块定时器将是新内容持续时间定时器。如果媒体不是新的,那么适当的拼块定时器将是最小持续时间定时器。如果没有拼块定时器已经到期,那么在步骤3806中丢弃媒体,且方法3800返回到步骤3802。如果适当的拼块定时器已经到期,那么方法3800移动到步骤3808。在步骤3808中,作出关于具有到期的定时器的拼块对于媒体来说是否为适当(例如,匹配)拼块的确定。举例来说,如果拼块是优先级1拼块、且媒体是优先级3媒体,那么存在不匹配。如果存在不匹配,那么在步骤3806中丢弃媒体,且方法3800返回到步骤3802。如果存在匹配,那么在步骤3810中使用新媒体来取代当前正在匹配的拼块处显示的媒体。应理解,方法3800可快速地发生,其中媒体被连续地接收并且指派或丢弃。实际速度取决于若干因素,例如所接收的媒体的输入速率、相对于指派如何发生的媒体的内容(例如,高优先级内容与矩阵中的高优先级拼块的数目的比率)、定时器的持续时间、矩阵的大小,和/或其它因素。参考图39,方法3900示出可以在图29的实时公布系统内使用的进程的一个实例。实时发布系统2901可以对所捕获的内容中的一些或全部进行高速缓冲,并且如果在预期刷新拼块时尚未接收到新内容,那么可以使用经高速缓冲的内容来刷新拼块。换句话说,可以使用旧的内容(无论先前是否示出)来使矩阵3500保持在经刷新的状态中。当“按需要”将经高速缓冲的内容注入到媒体流中而不是定时地自动注入时,可以使用此方法。因此,在步骤3902中,作出关于拼块是否准备好刷新的确定。如果拼块未准备好刷新,那么方法3900返回到步骤3902,且等待拼块准备好刷新。如果拼块准备好刷新,那么方法3900继续进行到步骤3904。在步骤3904中,作出关于是否存在用于拼块的新内容的确定。如果存在新数据,那么在步骤3906中使用新内容来更新拼块。如果不存在新内容,那么在步骤3908中使用经高速缓冲的内容来更新拼块。应注意,步骤3908可取决于实时发布系统2901的配置而变化。举例来说,如果不存在来自指派给拼块的外部源(例如,外部源2906a)的新内容,但存在来自另一外部源(例如,外部源2906a)的新内容,那么可使用来自外部源2906b的新内容来刷新拼块。换句话说,可向新鲜内容给予优于经高速缓冲的内容的优先级。然而,如果实时发布系统2901被配置成仅使用某些外部源来用于某些拼块,那么将在刷新给定拼块时仅使用经高速缓冲的内容,且从对应的外部源得不到新内容。参考图40A到40D,各种方法示出当在来自外部源2906a到2906N中的一个或多个的输入速率中出现尖峰时、可以在图29的实时发布系统内使用的进程的实例。更具体来说,不管如何指派拼块3501到3532,实时发布系统2901应准备好处置外部源2906a到2906N的输入速率(和因此输入量)中的尖峰。因为实时发布系统2901实时地或准实时地显示内容,所以可能会意外地出现尖峰,且系统必须以一种方式处置那些尖峰,使得维持显示的实时性质,而不会那么快地刷新矩阵3500,以至内容无法被观看显示的某人消费。因此,图40A到40E示出当接收到太多数据时、可以由实时发布系统2901执行的方法。可以基于每个流或基于合计(即,多个流或所有流)作出是什么构成太多数据的确定。具体参考图40A,方法4的一个实施例示出实时发布系统2901可借以响应于输入速率中的尖峰的进程。在步骤4002中,作出关于输入速率是否高于所限定的阈值的确定。如果不高于所限定的阈值,那么步骤4002可以重复,直到检测到超过阈值的输入速率为止。如果输入速率超过阈值,那么方法4继续进行到步骤4004。在步骤4004中,丢弃未显示的任何内容。这导致完全不示出被丢弃的内容,其中丢失的内容的量取决于若干因素,例如输入速率、正用于那个流的拼块的数目,和那些拼块的刷新速率。具体参考图40B,方法4010的一个实施例示出实时发布系统2901可借以响应于输入速率中的尖峰的另一进程。步骤4012等同于图40A的步骤4002,且不在本实例中重复。在步骤4014中,自动将拼块添加到矩阵2900。举例来说,可以将拼块添加到矩阵2900的底部,这使得矩阵更长。由于矩阵2900是实况显示,所以应该以一种方式添加拼块,使得在发生添加时,使对观看矩阵2900的某人的任何可能的中断最小化。在一些实施例中,可以将拼块添加到矩阵2900的侧面和/或顶部,但添加到矩阵2900的底部可以减轻对观看者的中断。一旦尖峰结束,便可以移除额外的拼块,但这可以随时间进行,从而避免擦去用户可能正在观看的内容。在一些实施例中,可以在移除经高速缓冲的内容之前在拼块中使用经高速缓冲的内容,因为这将是较旧的内容,且可能对观看者没那么吸引人。观看者随后可以在矩阵上向上移动得更高,从而搜寻新内容,并且随后可以移除底部拼块。在其它实施例中,只要所添加的拼块处于显示器的可见区域中,它们便可以不被移除,但随后它们不再可见时可以被移除。具体参考图40C,方法4020的一个实施例示出实时发布系统2901可借以响应于输入速率中的尖峰的又另一进程。步骤4022等同于图40A的步骤4002,且不在本实例中重复。在步骤4024中,对内容进行高速缓冲且示出为速率减缓,但这将导致一些内容上的时间延迟。可以丢弃超过一定年龄的内容,但丢弃年龄可取决于接收到多少数据而变化。举例来说,如果流减缓到阈值以下,那么一些内容可能被高速缓冲地更长,使得可以使用看不见的内容来刷新矩阵2900,即使那个内容略微过时也如此。如果输入速率保持在阈值以上,那么可以继续丢弃更多的内容。具体参考图40D,方法4030的一个实施例示出实时发布系统2901可借以响应于输入速率中的尖峰的进程。步骤4032等同于图40A的步骤4002,且不在本实例中重复。在步骤4034中,可以将矩阵2900中的一个或多个额外拼块指派给具有输入速率尖峰的外部源2906a到2906N。举例来说,如果来自外部源2906a的输入速率已经达到尖峰,那么可以将专门指派给缓慢更新的外部源2906b的拼块指派给外部源2906a,或者来自外部源2906a的内容可以与来自外部源2906b的内容交错。一旦尖峰结束,便可以使拼块返回到它们原先被指派到的外部源。在其中将拼块随机地指派给外部源而非指派给特定外部源的配置中,可以为具有尖峰的外部源保留拼块。举例来说,特定百分比的拼块可以保持用于其它外部源,而将另一百分比的拼块特定地指派给具有尖峰的外部源。一旦尖峰结束,便可以正常分配拼块。具体参考图40E,方法4040的一个实施例示出实时发布系统2901可借以响应于输入速率中的尖峰的仍另一进程。步骤4042等同于图40A的步骤4002,且不在本实例中重复。在步骤4044中,可以改变指派给具有输入速率尖峰的外部源的一个或多个拼块的刷新速率,使得可以在相同时间量内示出更多的内容。举例来说,如果当前刷新速率是两秒,那么可以将刷新速率降低到一秒,这将使可以使用相同拼块显示的数据量加倍。如果输入速率保持高,那么可以重复地降低刷新速率定时器,直到达到限定最小刷新速率的底限为止。一旦尖峰结束,便可以使刷新速率返回到正常,但这可以逐渐地发生。如果将改变整个矩阵2900的刷新速率,那么可以跨不同的拼块分阶段地改变,直到已经改变整个矩阵为止。此分阶段的方法可用于使可能对于观看者引起的、突然改变整个矩阵2900的视觉中断最小化。如先前所陈述,图40A到40E的方法可以级联的方法组合或者同时地进行组合。方法的组合可基于若干因素,例如实际输入速率、是涉及单个外部源还是多个外部源、如何指派拼块(例如,每个外部源或跨多个外部源),涉及哪一外部源(例如,其是否为已经被指派多个拼块的外部源)、外部源的历史趋势数据(例如,对于此外部源,尖峰通常持续多长时间,以及在尖峰期间最大量是多少),和/或类似信息。举例来说,在级联方法中,可以首先对内容进行高速缓冲(图40C)。随后,如果输入速率在特定时间周期内未下降到阈值以下和/或输入速率增加,那么可以改变刷新速率(图40E)。随后,如果输入速率在特定时间周期内未下降到阈值以下和/或输入速率增加,那么可以重新指派拼块(图40D)。随后,如果输入速率在特定时间周期内未下降到阈值以下和/或输入速率增加,那么可以扩展矩阵2900(图40B)。应理解,此次序仅用于实例的目的,且可以任何次序执行图40A到40E的方法。在同时组合图40A到40E的方法的实例中,可以对内容进行高速缓冲(图40C),同时重新指派拼块(图40D),且随后重新指派的拼块可用于经高速缓冲的和/或新的内容。在另一实例中,可以改变刷新速率(图40E),同时扩展矩阵2900(图40B)。因此,可以使用许多不同的方法来处置来自外部源2906a到2906N的输入速率中的尖峰。一般来说,所述方法将针对于保留尽可能多的内容,同时显示尽可能多的实时或准实时内容。实时发布系统2901可以特定地被配置成用于外部源2906a到2906N,进而使得能够响应于外部源中的改变而优化所述系统。在一些实施例中,用户可以选择将在矩阵2900中显示的数据。举例来说,用户可以仅选择某些拼块或某些类型的内容,且实时发布系统2901随后可以根据那个选择进行调整。在其它实施例中,用户可以调整矩阵2900中的拼块。举例来说,用户可以将内容指派给某些拼块、移动拼块,和/或以其它方式修改由矩阵2900提供的视觉显示。矩阵2900表示待发布的信息的一个可能的显示格式,且可以使用许多其它格式。举例来说,可以使用直方图、维恩图、条形图、字云、滚动条、蜂巢曲线图,和/或对于正发布的内容适当的任何其它格式。在一些实施例中,可以使用三维形状,其中将信息投影到所述形状上。在这些实施例中,可以旋转所述形状来观看信息。仍在其它实施例中,实时发布系统2901可以实时地显示关于其自己的性能以及关于数据的信息。举例来说,实时发布系统2901可以显示关于以下各者的信息:每单位时间处理多少数据、丢弃多少数据,和类似信息。实时发布系统2901还可以显示因为(例如)由于信息量的原因系统无法全部显示信息而有多少相关信息未示出。举例来说,实时发布系统2901可以示出有多少推文未显示。此信息随后可用于修改实时发布系统2901正在发布的内容,使得用户可以将焦点缩小到特定内容。除了所附权利要求书中的所要求的实施例之外,以下内容还是可以用作本申请或后续分案申请中的额外权利要求的基础的实施例的列表:实施例1:一种用于在数字装置上执行的方法,其包含:运行核心进程以创建实时处理平台的平台实例,其中所述平台实例与所述数字装置上的操作系统交互,并且被配置成运行使用已经为了在所述处理平台内使用而限定的可扩展基础类别创建的任何服务实例,且其中所述核心进程包含服务管理器,其被配置成:管理由所述平台实例运行的任何服务实例;通过所述服务管理器,从对应于所述平台实例的配置信息来识别:所述平台实例被配置成运行由扩展所限定的基础服务类别的服务类别所限定的服务实例;通过所述服务管理器,从所述配置信息来识别:所述服务实例将使用由多个块类别限定的多个块实例,其中每个块类别扩展所限定的基础块类别,并且含有提供所述服务实例的处理功能的可执行指令;通过所述服务管理器起动所述服务实例,其中所述服务实例包含块路由器和路由表;通过所述块路由器起动所述块实例,其中每个块实例不知晓所述服务实例以及除了自身以外的所述多个块实例;通过所述多个块实例中的第一块实例,从在所述平台实例外部的源接收待处理的流输入数据;通过所述第一块实例处理所述流输入数据,以创建经处理的数据;通过所述第一块实例,将所述第一块实例准备好所述经处理的数据用于输出的通知发送到所述块路由器;通过所述块路由器来识别:将基于所述路由表,将来自所述第一块实例的所述经处理的数据引导到所述多个块实例中的第二块实例;通过所述块路由器,将来自所述第一块实例的所述经处理的数据引导到所述第二块实例;针对所述多个块实例中的每一个,重复处理、发送、识别和引导的步骤,直到到达最后的块实例为止,其中所述最后的块实例创建输出数据;以及通过所述最后的块实例,将所述输出数据发送到在所述平台实例外部的目的地,其中从通过第一块实例接收所述流输入数据的步骤到从所述最后的块实例发送所述输出数据的步骤中的每个步骤是实时地发生,而不使所述数据在所述平台实例内排队。实施例1+1:实施例1的方法,其进一步包含:通过所述服务管理器,从在所述平台实例外部的源接收停止命令,其中所述停止命令指示将停止所述服务实例;通过所述服务管理器将所述停止命令发送到所述块路由器;以及通过所述块路由器停止所述多个块实例。实施例1+2:实施例1或1+1中的任一者的方法,其进一步包含:通过所述第一块实例,从在所述平台实例外部的第二源接收待处理的第二流输入数据,其中紧接在将所述第一块实例准备好所述经处理的数据用于输出的所述通知发送到所述块路由器之后,接收所述第二流输入数据;通过所述第一块实例处理所述第二流输入数据,以创建第二经处理的数据;通过所述第一块实例,将所述第一块实例准备好所述第二经处理的数据用于输出的通知发送到所述块路由器;通过所述块路由器识别:将基于所述路由表将来自所述第一块实例的第二经处理的数据引导到第二块实例;通过所述块路由器,将来自所述第一块实例的所述第二经处理的数据引导到第二块实例;针对所述多个块实例中的每一个重复处理、发送、识别和引导的步骤,直到到达最后的块实例为止,其中所述最后的块实例创建第二输出数据;以及通过所述最后的块实例,将所述第二输出数据发送到在所述平台实例外部的目的地,其中从通过第一块实例接收所述第二流输入数据的步骤到从所述最后的块实例发送所述第二输出数据的步骤中的每个步骤是实时地发生,而不使所述数据在所述平台实例内排队。实施例2:一种用于在数字装置上执行的方法,其包含:运行核心进程,以创建处理平台的平台实例,其中所述平台实例与所述数字装置上的操作系统交互,并且被配置成运行使用已经为了在所述处理平台内使用而限定的可扩展基础类别创建的任何服务;通过所述核心进程,从对应于所述平台实例的配置信息来识别:所述平台实例被配置成运行由扩展所限定的基础服务类别的服务类别限定的服务,其中所述配置信息进一步识别将由所述服务使用的多个块类别,其中每个块类别扩展所限定的基础块类别,并且含有提供所述服务的处理功能的可执行指令;将所述服务类别实例化,以创建服务实例,且将所述块类别中的每一个实例化,以创建多个块实例,其中所述块实例彼此互不知晓,且其中所述服务实例被配置成在所述块实例之间引导数据;以及通过所述服务实例使用所述块实例来处理传入数据,以将所述处理功能提供给所述平台实例。实施例2+1:实施例2的方法,其进一步包含:通过所述核心进程创建服务语境,所述服务语境限定在所述服务实例外部并且可由所述服务实例存取的所述平台实例的功能;以及在将所述服务类别实例化时,将所述服务语境传递到所述服务实例。实施例2+2:实施例2+1的方法,其中创建所述服务语境包含将所述服务语境传递到模块,其中所述模块将所述服务实例使用所述模块所需的信息插入到所述服务语境中。实施例2+3:实施例2到2+2中的任一个的方法,其通过所述核心进程接收用于将所述服务类别实例化的命令。实施例2+4:实施例2到2+3中的任一个的方法,其进一步包含:通过所述核心进程接收命令以停止所述服务实例;以及通过所述核心进程停止所述服务实例,其中所述核心进程在所述服务实例已经被停止之后继续运行。实施例2+5:实施例2到2+4中的任一个的方法,其进一步包含停止所述核心进程,其中在停止所述核心进程时摧毁所述平台实例。实施例2+6:实施例2到2+5中的任一个的方法,其中所述服务实例被配置成基于路由表在所述块实例之间引导数据,其中基于所述路由表将所述块实例中的一个的发布发送到所述块实例中的另一个。实施例2+7:实施例2到2+6中的任一个的方法,其中通过所述操作系统将所述服务实例运行为与所述核心进程分开的进程。实施例2+8:实施例2到2+6中的任一个的方法,其中所述服务实例是所述核心进程的线程。实施例2+9:实施例2到2+8中的任一个的方法,其进一步包含将进入所述服务实例的所有数据转换为通用数据对象,其中在所述块实例之间仅传递所述通用数据对象。实施例2+10:实施例2到2+9中的任一个的方法,其进一步包含:通过所述核心进程从对应于所述平台实例的配置信息来识别所述平台实例被配置成运行由扩展所限定的基础服务类别的第二服务类别限定的第二服务,其中所述配置信息进一步识别将由所述第二服务使用的多个第二块类别,其中每个第二块类别扩展所限定的基础块类别并且含有提供所述第二服务的第二处理功能的可执行指令;将所述第二服务类别实例化以创建第二服务实例,且将所述第二块类别中的每一个实例化以创建作为所述第二服务实例的部分而操作的多个第二块实例,其中所述第二块实例彼此互不知晓,且其中所述第二服务实例被配置成在所述第二块实例之间引导数据;以及通过所述第二服务实例使用所述第二块实例来处理传入数据,以将所述第二处理功能提供给所述平台实例。实施例2+11:实施例2+10的方法,其中所述服务实例和所述第二服务实例在所述平台实例上同时运行。实施例2+12:实施例2+10到2+11中的任一个的方法,其中所述服务实例和所述第二服务实例彼此通信。实施例2+13:实施例2+10到2+12中的任一个的方法,其中所述服务实例和所述第二服务实例中的每一个包含通信管理器,所述通信管理器发布通信以供所预订的服务实例消费。实施例3:一种用于在数字装置上执行的方法,其包含:通过被配置成与在所述数字装置上运行的操作系统交互的平台实例来运行服务实例,所述服务实例被配置成使用路由表在向所述服务实例提供处理能力的多个块实例之间引导数据,其中每个块实例在接收到输入后,异步地执行在所述块实例内含有的任何内部指令;通过所述多个块实例中的第一块实例,从在所述平台实例外部的源接收输入数据;通过所述第一块实例处理所述输入数据,以创建经处理的数据;通过所述第一块实例,向所述服务实例通知所述经处理的数据;通过所述服务实例,确定将基于所述路由表将所述经处理的数据引导到所述多个块实例中的第二块实例;以及通过所述服务实例,将所述经处理的数据传送到所述第二块实例以供进一步处理。实施例3+1:实施例3的方法,其进一步包含通过所述服务实例存取由作为所述平台实例的核心进程的部分的模块提供的功能。实施例3+2:实施例3到3+1中的任一个的方法,其中所述服务实例包含块路由器,其中所述服务实例使用所述块路由器与所述平台实例的核心进程通信,且所述核心进程起动和停止所述服务实例。实施例3+3:实施例3+2的方法,其中所述核心进程通过所述块路由器与所述多个块实例中的至少一个通信。实施例3+4:实施例3+1到3+3中的任一个的方法,其中由用户经由所述核心进程来设定所述第一块实例的配置参数。实施例3+5:实施例3+1到3+4中的任一个的方法,其中由用户经由所述核心进程来设定所述服务实例的配置参数。实施例4:一种用于使用存储在数字装置上的可配置平台的方法,其包含:通过所述数字装置接收指令,所述指令限定将由所述可配置平台执行的服务,其中通过服务类别在所述可配置平台内表示所述服务,所述服务类别扩展为了在所述可配置平台内使用而限定的基础服务类别,其中限定所述服务包含识别将由所述服务使用的多个块,其中通过块类别,在所述可配置平台内表示每个块,所述块类别扩展为了在所述可配置平台内使用而限定的基础块类别;在所述块类别中的至少一个内限定指令,其中所述指令配置所述块类别,以执行由所述指令限定的功能;以及针对所述多个块类别中的每一个,在所述块产生输出时,在路由表内限定将把输出引导到的所述多个块中的任何另一个;以及通过所述数字装置接收用于将所述服务保存在可由所述可配置平台存取的存储器中的指令。实施例4+1:实施例4的方法,其中识别将由所述服务使用的所述多个块包含:限定将所述多个块中的至少一个存储在其处的远离所述数字装置的位置。实施例4+2:实施例4到4+1中的任一个的方法,其中识别将由所述服务使用的所述多个块包含:加载所述多个块中的曾作为消息的附件而接收的至少一个块。实施例4+3:实施例4到4+2中的任一个的方法,其进一步包含通过所述数字装置接收用于将所述服务标记为配置文件中的自动起动服务的指令。实施例4+4:实施例4到4+3中的任一个的方法,其进一步包含:接收用于运行可配置平台的指令;以及执行核心进程以创建所述可配置平台的实例。实施例4+5:实施例4到4+4中的任一个的方法,其进一步包含:通过所述核心进程接收用于运行所述服务的指令;以及通过所述核心进程起动作为服务类别的实例化的服务实例和作为块类别的实例化的多个块实例。实施例4+6:实施例4到4+5中的任一个的方法,其进一步包含通过所述核心进程提供图形用户接口,其中所述图形用户接口使得用户能够修改所述服务类别和所述多个块类别。实施例4+7:实施例4到4+6中的任一个的方法,其进一步包含通过所述核心进程提供图形用户接口,所述图形用户接口使得用户能够修改所述基础服务类别和所述多个基础块类别。实施例4+8:实施例4到4+7中的任一个的方法,其进一步包含通过所述核心进程提供图形用户接口,所述图形用户接口使得用户能够从所述可配置平台上可用的多个现有的服务选择并运行现有的服务。实施例4+9:实施例4+8的方法,其进一步包含通过所述核心进程提供图形用户接口,所述图形用户接口使得用户能够修改所述现有的服务。实施例5:一种用于使用存储在数字装置上的可配置平台的方法,其包含:通过在所述数字装置上运行的操作系统,来接收用于起动对应于所述可配置平台的实例的核心进程的指令;通过所述核心进程识别将由所述可配置平台执行的服务,其中通过服务类别在所述可配置平台内表示所述服务,所述服务类别扩展为了在所述可配置平台内使用而限定的基础服务类别;通过所述核心进程识别将由所述服务使用的多个块,其中通过块类别在所述可配置平台内表示每个块,所述块类别扩展为了在所述可配置平台内使用而限定的基础块类别;通过所述核心进程起动所述服务;通过所述服务起动所述块;以及通过所述块处理由所述可配置平台从在所述可配置平台外部的源接收的数据,其中所述处理创建输出,所述输出被发送到在所述可配置平台外部的目的地。实施例5+1:实施例5的方法,其进一步包含将来自所述核心进程的服务语境传递到所述服务,其中核心语境含有所述服务所需的配置信息。实施例5+2:实施例5到5+1中的任一个的方法,其进一步包含:通过所述服务确定所述多个块中的第一块需要模块,其中所述模块由所述核心进程提供,且被配置成提供预先限定的功能;通过所述服务初始化所述模块;以及通过所述服务将模块信息传递到所述第一块,其中所述第一块使用所述模块信息来存取所述模块的所述预先限定的功能。实施例5+3:实施例5到5+2中的任一个的方法,其进一步包含:通过所述服务确定所述服务需要模块,其中所述模块由所述核心进程提供,且被配置成提供预先限定的功能;通过所述服务初始化所述模块;以及通过所述服务使用所述模块的所述预先限定的功能。实施例5+4:实施例5到5+3中的任一个的方法,其中所述服务包含块路由器,其被配置成:从所述多个块的源块接收所述源块具有输出的通知;在对应于所述源块的路由表中查找目的地块;以及调用所述目的地块来处置来自所述源块的输出。实施例5+5:实施例5+4的方法,其中所述多个块之间的所有通信通过所述块路由器。实施例5+6:实施例5到5+5中的任一个的方法,其中被配置成将输出传递到另一块的块含有识别所述另一块的目的地信息。实施例5+7:实施例5到5+6中的任一个的方法,其进一步包含通过所述多个块中的第一块将数据转换为对应于为了在可配置平台内使用而限定的内部数据对象模板的多个数据对象,其中所述多个块之间的所有通信是基于所述内部数据对象模板。实施例5+8:实施例5到5+7中的任一个的方法,其中所述服务是所述多个服务中的第一服务,且所述方法进一步包含通过所述核心进程接收用于起动将由所述可配置平台执行的所述多个服务中的第二服务的指令,其中由扩展基础服务类别的第二服务类别在所述可配置平台内表示所述第二服务;通过所述核心进程识别将由所述第二服务使用的多个第二块,其中由扩展基础块类别的第二块类别在所述可配置平台内表示每个第二块;通过所述核心进程起动所述第二服务;以及通过所述第二服务起动所述第二块。实施例5+9:实施例5+8的方法,其进一步包含通过所述第二块处理由所述可配置平台从在所述可配置平台外部的源接收的数据,其中所述处理创建输出,所述输出被发送到在所述可配置平台外部的目的地。实施例5+10:实施例5+8到5+9中的任一个的方法,其进一步包含通过所述第二块处理从所述第一服务接收的数据,其中所述处理创建输出,所述输出被发送到在所述可配置平台外部的目的地。实施例5+11:实施例5+8到5+10中的任一个的方法,其进一步包含通过所述第二块处理从所述第一服务接收的数据,其中所述处理创建输出,所述输出被发送到所述第一服务。实施例6:一种用于使用数字装置上的可配置平台的方法,其包含:通过所述可配置平台提供运行时环境,所述运行时环境与所述数字装置上的操作系统交互,且可以在所述运行时环境内执行与所述可配置平台兼容的任何服务,其中所述运行时环境包含服务管理器,所述服务管理器被配置成管理扩展为了在所述可配置平台内使用而限定的基础服务类别的任何服务;配置文件,其识别加载到所述可配置平台中以用于在所述运行时环境内执行的任何服务;以及应用程序编程接口(API),其使得用户能够配置服务以用于在所述可配置平台内使用。实施例6+1:实施例6的方法,其进一步包含通过所述可配置平台提供将由所述服务使用的多个块,其中通过块类别在所述可配置平台内表示每个块,所述块类别扩展为了在所述可配置平台内使用而限定的基础块类别。实施例6+2:实施例6到6+1中的任一个的方法,其进一步包含通过所述可配置平台提供可由所述服务管理器存取、但不可由在所述运行时环境内执行的任何服务存取的多个核心模块。实施例6+3:实施例6到6+2中的任一个的方法,其进一步包含通过所述可配置平台提供可由所述服务管理器和在所述运行时环境内执行的任何服务存取的多个功能模块。实施例6+4:实施例6到6+3中的任一个的方法,其进一步包含加载在所述配置文件中识别的服务,并且识别将由所述服务使用的任何块,其中通过块类别在所述可配置平台内表示每个块,所述块类别扩展为了在所述可配置平台内使用而限定的基础块类别。实施例7:一种用于供存储在数字装置上的可配置平台使用的方法,其包含:通过所述可配置平台的实例存在于所述数字装置上所必需的核心进程,创建服务语境,所述服务语境包含在所述可配置平台上创建服务实例所需的信息;通过所述核心进程的服务管理器起动将由所述可配置平台执行的服务实例,其中所述服务实例是扩展为了由所述可配置平台使用而限定的基础服务类别的服务类别的实例化;以及通过基于所述服务语境的所述服务实例的块路由器,起动将由所述服务实例使用的多个块实例,其中每个块实例是扩展为了由所述可配置平台使用而限定的基础块类别的块类别的实例化,且其中每个块实例含有在那个块实例接收到输入时所执行的指令。实施例7+1:实施例7的方法,其进一步包含通过所述块路由器,基于路由表,在所述多个块实例之间发送数据,其中每个块实例不知晓其它块实例,并且块实例之间的所有通信依赖于所述块路由器。实施例7+2:实施例7到7+1中的任一个的方法,其中在所述服务实例内不发生排队。实施例7+3:实施例7到7+2中的任一个的方法,其中所述块实例中的一个使用由所述核心进程提供的模块。实施例7+4:实施例7+3的方法,其进一步包含:通过所述块路由器初始化所述模块,以供基于所述服务语境而使用;以及通过所述块路由器将关于所述模块的信息传递到使用所述模块的块实例,其中所述块实例需要关于所述模块的所述信息来使用所述模块。实施例7+5:实施例7到7+4中的任一个的方法,其中所述块路由器使用由所述核心进程提供的模块。实施例7+6:实施例7+5的方法,其进一步包含通过所述块路由器初始化所述模块以供所述块路由器基于所述服务语境而使用。实施例8:一种方法,其包含:通过块路由器,所述快路由器作为在由存储在数字装置上的可配置平台的平台实例提供的运行时环境内运行的服务实例的部分,从第一块实例接收所述第一块实例已经产生输出对象的通知,其中所述第一块实例是向所述服务实例提供处理功能的多个块实例中的一个;通过所述块路由器存取路由表,其中所述路由表将所述多个块实例中的第二块实例识别为由所述第一块实例产生的输出对象的输出目的地;以及通过所述块路由器将所述输出对象发送到所述第二块实例。实施例8+1:实施例8的方法,其中所述块实例不知晓所述多个块实例中的其它块实例。实施例8+2:实施例8到8+1中的任一个的方法,其中来自所述第一块实例的通知是对在所述服务实例内限定的方法的调用。实施例8+3:实施例8+2的方法,其中对所述方法的调用包含输出对象。实施例8+4:实施例8到8+3中的任一个的方法,其中发送所述输出对象包含执行对所述第二块实例的调用。实施例8+5:实施例8+4的方法,其中对所述第二块实例的调用包含输出对象。实施例8+6:实施例8+4到8+5中的任一个的方法,其进一步包含通过所述块路由器起动所述第二块实例的线程。实施例8+7:实施例8到8+6中的任一个的方法,其进一步包含:通过所述块路由器从所述平台实例的核心进程接收所述第一块实例的消息;以及通过所述块路由器将所述消息传递到所述第一块实例。实施例8+8:实施例8到8+7中的任一个的方法,其中所述核心进程与所述多个块实例之间的所有通信通过所述块路由器。实施例8+9:实施例8到8+8中的任一个的方法,其中所述多个块实例中的第三块实例不经过所述块路由器而与信号源和在所述平台实例外部的信号目的地中的至少一个通信。实施例8+10:实施例8到8+9中的任一个的方法,其进一步包含:通过所述块路由器接收停止的消息;以及通过所述块路由器停止所述多个块实例中的每一个。实施例8+11:实施例8到8+10中的任一个的方法,其进一步包含通过所述块路由器发布信息以供所述服务实例的预订者消费。实施例8+12:实施例8到8+11中的任一个的方法,其中所述第一块实例基于识别所述多个块实例的子组内的数据流的群组路由表,来管理所述块实例子组之间的数据流,且所述块实例子组与所述块路由器之间的所有通信通过所述第一块实例。实施例9:一种用于在数字装置上的平台内配置服务的方法,其包含:通过可配置平台提供运行时环境,所述运行时环境与所述数字装置上的操作系统交互,且可以在所述运行时环境内执行与所述可配置平台兼容的任何服务,其中所述运行时环境包含服务配置文件,所述服务配置文件含有详述在所述运行时环境内的服务的操作的信息;以及应用程序编程接口(API),其使得用户能够修改所述服务配置文件来配置所述服务;接收关于将与所述服务相关联的多个块的服务配置信息,其中所述服务配置信息识别所述多个块中的每一个的位置;以及针对所述多个块中的每个块,其中所述每个快产生输出以供所述多个块中的另一个消费,识别输出应被引导到的块;以及将所述服务配置信息保存在所述服务配置文件中,以供在所述运行时环境内起动所述服务时使用。实施例9+1:实施例9的方法,其中所述服务配置信息识别将由所述服务使用的模块,其中由核心进程在所述运行时环境内提供所述模块。实施例9+2:实施例9到9+1中的任一个的方法,其进一步包含:接收含有所述块中的一个的参数的块配置信息;以及将所述块配置信息保存在块配置文件中以供在所述运行时环境内起动所述块时使用。实施例9+3:实施例9+2的方法,其中所述块配置信息识别将由所述块使用的模块,其中由核心进程在所述运行时环境内提供所述模块。实施例9+4:实施例9到9+3中的任一个的方法,其进一步包含:接收将由所述块中的一个执行的指令;以及将所述指令保存在用于将所述块实例化的块类别文件中。实施例10:一种用于在数字装置上提供运行时环境的方法,其包含:运行平台核心,其中所述平台核心是所述数字装置上的操作系统内的第一进程,且提供所述运行时环境;运行仅可以在所述运行时环境内运行的第一服务,其中所述第一服务是所述操作系统内的第二进程,且其中所述第一服务使用第一多个可配置块来提供第一数据处理功能;以及运行仅可以在所述运行时环境内运行的第二服务,其中所述第二服务与所述第一服务同时运行,并且是所述操作系统内的第三进程,且其中所述第二服务使用第二多个可配置块来提供第二数据处理功能。实施例10+1:实施例10的方法,其进一步包含通过所述第一服务和第二服务在所述运行时环境内彼此通信。实施例10+2:实施例10到10+1中的任一个的方法,其中发生在所述运行时环境内的任何通信使用符合被配置成在所述运行时环境内使用的数据对象模板的数据对象。实施例10+3:实施例10到10+2中的任一个的方法,其进一步包含通过所述第一服务来使用由所述平台核心所支持的模块提供的功能。实施例10+4:实施例10到10+3中的任一个的方法,其中所述第一多个块和所述第二多个块中的至少一个块使用由所述第一服务和所述第二服务共享的单个块配置。实施例10+5:实施例10到10+4中的任一个的方法,其中所述第一多个块是第二进程的线程,且所述第二多个块是第三进程的线程。实施例10+6:实施例10到10+5中的任一个的方法,其中所述第一服务是扩展为了在所述运行时环境内使用而限定的基础服务类别的第一服务类别的实例化,且所述第二服务是扩展所述基础服务类别的第二服务类别的实例化。实施例10+7:实施例10+6的方法,其中所述第一服务类别等同于所述第二服务类别。实施例10+8:实施例10+6的方法,其中所述第一服务类别不同于所述第二服务类别。实施例10+9:实施例10到10+8中的任一个的方法,其中所述第一数据处理功能不同于所述第二数据处理功能。实施例10+10:实施例10到10+8中的任一个的方法,其中所述第一数据处理功能等同于所述第二数据处理功能。实施例10+11:实施例10+10的方法,其进一步包含通过所述第一服务和所述第二服务执行负载平衡,以平衡将使用所述第一处理功能和所述第二处理功能处理的输入数据的量。实施例10+12:实施例10到10+11中的任一个的方法,其进一步包含:在所述数字装置上运行第二平台核心,其中所述第二平台核心是所述数字装置上的所述操作系统内的第四进程,且提供与由所述第一进程提供的所述运行时环境分开的第二运行时环境;以及运行作为所述操作系统内的第五进程的第三服务,其中所述第三服务使用第三多个可配置块来提供第三数据处理功能。实施例10+13:实施例10+12的方法,其中所述第三服务等同于所述第一服务,且所述方法进一步包含通过所述第一服务和所述第三服务执行负载平衡,以平衡将使用所述第一处理功能和所述第三处理功能处理的输入数据的量。实施例10+14:实施例10+12到10+13中的任一个的方法,其进一步包含将来自所述第三服务的输出数据发送到所述第二服务。实施例11:一种用于在运行时配置平台实例内的服务的方法,其包含:通过在数字装置上运行且与所述数字装置的操作系统交互的平台实例,来识别将由所述平台实例运行的服务,其中所述服务是可以由所述平台实例运行的多个可用服务中的一个,且其中所述可用服务对应于单个服务类别;通过所述平台实例使用所述服务类别,将所述服务实例化;通过所述平台实例识别所述服务的配置文件,其中所述配置文件含有预先限定的服务配置信息,所述服务配置信息包含识别将由所述服务运行的多个块的块信息,其中所述块是基于可由所述可用服务中的任一个使用的对应的多个块类别,且其中所述块中的每一个当包含在所述可用服务中的一个中时提供任务特定的功能;使用来自所述配置文件的所述预先限定的服务配置信息、以及关于直到在平台实例已经开始运行之后才知晓的平台实例的动态产生的信息来配置所述服务,其中所述配置通过提供使得所述服务能够在所述块之间发送数据的多个路由方向来让所述服务准备使用所述块;以及在配置所述服务之后运行所述服务,其中当所述服务正在运行时,由所述块提供的任务特定的功能可用于所述平台实例。实施例11+1:实施例11的方法,其中所述服务类别包含至少一个可配置参数,且配置所述服务包含将配置值指派给所述可配置参数。实施例11+2:实施例11+1的方法,其中所述可配置参数限定所述块的执行规则。实施例11+3:实施例11+2的方法,其中所述执行规则确定将同步地还是异步地执行所述块。实施例11+4:实施例11+1的方法,其中所述可配置参数识别将由所述服务使用的多个块路由器中的一个,且所述块路由器负责在所述块之间传递数据。实施例11+5:实施例11到11+4中的任一个的方法,其进一步包含:将来自所述多个块类别的第一块类别的多个块中的第一块实例化;识别所述第一块的第一块配置文件;使用来自所述第一块配置文件的第一配置值来配置所述第一块的第一可配置参数;以及在所述服务内运行所述第一块。实施例11+6:实施例11+5的方法,其进一步包含:将来自所述多个块类别的第二块类别的多个块中的第二块实例化;识别所述第二块的第二块配置文件;使用来自所述第二块配置文件的第二配置值来配置所述第二块的第二可配置参数;以及在所述服务内运行所述第二块。实施例11+7:实施例11+6的方法,其中所述第一块类别和所述第二块类别是同一块类别,且由于所述第一块配置文件与所述第二块配置文件之间的差异,所述第一块在功能上不同于所述第二块。实施例11+8:实施例11到11+7中的任一个的方法,其中所述动态产生的信息识别在所述服务外部且是所述平台实例的部分的模块,其中所述模块将由所述服务使用。实施例11+9:实施例11+8的方法,其进一步包含通过所述服务将所述模块的实例实例化以供所述服务使用。实施例12:一种用于在运行时在平台实例内配置服务的方法,其包含:通过在数字装置上运行并且与所述数字装置的操作系统交互的平台实例来识别将由所述平台实例同时运行的第一服务和第二服务;通过所述平台实例使用单个服务类别将所述第一服务和所述第二服务实例化;通过所述平台实例识别第一配置文件,所述第一配置文件识别将由所述第一服务运行的多个第一块,其中所述第一块中的每一个被配置成在由所述第一服务运行时提供任务特定的功能;通过所述平台实例识别第二配置文件,所述第二配置文件识别将由所述第二服务运行的多个第二块,其中所述第二块中的每一个被配置成在由所述第二服务运行时提供任务特定的功能;使用所述第一配置文件以及关于直到在平台实例已经开始运行之后才知晓的平台实例的动态产生的信息来配置所述第一服务,其中所述配置通过提供使得所述第一服务能够在所述第一块之间发送数据的第一多个路由方向来让所述第一服务准备使用所述第一块;使用所述第二配置文件以及所述动态产生的信息来配置所述第二服务,其中所述配置通过提供使得所述第二服务能够在所述第二块之间发送数据的多个路由方向来让所述第二服务准备使用所述第二块;以及同时运行所述第一服务和所述第二服务。实施例12+1:实施例12的方法,其中配置所述第一服务包含将来自所述第一配置文件的第一配置值应用于所述第一服务的第一可配置参数,且配置所述第二服务包含将来自所述第二配置文件的第二配置值应用于所述第二服务的第二可配置参数。实施例12+2:实施例12+1的方法,其中所述第一可配置参数指示由所述第一服务使用的块路由器异步地执行所述第一块,且所述第二可配置参数指示由所述第二服务使用的块路由器同步地执行所述第二块。实施例12+3:实施例12到12+2中的任一个的方法,其中所述动态产生的信息识别作为所述平台实例的部分且在所述第一服务和所述第二服务外部的模块。实施例12+4:实施例12+3的方法,其进一步包含通过所述第一服务将所述模块的实例实例化以供所述第一服务使用。实施例13:一种用于基于优先级而显示多个媒体对象的方法,其包含:提供具有多个拼块的矩阵,其中每个拼块表示媒体对象的显示位置且被指派多个优先级水平中的一个,且其中每个优先级水平与最小持续时间和最大持续时间相关联;针对所述拼块中的每一个,跟踪拼块定时器,所述拼块定时器表示所述拼块已经显示指派给那个拼块的当前媒体对象多长时间;接收已经被指派所述多个优先级水平中的一个的第一媒体对象;确定用于所述多个拼块中的第一拼块的拼块定时器已经超过用于指派给所述拼块的优先级水平的最小持续时间;确定所述第一媒体对象的优先级水平等同于所述第一拼块的优先级水平;以及将所述第一媒体对象指派给所述第一拼块以供显示,其中通过所述第一媒体对象来取代在所述第一拼块处显示的当前媒体对象。实施例13+1:实施例13的方法,其进一步包含:接收已经被指派所述多个优先级水平中的一个的第二媒体对象;确定用于具有等同于指派给所述第二媒体对象的优先级水平的优先级水平的拼块的拼块定时器都没有超过最小持续时间;以及丢弃所述第二媒体对象,而不将所述第二媒体对象指派给所述拼块中的任一个。实施例13+2:实施例13或13+1中的任一个的方法,其中每个优先级水平进一步与具有比所述最小持续时间短的持续时间的新内容持续时间相关联,所述方法进一步包括:接收第二媒体对象,所述第二媒体对象已经被指派所述多个优先级水平中的一个,并且还已经被指派标签,所述标签指示所述第二媒体对象包含先前尚未显示的新内容;确定用于所述多个拼块中的第二拼块的拼块定时器已经超过用于指派给所述拼块的优先级水平的新内容持续时间定时器,其中由于所述标签的存在而使用所述新内容持续时间替代所述最小持续时间;确定所述第二媒体对象的优先级水平等同于所述第二拼块的优先级水平;以及将所述第二媒体对象指派给所述第二拼块以供显示,其中通过所述第二媒体对象来取代在所述第二拼块处显示的当前媒体对象。实施例13+3:实施例13+2的方法,其中当将所述第二媒体对象指派给所述第二拼块时,用于所述第二拼块的拼块定时器尚未超过最小持续时间。实施例13+4:实施例13到13+3中的任一个的方法,其进一步包含:接收第二媒体对象,所述第二媒体对象已经被指派所述多个优先级水平中的一个,并且还已经被指派标签,所述标签指示所述第二媒体对象包含优先于任何其它内容类型的极重要人物(VIP)内容;识别所述多个拼块中的具有等同于所述第二媒体对象的优先级水平的优先级水平的每个拼块;确定所识别的拼块都未度过它们的对应最小持续时间;基于至少一个所限定的取代准则,从所识别的拼块选择第二拼块来用于所述第二媒体对象;以及将所述第二媒体对象指派给所述第二拼块。实施例13+5:实施例13+4的方法,其中所述所限定的取代准则是最少量的剩余时间,且其中选择所述第二拼块包含确定所识别的拼块中的每一个的剩余时间。实施例13+6:实施例13+5的方法,其中确定所述剩余时间包含,针对每个所识别的拼块,计算在最小持续时间与最大持续时间之间限定的时间窗内剩余的时间的百分比。实施例13+7:实施例13+5的方法,其中确定所述剩余时间包含,针对每个所识别的拼块,计算在新内容持续时间与最大持续时间之间限定的窗内剩余的时间的百分比。实施例13+8:实施例13+5的方法,其中确定所述剩余时间包含,针对每个所识别的拼块,计算在最小持续时间与最大持续时间之间限定的时间窗内剩余的时间的百分比。实施例13+9:实施例13+5的方法,其中确定所述剩余时间包含,针对每个所识别的拼块,计算在新内容持续时间与最大持续时间之间限定的窗内剩余的时间的百分比。实施例13+10:实施例13到13+9中的任一个的方法,其进一步包含:确定所述多个拼块中的第二拼块已经将第二媒体对象显示了比所述第二拼块的最大持续时间长的时间周期;以及使用具有等同于所述第二拼块的优先级水平的优先级水平的下一所接收的媒体对象来取代所述第二媒体对象。实施例13+11:实施例13到13+10中的任一个的方法,其中基于媒体对象的源而向每个媒体对象指派优先级水平。实施例13+12:实施例13+11的方法,其中至少一个源是第三方站点。实施例13+13:实施例13到13+12中的任一个的方法,其中基于对应于所述媒体对象的内容的至少一个内容类型而向每个媒体对象指派优先级水平。实施例13+14:实施例13到13+13中的任一个的方法,其中每个媒体对象含有来自多个媒体源中的一个的内容,且其中每个媒体对象处于被矩阵接受的单个标准化格式,而不管所述媒体对象含有的内容如何。实施例13+15:实施例13到13+14中的任一个的方法,其进一步包含发布所述矩阵以供观看。实施例14:一种用于显示媒体对象的方法,其包含:提供具有多个拼块的矩阵,其中每个拼块表示用户可观看的显示屏上的媒体对象的显示位置,并且被指派多个优先级水平中的一个,且其中每个优先级水平与最大持续时间相关联;接收媒体对象流,其中每个媒体对象已经被指派所述多个优先级水平中的一个;针对每个拼块确定所述拼块是否已超过对应于所指派的优先级水平的最大持续时间;以及对于已超过其最大持续时间的每个拼块,使用具有与所述拼块的优先级水平匹配的优先级水平的媒体对象中的另一个来取代当前由所述拼块显示的媒体对象。实施例14+1:实施例14的方法,其进一步包含提供与所述多个拼块中的第一拼块相关联的用户可选择的区,其中用户对所述用户可选择的区的选择会防止正在所述第一拼块处显示的所述媒体对象被取代。实施例14+2:实施例14+1的方法,其中对所述用户可选择的区的重新选择会使得正在所述第一拼块处显示的所述媒体对象能够被取代。实施例14+3:实施例14到14+2中的一个的方法,其进一步包含提供与所述多个拼块中的第一拼块相关联的链接,其中所述链接识别存储在所述第一拼块处显示的媒体对象的原始源的远程位置,且其中对所述第一拼块的选择会从所述远程位置打开所述媒体对象的所述原始源。实施例14+4:实施例14到14+3中的一个的方法,其进一步包含提供覆盖所述多个拼块中的第一拼块的至少一部分的用户可选择的区,其中对所述用户可选择的区的选择会放大所述第一拼块。实施例14+5:实施例14+4的方法,其中所述矩阵在所述第一拼块被放大时重新布置,以确保所述矩阵的所有拼块都可见。实施例14+6:实施例14+4的方法,其中在放大所述第一拼块的同时,正在所述第一拼块处显示的所述媒体对象不可取代。实施例14+7:实施例14+4的方法,其进一步包含提供与所述第一拼块相关联的链接,其中所述链接识别存储在所述第一拼块处显示的媒体对象的原始源的远程位置,且其中对所述第一拼块的选择会从所述远程位置打开所述媒体对象的所述原始源。实施例14+8:实施例14+4的方法,其进一步包含丢弃没有拼块可用于其的任何媒体对象。实施例14+9:实施例14+4的方法,其中所述媒体对象中的至少一个已经被指派指示何时接收所述媒体对象的时戳,其中所述方法进一步包括与所述媒体对象一起显示所述时戳的表示。实施例14+10:实施例14+9的方法,其中所述时戳的所述表示是所述媒体对象的年龄。实施例15:一种方法,其包含:提供重复刷新的拼块的矩阵以用于向用户显示,其中每个拼块表示媒体对象的显示位置;从多个媒体源接收表示内容的媒体对象流;以及使用来自所述媒体对象流的不同媒体对象来重复地更新所述拼块中的每一个。实施例15+1:实施例15的方法,其中在媒体对象被另一媒体对象取代之前,每个拼块将所述媒体对象显示不长于所限定的最大时间量。实施例15+2:实施例15+1的方法,其中所述媒体对象会被取代,除非用户锁定拼块来防止取代发生。实施例16:一种用于在装置上使用的用于可配置处理平台的软件架构,其包括:核心,其被配置成与所述装置上的操作系统交互,其中所述核心可配置成同时运行通过配置信息限定的用于所述处理平台的多个服务中的任一个,其中将在所述处理平台上运行的每个服务是由服务类别和所述配置信息来限定,以包含一组平台特定的指令以及一组任务特定的指令,所述平台特定的指令使得所述服务能够在所述处理平台内操作,所述任务特定的指令使得所述服务能够运行向所述服务提供任务特定的功能的多个块,且其中将在所述处理平台上运行的每个块是由块类别和所述配置信息来限定,以包含一组平台特定的指令以及一组任务特定的指令,所述平台特定的指令使得所述块能够与所述处理平台内的其它块异步地且独立地操作,所述任务特定的指令使得所述块能够执行用于使用所述块的所述服务的特定的处理任务,其中通过所述配置信息来限定所述服务内的所述块的执行次序。实施例17:一种处理系统,其包括:处理器;以及存储器,其被耦合到所述处理器且含有由所述处理器执行的指令,所述指令用于执行本文中所描述的方法中的任一个或实施本文中所描述的架构。实施例18:一种计算机程序产品,其被配置成可操作以执行本文中所描述的方法中的任一个或实施本文中所描述的架构。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1