裝置的激增已經(jīng)導(dǎo)致產(chǎn)生了不斷增加的巨量數(shù)據(jù)。當(dāng)前處理方法不適合于處理此數(shù)據(jù)。因此,所需的是解決此問題的系統(tǒng)和方法。附圖簡要說明為了更完整的理解,現(xiàn)在參考結(jié)合附圖進行的以下描述,附圖中:圖1A示出具有可定制和可配置處理功能以及可配置支持功能的中立輸入/輸出(NIO)平臺的一個實施例;圖1B示出可存在于基于圖1A的NIO平臺的NIO平臺實例內(nèi)的數(shù)據(jù)路徑的一個實施例;圖1C和1D示出作為堆棧的部分的圖1A的NIO平臺的實施例;圖1E到1I示出其中可部署圖1A的NIO平臺的環(huán)境的實施例;圖1J到1L示出在其上可以運行圖1A的NIO平臺的系統(tǒng)的實施例;圖2A示出圖1A的NIO平臺的更詳細(xì)實施例;圖2B和2C示出可存在于NIO平臺實例內(nèi)的層級體系布置的實施例;圖3示出可存在于NIO平臺實例內(nèi)的服務(wù)的一個實施例;圖4A示出圖2A的NIO平臺的另一實施例;圖4B示出基于圖4A的NIO平臺的NIO平臺實例的一個實施例;圖4C示出相對于時間繪制的顯示圖4B的NIO平臺實例的核心進程和多個服務(wù)的操作的圖的一個實施例;圖5A到5C示出圖3的服務(wù)的各種實施例;圖5D和5E示出圖3的服務(wù)內(nèi)的塊如何與所述服務(wù)和所述服務(wù)內(nèi)的其它塊解耦的實施例;圖5F示出圖3的服務(wù)的實施例;圖5G示出對應(yīng)于圖5F的服務(wù)內(nèi)的塊的多個塊線程的實施例;圖6A示出可以供圖1A、2A和4A的NIO平臺使用的方法的一個實施例;圖6B到圖8示出圖6A的各個步驟的更詳細(xì)實施例;圖9A和9B示出分別從平臺角度和堆棧角度來看的圖2A的NIO平臺的另一實施例;圖9C示出可存在于圖9A和9B的NIO平臺內(nèi)的層級體系的一個實施例;圖9D示出可存在于圖9A和9B的NIO平臺內(nèi)的服務(wù)的一個實施例;圖10示出可發(fā)生在圖9A和9B的NIO平臺內(nèi)的通信的一個實施例;圖11A和11B示出可以用于圖9A和9B的NIO平臺中的消息處理模塊的實施例;圖12示出在圖9A和9B的NIO平臺內(nèi)的各種部件之間的交互的一個實施例;圖13示出當(dāng)啟動一個實例時在圖9A和9B的NIO平臺的各種部件之間的交互的一個實施例;圖14和15示出可以在圖13的交互期間使用的方法的實施例;圖16A到16D示出可以由圖9A和9B的NIO平臺的服務(wù)所使用的方法的實施例;圖16E示出可以由圖9A和9B的NIO平臺內(nèi)的塊所使用的方法的一個實施例;圖17示出顯示了用戶對圖9A和9B的NIO平臺900的觀點的環(huán)境的一個實施例;圖18示出可以用于創(chuàng)建并配置NIO平臺的工作流的一個實施例;圖19A示出在運行時在其內(nèi)配置服務(wù)的服務(wù)配置環(huán)境的一個實施例;圖19B示出在運行時在其內(nèi)配置塊的塊配置環(huán)境的一個實施例;圖20A和20B示出可以用于圖19B的塊配置環(huán)境內(nèi)的塊類別的實施例;圖21示出在其內(nèi)使用配置信息以不同方式基于同一塊類別來配置兩個塊的環(huán)境的一個實施例;圖22示出在其內(nèi)使用配置信息以不同方式基于同一服務(wù)類別來配置兩個服務(wù)的環(huán)境的一個實施例;圖23示出具有基礎(chǔ)塊類別和基于基礎(chǔ)塊類別的多個塊的環(huán)境的一個實施例;圖24和25示出使用來自圖23的環(huán)境的塊而建置的服務(wù)的實施例;圖26示出其中運行圖24和25的服務(wù)的NIO平臺被耦合到外部源和/或目的地的環(huán)境的實施例;圖27和28示出可以由圖26的NIO平臺執(zhí)行以分別創(chuàng)建并配置塊和服務(wù)的方法的實施例;圖29示出實時公布系統(tǒng)可以在其中操作的環(huán)境的一個實施例;圖30示出由形成圖29的實時公布系統(tǒng)的部分的NIO平臺提供的功能的一個實施例;圖31示出可以在圖30的NIO平臺內(nèi)使用的服務(wù)的一個實施例;圖32和33A示出圖31的服務(wù)中的一個服務(wù)的更詳細(xì)實施例;圖33B示出可以在圖31的NIO平臺內(nèi)使用的方法的一個實施例;圖34示出由服務(wù)器提供的功能的一個實施例,該服務(wù)器形成圖29的實時公布系統(tǒng)的組成部分;圖35示出可以由圖29的實時公布系統(tǒng)創(chuàng)建的矩陣的一個實施例;圖36A到36E示出可以供圖35的矩陣使用的拼塊(tile)的各種實施例;以及圖37到40E示出可以供圖29的實時公布系統(tǒng)使用的方法的實施例。詳細(xì)描述本公開針對于用于完全可配置的實時處理的系統(tǒng)和方法。應(yīng)理解,以下公開內(nèi)容提供許多不同的實施例或例子。在下文描述了部件和布置的具體例子來簡化本公開。當(dāng)然,這些僅是例子,且不希望是限制性的。另外,本公開可能在各個例子中重復(fù)參考數(shù)字和/或字母。此重復(fù)是出于簡明和清楚的目的,并且自身不指示所論述的各個實施例和/或配置之間的關(guān)系。本公開描述包含支持一個或多個服務(wù)的核心的中立輸入/輸出(NIO)平臺的各種實施例。雖然在一些實施例中平臺自身可以在技術(shù)上被視為可執(zhí)行應(yīng)用程序,但可將核心視為應(yīng)用程序引擎,其運行被稱為服務(wù)的任務(wù)特定的(taskspecific)應(yīng)用程序。使用通過核心辨識的所限定的模板來構(gòu)建所述服務(wù),但所述模板可以在一定程度上定制。核心被設(shè)計成管理并支持所述服務(wù),且所述服務(wù)繼而管理塊,所述塊向它們的相應(yīng)服務(wù)提供處理功能。由于通過NIO平臺的核心、服務(wù)和塊所提供的運行時環(huán)境的結(jié)構(gòu)和靈活性,所述平臺能夠?qū)崟r地異步地處理來自一個或多個源的任何輸入信號。參考圖1A,示出NIO平臺100的一個實施例。NIO平臺100可配置成接收任何類型的信號(包含數(shù)據(jù))來作為輸入,處理那些信號,并且產(chǎn)生任何類型的輸出。NIO平臺100能夠支持實時地或準(zhǔn)實時地接收、處理并產(chǎn)生的此進程。輸入信號可為流式(streaming)或任何其它類型的連續(xù)或非連續(xù)輸入。當(dāng)在實時地且準(zhǔn)實時地執(zhí)行處理時提到NIO平臺100時,意味著除了NIO平臺實例的輸入與輸出之間的可能的排隊以外,不存在存儲。換句話說,因為沒有存儲讀取和寫入時間,所以在NIO平臺實例的輸入與輸出之間僅存在處理時間,甚至對于進入NIO平臺100的流數(shù)據(jù)也如此。應(yīng)注意,這意味沒有辦法恢復(fù)已經(jīng)進入NIO平臺100并且已經(jīng)被處理的原始信號,除非所述原始信號是輸出的部分,或者NIO平臺100已經(jīng)被配置成保存所述原始信號。原始信號被NIO平臺100接收、處理(其可涉及改變和/或摧毀原始信號),且產(chǎn)生輸出。在除了可能的排隊以外不存在任何存儲的情況下,發(fā)生所述接收、處理以及輸出的產(chǎn)生。并非存儲且刪除原始信號,而是從不存儲原始信號。原始信號一般變得不相關(guān),因為基于原始信號的輸出才是重要的,盡管所述輸出可能含有一些或全部原始信號??梢栽谄渌胤?例如,在原始信號的源處)獲得原始信號,但可能不能從NIO平臺100恢復(fù)所述原始信號。應(yīng)理解,NIO平臺100可以被配置成在接收時或在處理期間存儲原始信號,但這與NIO平臺的執(zhí)行實時和準(zhǔn)實時處理的能力分開。舉例來說,雖然NIO平臺100在實時和準(zhǔn)實時處理期間不需要長期(例如,長于任何必要的緩沖)存儲器存儲,但如果特定應(yīng)用程序需要對存儲器(例如,硬盤驅(qū)動器、可移除存儲器,和/或遠程存儲器)進行存儲以及從存儲器進行檢索,那么會對其進行支持。NIO平臺100的內(nèi)部操作使用NIO數(shù)據(jù)對象(在本文中被稱作niogram)。傳入信號102在NIO平臺100的邊緣處被轉(zhuǎn)換為niogram,并且用于平臺內(nèi)通信和處理中。這允許NIO平臺100處置任何類型的輸入信號,而不需要改變平臺的核心功能。在其中部署多個NIO平臺的實施例中,niogram可用于平臺間通信中。niogram的使用允許NIO平臺100的核心功能以標(biāo)準(zhǔn)化方式操作,而不管niogram中含有的特定類型的信息如何。從一般系統(tǒng)的角度來看,不管輸入數(shù)據(jù)類型如何,都以相同方式執(zhí)行相同的核心操作。這意味著可以針對niogram來優(yōu)化NIO平臺100,所述niogram自身可以針對特定應(yīng)用程序的特定類型的輸入進行優(yōu)化。niogram的基本結(jié)構(gòu)被設(shè)計成允許niogram內(nèi)的信息在移動穿過NIO平臺100時發(fā)生改變。舉例來說,可以將不同類型的信息添加到niogram或者從niogram移除(例如,可以將含有來自射頻識別符(RFID)標(biāo)簽的RFID值的niogram修改成包含從其讀取標(biāo)簽的對應(yīng)產(chǎn)品的有效期)。此外,可以將多個niogram合并為單個niogram,并且可以將單個niogram分割為多個niogram。NIO平臺100還可以根據(jù)需要創(chuàng)建并摧毀niogram。創(chuàng)建niogram、摧毀niogram以及改變niogram的內(nèi)部信息的能力使得NIO平臺100能夠以許多不同方式根據(jù)語境來充實信息,而不改變niogram的基本結(jié)構(gòu),并且此充實可以實時地或準(zhǔn)實時地發(fā)生。NIO平臺100被設(shè)計成使用處理功能106和支持功能108以可定制且可配置的方式處理niogram。處理功能106一般可由用戶定制和配置。可定制意味著用戶可以修改提供處理功能106的源代碼的至少一部分。換句話說,可以在代碼層級處對確定將如何處理已經(jīng)被轉(zhuǎn)換為一個或多個niogram的輸入信號的任務(wù)特定的軟件指令直接進行存取并且進行修改??膳渲靡馕吨梢酝ㄟ^例如選擇或取消選擇功能和/或限定配置參數(shù)的值等動作來修改處理功能106。這些修改不要求對基礎(chǔ)源代碼進行直接存取或改變,并且可以使用配置文件、通過接口發(fā)出的命令和/或以其它所限定的方式,在不同時間(例如,在運行期間之前或在運行時)執(zhí)行。支持功能108一般僅可由用戶配置,其中修改被限于例如選擇或取消選擇功能和/或限定配置參數(shù)的值等動作。在其它實施例中,支持功能108也可以是可定制的。應(yīng)理解,在一些實施例中,修改處理功能106和/或支持功能108的能力可能受到限制或者不存在。支持功能108通過在運行時處置NIO平臺100的一般配置且提供用于開始和停止處理功能的管理功能,來支持處理功能106??梢詫⑺玫膎iogram轉(zhuǎn)換為任何信號類型以用于輸出104。參考圖1B,NIO平臺實例101的一個實施例示出在接收到輸入信號102時開始且繼續(xù)到產(chǎn)生輸出104的數(shù)據(jù)路徑。當(dāng)啟動圖1A的NIO平臺100時創(chuàng)建NIO平臺實例101。可在本文中將NIO平臺在啟動之前稱作“NIO平臺”,且在啟動之后稱作“NIO平臺實例”,但可互換地使用所述術(shù)語用于啟動之后的NIO平臺。如上文所描述,NIO平臺實例101沿著數(shù)據(jù)路徑在內(nèi)部使用niogram。在本例子中,可以在塊110中過濾輸入信號102以便移除噪聲,所述噪聲可包含不相關(guān)的數(shù)據(jù)、信號中的不需要的特性(例如,環(huán)境噪聲或干擾),和/或輸入信號的任何其它不想要的部分??梢栽贜IO平臺實例101的邊緣(如箭頭112指示)處丟棄被過濾的噪聲,并且不會將所述噪聲引入到NIO平臺實例101的更復(fù)雜的處理功能中。還可以使用所述過濾來丟棄信號的信息中的一些,同時保持來自所述信號的其它信息。所述過濾會節(jié)約處理時間,因為NIO平臺實例101的核心功能可以集中于具有已知結(jié)構(gòu)的相關(guān)數(shù)據(jù),以用于后過濾處理。在其中處理整個輸入信號的實施例中,可能不會發(fā)生此過濾。作為在邊緣處發(fā)生的過濾的補充或替代,過濾可以在將信號轉(zhuǎn)換為niogram之后發(fā)生在NIO平臺實例101內(nèi)部。將未丟棄的信號和/或剩余的信號信息轉(zhuǎn)換為niogram,以供在塊114中的內(nèi)部使用,并且在塊116中處理niogram??梢栽趬K118中將niogram轉(zhuǎn)換為用于輸出104的一個或多個其它格式,包含動作(例如,致動信號)。在其中輸出niogram的實施例中,將不會發(fā)生塊118的轉(zhuǎn)換步驟。參考圖1C,示出堆棧120的一個實施例。在本實例中,NIO平臺100與操作系統(tǒng)(OS)122交互,所述操作系統(tǒng)繼而與裝置124交互。所述交互可為直接的,或者可以通過一個或多個其它層,例如解譯器或虛擬機。裝置124可以是虛擬裝置或物理裝置,并且可以是獨立的或者被耦合到網(wǎng)絡(luò)。參考圖1D,示出堆棧126的另一實施例。在本實例中,NIO平臺100與軟件的較高層128a和/或軟件的較低層128b交互。換句話說,NIO平臺100可以提供堆棧126的功能的一部分,同時軟件層128a和/或128b提供堆棧的功能的其它部分。雖然未示出,但應(yīng)理解,圖1C的OS122和裝置124可以在存在軟件128b的情況下被定位在軟件層128b的下方,或者在不存在軟件層128b的情況下被直接定位在NIO平臺100的下方(如圖1C中)。參考圖1E,在一個實施例中,使用圖1A的NIO平臺100來示出環(huán)境130。如所示,NIO平臺100支持實例到實例或?qū)嵗窖b置和系統(tǒng),這使得NIO平臺100能夠根據(jù)單個應(yīng)用程序邏輯/背景要求而廣泛地或特定地預(yù)訂自或發(fā)布到一個或多個其它平臺。NIO平臺100提供所需功能,以接收、處理和/或作用于從一個或多個外部源132(如通過箭頭102表示)和/或從NIO平臺100自身(如通過箭頭134表示)接收的任何輸入信號。一旦如NIO平臺100的配置所限定來處置輸入信號,便可將輸入信號和/或可能通過處理而產(chǎn)生的其它信號輸出到一個或多個外部目的地132(如通過箭頭104表示)和/或輸出到NIO平臺100自身(如通過箭頭134表示)。在本實施例中,除了排隊(在需要時)以外,不存儲輸入信號,且不需要使用數(shù)據(jù)庫或其它永久存儲機制來用于由NIO平臺100處置的信息。可以多種方式處置排隊,包含使用存儲器/隨機存取存儲器(RAM)和/或其它機制,例如持久層(例如,SQLite持久層)。因為所接收的輸入信號被實時地或準(zhǔn)實時地處置并且NIO平臺100不受數(shù)據(jù)庫存取限制約束,所以可以比依賴于數(shù)據(jù)庫存取或者需要在處理之前存儲數(shù)據(jù)的系統(tǒng)中可以實現(xiàn)的速率高得多的速率發(fā)生吞吐。在一些實施例中,NIO平臺100根據(jù)需要分配功能和解除分配功能,進而使平臺的占用區(qū)域最小化。NIO平臺100經(jīng)由可以被配置成解決特定需要的通用架構(gòu)來提供其功能。雖然所述架構(gòu)可能被實施為專用集成電路(ASIC)或另一專用實施例,但架構(gòu)自身是可配置的,并且因此是高度靈活的。此外,所述架構(gòu)能夠在一個平臺實例中處理信號,并且隨后將經(jīng)處理的信號傳遞回到自身,以供在同一或另一平臺實例中進行進一步處理。這種在內(nèi)部與自身聯(lián)系的能力使得所述架構(gòu)能夠利用多個同時執(zhí)行的相關(guān)平臺實例。在每個平臺實例完全可配置的情況下,所述架構(gòu)能夠快速地處理大量信息,同時還提供高度可定制輸出。可以相對OS獨立的方式來實施NIO平臺100。舉例來說,可以使用例如Python等語言來實施NIO平臺100。為了提供額外的OS中立,設(shè)計決策可包含避免使用OS特定的(OSspecific)庫調(diào)用,和/或可避免包含OS特定的模塊。NIO平臺100可通過被配置成支持平臺實例、高級動態(tài)語境人工智能和/或系統(tǒng)監(jiān)視的服務(wù)來提供自知功能能力。關(guān)于實例,預(yù)先配置的服務(wù)可基于與信號類型和源、自知功能的層級以及動作相關(guān)的特定索引。所述服務(wù)可用于裝置和/或系統(tǒng)診斷以及質(zhì)量控制。關(guān)于高級動態(tài)語境人工智能,駐留在NIO平臺100內(nèi)的進程內(nèi)的定制開發(fā)的復(fù)合語境對于使用情況、業(yè)務(wù)流程、裝置或信號產(chǎn)生器的系統(tǒng),或單個裝置規(guī)格可以是特定的(specific)。關(guān)于系統(tǒng)監(jiān)視,NIO平臺100可用于監(jiān)視自身(即,NIO平臺100)的狀態(tài)或條件以作為自知系統(tǒng)。為了實現(xiàn)此監(jiān)視,可以產(chǎn)生對應(yīng)于NIO平臺100的當(dāng)前狀態(tài)的niogram。這些niogram中含有的細(xì)節(jié)的范圍可以是從NIO平臺100的中央處理單元(CPU)使用的量到從NIO平臺100的一個方面產(chǎn)生的錯誤。這些niogram隨后可以由服務(wù)處理并且與內(nèi)部動作進行組合,從而創(chuàng)建自知且有前瞻性的系統(tǒng)監(jiān)視解決方案。另外,可以設(shè)置NIO平臺100的單獨實例來應(yīng)用此系統(tǒng)監(jiān)視邏輯,并且可以在那里發(fā)送來自內(nèi)部監(jiān)視服務(wù)的niogram??梢栽谘b置124上存儲并執(zhí)行NIO平臺100。NIO平臺100可以是駐留在裝置124上的應(yīng)用程序且/或可以嵌入于裝置124中。裝置124的實例包含單板機計算(SBC)和板載計算(OBC)平臺、蜂窩電話(包含智能電話)、個人數(shù)字助理(PDA)、上網(wǎng)本、平板計算機、膝上型計算機、桌上型計算機、工作站、服務(wù)器、設(shè)備(例如,制造設(shè)備、監(jiān)視設(shè)備和安全設(shè)備)、家用電器(例如,冰箱、爐灶、烤箱、咖啡機、立體聲音響和電視機),車輛和其它移動系統(tǒng)(例如,空氣、陸地、海洋和/或空間飛行器,無論是有人駕駛還是自主的),和能夠執(zhí)行指令并且支持NIO平臺100的架構(gòu)中的一些或全部的任何其它裝置。去往和來自NIO平臺100的通信可以是直接的(例如,經(jīng)由對等網(wǎng)絡(luò)、特設(shè)網(wǎng)絡(luò),或使用直接連接)、間接的(例如,通過服務(wù)器或其它代理(例如,在客戶端-服務(wù)器模型或無線網(wǎng)絡(luò)中)),或者可以使用直接和間接通信的組合。參考圖1F,示出環(huán)境140的一個實施例,其中分布由NIO平臺100提供的功能,如分別通過裝置124a和124b上的NIO平臺100a和100b表示。雖然僅示出兩個NIO平臺100a和100b,但應(yīng)理解,可以跨許多裝置來分布所述功能。所分布的NIO平臺100a和100b可以彼此通信(如通過箭頭142和144表示)。每個所分布的NIO平臺100a和100b可以與外部源/目的地132通信,只有NIO平臺100a和100b中特定的一個可以被配置成用于與外部源/目的地132通信,或者一個NIO平臺100a或100b可以被配置成從外部源132接收通信,而NIO平臺中的另一個可以被配置成將通信發(fā)送到外部目的地132。在圖1F的另一實施例中,每個NIO平臺100a和100b可以是具有全部功能的完整平臺,并且可被配置成彼此通信和/或與外部源/目的地132通信,以便完成指定任務(wù)。在這些實施例中,一個NIO平臺100a或100b可為離線的,除非需要(例如,如果另一平臺失效或者變得過載)。在其它實施例中,雖然每個NIO平臺100a和100b提供全部功能,但可能使用不了一個或兩個平臺上的某些功能。這使得能夠在多個裝置上使用同一NIO平臺,同時仍將特定功能分配給一個或多個特定裝置。參考圖1G,示出環(huán)境150的一個實施例,其中通過提供來自一個或多個遠程位置的服務(wù)的一個或多個存儲和/或處理系統(tǒng)152來提供(例如,由云計算提供)由NIO平臺100提供的一些或全部功能。應(yīng)理解,存儲和/或處理系統(tǒng)152可具有分布式控制,其中功能是由不同實體提供并,且在NIO平臺100內(nèi)進行組合。參考圖1H,示出環(huán)境160的一個實施例,其中僅在裝置124內(nèi)使用由NIO平臺100提供的一些或全部功能。在本實施例中,裝置124不與外部源/目的地132通信,除非需要用于例如安裝、維護和/或配置等目的。參考圖1I,示出環(huán)境165的一個實施例,其中多個NIO平臺100a和100b在單個裝置124上運行。雖然僅示出兩個NIO平臺100a和100b,但應(yīng)理解,可以在單個裝置上部署NIO平臺100的許多實例。NIO平臺100a和100b可以彼此通信(如通過箭頭142和144表示)。每個所分布的NIO平臺100a和100b可以與外部源/目的地132通信,只有NIO平臺100a和100b中特定的一個可以被配置成用于與外部源/目的地132通信,或者一個NIO平臺100a或100b可以被配置成從外部源132接收通信,而NIO平臺中的另一個可以被配置成將通信發(fā)送到外部目的地132。應(yīng)理解,圖1E到1I的環(huán)境可以通過各種方式進行組合。舉例來說,NIO平臺100的功能可以分布在圖1F的裝置124a與圖1G的云152之間。參考圖1J,示出系統(tǒng)170的一個實施例。系統(tǒng)170是圖1D到1F、1H和1I的裝置124和/或圖1E到1G和1I的外部源/目的地132的一部分或全部的一個可能的實例。系統(tǒng)170可包含控制器(例如,處理器/中央處理單元(“CPU”))172、存儲器單元174、輸入/輸出(“I/O”)裝置176,和網(wǎng)絡(luò)接口178。通過數(shù)據(jù)輸送系統(tǒng)(例如,總線)180使部件172、174、176和178互連。電源(PS)182可以經(jīng)由電力輸送系統(tǒng)184(使用數(shù)據(jù)輸送系統(tǒng)180示出,但電力和數(shù)據(jù)輸送系統(tǒng)可為分開的)將電力提供給系統(tǒng)170的部件。應(yīng)理解,系統(tǒng)170可被不同地配置,且所列舉的部件中的每一個都可以實際上表示若干不同部件。舉例來說,CPU172可以實際上表示多處理器或分布式處理系統(tǒng);存儲器單元174可包含不同層級的高速緩沖存儲器、主存儲器、硬盤和遠程存儲位置;I/O裝置176可包含監(jiān)視器、鍵盤和類似者;且網(wǎng)絡(luò)接口178可包含提供到網(wǎng)絡(luò)186的一個或多個有線和/或無線連接的一個或多個網(wǎng)卡。因此,在系統(tǒng)170的配置中預(yù)期寬范圍的靈活性,其范圍可從主要配置用于單個用戶或自主操作的單個物理平臺到例如云計算系統(tǒng)等分布式多用戶平臺。系統(tǒng)170可以使用任何操作系統(tǒng)(或多個操作系統(tǒng)),包含由微軟(例如,WINDOWS)、蘋果(例如,MacOSX)、UNIX和LINUX提供的操作系統(tǒng)的各種版本,并且可以包含根據(jù)系統(tǒng)170的用途、專門為手持式裝置(例如,iOS、Android、Blackberry和/或WindowsPhone)、個人計算機、服務(wù)器和其它計算平臺開發(fā)的操作系統(tǒng)。操作系統(tǒng)以及其它指令(例如,用于電信和/或由裝置124提供的其它功能)可以存儲在存儲器單元174中,并且由處理器172執(zhí)行。舉例來說,如果系統(tǒng)170是裝置124,那么存儲器單元174可以包含用于提供NIO平臺100以及用于執(zhí)行本文中所描述的方法中的一些或全部方法的指令。網(wǎng)絡(luò)186可為單個網(wǎng)絡(luò),或者可以表示多個網(wǎng)絡(luò),包含不同類型的網(wǎng)絡(luò),無論是無線還是有線。舉例來說,裝置124可以經(jīng)由包含耦合到數(shù)據(jù)包網(wǎng)絡(luò)的蜂窩鏈路的網(wǎng)絡(luò)而耦合到外部裝置,或者可以經(jīng)由數(shù)據(jù)包鏈路進行耦合,例如耦合到數(shù)據(jù)包網(wǎng)絡(luò)或公共交換電話網(wǎng)絡(luò)(PSTN)的廣本地區(qū)域網(wǎng)絡(luò)(WLAN)。因此,可以使用許多不同網(wǎng)絡(luò)類型和配置來使裝置124與外部裝置耦合。參考圖1K,示出系統(tǒng)180的一個實施例。系統(tǒng)180是圖1D到1F、1H和1I的裝置124和/或圖1E到1G和1I的外部源/目的地132的一部分或全部的另一可能的實例。系統(tǒng)180可以類似于圖1J的系統(tǒng)170,但可能僅含有CPU172和存儲器174。例如電源182和I/O176等其它部件可在外部。在本實例中,系統(tǒng)180可能不具有網(wǎng)絡(luò)能力。在其它實施例中,系統(tǒng)180可以使用例如網(wǎng)絡(luò)接口178等網(wǎng)絡(luò)接口來接入例如網(wǎng)絡(luò)186等網(wǎng)絡(luò)。參考圖1L,示出系統(tǒng)190的一個實施例。系統(tǒng)190是圖1D到1F、1H和1I的裝置124和/或圖1E到1G和1I的外部源/目的地132的一部分或全部的另一可能的實例。系統(tǒng)190可以類似于圖1J的系統(tǒng)170,但可能僅含有CPU172。存儲器174和例如電源182和I/O176等其它部件可在外部。舉例來說,系統(tǒng)190可能依賴于外部驅(qū)動。在本實例中,系統(tǒng)190可能不具有網(wǎng)絡(luò)能力。在其它實施例中,系統(tǒng)190可以使用例如網(wǎng)絡(luò)接口178等網(wǎng)絡(luò)接口經(jīng)由例如網(wǎng)絡(luò)186等網(wǎng)絡(luò)來訪問存儲器174。參考圖2A,NIO平臺200示出圖1A的NIO平臺100的更詳細(xì)實施例。在本實例中,NIO平臺200包含兩個主要部件:用于將提供可配置的處理功能106的一個或多個服務(wù)的服務(wù)類別202,和用于將提供對于所述服務(wù)的支持功能108的核心的核心類別206。每個服務(wù)對應(yīng)于用于一個或多個塊的塊類別204,所述一個或多個塊含有用于處理niogram的所限定的任務(wù)特定的功能。核心包含:服務(wù)管理器208,其將管理服務(wù)(例如,起動和停止服務(wù));以及平臺配置信息210,其限定將如何配置NIO平臺200,例如當(dāng)啟動實例時什么服務(wù)可用。當(dāng)啟動NIO平臺200時,核心和對應(yīng)的服務(wù)形成NIO平臺200的單個實例。應(yīng)理解,NIO平臺200的多個并發(fā)實例可以在單個裝置(例如,圖1D的裝置124)上運行。每個NIO平臺實例具有其自己的核心和服務(wù)。最基本的NIO平臺實例是沒有服務(wù)的核心。將存在由核心提供的功能,但將不存在所述功能可以對其操作的服務(wù)。因為通過塊中存在的可執(zhí)行代碼來限定NIO平臺實例的處理功能,且將所述服務(wù)配置為一個或多個塊的集合,所以含有單個塊的單個服務(wù)是發(fā)生對niogram的任何處理所需的最低配置。應(yīng)理解,圖2A示出各種類別與其它部件之間的關(guān)系。舉例來說,塊類別實際上不是服務(wù)類別的部分,但塊與服務(wù)相關(guān)。此外,雖然出于此實例的目的,將服務(wù)管理器視為核心的部分(且因此使用核心類別來創(chuàng)建),但核心配置信息不是核心類別的部分,而是用于配置核心和NIO平臺200的其它部分。另外參考圖2B和2C,分別將兩個NIO平臺實例222和224的實施例示出為在啟動NIO平臺(例如,圖2A的NIO平臺200)時創(chuàng)建的層級體系。NIO平臺實例222是NIO平臺#1的實例,且NIO平臺實例224是NIO平臺#2的實例。NIO平臺#1和#2可為不同的平臺,或者可為同一平臺的不同配置。可以在單個裝置上或者在單獨的裝置上同時啟動和執(zhí)行多個NIO平臺實例,且可以單獨地關(guān)閉每個實例。NIO平臺實例可以基于同一NIO平臺,在此情況下,所述實例將在啟動時具有等同的功能??商娲?,NIO平臺實例可以基于不同的NIO平臺配置,在此情況下,實例將在啟動時具有不同的功能,其中特定實例的功能是基于基礎(chǔ)NIO平臺的特定配置。每個NIO平臺實例222和224含有核心228和一個或多個服務(wù)230,且每個服務(wù)230含有一個或多個塊232。每個NIO平臺實例222和224可以運行不同數(shù)目的服務(wù)230,且那些服務(wù)230可使用不同數(shù)目的塊232。在單個NIO平臺實例222或224內(nèi)運行的服務(wù)230可在功能上等同、在功能上不同、相關(guān)(例如,一個服務(wù)可執(zhí)行一連串任務(wù)中的一個任務(wù),且隨后另一服務(wù)可執(zhí)行下一任務(wù))和/或不相關(guān)。此層級結(jié)構(gòu)使得能夠在不同層級處訪問NIO平臺200的可配置性,所述不同層級中的每一個提供配置進程中的不同粒度水平。可以通過添加、移除和/或修改形成實例的服務(wù)230來配置每個NIO平臺實例222和224。可以通過添加、移除和/或修改形成服務(wù)230的塊232、通過修改塊232的布置來改變穿過塊232的數(shù)據(jù)路徑、通過設(shè)定對應(yīng)于所述服務(wù)的各種配置參數(shù),和/或通過使得服務(wù)230能夠使用由核心228提供的功能,來配置服務(wù)230。在一些實施例中,還可以通過添加、移除和/或修改對應(yīng)的服務(wù)類別202中含有的指令(例如,源代碼)來定制服務(wù)230??梢酝ㄟ^添加、移除和/或修改對應(yīng)的塊類別204中含有的指令(例如,源代碼)來定制塊232。還可以通過設(shè)定對應(yīng)于塊的各種配置參數(shù)來配置塊232。應(yīng)理解,一旦使用平臺配置信息210來配置,便可將NIO平臺200減小到最小占用區(qū)域。在一些實施例中,這可涉及移除或以其它方式限制可配置和/或可定制的功能,其中僅保留關(guān)于處理功能106的所限定的服務(wù)類別202和/或塊類別204。類似地,還可以從支持功能108移除未使用的模塊和/或核心部件(稍后論述)。即使使得NIO平臺200不再可由用戶定制或配置,應(yīng)理解,在一些實施例中,仍可對現(xiàn)有的服務(wù)類別202和/或塊類別204進行更新和其它改變。移除和/或以其它方式限制可配置性和/或可定制性可用于確保一旦按需要進行限定,便不改變現(xiàn)有的功能。應(yīng)理解,支持功能108將仍保留在NIO平臺100中來管理運行實例中的服務(wù)230和/或塊232。因此,可以將NIO平臺200精簡為更常規(guī)的應(yīng)用程序式樣格式,以用于為了目標(biāo)目的進行分布、安裝和/或使用,但服務(wù)230和/或塊232將仍經(jīng)由由NIO平臺200提供的核心環(huán)境來運行。另外參考圖3,使用多個塊232a、232b、…和232M(基于塊類別204)來示出服務(wù)230的一個實施例(基于如在圖2B的實例222或圖2C的224之一中啟動的圖2A的服務(wù)類別202中的一個),其中M為服務(wù)230所含有的塊的總數(shù)。可將服務(wù)230視為框架,所述框架負(fù)責(zé)將所含有的塊群組(例如,塊232a到232M)裝配為工作流,從而限定服務(wù)230內(nèi)的niogram將遵循的邏輯路徑。雖然塊232a到232M可能實際上未鏈接在服務(wù)230內(nèi),但服務(wù)230可以管理調(diào)用塊232進行處理的次序,且如此將服務(wù)230內(nèi)的niogram引導(dǎo)到適當(dāng)?shù)南乱粔K。起動服務(wù)230會使得NIO平臺200的實例能夠使用所述塊的功能來處理niogram。因此,M的值大于或等于一,因為不具有塊232的服務(wù)230將不提供功能。應(yīng)理解,服務(wù)230可以包含不一直使用的塊,例如僅在出現(xiàn)特定條件分支的情況下執(zhí)行的塊。雖然可以創(chuàng)建全部定制服務(wù)類別202和塊類別204,并且與用于定制服務(wù)230和塊232的NIO平臺200一起使用,但可以整體地或部分地預(yù)先限定一些或全部服務(wù)230和/或塊232的功能。舉例來說,可以在對應(yīng)的服務(wù)類別202中限定針對于接收和轉(zhuǎn)發(fā)特定類型的消息的服務(wù)230,源和目的地的配置參數(shù)除外。起動服務(wù)230將自動地起動將與所述服務(wù)一起使用的塊232,并且向NIO平臺200的實例提供所述服務(wù)的接收和轉(zhuǎn)發(fā)功能??梢越?jīng)由平臺配置信息210或以另一種方式(例如,通過使用通過接口發(fā)出給服務(wù)230和/或塊232的命令)添加源和目的地。在更復(fù)雜的實例中,可以通過借助提供塊類別204的原始代碼或者通過選擇預(yù)先限定的塊類別204來限定服務(wù)230內(nèi)的塊232的一個或多個塊類別204的行為,可修改很大程度上預(yù)先限定的服務(wù)230。舉例來說,服務(wù)230可以處理所接收的消息,并且根據(jù)所述消息的內(nèi)容將所述消息轉(zhuǎn)發(fā)到各種不同目的地中之一。此條件功能可以通過以下方式來實現(xiàn):寫入用于包含在用于將在服務(wù)230中使用的新塊的新塊類別204中的指令;寫入用于包含在用于已經(jīng)是服務(wù)230的部分的塊232的塊類別204中之一的指令;和/或配置已經(jīng)啟用此條件功能的現(xiàn)有塊類別204??梢栽诙鄠€平臺實例中使用單個所限定的服務(wù)230,且可以在多個服務(wù)中使用單個所限定的塊232。應(yīng)理解,通過定制和/或重新配置服務(wù)類別202/服務(wù)230來修改服務(wù)230,可要求重新起動當(dāng)前使用那個服務(wù)230的任何平臺實例,以便讓所述修改生效,因為平臺實例可能原本會繼續(xù)運行在啟動時實例化的服務(wù)230的先前版本。類似地,通過定制和/或重新配置塊類別204/服務(wù)232來修改塊232,可要求重新起動當(dāng)前使用那個塊232的任何服務(wù)230,以便讓所述修改生效,因為服務(wù)230可能原本會繼續(xù)運行在啟動時實例化的塊232的先前版本。另外參考圖4A和4B,將圖2A的NIO平臺200的另一實施例示出為啟動之前的NIO平臺400(圖4A)和啟動之后的NIO平臺實例402(圖4B)。圖4A示出NIO平臺400,其具有用于創(chuàng)建和配置NIO平臺實例402的核心228、服務(wù)230a到230N和塊232a到232M的核心類別206、服務(wù)類別202、塊類別204和配置信息210。應(yīng)理解,雖然在圖4B中未示出,但核心類別206、服務(wù)類別202、塊類別204和配置信息210一般繼續(xù)作為NIO平臺實例402的部分而存在。具體參考圖4B,可將NIO平臺實例402視為運行時環(huán)境,核心228在其內(nèi)創(chuàng)建和運行服務(wù)230a、230b、...和230N。每個服務(wù)230a到230N可以具有不同數(shù)目的塊。舉例來說,服務(wù)230a包含塊232a、232b和232c。服務(wù)230b包含單個塊232d。服務(wù)230N包含塊232e、232f、...和232M。服務(wù)230a到230N中的一個或多個可由核心228停止或起動。當(dāng)停止時,由那個服務(wù)提供的功能將不可用,直到所述服務(wù)由核心228起動為止??稍诤诵?28與服務(wù)230a到230N之間以及服務(wù)230a到230N自身之間發(fā)生通信。在本實例中,核心228和服務(wù)230a到230N的每個服務(wù)從操作系統(tǒng)/硬件角度來看是單獨的進程。因此,圖4B的NIO平臺實例402將運行N+1個進程,且操作系統(tǒng)可以與任何其它進程一樣跨多核心裝置分布所述進程。應(yīng)理解,特定服務(wù)的配置可部分取決于考慮到將創(chuàng)建的進程的數(shù)目的設(shè)計決策。舉例來說,從進程觀點來看,在一些實施例中可能需要具有眾多但更小的服務(wù),而在其它實施例中可能需要具有更少但更大的服務(wù)。NIO平臺400的可配置性使得能夠通過修改230a到230N的每個服務(wù)的功能來相對容易地實施這些決策。在其它實施例中,可將NIO平臺實例402結(jié)構(gòu)化以將核心228和/或服務(wù)230a到230N運行為線程而非進程。舉例來說,核心228可為進程,且可將服務(wù)230a到230N運行為核心進程的線程。參考圖4C,圖410的一個實施例示出相對于表示時間的軸412而繪制的圖4B的核心進程228和服務(wù)230a、230b和230N。更具體來說,圖410示出核心進程228和服務(wù)230a、230b和230N相對于彼此的停止和起動時間的實例,其中多個服務(wù)在一些時間同時運行,且其中沒有服務(wù)在其它時間運行。在時間t0處,NIO平臺實例402不運行。在時間t1處,使用如由線414指示的核心進程228來起動NIO平臺實例402。核心進程228一般在NIO平臺實例402運行的全部時間保持運行,因為NIO平臺實例402的存在需要核心進程228。應(yīng)理解,如果核心進程228崩潰,那么服務(wù)230a、230b和230N可以繼續(xù)運行,只要它們是與核心進程228分開的進程。然而,核心進程228不再可用于與服務(wù)進程通信或以其它方式控制它們,并且因此當(dāng)核心進程結(jié)束時,NIO平臺實例402不再存在,即使服務(wù)進程繼續(xù)運行也如此。如果服務(wù)230a、230b和230N是核心進程228的線程,那么服務(wù)230a、230b和230N將通常在核心進程228崩潰的情況下結(jié)束。在時間t2處,起動服務(wù)230a,如由線416指示。在時間t3處,停止服務(wù)230a,但核心進程228繼續(xù)運行,即使沒有服務(wù)在此時運行也如此。在時間t4處,起動服務(wù)230N,如由線422指示。在時間t5處,重新起動服務(wù)230a,如由線418指示。在時間t6處,起動服務(wù)230b,如由線420指示。在時間t7處,停止服務(wù)230b。在時間t8處,停止服務(wù)230a和230N。在時間t9處,停止核心進程228,這會關(guān)閉NIO平臺實例402。如果在停止核心進程228時服務(wù)仍在運行,那么核心進程228可以在停止之前關(guān)閉運行的服務(wù)。參考圖5A到5C,示出圖3的服務(wù)230的實施例。在圖2A的處理功能106中限定的任何服務(wù)230可以通過添加、移除和/或修改形成那個服務(wù)的塊232中的一個或多個來更改。服務(wù)230內(nèi)的每個塊232含有指令。特定塊232內(nèi)的指令可為簡單的或復(fù)雜的。因此,取決于所使用的塊232以及每個塊232內(nèi)含有的指令,可以許多不同方式來實施被配置成提供特定功能的特定服務(wù)230。在此方面,可將服務(wù)230視為可執(zhí)行程序,其可以許多不同方式來編寫,并且隨后由NIO平臺實例402執(zhí)行。具體參考圖5A,服務(wù)230的一個實施例是由單個塊232形成。這是具有功能的服務(wù)230的最低要求。具體參考圖5B,服務(wù)230的另一實施例是由鏈接在一起以形成塊“鏈”的兩個塊232a和232b形成。在此實施例中,塊232a饋送到塊232b中。應(yīng)理解,塊232a和232b可能實際上未鏈接在服務(wù)230內(nèi),而是服務(wù)230通過引導(dǎo)作為塊232a的輸出的niogram變?yōu)閷K232b的輸入而從操作的角度“鏈接”所述塊。具體參考圖5C,使用更復(fù)雜的塊結(jié)構(gòu)來示出服務(wù)230的又另一實施例。雖然服務(wù)230是由塊232a到232e的“鏈”構(gòu)成,但應(yīng)理解,可能不以線性方式執(zhí)行塊232a到232e。換句話說,塊232a到232e可包含改變服務(wù)230內(nèi)的執(zhí)行次序的指令。舉例來說,塊可含有條件性的指令,其中取決于如何滿足條件來選擇和執(zhí)行下一個塊。此外,應(yīng)理解,塊232a到232e實際上不需要以執(zhí)行的次序布置,且使用平臺配置信息210來限定服務(wù)230,且在一些實施例中,限定塊232a到232e之間的各種相依性。塊232a到232e以及那些塊的布置可經(jīng)過優(yōu)化,以用于與特定服務(wù)230一起使用。舉例來說,可針對對應(yīng)于服務(wù)的處理需要的特定執(zhí)行模式來優(yōu)化塊232a到232e。圖5C的塊232a到232e用于示出可能出現(xiàn)在服務(wù)230內(nèi)的各種可能的組合,但應(yīng)理解,可以使用未示出的其它組合。在本實施例中,塊232a能夠調(diào)用或以其它方式返回到自身(如由箭頭502指示)。塊232a饋送到塊232b中(如由箭頭504指示)和/或塊232c中(如由箭頭506指示)。舉例來說,塊232a可以將niogram分裂為兩個niogram??梢詫⒁粋€niogram傳遞到塊232b,且可以將另一niogram傳遞到塊232c。在另一實例中,塊232a可以含有用于條件分支的指令,且對niogram的評估可確定是否將niogram發(fā)送到塊232b或塊232c??商娲兀瑝K232a可以將niogram發(fā)送到塊232b和塊232c兩者。塊232b和232c中的一個或兩者隨后可以在接收到niogram之后對其進行過濾,或者可以將另一塊(未示出)添加在塊232b或232c中的一個或兩者之前,從而在niogram到達所述塊之前對其進行過濾。塊232b和232c中的一個或兩者可以饋送到塊232d中(如分別由箭頭508和510指示),這示出多個塊如何可以饋送到單個塊中。舉例來說,可以將來自塊232b和232c中的每一個的niogram傳遞到塊232d,在那里對niogram進行組合,或者以其它方式處理。在另一實例中,可以從塊232b和232c中的僅一個接收niogram,這取決于若干因素,例如那些塊內(nèi)的處理以及在塊232a中執(zhí)行的條件語句是否將niogram傳遞到塊232b和232c中的僅一個。塊232d饋送到塊232e中(如由箭頭512指示)。應(yīng)理解,可在整個鏈中不具有鏈接的情況下調(diào)用塊。舉例來說,塊232a可使用塊232b來獲得值(例如,執(zhí)行計算且返回值),并且隨后在返回所述值之后使用塊232c繼續(xù)執(zhí)行。在此情況下,將不存在箭頭508。塊232b返回值的方式取決于所述塊的特定實施方案。如將在下文描述,可將所述塊實施成使得通過服務(wù)將塊的輸出發(fā)送(route)到另一塊、可實施成支持塊之間的直接調(diào)用,或者可以使用用于存取塊的一個或多個命令來實施。不管實施方案如何,從此角度來看,可將塊232a到232e視為可以基于由特定塊提供的所需的功能而在程序內(nèi)調(diào)用的程序的模塊化部件。應(yīng)理解,雖然可使用塊232的復(fù)雜布置來創(chuàng)建服務(wù)230,但在一些實施例中,可能需要將塊布置在單個鏈中來創(chuàng)建經(jīng)優(yōu)化的執(zhí)行路徑。此外,在一些實施例中,可將圖5C的服務(wù)230創(chuàng)建為單個塊。雖然對服務(wù)230的輸入常常首先饋送到鏈中的初始塊(例如,塊232a),但可通過服務(wù)230內(nèi)的任何塊,基于如何配置服務(wù)230和/或塊232a到232e,來處置輸入。舉例來說,輸入可進入塊232b,且被傳遞到塊232a和/或232d。塊232b可繼而保持作為塊232a的輸出路徑的部分。這允許特定服務(wù)230內(nèi)的大量靈活性。應(yīng)理解,當(dāng)本公開涉及服務(wù)230接收輸入時,所述輸入實際上是由服務(wù)230內(nèi)的塊232接收。類似地,輸出是由服務(wù)230內(nèi)的塊232產(chǎn)生。然而,因為服務(wù)230包含在服務(wù)230內(nèi)使用的塊232,所以一般可將服務(wù)230描述為接收輸入且產(chǎn)生輸出。因此,可以許多不同方式配置單個服務(wù)230。雖然優(yōu)化可能指示用于特定用途的特定所需的服務(wù)配置,但可基于若干因素來精細(xì)調(diào)整服務(wù)230,所述因素例如為服務(wù)的所需的功能,和NIO平臺200將在其上運行的裝置124的特性(例如,例如緩存大小和處理量等存儲器限制、處理器速度、處理器核心的數(shù)目,和/或輸入數(shù)據(jù)流的數(shù)據(jù)速率)。此可配置性使得NIO平臺200能夠在需要時,通過改變服務(wù)230和塊232(可能時)而非核心228的結(jié)構(gòu),而針對許多不同環(huán)境進行優(yōu)化。參考圖5D和5E,分別示出服務(wù)230a和230b的實施例。在當(dāng)前實施例中,每個塊232從使用所述塊所借助的服務(wù)230解耦,并且從由服務(wù)230使用的其它塊232解耦。每個塊232是自含式實體,其異步地接收輸入,以由所述塊的內(nèi)部代碼限定的方式處理那個輸入,且產(chǎn)生輸出。所述塊的異步性是可能的,因為塊232不知道其為服務(wù)230的部分,或者其與作為功能鏈的部分的其它塊相關(guān)聯(lián)。塊232簡單地在數(shù)據(jù)到達時處置數(shù)據(jù)且產(chǎn)生輸出。塊的功能從服務(wù)230中的其它塊232的解耦,使得能夠再次使用每個塊232,而不必更改塊232自身內(nèi)的代碼。舉例來說,如果塊232被配置成在完成其自己的處理之后調(diào)用特定目的地塊,而且如果塊232移動到同一服務(wù)230內(nèi)的功能路徑的不同位置,那么將有可能必須針對其中使用塊232的每個服務(wù)230來修改此調(diào)用??商娲兀驗閴K232被解耦并且服務(wù)230被配置成管理塊的輸出,所以塊232可以針對不同的服務(wù)或者在同一服務(wù)內(nèi)移動期間保持不變,即使可能不同地發(fā)送其輸出也如此。通過使服務(wù)230負(fù)責(zé)塊232之間的數(shù)據(jù)流路徑,簡化了實際的塊結(jié)構(gòu),并且除了其自己的處理并且在最后向服務(wù)230通知輸出可用以外不需要注意任何事情。以此方式將塊的功能從服務(wù)230和其它塊232解耦還使得能夠為具有不同功能的另一塊換出所述塊,這使得服務(wù)修改更容易。在圖5D和5E中示出此解耦,其分別表示服務(wù)230a和230b的實施例。每個服務(wù)230a和230b具有相同數(shù)目的塊232。然而,塊的次序是不同的,并且最終的輸出是不同的。舉例來說,圖5D的服務(wù)230a具有以下功能鏈:塊232a(輸入)、塊232b(過濾)、塊232c(轉(zhuǎn)換為niogram)、塊232d(比較niogram)、塊232e(組合niogram),和塊232f(輸出為致動)。對比而言,圖5E的服務(wù)230b具有以下功能鏈:塊232a(輸入)、塊232b(過濾)、塊232c(轉(zhuǎn)換為niogram)、塊232e(組合niogram)、塊232d(比較niogram),和塊232g(輸出為電子郵件)。在下表1(針對服務(wù)230a)和表2(針對服務(wù)230b)中以源和目的地信息的形式示出這些功能鏈。舉例來說,每個服務(wù)230a和230b可管理列表,表,或具有此類信息的其它數(shù)據(jù)存儲結(jié)構(gòu)。應(yīng)理解,數(shù)據(jù)存儲結(jié)構(gòu)中的塊的實際次序可變化,只要服務(wù)230a和230b可以使用來自特定源塊的輸出告知將服務(wù)于哪個(些)目的地塊。源塊目的地塊塊232a塊232b塊232b塊232c塊232c塊232d塊232d塊232e塊232e塊232f表1源塊目的地塊塊232a塊232b塊232b塊232c塊232c塊232e塊232e塊232d塊232d塊232g表2如可看到,已經(jīng)在服務(wù)230b中更改了服務(wù)230a中的塊232d和232e的執(zhí)行次序。因為塊被解耦,所以可以簡單地通過修改服務(wù)230b中的塊(例如,源/目的地對)的次序來完成更改,并且不需要對塊自身或者對塊232d和232e前面或后面的塊進行改變。兩個服務(wù)230a和230b之間的另一差異在于,圖5E的輸出塊發(fā)送電子郵件,而非圖5D的致動。一種執(zhí)行功能中的此改變的方式是為圖5E的塊232g換出圖5D的塊232f。當(dāng)塊232f和232g僅含有為了它們的目的所需的特定功能時,可以這樣做。另一種執(zhí)行功能中的此改變的方式將是修改塊232f以向其給予塊232g的所需的功能,或者創(chuàng)建具有所需的功能的新塊。又另一種方式將是設(shè)定塊232f的配置參數(shù)來選擇所需的功能,假設(shè)塊232f已經(jīng)含有用于產(chǎn)生致動和電子郵件兩者來作為輸出的功能。不管針對塊232f和232g實施功能的方式如何,塊的解耦方面意味著前面的塊232e(圖5D)或232d(圖5E)不知道改變且不受到影響。另外參考圖5F和5G,示出服務(wù)230(圖5F)和多個塊線程(圖5G)的實施例。在本實例中,服務(wù)230包含五個塊232a到232e,其還可分別被稱作塊1到5。由于塊232a到232e的異步性質(zhì),所以服務(wù)230中的塊232a到232e中的一些或全部可以同時處理niogram。換句話說,不同的niogram可以由單個服務(wù)230的不同塊232a到232e同時處理。此外,由于線程處理,所以單個塊232a到232e可以同時處理多個niogram。同時處理多個niogram的能力可以增加服務(wù)230的處理量。通過在多個并發(fā)線程中執(zhí)行塊的功能來復(fù)制塊232a到232e中的一個或多個塊的能力使得服務(wù)230能夠按需要動態(tài)地縮放其處理容量。舉例來說,這允許服務(wù)230增加其處理容量來處置輸入浪涌,并且隨后一旦浪涌平息便減小其處理容量。塊232a到232e的每個塊花費一段時間(例如,一秒或一秒的分?jǐn)?shù))來處理單個信號或niogram,但應(yīng)理解,特定塊的實際速率可取決于若干因素而變化,所述因素例如為塊的復(fù)雜性、niogram的內(nèi)容、服務(wù)230在其上運行的裝置的處理器速度、處理器核心的數(shù)目,和/或緩存的大小。出于實例的目的,塊232a能夠在0.5秒內(nèi)處理信號并且產(chǎn)生niogram的輸出,塊232b能夠在1.5秒內(nèi)處理niogram,塊232c能夠在1.0秒內(nèi)處理niogram,塊232d能夠在0.5秒內(nèi)處理niogram,且塊232e能夠在1.0秒內(nèi)處理niogram。如果每個塊僅可存在一個線程,假設(shè)對服務(wù)230的輸入速率高于最慢的塊的處理速率,那么花費最長時間來處理信號或niogram的塊將確定服務(wù)230的處理量。在此情況下,塊232b將是瓶頸,并且在塊232a到232e的每個塊僅存在一個線程的情況下,將把服務(wù)的處理量限制為每1.5秒一個niogram。如果塊232b不是瓶頸,那么塊232c和232e將是瓶頸。塊232a和232d將不是瓶頸,因為它們比其它塊處理得更快。在每個塊232a到232e僅一個線程的情況下,服務(wù)230將每1.5秒處理五個niogram(例如,每個塊232a到232e中一個niogram),且具有每1.5秒一個niogram的輸出,但這將不是高效的,因為五個塊中的四個塊將花時間等待塊232b。一種解決此問題的方式將是把塊232a到232e構(gòu)建成使得服務(wù)230中的所有塊以大致相同的速率處理niogram。然而,這是處置問題的相對低效的方式,因為任何改變都可能會影響一個或多個塊的處理速率,并且將必須以此方式平衡每個新服務(wù)。這種方法將會使NIO平臺200內(nèi)的服務(wù)的設(shè)計和實施復(fù)雜化。因此,如圖5G中所示,NIO平臺200被設(shè)計成使得服務(wù)230可以利用單個塊的并發(fā)線程,這允許服務(wù)230按需要動態(tài)地縮放其處理容量。繼續(xù)先前實例,塊1以每niogram0.5秒的速度執(zhí)行,因此其每秒處理兩個信號,并且每秒輸出兩個niogram。假設(shè)塊1以每0.5秒一個niogram的穩(wěn)定速率輸出其niogram。在本實例中使用這個以及其它簡化(例如,以秒測得的塊執(zhí)行速度)來用于示出的目的,并且應(yīng)理解,輸入可不規(guī)則、處理可以發(fā)生得快得多,并且實際執(zhí)行服務(wù)內(nèi)的線程處理可能復(fù)雜得多。塊2運行了三個線程1、2和3。應(yīng)注意,塊2的每個線程僅處理一個niogram,并且將需要總共三個并發(fā)線程來在塊2所需的1.5秒處理時間期間處理由塊1輸出的三個niogram。塊3運行了兩個線程1和2。塊4僅運行了線程1。塊5運行了兩個線程1和2。如果輸入減少,那么線程的數(shù)目可減小。如果輸入速率下降到每1.5秒一個信號或更少,那么將存在每個塊的僅單個線程。如果輸入速率增加,那么線程的數(shù)目可增加,并且塊1和5也可以具有額外的線程。因此,NIO平臺200能夠動態(tài)地縮放其處理容量來處置例如變化的輸入速率等情境。在其中競爭條件或類似線程沖突問題可能呈現(xiàn)同時執(zhí)行的線程之間的問題的情況下,可使用資源鎖定和解鎖。舉例來說,如果塊5線程1和2將寫入到文件以作為輸出,那么可能不希望允許它們兩者同時寫入到文件。因此,一個線程可獲取鎖、寫入到文件,且隨后釋放鎖。另一線程無法寫入到文件,直到鎖被釋放。在其它情況下,競爭條件或其它線程沖突問題可能不是關(guān)注點。應(yīng)注意,雖然在本實施例中將服務(wù)內(nèi)交互解耦,但某些塊232可能知道服務(wù)230外部的源和/或目的地。舉例來說,塊232a可被配置成輪詢數(shù)據(jù)源或以其它方式從數(shù)據(jù)源抽取數(shù)據(jù),并且將需要知道所述源(例如,所述源的網(wǎng)絡(luò)地址)以便完成其目的。同樣,塊232e和232f可被配置成知道目的地。應(yīng)理解,一些實施例可以使用以塊負(fù)責(zé)調(diào)用下一塊的方式實施的塊232。換句話說,可耦合塊232,其中塊知道其應(yīng)將其輸出傳遞到的下一塊。舉例來說,塊232可含有識別將把輸出發(fā)送到的另一塊的指令。塊232隨后可以在輸出可用時執(zhí)行那些指令,并且直接調(diào)用下一塊,而不需要服務(wù)230處置輸出。在這些實施例中,塊232仍可以異步的方式執(zhí)行。雖然此實施方案在本申請的范圍內(nèi),但由于將由此實施方案導(dǎo)致的額外的復(fù)雜性和可重用性的缺乏,其不在此實施例中使用。參考圖6A,方法600示出可以由圖1B的NIO平臺實例101或圖4B的NIO平臺實例402執(zhí)行的進程的一個實施例。在步驟602中,啟動平臺實例。在步驟604中,可配置一個或多個服務(wù)和/或塊。舉例來說,可使用定制代碼和/或配置參數(shù)來配置塊232,并且可通過將各種塊指派給服務(wù)230且限定那些塊之間的數(shù)據(jù)流,和/或通過設(shè)定各種配置參數(shù),來配置所述服務(wù)。在步驟606中,起動所配置的服務(wù)230和塊232中的一個或多個。在步驟608中,如實例中的服務(wù)230和塊232所限定來處理輸入數(shù)據(jù)。在其它實施例中,可以在啟動平臺實例之前配置一個或多個服務(wù)和/或塊。參考圖6B,方法610示出圖6A的步驟604的更詳細(xì)實施例。在步驟612中,選擇或限定一個或多個塊232以用于服務(wù)230中。舉例來說,可選擇預(yù)先限定的塊232以用于以它們的當(dāng)前形式使用,或者可以經(jīng)過選擇和修改。還可以通過將指令插入到空白塊中并且將所述塊保存為新塊而創(chuàng)建定制塊232。在步驟614中,通過創(chuàng)建新服務(wù)并且使用識別待使用的塊232和那些塊232的布置(例如,數(shù)據(jù)流)的信息來配置所述服務(wù)而限定服務(wù)230。還可以設(shè)定用于服務(wù)230的配置參數(shù)。在其它實施例中,可以通過設(shè)定與服務(wù)230相關(guān)聯(lián)的配置參數(shù)和/或通過添加、移除和/或修改塊以及通過修改針對塊232限定的數(shù)據(jù)流,而配置現(xiàn)有的服務(wù)230。在步驟616中,保存服務(wù)230。應(yīng)理解,如果將無修改地使用現(xiàn)有的服務(wù)230,那么方法610將僅涉及選擇服務(wù)230來使用,因為對應(yīng)的塊232將已經(jīng)與服務(wù)230相關(guān)聯(lián)。在一些實施例中,可以在選擇或限定塊232之前創(chuàng)建服務(wù)230,并且隨后可以使用塊和其它信息來更新服務(wù)。參考圖7,方法700示出圖6A的步驟602和606的更詳細(xì)實施例。在步驟702中,啟動平臺實例,其包含啟動核心進程。在步驟704中,核心進程使用可用的配置信息來發(fā)現(xiàn)平臺實例的服務(wù)230。除了其它項目之外,所述配置信息還識別是否任何服務(wù)230被配置成自動起動(auto-start),如步驟706所表示。如果一個或多個服務(wù)230被配置成自動起動,那么方法700移動到步驟708。在步驟708中,在不需要額外的起動命令的情況下起動服務(wù),并且方法700隨后移動到步驟710。如果沒有服務(wù)230被配置成自動起動,那么方法700從步驟706移動到步驟710。在步驟710中,作出關(guān)于是否已經(jīng)接收到任何命令的確定。如果尚未接收到命令,那么可重復(fù)步驟710,直到接收到命令為止。如果已經(jīng)接收到命令,那么方法700移動到步驟712。在步驟712中,作出關(guān)于是否已經(jīng)接收到任何服務(wù)起動/停止命令的確定。換句話說,是否已經(jīng)接收到起動服務(wù)230或者停止同時運行的服務(wù)230的命令。如果步驟712的確定指示已經(jīng)接收到起動或停止命令,那么方法700繼續(xù)進行到步驟714。在步驟714中,作出關(guān)于命令是起動命令還是停止命令的確定。如果步驟714的確定指示接收到停止命令,那么方法700繼續(xù)進行到步驟716,其中停止在停止命令中識別的服務(wù)。如果步驟714的確定指示接收到起動命令,那么方法700繼續(xù)進行到步驟718,其中起動在起動命令中識別的服務(wù)。在步驟716或步驟718的執(zhí)行之后,方法700返回到步驟710。如果步驟712的確定指示尚未接收到起動或停止命令,那么方法700繼續(xù)進行到步驟720。在步驟720中,作出關(guān)于是否已經(jīng)接收到關(guān)閉平臺實例的命令的確定。如果步驟720的確定指示接收到關(guān)閉命令,那么方法700繼續(xù)進行到步驟722,其中關(guān)閉平臺實例。這可能需要在關(guān)閉平臺實例之前關(guān)閉任何運行的服務(wù)230。如果步驟720的確定指示未接收到關(guān)閉命令,那么方法700繼續(xù)進行到步驟724。在步驟724中,執(zhí)行命令(其不是服務(wù)停止/起動命令或關(guān)閉實例命令)。方法700隨后返回到步驟710。方法700可以從步驟710重復(fù)多次,在請求時起動和停止服務(wù)和/或執(zhí)行其它命令,直到關(guān)閉平臺實例為止。應(yīng)理解,圖7中的一些步驟的次序可以變化,例如步驟712、720和724的次序。此外,未示出一些步驟,例如用于處置錯誤(例如,對無效命令的請求)的步驟。參考圖8,方法800示出圖6A的步驟608的更詳細(xì)實施例。在步驟802中,如NIO平臺實例的配置所限定的,接收一個或多個輸入信號流。舉例來說,NIO平臺實例402可被配置成從一個或多個流源抽取和/或接收數(shù)據(jù)。這些信號流可含有任何類型的模擬和/或數(shù)字信號,并且可以含有數(shù)據(jù)。在步驟804中,如NIO平臺實例的配置所限定的,實時地從信號流提取信號。此步驟可包含進行過濾,以從相關(guān)的信號信息分離噪聲。在步驟806中,如NIO平臺實例的配置所限定的,將所提取的信號轉(zhuǎn)換為niogram,以進行內(nèi)部處理。在步驟808中,執(zhí)行內(nèi)部處理,其可包含實時語境充實。所發(fā)生的特定處理和語境充實(在適用時)取決于NIO平臺實例402的配置。在步驟810中,如平臺實例的配置所限定的,由NIO平臺實例402產(chǎn)生輸出。所述輸出可以niogram和/或任何類型的信號的形式呈現(xiàn),包含任何格式類型的數(shù)據(jù)和/或致動信號。參考圖9A和9B,NIO平臺900示出從平臺角度(圖9A)和堆棧角度(圖9B)來看的圖1A的NIO平臺100、圖2A的NIO平臺200或圖4A的NIO平臺400的更詳細(xì)實施例。出于實例的目的,以編程語言Python編寫NIO平臺900,但應(yīng)理解,可以使用任何合適的編程語言,包含(但不限于)例如C++等語言。將NIO平臺900建置在核心906上。當(dāng)啟動時,核心進程創(chuàng)建核心服務(wù)器(在本文一般被稱作核心),其形成NIO平臺900的基礎(chǔ)結(jié)構(gòu)。從功能角度來看,服務(wù)部件902包含服務(wù)916和塊918,即使在圖9B的堆棧中分開地示出服務(wù)902和塊918也如此。如先前所描述,服務(wù)部件902通過使得能夠限定和改變塊和服務(wù)功能而負(fù)責(zé)用戶限定的功能。服務(wù)部件902中的大多功能可為用戶特定的,這允許高度定制。在本實例中,將服務(wù)部件902提供為服務(wù)類別917,其限定如何創(chuàng)建和執(zhí)行服務(wù)916。服務(wù)916的執(zhí)行包含發(fā)送信號、執(zhí)行命令,以及限定類別結(jié)構(gòu)??蓪⑿纬煞?wù)部件902的服務(wù)類別917中的一些或全部進行擴展以限定新的功能。這以中立的方式提供大量靈活性,因為用戶可以通過服務(wù)部件902限定所需的任何功能,并且將通過NIO平臺900執(zhí)行功能。一般來說,一個平臺實例中的服務(wù)部件902不依賴于或者知道另一平臺實例的服務(wù)部件,這允許在不必考慮配置將如何影響其它平臺實例的情況下配置每個特定平臺實例。此外,改變服務(wù)部件902中的功能對核心906沒有影響。這確保不必修改核心906來與服務(wù)部件902兼容。在本實例中,從功能角度來看,服務(wù)部件902包含塊918、塊類別917、塊實例(還被簡稱為“塊”)、塊群組、命令、服務(wù)916,和niogram。在NIO平臺900中,塊類別919可包含用于定制塊934和具有預(yù)先限定的功能的塊(例如,RFID塊924、短消息服務(wù)(SMS)塊926、傳感器塊928、可編程邏輯控制器(PLC)塊930和全球定位衛(wèi)星(GPS)塊932)兩者的類別。雖然未示出,但應(yīng)理解,可限定許多其它塊918來用于與使用以下各項的系統(tǒng)一起使用:電子產(chǎn)品碼(EPC)(新澤西州勞倫斯維爾市的EPCglobalInc.的商標(biāo))、低層級讀取器協(xié)議(LLRP)信息、電子郵件(例如,簡單郵件傳送協(xié)議(SMTP))、超文本傳送協(xié)議(HTTP)文檔,和/或任何其它協(xié)議。塊919是指定塊實例的元數(shù)據(jù)模板和計算功能的類別。在本實例中,塊918是由擴展BaseBlock類別的塊類別919建置,并且可以通過超馳由BaseBlock類別提供的以下五種基本方法中的任一個來指定定制行為:BaseBlock.initialize、BaseBlock.configure、BaseBlock.start、BaseBlock.stop和BaseBlock.processSignals。這些方法由對應(yīng)于塊918的服務(wù)916使用。調(diào)用BaseBlock.initialize方法,以使用對應(yīng)的塊類別919來將塊918實例化。調(diào)用BaseBlock.configure方法,以使用所保存的塊配置來在初始化之后配置塊918。調(diào)用BaseBlock.start方法,以在實例化和配置之后起動塊918。調(diào)用BaseBlock.stop方法,以停止塊918(例如,當(dāng)已經(jīng)停止所含有的服務(wù)916時)。BaseBlock.processSignals含有由塊918提供的主要處理功能。BaseBlock.processSignals方法處理(有可能清空)傳入信號的列表,并且在(例如,經(jīng)由下文論述的notifySignals方法)完成時,通知服務(wù)916。當(dāng)從塊類別919將塊918實例化時創(chuàng)建塊實例。可將塊實例視為NIO平臺900中的基本計算單元,并且可如實例化的塊類別919所規(guī)定的,進行定制和配置。塊實例僅存在于服務(wù)916內(nèi)部。因此,當(dāng)起動或停止服務(wù)916時,也起動或停止那個服務(wù)916內(nèi)部的塊918。在NIO平臺900的本實例中,不存在塊918在服務(wù)916外部運行的概念。用于配置塊918的塊配置可再用于不同的服務(wù)916中,并且可被視為塊918的所保存的配置。當(dāng)改變塊918的配置時,將針對含有所述塊的所有服務(wù)916中的所有塊918來改變所述配置。然而,如果服務(wù)916正在運行,那么可能僅在重新起動服務(wù)916之后更新正在運行的塊實例的配置。在其它實施例中,可以在不重新起動服務(wù)916的情況下更新塊實例。舉例來說,如果塊實例當(dāng)前不由服務(wù)916使用,那么可以停止塊實例、使用新的塊配置進行重新配置,并且重新起動。替代地,如果不在使用中,那么可以摧毀塊實例,并且可以使用新的塊配置將新的塊實例實例化。在這些實施例中,服務(wù)916可以持續(xù)運行或者可以暫停,而非停止并重新起動。外面的代理(例如,其它服務(wù)和/或外部API)可以經(jīng)由命令A(yù)PI(下文論述)來修改特定塊918的行為。在命令A(yù)PI內(nèi),可以通過服務(wù)層級塊別名和/或塊群組層級來參考塊實例。出于此原因,在本實例中不需要全局獨特的塊識別符,但它們可能用于一些實施例中。塊實例可以直接接收和發(fā)送信號,而不經(jīng)過服務(wù)916。在此方面,塊918可用作接口,信號可通過所述接口進入NIO平臺900,并且從NIO平臺900發(fā)送。另外參考圖9C,將層級體系990的一個實施例示出為具有單個服務(wù)916、塊918和塊群組992與994。塊群組提供可以與其它塊一樣落入服務(wù)916中的塊配置的可再使用的組件。塊群組的配置之所以裝配服務(wù)916的原因在于存在限定塊918之間的niogram流的塊列表和塊映射。每當(dāng)這些內(nèi)部塊中的一個產(chǎn)生niogram時,塊群組的邏輯處置那些niogram到鏈中的接下來的塊的路由,類似于服務(wù)916將如何處置此類路由。舉例來說,塊群組可包含一個或多個控制器(例如,一個或多個塊或其它控制機制),其含有用于處置塊群組內(nèi)的路由來控制塊群組內(nèi)的數(shù)據(jù)流的邏輯。在這些實施例中,服務(wù)916可以將塊群組的控制塊視為服務(wù)916內(nèi)的僅另一塊,并且可以就像其它非群集塊一樣與所述控制塊通信。在本實施例中,塊群組992和994特定地限定niogram的進入點和退出點。對比而言,niogram可以通過任何恰當(dāng)?shù)嘏渲玫膲K918來進入和離開服務(wù)916。在其它實施例中,塊群組992和994可能不特定地限定這些進入點和退出點。塊群組在一些實施例中可以嵌套,其中塊群組形成另一塊群組的部分。這在圖9C中示出為塊群組994嵌套在塊群組992內(nèi)部。嵌套的塊群組僅可以通過較高層級塊群組與服務(wù)916通信。舉例來說,塊群組994僅可以通過塊群組992而非直接地與服務(wù)916通信。在其它實施例中,服務(wù)916可以具有對嵌套的塊群組的直接存取權(quán)。由于塊群組將在服務(wù)916內(nèi)部使用,所以服務(wù)916可能需要存取內(nèi)部塊918的命令(稍后論述)。在NIO平臺900的本實例中,這可以通過限定塊群組的配置內(nèi)部的命令映射來完成。在限定這些映射之后,當(dāng)對塊群組調(diào)用某一命令時,所述塊群組知道將命令按序傳遞到內(nèi)部塊中的一個。應(yīng)理解,不是每個內(nèi)部塊命令都可能需要暴露于塊群組的命令映射中的服務(wù)916。因此,可以基于若干因素來提供存取,所述因素例如為塊群組的特定功能以及服務(wù)916如何使用那個功能。雖然塊918具有用于niogram的特定進入點和退出點,但塊群組可以具有一個以上進入點和/或退出點。更具體來說,塊918僅具有一個可能的進入點來供服務(wù)鏈中的先前塊918使用。對比而言,塊群組具有可被視為niogram處理的開始點的許多塊918。結(jié)果,塊群組的配置選項中的一者限定niogram處理的一個或多個開始點。隨后,當(dāng)服務(wù)916將niogram傳遞到塊群組時,將把那些niogram轉(zhuǎn)發(fā)到開始點列表中的每個塊918。類似地,塊群組可被配置成限定結(jié)束點列表。當(dāng)此列表中指定的塊918產(chǎn)生niogram時,塊群組的邏輯處置向母服務(wù)916和/或母塊群組通知那些niogram的進程。出于實例的目的,塊群組的一個實施例可包含各種配置選項,例如塊、塊映射(blockMappings)、命令映射(commandMappings)、起動點(startPoints)和結(jié)束點(endPoints)。對象“塊”提供塊群組內(nèi)的所有塊918的塊名稱到每個塊918的唯一塊別名的映射。對象“blockMappings”提供塊別名到屬于塊群組的鏈的接下來的塊別名的列表的映射(即,哪一塊918饋送到哪一塊中)。對象“commandMappings”提供命令到內(nèi)部塊命令的映射。陣列“startPoints”是限定應(yīng)該用作塊群組的開始點的塊別名的字符串陣列。當(dāng)將niogram從服務(wù)916遞送到塊群組時,在startPoints陣列中列舉的塊918將接收用于處理的niogram。陣列endPoints是限定應(yīng)該用作塊群組的結(jié)束點的塊別名的字符串陣列。當(dāng)endPoints陣列中列舉的塊918產(chǎn)生niogram時,通知將在塊群組外部向上傳播。另外參考圖9D,如先前所描述,服務(wù)916是NIO平臺的可配置處理功能的主要組織部件。每個服務(wù)916維護塊路由器921、用于每個塊918a到918M的塊控制器922、其自己的配置參數(shù)、用于那個服務(wù)的塊實例的列表,和塊別名的關(guān)聯(lián)性列表。在其中服務(wù)916是進程的本實施例中,服務(wù)進程可處置服務(wù)916與服務(wù)管理器914之間的所有通信。在其它實施例中,塊路由器921或服務(wù)916內(nèi)的另一部件可處置這些通信。塊控制器922a到922M用作塊路由器921與其相應(yīng)的塊918a到918M之間的中介。在執(zhí)行此中介功能時,塊控制器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之間的通信,而是將從服務(wù)916移除由塊控制器922a到922M提供的功能,除非那個功能包含在所述服務(wù)中的其他地方(例如,在塊路由器921和/或塊918a到918M中)。塊控制器922a到922M可被配置成針對它們的相應(yīng)的塊918a到918c執(zhí)行錯誤處置和/或其它功能。一般來說,僅許多塊或所有塊有可能需要的功能可能會由塊控制器922a到922M提供。這使得通用塊控制器能夠用于塊918,而不管那個特定塊的功能如何。因此,每個塊控制器922a到922M在本實例中是等同的。在其它實施例中,基于特定塊的需要和/或其它準(zhǔn)則,具有不同配置的塊控制器可用于不同的塊。塊控制器922a到922M可被配置成作出關(guān)于是否將信息傳遞到塊路由器921的某些決策。舉例來說,當(dāng)塊918a引發(fā)錯誤時,塊控制器922a捕獲到所述錯誤。塊控制器922a隨后可以決定如何處置所述錯誤,包含將所述錯誤傳遞到塊路由器921、忽略所述錯誤,和/或采取其它動作。舉例來說,如果所述錯誤指示塊實例918a已經(jīng)停止工作,那么塊控制器922a可以前瞻性地通知塊路由器921,或者可以等待通知塊路由器921,直到塊路由器921試圖使用所述塊實例為止。移除塊控制器922a將移除此錯誤處置功能,使得當(dāng)塊918a引發(fā)錯誤時,塊路由器921將捕獲到所述錯誤。塊路由器921通過限定服務(wù)916內(nèi)的塊918a到918M之間的niogram流來處置塊918a到918M之間的數(shù)據(jù)流。更具體來說,通過塊路由器921經(jīng)由Blockrouter.notifySignals()方法和processSignals()方法來管理服務(wù)916內(nèi)的塊實例之間的通信。Blockrouter.notifySignals()調(diào)用是由準(zhǔn)備好輸出的塊918發(fā)出。Blockrouter.notifySignals()方法識別源塊,并且含有形成輸出的niogram。舉例來說,可以將Blockrouter.notifySignals()實施為Blockrouter.notifySignals(源塊識別符,niogram)。在當(dāng)前實施例中,每當(dāng)服務(wù)916內(nèi)的塊918具有輸出、且所述塊根本不需要知道所述服務(wù)時,作出此調(diào)用。換句話說,塊918接收輸入、進程、輸入、調(diào)用Blockrouter.notifySignals(),且甚至在不知道其為服務(wù)的部分的情況下進行。在其它實施例中,塊918可能知道它是其一部分的服務(wù)916,這使得塊918能夠向特定服務(wù)916通知信號。雖然在本實施例中將輸出自身作為方法調(diào)用中的參數(shù)進行傳遞,但應(yīng)理解,可使用其它進程來傳送輸出。舉例來說,可傳遞對輸出的指針而非輸出自身。當(dāng)調(diào)用Blockrouter.notifySignals()時,塊路由器921查找路由表中的源塊918,以確定輸出應(yīng)被引導(dǎo)到的目的地塊918。塊路由器921隨后接連地對接下來的塊中的每一者調(diào)用processSignals()。processSignals()方法識別目的地塊且含有待處理的niogram(例如,作為源塊的輸出的niogram)。舉例來說,可以將processSignals()方法實施為processSignals(目的地塊識別符,niogram)。雖然在本實施例中將niogram自身作為方法調(diào)用中的參數(shù)進行傳遞,但應(yīng)理解,可使用其它進程來傳送niogram。舉例來說,可傳遞對niogram的指針而非niogram自身。通過對processSignals()的每次調(diào)用,塊路由器921可以啟動服務(wù)進程的新線程中的被調(diào)用的塊實例。在本實例中,塊918異步地操作(即,每個塊918與其它塊獨立地執(zhí)行)。當(dāng)塊918將niogram發(fā)布到另一塊918時,接收塊立即執(zhí)行。這意味著在塊918之間不存在對niogram的緩沖,除非按需要(例如,如果使用線程池,且不存在用于接收塊的當(dāng)前可用的線程,那么可發(fā)生緩沖),并且在塊918可以處理數(shù)據(jù)時,數(shù)據(jù)盡快地通過服務(wù)916。給定塊918的處理速度可取決于塊的指令的復(fù)雜性,以及塊控制之外的因素,例如裝置的處理器的速度和分配給塊的線程的處理器時間量。由通過服務(wù)API發(fā)出的命令來起動和停止服務(wù)916。當(dāng)服務(wù)916接收到起動命令時,其“起動”服務(wù)916所含有的所有塊918。類似地,當(dāng)服務(wù)916接收到停止命令時,其“停止”服務(wù)916所含有的所有塊918。應(yīng)注意,塊918可能實際上未被“起動”,而是僅被通知已經(jīng)起動封裝它們的服務(wù)916。在需要時,塊918隨后可以使用通知鉤來執(zhí)行某一功能(例如,輪詢外部API并且需要知道何時開始輪詢的塊918可以將通知用作輪詢觸發(fā))。在一些實施例中,停止服務(wù)916可導(dǎo)致任何對應(yīng)的塊實例中的任何信息(例如,本地狀態(tài))的損失。舉例來說,在將Python對象用于塊實例的當(dāng)前實例中,可通過調(diào)用Blockinstance.destroy()方法來擦去塊對象。在其它實施例中,可能需要在停止服務(wù)916之后維持本地狀態(tài)。舉例來說,作為在停止服務(wù)916時擦去實例化的塊的本地狀態(tài)的替代,可以替代地暫停服務(wù)916,來暫時停止服務(wù)的執(zhí)行,而不會丟失潛在有價值的數(shù)據(jù)。這可以通過將停止命令發(fā)出到服務(wù)916中的所有塊918來完成,而不進行通常相關(guān)聯(lián)的清除(例如,不調(diào)用Blockinstance.destroy())和/或以其它方式。命令用于與塊918交互,并且必須可從塊918外部到達。因此,需要知道塊918如何限定和暴露命令。舉例來說,塊918可用于提供SMS功能。為實現(xiàn)此,塊918可以被配置成暴露命令“sendSMS”。為了塊918在NIO平臺900內(nèi)起作用,將在可執(zhí)行指令中在塊918中編寫用于實際發(fā)送SMS的方法,并且隨后所述方法將必須被斷言為命令,以使得其可通過(例如)RESTAPI到達。取決于塊結(jié)構(gòu)的特定實施方案(例如,名稱(例如,塊的方法名稱)、標(biāo)題(例如,描述性名稱)和自變量),可以各種方式來格式化調(diào)用方法的命令。應(yīng)注意,此可為用于起動/停止服務(wù)的同一命令結(jié)構(gòu)。如先前所描述的,niogram是用于服務(wù)內(nèi)數(shù)據(jù)傳輸(例如,在塊/塊群組之間)的主要機制。所有塊918可以接受并發(fā)射基礎(chǔ)niogram類別的通用niogram。所述基礎(chǔ)niogram類別一般不具有所需的字段,并且不需要驗證。基礎(chǔ)niogram類別僅暴露添加或移除屬性的方式,以及將niogram串行化/解除串行化為不同形式(例如,JavaScript對象標(biāo)記法(JSON))的方式。在本實例中,基礎(chǔ)niogram的實例可以自由地添加或移除屬性??梢詫⒒A(chǔ)niogram劃入子類別,以用于塊918中。然而,在本實施例中,NIO平臺900將不維持對這些子類別的任何知曉,并且其它塊918將預(yù)期基礎(chǔ)niogram。一般來說,塊918不應(yīng)該依賴于處理基礎(chǔ)niogram的子類別,除非是強制性的。僅使用基礎(chǔ)niogram類別確保了可以最小的影響在不同的服務(wù)中再使用塊918。對塊918的過濾應(yīng)一般經(jīng)由niogram的類型屬性而非類別類型來進行。因此,雖然可以為了便利和/或封裝來擴展通用niogram類別,但接收塊918應(yīng)僅考慮傳入niogram的屬性。使用niogram的基礎(chǔ)類別的另一益處是實現(xiàn)實時交叉參考。舉例來說,niogram可以開始時含有來自一個源的數(shù)據(jù),并且隨后使用來自另一個源的數(shù)據(jù)充實其信息。所得的niogram將含有來自兩個源的信息,而非必須隨身攜帶多個niogram類型。繼續(xù)參考圖9B,模塊904是含有預(yù)先限定的代碼的模塊,NIO平臺900可以自身使用所述代碼,且塊918也可以使用所述代碼。模塊904可以提供關(guān)于每個模塊限定的功能,所述模塊例如為登錄模塊938、安全模塊940、線程處理模塊942、通信模塊944、調(diào)度器模塊946、存留模塊948,和/或網(wǎng)絡(luò)服務(wù)器模塊950。模塊904中的一些或全部被設(shè)計成使得它們可以針對同一功能的不同實施方案而進行交換,而不會影響現(xiàn)有的塊或平臺功能。NIO平臺900內(nèi)的模塊904的作用是針對不同平臺實例提供可交換的功能,而不會影響塊918和核心906。模塊904提供可以被塊918和核心906調(diào)用的API。通過所調(diào)用的模塊904的功能來限定API調(diào)用的結(jié)果。在模塊904中限定的功能跨越整個平臺實例。因此,當(dāng)改變模塊904內(nèi)的功能時,整個平臺實例將使用模塊的新版本。舉例來說,如果改變登錄模塊938以登錄到遠程數(shù)據(jù)庫而不是本地文件,那么(核心906中以及服務(wù)916中的)所有登錄調(diào)用將相應(yīng)地開始登錄。然而,這些改變可能需要平臺實例重新開始起作用。模塊904支持NIO平臺900的以下能力:在不同的環(huán)境內(nèi)運行而不必修改NIO平臺900的核心設(shè)計。舉例來說,如果特定環(huán)境不支持某一所需的特征,那么可以使用所述環(huán)境所支持的功能來重新配置或更換負(fù)責(zé)那個特征的模塊904。因此,通過按需要改變模塊904,可以在具有不同需要的變化環(huán)境中運行平臺實例。取決于特定模塊904的功能,模塊904可能需要基于可變數(shù)據(jù)來初始化其功能。舉例來說,登錄模塊938可能需要在其處保存信息的文件名,而通信模塊944可能需要平臺實例中的當(dāng)前發(fā)布者的列表。為了實現(xiàn)此,核心906和服務(wù)916兩者通過調(diào)用設(shè)置方法、并且將語境信息與此數(shù)據(jù)一起傳遞而初始化模塊904。對于服務(wù)916,模塊的初始化數(shù)據(jù)可以直接到來,或者作為服務(wù)的初始化數(shù)據(jù)的部分間接地到來。舉例來說,可以通過提供模塊904的數(shù)據(jù)駐留在其中的配置文件的名稱而間接地提供數(shù)據(jù)。對于核心906,數(shù)據(jù)可以駐留在全系統(tǒng)配置文件中,可以在起動期間讀取所述全系統(tǒng)配置文件,且隨后用于初始化模塊904。登錄模塊938用于提供登錄功能,并且與所有模塊904一樣,可以提供定制的解決方案,或者可以使用現(xiàn)有的解決方案,例如Python的內(nèi)置登錄模塊。在初始化時,登錄模塊938接收詳述NIO平臺900中活動的適配器的參數(shù),所述適配器可包含用于登錄到本地文件的適配器、用于登錄到共享數(shù)據(jù)庫(例如,MySQL)的適配器,和/或用于創(chuàng)建niogram并且通過NIO平臺900發(fā)布niogram的適配器。在本實例中,登錄模塊938暴露兩個類別,一個用于登錄,且一個檢索所登錄的信息。這使得核心906和服務(wù)916(其可為單獨的進程)能夠登錄到單個環(huán)境。安全模塊940使得塊918能夠與內(nèi)部或外部安全應(yīng)用程序介接。在本實例中,安全模塊940提供認(rèn)證方法和授權(quán)方法,其兩者都可被超馳(override)。所述認(rèn)證方法使得安全模塊940能夠認(rèn)證用戶。此方法可以采用自變量,并且將返回SecureUser類別的實例(見下文)。認(rèn)證的實例包含用戶名/口令、OAuth安全令牌和MAC地址。所述授權(quán)方法使得安全模塊940的消費者能夠針對于某一組SecureTask向認(rèn)證用戶(例如,SecureUser)授權(quán)?,F(xiàn)有形式的認(rèn)證包含存取控制列表、基于角色的安全,和用戶/群組/其它許可(例如,755)。這使得塊918能夠?qū)⑾嗤陌踩珜嵤┓桨赣米骱诵?06,而不關(guān)注實際上如何實施所述安全。除了超馳安全模塊940的方法之外,安全實施方案還可以超馳可為安全的兩個對象,其為SecureUser和SecureTask。SecureUser是表示用戶的類別。不存在所需的字段,且這些對象將由認(rèn)證方法返回。當(dāng)實施安全模塊940時,應(yīng)超馳此類別,以映射到安全系統(tǒng)中的用戶。SecureTask是表示將要做的一些事情的類別。一般來說,SecureUser可以或無法執(zhí)行SecureTask。將把這些任務(wù)傳遞到認(rèn)證方法,并且將針對于所述任務(wù)來認(rèn)證SecureUser。安全模塊940應(yīng)使用其希望是安全的任務(wù)來超馳此類別。線程處理模塊942提供線程處理支持,并且可以提供一個或多個線程處理選項。舉例來說,兩個線程處理模塊可為可用的,其中僅在需要時使用非原生線程處理。在本實施例中,主要NIO平臺進程可能不需要任何線程定制,并且可以在Python的常規(guī)線程處理模塊下運行。然而,服務(wù)916和塊918可以受益于具有大量輕線程以及在較短時間量內(nèi)啟動異步任務(wù)的能力。因此,NIO平臺900可以提供用于Python的線程處理功能的包裝器,其目的是使得其對開發(fā)者透明,并且允許從一個線程處理模式切換為另一線程處理模式??梢酝ㄟ^設(shè)定來指定將實際用于特定服務(wù)916的線程處理模塊。通信模塊944使得平臺內(nèi)的服務(wù)916能夠預(yù)訂并發(fā)布niogram??梢栽谄脚_實例內(nèi)或平臺實例之間輸送niogram。通信模塊944可以使用ZeroMQ或類似的庫作為發(fā)布和預(yù)訂機制。應(yīng)注意,在需要時可以在服務(wù)916之間發(fā)生排隊,并且可以通過通信模塊944經(jīng)由ZeroMQ或另一選定庫來處置這種排隊。通信模塊944暴露兩種類別,發(fā)布者類別和預(yù)訂者類別。每個類別可包含被視為旗標(biāo)的自變量的列表,并且預(yù)訂者在所有旗標(biāo)都匹配時與發(fā)布者匹配。在NIO平臺900運行的個別通信模塊944內(nèi)控制處置預(yù)訂/發(fā)布機制的所有功能。當(dāng)服務(wù)916想要發(fā)布時,其簡單地向通信模塊944發(fā)布,并且通信模塊944確定所發(fā)布的niogram將去往哪里。舉例來說,假設(shè)存在如下四個發(fā)布者A到D:(A)發(fā)布者(類型=RFID,源=塢門);(B)發(fā)布者(類型=RFID,源=傳送機);(C)發(fā)布者(類型=條形碼,源=傳送機);以及(D)發(fā)布者(類型=RFID,源=架子)。預(yù)訂者可以如下指定向其進行預(yù)訂的發(fā)布者。預(yù)訂者(類型=)將從A、B和D接收發(fā)布。預(yù)訂者(類型=,源=[塢門,傳送機])將從A和B接收發(fā)布。預(yù)訂者(源=)將從B和C接收發(fā)布。調(diào)度器模塊946促進以所調(diào)度的間隔或者在未來的單個點處執(zhí)行任務(wù)。調(diào)度器模塊946可以包含在NIO平臺900中,使得在給定環(huán)境中的特定調(diào)度器出現(xiàn)問題的情況下,可以更換調(diào)度器。調(diào)度器模塊946經(jīng)由“工作”類別的實例進行操作,將僅需要所述類別,以在結(jié)束時取消工作。調(diào)度器模塊946的實施負(fù)責(zé)初始化,并終止基礎(chǔ)調(diào)度器。存留模塊948使得塊918和核心部件能夠“存留”與它們相關(guān)的某些信息,所述信息將通過平臺實例重新起動而幸存。存留模塊948可以選擇在無論何處和無論如何保存其想要的東西(例如,在純文本文件或本地數(shù)據(jù)庫中)。其暴露可以在塊918內(nèi)用于存取(例如,保存、加載和清除)此功能的若干方法。網(wǎng)絡(luò)服務(wù)器模塊950使得服務(wù)916和/或塊918能夠暴露網(wǎng)絡(luò)服務(wù)器,以用于在隔離的端口上進行交互。另外,核心906可以使用網(wǎng)絡(luò)服務(wù)器模塊950來暴露主控API908的網(wǎng)絡(luò)服務(wù)器。網(wǎng)絡(luò)服務(wù)器模塊950為使用若干方法(例如,打開、處置和關(guān)閉)來這樣做的每一個提供接口。網(wǎng)絡(luò)服務(wù)器模塊950可以使用庫,例如Python中的CherryPy庫。這移除對CherryPy的核心依賴性,并且允許塊編寫器將同一網(wǎng)絡(luò)服務(wù)器功能用作核心906。這不僅允許替代其它庫,并且還允許塊編寫器容易地暴露網(wǎng)絡(luò)服務(wù)器,而不必?fù)?dān)心與核心的API908沖突。在本實例中作為不同的進程而操作的服務(wù)916可以通過直接通過其自己的網(wǎng)絡(luò)服務(wù)器接收數(shù)據(jù)而減輕核心進程上的負(fù)載。在沒有這個的情況下,塊/服務(wù)使用命令來通過HTTP接收數(shù)據(jù),但那些命令經(jīng)過調(diào)節(jié),并且通過核心906。通過使用網(wǎng)絡(luò)服務(wù)器模塊950,塊918可以直接向端口收聽傳入的HTTP請求,并且在不加載核心進程的情況下相應(yīng)地處置所述請求。在本實例中,核心906包含API908、服務(wù)管理器914和配置管理器910。配置管理器910包含配置911、加載器952和發(fā)現(xiàn)功能954,其在一些實施例中可為加載器952的部分。在其它實施例中,配置管理器910可能不作為部件而存在,但加載器/發(fā)現(xiàn)功能和配置可以繼續(xù)存在于核心906內(nèi)(例如,作為服務(wù)管理器914的部分或在其它地方)。在一些實施例中,核心906還可以包含核心部件912。核心906維持由NIO平臺900提供的服務(wù)916。核心906不直接暴露于服務(wù)部件902,并且可以使用模塊904。API908表示多個API,但應(yīng)理解,塊918和塊群組可以能夠接收和/或發(fā)送信息,而不通過核心906中的API908進行傳遞。舉例來說,塊可以能夠在不使用API908的情況下發(fā)送和接收SMS消息。應(yīng)理解,可以限定許多不同的API和API調(diào)用,且下文描述的實例僅用于示出可以如何存取和管理NIO平臺900的各種部件。在本實例中,API908包含塊API、塊配置API、命令A(yù)PI、用于提供定制API的機制,和服務(wù)API。塊API使得用戶能夠更改加載于NIO平臺900中的塊918的狀態(tài)。舉例來說,塊API使得用戶能夠添加、重新加載和/或移除塊918,而不必重新起動塊918位于其中的實例。出于實例的目的,塊API遵循創(chuàng)建、讀取、更新、刪除(CRUD)模型,暴露四種方法來與塊918交互,并且暴露實例端點來與塊的實例交互。創(chuàng)建方法將新的塊918添加到實例,并且可以多種方式來完成。舉例來說,可以附加文件、模塊和/或包以用作塊918,可以參考在其中加載塊代碼的文件名,可以參考遠程托管的塊,且/或可以指定類別,并且NIO平臺900可以被配置成定位和檢索所述類別的代碼。讀取方法返回塊918的列表,并且因此暴露NIO平臺900的功能。除了塊918的列表之外,讀取方法還可以返回其它塊元信息,例如版本、依賴性和安裝時間。更新方法刷新NIO平臺900中的塊918。這可包含重新加載塊的代碼、重新驗證并且更新參考。更新方法可能不更新當(dāng)前在運行的服務(wù)916中的塊實例的塊代碼。在這些情況下,可能必須重新起動服務(wù)916來實現(xiàn)塊代碼。在其它實施例中,可以在不必重新起動服務(wù)916的情況下更新塊實例。刪除方法使得能夠從NIO平臺900刪除塊918。還將刪除塊918的任何塊實例。在運行的服務(wù)916中的任何塊918將繼續(xù)運行,但當(dāng)重新起動服務(wù)916時,將引發(fā)錯誤,且服務(wù)916將不能夠起動,除非對服務(wù)916進行更新來反映所述刪除。實例方法使得能夠與塊918的實例進行交互。舉例來說,可將“實例”視為實質(zhì)上是/instances?block=BlockName的別名的定制端點。所述實例方法允許用戶修改與給定塊918相關(guān)聯(lián)的塊實例。這在下文將關(guān)于塊實例API更詳細(xì)地論述。塊配置API使得用戶能夠更改加載于NIO平臺900中的塊實例的狀態(tài)。因為塊配置是塊918的經(jīng)配置的實例,所以一些API調(diào)用可通過先前描述的塊API而發(fā)生。出于實例的目的,塊配置API遵循CRUD模型,但還可以限定一些替代方法。創(chuàng)建方法添加新的塊配置。為了創(chuàng)建塊配置,為了所述配置,必須存在相關(guān)的塊918。因此,配置創(chuàng)建可以經(jīng)過塊API內(nèi)的指定塊的API端點。配置創(chuàng)建還可以經(jīng)過NIO平臺的塊配置API,只要指定有效的塊918即可。讀取方法返回塊配置的列表,但可能存在查看在NIO平臺900內(nèi)配置的塊配置的多種方式。舉例來說,通過命中主要塊配置端點,將返回NIO平臺900中的所有配置??梢酝ㄟ^將塊名稱指定為參數(shù)或者將GET發(fā)出到塊配置的端點來實現(xiàn)進一步細(xì)化。GET調(diào)用將返回配置的名稱以及塊918內(nèi)所限定的配置。更新方法更新NIO平臺900上的塊配置的配置。作為當(dāng)前運行的服務(wù)916的部分的塊918將在重新起動服務(wù)916之前不會實現(xiàn)它們的配置更新。刪除方法使得能夠從NIO平臺900刪除塊配置。這會從NIO平臺900移除塊配置,但不是塊918自身。如果塊918是運行的服務(wù)916的部分,那么服務(wù)916將繼續(xù)以原始的塊代碼運行。當(dāng)重新起動服務(wù)916時,將引發(fā)指示無法找到塊918的錯誤。命令A(yù)PI使得用戶能夠與先前描述的命令處置程序交互,所述命令處置程序已經(jīng)經(jīng)過限定來暴露塊918的命令??梢悦罘?wù)916和塊918兩者。然而,在本實施例中,因為塊918并非獨立而是存在于服務(wù)916內(nèi),所以調(diào)用者必須經(jīng)過服務(wù)916來命令塊918。取決于特定實施方案,可以許多不同方式調(diào)用命令,包含超文本傳送協(xié)議(HTTP)方法,例如GET和POST。被調(diào)用的塊918應(yīng)該限定對每種類型的所允許的調(diào)用的恰當(dāng)處置。命令方法可用于命令服務(wù)916內(nèi)部的塊918。舉例來說,可將所述方法結(jié)構(gòu)化為/services/ServiceName/BlockAlias/commandName。此API調(diào)用的根是服務(wù)916,這是因為在那個服務(wù)916內(nèi)部的塊918是將被命令的塊。如果指定服務(wù)916不存在,那么將引發(fā)錯誤。所述方法中的下一部件是BlockAlias。這將默認(rèn)是塊配置名。然而,如果服務(wù)建置者希望在服務(wù)916內(nèi)包含一個以上同一塊918,那么可以針對那個塊918的每個配置來限定塊別名。最終部件是命令名。此命令必須是如由連接到BlockAlias的塊918限定的有效命令。用于限定定制API的機制充分利用塊918限定定制命令處置程序的能力。因此,可以將定制API編寫為塊918,且實施為服務(wù)916內(nèi)的塊配置。舉例來說,服務(wù)建置者可以將API塊918投入服務(wù)916中的任何點中。API塊918不影響服務(wù)916的操作,而是提供新的API端點,其可用于充分利用在插入塊918的點處的服務(wù)916的屬性。服務(wù)API使得用戶能夠更改NIO平臺900中的服務(wù)916的狀態(tài)。出于實例的目的,服務(wù)API遵循CRUD模型,以及允許用戶起動/停止服務(wù)916的命令模型。創(chuàng)建方法將新的服務(wù)916添加到NIO平臺900。服務(wù)916的規(guī)格(例如,塊和塊映射)可以包含在調(diào)用的主體中。讀取方法返回服務(wù)916及其配置的列表。此信息可包含服務(wù)916內(nèi)的塊918、服務(wù)916的狀態(tài)(例如,運行或停止),和在創(chuàng)建服務(wù)916時指定的任何其它配置選項。更新方法更新服務(wù)的配置。如果服務(wù)916當(dāng)前在運行,那么將接受配置更新,但在重新起動服務(wù)916之前將不會實現(xiàn)改變。刪除方法從NIO平臺900移除服務(wù)916。如果服務(wù)916當(dāng)前在運行,那么此調(diào)用將返回錯誤。服務(wù)916應(yīng)在被刪除之前停止。命令方法用于起動或停止服務(wù)916。如果服務(wù)916的配置存在問題(例如,存在不存在的塊918、具有無效塊918的塊實例,和/或其它驗證問題),那么調(diào)用將返回錯誤。繼續(xù)參考圖9A和9B,在本實施例中,配置管理器910管理NIO平臺900的當(dāng)前實例的配置911、在需要時加載服務(wù)916和塊918以進行檢查,并且執(zhí)行自動發(fā)現(xiàn)。理想上,核心902對其功能(例如,塊918)或其配置(例如,塊實例和服務(wù)916)不具有依賴性。依賴性的此缺乏使得能夠使用可重新定位的實例配置,例如由用戶指定的一個或多個目錄。隨后,當(dāng)啟動NIO平臺900的實例時,將識別實例配置的位置,并且NIO平臺900將加載實例的塊918、服務(wù)916,和來自那個位置的其它所需的部件。這使得用戶能夠?qū)λ麄兊呐渲眠M行版本控制、在同一機器上創(chuàng)建多個配置,并且容易地共享和檢查他們的配置。可以許多不同方式在NIO平臺900內(nèi)表示配置。舉例來說,塊實例和服務(wù)916可以使用JSON純文件、SQLite數(shù)據(jù)庫和/或壓縮文件,而塊918可以使用python文件或python模塊目錄。應(yīng)理解,這些僅是實例,且可使用許多不同格式來表示配置信息。NIO平臺900可包含不同類型的配置,這取決于正在描述NIO平臺900的什么部分。實例包含核心配置、平臺配置、核心部件配置、服務(wù)配置,和塊配置。應(yīng)理解,可將這些配置存儲為單獨文件,或者可以進行組合。此外,可以將這些配置中的任一者劃分為多個配置,或者以許多不同方式進行組合。核心配置針對于與核心906相關(guān)的設(shè)定。這些值可為核心906私有的,并且可讓服務(wù)902看見。平臺配置針對于整個NIO平臺900的設(shè)定。這些包含核心906和服務(wù)902可見的所有設(shè)定。核心部件配置針對于與特定核心部件相關(guān)的設(shè)定。服務(wù)配置針對于與特定服務(wù)916相關(guān)的設(shè)定。塊配置針對于與特定塊918相關(guān)的設(shè)定。NIO平臺900可以使用詳述什么包含在NIO平臺900中的配置數(shù)據(jù)文件。此數(shù)據(jù)文件可以不同于實際上在配置目錄內(nèi)部的數(shù)據(jù)文件。舉例來說,如果用戶將塊文件復(fù)制到塊目錄中,那么實例可能拾取不了塊文件,直到經(jīng)由塊API加載塊文件為止。此時,實例可將那個塊918加載到配置數(shù)據(jù)文件中。類似地,可將塊實例配置復(fù)制到目錄,但在重新起動實例之前可能辨識不出。在其它實施例中,可能不需要實例重新起動以便辨識出塊實例配置。在一些實施例中,數(shù)據(jù)可能駐留在遠程位置處(例如,在遠程數(shù)據(jù)庫或數(shù)據(jù)結(jié)構(gòu)服務(wù)器中),這允許在不同的平臺實例之間共享定義。在這些實施例中,可以通過平臺設(shè)定來指定用于加載特定配置的處置程序。NIO平臺900隨后將把指定處置程序?qū)嵗沂褂闷鋪慝@取實例配置。在下文示出NIO平臺900的實例配置目錄的一個實例,括號中是注釋。繼續(xù)參考圖9A和9B,核心部件912是含有NIO平臺900可以使用的預(yù)先限定的代碼的模塊。核心部件912向NIO平臺900提供功能,且可包含多個模塊,例如監(jiān)視模塊956、消息處理模塊958、通信管理器模塊960,和/或?qū)嵗植寄K962。核心部件912略微不同于由配置管理器910和服務(wù)管理器914提供的核心功能。雖然核心功能一般向塊編寫器隱藏,且是NIO平臺900的操作所需的,但核心部件912是可交換的部件(類似于模塊904),其定位在核心906內(nèi),且提供可由核心906使用的功能。與核心功能一樣,核心部件912向塊編寫器隱藏(不同于模塊904)。不同于核心功能,NIO平臺900的運行不需要核心部件912。然而,應(yīng)理解,NIO平臺900的某些實施方案可能由于平臺的配置而依賴于核心部件912,在此情況下,將需要核心部件912中的一個或多個的功能來提供所要的功能。換句話說,NIO平臺900可能在沒有所需的核心部件912的情況下運行,但將不可用于完成某些任務(wù)。在其它實施例中,NIO平臺900可能在沒有所需的核心部件912的情況下不起動。另外參考圖10,在NIO平臺900內(nèi)部的環(huán)境1的一個實施例示出通信管理器模塊960針對參與發(fā)布/預(yù)訂操作的所有進程充當(dāng)代理人。為了實現(xiàn)此,通信管理器模塊960與先前所描述的通信模塊944交互。當(dāng)啟動含有發(fā)布/預(yù)訂功能的服務(wù)916時,通信管理器模塊960將兩個端口指派給服務(wù)916。一個端口用于預(yù)訂管理數(shù)據(jù),且另一端口用于發(fā)布管理數(shù)據(jù)。正由服務(wù)916使用的通信模塊944針對服務(wù)而跟蹤這些端口。通信管理器模塊960向服務(wù)916中的發(fā)布者(例如,對應(yīng)于服務(wù)的通信模塊944)預(yù)訂。當(dāng)通信管理器模塊960從服務(wù)916接收到消息時,通信管理器模塊960將消息廣播到現(xiàn)有的服務(wù)。這輔助維持所有服務(wù)916之間的關(guān)于NIO平臺900中的發(fā)布者的同步狀態(tài)。在其中多個平臺實例同時運行的一些實施例中,不同平臺實例的通信管理器模塊960可以共享內(nèi)部通道來輔助各種實例之間的通信。在其中多個平臺實例同時運行的其它實施例中,一個通信管理器模塊960可以充當(dāng)其它通信管理器模塊的代理人。在圖10中示出由通信模塊944和通信管理器模塊960提供的基本通信進程。出于示出的目的,在圖10中將每個步驟標(biāo)記為圓中的數(shù)字。在步驟1中,通信管理器模塊960使用新服務(wù)916a的通道信息來填充從服務(wù)管理器914接收的服務(wù)語境1002。這包含先前介紹的預(yù)訂/發(fā)布端口。在步驟2中,服務(wù)管理器914在新服務(wù)916a的初始化期間傳遞具有通道信息的語境。在步驟3中,新服務(wù)的通信管理器916a經(jīng)由正由服務(wù)916a使用的通信模塊944a而打開發(fā)布者,并且將其自己的信息提供給通信管理器模塊960。新服務(wù)的通信模塊944a還打開預(yù)訂者以用于接收關(guān)于其它服務(wù)的信息。在步驟4中,通信管理器模塊960向其它服務(wù)(例如,服務(wù)916b)廣播在步驟3中接收到的發(fā)布者信息。在步驟5中,另一服務(wù)916b使用其通信模塊944b來打開到新服務(wù)916a的發(fā)布者的預(yù)訂者。服務(wù)916b隨后可以直接從服務(wù)916b接收其預(yù)訂的通信。應(yīng)理解,可以許多不同方式來完成所描述的通信進程。舉例來說,雖然本實施例示出使用通信管理器模塊960來輔助在通信模塊944a和944b之間建立直接通信的進程,但通信管理器模塊960可以繼續(xù)接收和廣播由通信模塊944a和944b發(fā)布的消息。在其它實施例中,通信模塊944a和944b可以不直接通信,并且可以僅向通信管理器模塊960預(yù)訂和發(fā)布。再次參考圖9A和9B,可以在一個以上平臺實例正在共享服務(wù)916時使用實例分布模塊962。舉例來說,在分布式系統(tǒng)中,其中多個平臺實例為了分擔(dān)運行的既定服務(wù)916的負(fù)載而一起工作,必須維持關(guān)于當(dāng)前在分布式系統(tǒng)中的平臺實例的信息。此信息使得分布式系統(tǒng)中的每個平臺實例能夠發(fā)現(xiàn)其它實例是否正在運行。舉例來說,每個平臺實例可以ping其它實例,并且當(dāng)檢測到實例不起作用時,可以移除對不起作用的實例的任何現(xiàn)有的依賴性。實例分布模塊962維持分布式系統(tǒng)中的其它平臺實例的列表,以及關(guān)于每個平臺實例的元數(shù)據(jù)(例如,每個實例已經(jīng)運行了多長時間、在每個實例中有多少服務(wù)916正在運行、通信端口和/或其它信息)。在一些實施例中,實例分布模塊962將駐留在分布式系統(tǒng)內(nèi)的每個平臺實例上,并且在添加或移除平臺實例時自我更新。每當(dāng)更新此列表時,將通過塊和核心部件的通信模塊944來發(fā)布相關(guān)信息以進行消費。為了實現(xiàn)此,每個平臺實例中的實例分布模塊962向每一個其它平臺實例中的實例分布模塊962預(yù)訂。當(dāng)實例的實例分布模塊962檢測到改變(例如,新實例或廢棄的實例)時,其向剩余的實例分布模塊962發(fā)布那個相關(guān)信息。接收到此信息的實例分布模塊962隨后相應(yīng)地更新它們的相應(yīng)列表??梢约谢蚍植及l(fā)布。因為負(fù)載平衡傾向于取決于建置服務(wù)916的方式以及每個服務(wù)916的度量(例如,處理量),所以可以在服務(wù)916內(nèi)執(zhí)行啟動新平臺實例以及拆毀平臺實例的實際平衡進程。這將負(fù)載平衡的責(zé)任施加到服務(wù)916。在其它實施例中,核心906可以在負(fù)載平衡中起到更大的作用。參考圖11A和11B,消息處理模塊958提供讓外部系統(tǒng)發(fā)送信息以及從NIO平臺900接收信息的方式。應(yīng)理解,可以許多不同方式完成這些通信,并且這些通信可以取決于特定外部系統(tǒng)的實施方案而變化。舉例來說,一些外部系統(tǒng)可能詢問可用的數(shù)據(jù)并且基于響應(yīng)而制定請求,而其它外部系統(tǒng)可能確切地知曉要請求什么數(shù)據(jù)以及要提供什么數(shù)據(jù)。在一些實施例中,可以通過結(jié)合網(wǎng)絡(luò)服務(wù)器模塊950使用命令來取代消息處理模塊958。圖11A示出其中外部系統(tǒng)1102詢問可用的數(shù)據(jù)并且基于響應(yīng)而制定請求的實施例。出于示出的目的,在圖11A中將每個步驟標(biāo)記為圓中的數(shù)字。在步驟1中,通過消息處理模塊958經(jīng)由REST接口964/API908來接收來自外部系統(tǒng)1102的詢問消息(例如,請求)。在步驟2中,消息處理模塊958接受所述詢問,添加且/或注冊服務(wù),并且將服務(wù)的信息(例如,統(tǒng)一資源定位符(URL))發(fā)送到外部系統(tǒng)1102。在步驟3中,外部系統(tǒng)1102使用所接收的信息將消息(例如,HTTP調(diào)用)發(fā)送到服務(wù)管理器914。在步驟4中,服務(wù)管理器914隨后將所述消息置于通道中以用于發(fā)布到服務(wù)916。圖11B示出其中外部系統(tǒng)1104確切地知曉要請求什么數(shù)據(jù)以及要提供什么數(shù)據(jù)的實施例。出于示出的目的,在圖11B中將每個步驟標(biāo)記為圓中的數(shù)字。在步驟1中,通過消息處理模塊958經(jīng)由REST接口964/API908來接收來自外部系統(tǒng)1104的請求。在步驟2中,消息處理模塊958將所述請求轉(zhuǎn)發(fā)到外部數(shù)據(jù)接收器服務(wù)(其可為服務(wù)管理器914的部分或與其分開)。在步驟3中,服務(wù)管理器914處理所述調(diào)用以將特定消息發(fā)布到服務(wù)916。繼續(xù)參考圖9A和9B,服務(wù)管理器914處置核心906與在平臺實例中運行的服務(wù)916的交互。服務(wù)管理器914處置起動和停止服務(wù)916,并且還可以管理服務(wù)的傳入命令(例如,經(jīng)由REST接口964/API908接收的命令)。服務(wù)管理器914可以使用由模塊904和核心部件912提供的功能??梢越?jīng)由API908從NIO平臺900外部存取服務(wù)管理器914。參考圖12,在NIO平臺900內(nèi)部的環(huán)境1200的一個實施例示出服務(wù)916和核心906。如先前所描述,服務(wù)進程處置與服務(wù)管理器914的通信,例如通過RESTAPI908接收的命令。塊路由器921經(jīng)由對應(yīng)的塊控制器922來處置塊918之間的服務(wù)內(nèi)通信(在其中存在塊控制器922的實施例中)。加載器952和發(fā)現(xiàn)功能954可由服務(wù)管理器914用來加載服務(wù)和/或塊類別以用于發(fā)現(xiàn)目的。外部源/目的地1202和1204可以經(jīng)由塊918和/或經(jīng)由RESTAPI908進行通信。參考圖13,在NIO平臺900內(nèi)部的環(huán)境1300的一個實施例示出圖9A和9B的NIO平臺900的各種部件進行交互以啟動平臺實例和服務(wù)916。出于示出的目的,在圖13中將每個步驟標(biāo)記為圓中的數(shù)字。在步驟1中,在啟動新的核心進程906之后,核心進程存取配置管理器910并且檢索一個或多個配置911。所述配置提供關(guān)于哪些(如果有)模塊904和核心部件912在NIO平臺900內(nèi)可用的信息。在步驟2中,核心進程906隨后針對可用的每個模塊904而創(chuàng)建并初始化模塊904以供使用。在步驟3中,核心進程906針對可用的每個核心部件912而創(chuàng)建并初始化核心部件912。在步驟4中,起動服務(wù)管理器914。在步驟5中,服務(wù)管理器914經(jīng)由配置管理器910來存取服務(wù)配置信息。在步驟6中,服務(wù)管理器914隨后調(diào)用加載器952/發(fā)現(xiàn)功能954來發(fā)現(xiàn)NIO平臺900中可用的所有服務(wù)916和塊918。加載器952可以存取在其中存儲了服務(wù)916和塊918的存儲庫1302,并且在需要時加載每個服務(wù)916和/或塊918,來對其進行檢查并且發(fā)現(xiàn)它們的特性。此進程可包含檢查每個塊918以查看所述塊是否需要特定模塊。舉例來說,塊918可以明確地限定其需要的模塊,或者加載器可以檢查塊的代碼來確定其是否使用任何模塊。在步驟7中,對于被配置成自動起動的每個服務(wù)916,服務(wù)管理器914使用對應(yīng)于那個服務(wù)的配置信息來啟動服務(wù)916。雖然未示出,但服務(wù)管理器914還可以在此進程期間通過網(wǎng)絡(luò)服務(wù)器模塊950來暴露對REST接口964/API908的處置。參考圖14,方法1400示出當(dāng)啟動平臺的實例時可以由圖9A和9B的NIO平臺900執(zhí)行的進程的一個實施例。在本實例中,已經(jīng)啟動核心進程,并且在步驟1402之前運行,但尚未啟動模塊或服務(wù)。方法1400是可以在圖13的步驟1到4期間發(fā)生的進程的更詳細(xì)實施例。在步驟1402中,核心進程存取配置信息,且在步驟1404中,使用配置信息來識別可用的模塊904和/或核心部件912。步驟1404可以在需要時在步驟1404的發(fā)現(xiàn)進程期間使用加載器952/發(fā)現(xiàn)功能954,在此情況下,將在步驟1404之前執(zhí)行步驟1412的至少部分。在步驟1406中,核心進程創(chuàng)建語境來存儲各種模塊的信息。在步驟1408中,核心進程起動并且配置每個可用的模塊904。應(yīng)注意,可以在步驟1408之前或者在起動時將模塊904實例化,但在起動每個模塊時發(fā)生配置。在配置期間,將配置信息和/或語境傳遞到正被配置的模塊904。模塊904隨后使用其自己的信息來更新語境,例如核心進程和/或模塊904中的另一者調(diào)用當(dāng)前模塊可能需要的信息。在步驟1410中,核心進程起動并且配置每個可用的核心部件912。應(yīng)注意,可以在步驟1408之前或者在起動時將核心部件912實例化,但在起動每個模塊時發(fā)生配置。在配置期間,將配置信息和/或語境傳遞到正被配置的核心部件912。核心部件912隨后使用其自己的信息來更新語境,例如核心進程、模塊904中的一者和/或核心部件912中的另一者調(diào)用當(dāng)前模塊可能需要的信息。應(yīng)注意,當(dāng)前實施例在起動核心部件912之前起動模塊904。因為模塊904無法使用核心部件912,但核心部件912可以使用模塊904,所以步驟的此次序使得模塊904能夠在將語境傳遞到核心部件912之前更新語境。因為模塊904不需要來自核心部件912的語境,所以這是更高效的進程。然而,在其它實施例中,所述步驟可顛倒或甚至混合,其中以某一其它次序起動模塊904和核心部件912。在這些實施例中,所有模塊可以接收所有其它模塊的語境。在步驟1412中,核心進程起動并配置其它核心部件,例如服務(wù)管理器914和加載器952/發(fā)現(xiàn)功能954。服務(wù)管理器914隨后可以起動服務(wù),如圖15中所描述。參考圖15,方法1500示出在服務(wù)管理器914被起動且由核心進程配置之后可以由圖9A和9B的NIO平臺900執(zhí)行的進程的一個實施例。在本實例中,已經(jīng)啟動模塊904和核心部件912,且存在具有關(guān)于那些模塊的信息的語境。方法1500是可以在圖13的步驟5到7期間發(fā)生的進程的更詳細(xì)實施例。在步驟1502中,服務(wù)管理器914存取服務(wù)916的配置信息,且在步驟1504中,調(diào)用加載器952/發(fā)現(xiàn)功能954來發(fā)現(xiàn)可用于NIO平臺900的服務(wù)916和塊918。在步驟1506中,服務(wù)管理器914可以獲得語境(例如,具有用于模塊904和核心部件912的信息的語境)或者可以創(chuàng)建新的語境以供服務(wù)916使用。在步驟1508中,服務(wù)管理器914起動,并配置被配置成自動起動的每個可用的服務(wù)916。應(yīng)注意,可以在步驟1508之前或者在起動時將服務(wù)916實例化,但在本實施例中在起動每個服務(wù)916時發(fā)生配置。在其它實施例中,可以在將服務(wù)916實例化時發(fā)生配置中的一些或全部。在配置期間,將配置信息和/或語境傳遞到正被配置的服務(wù)916。服務(wù)916隨后使用其自己的信息來更新語境。在步驟1510中,服務(wù)管理器914通過網(wǎng)絡(luò)服務(wù)器模塊950來暴露對REST接口964/API908的處置,但此步驟可以在方法1500中較早地發(fā)生。在步驟1512中,服務(wù)管理器914等待指令,例如用于服務(wù)916的停止和起動命令。參考圖16A,方法1600示出在起動對應(yīng)的服務(wù)916之后可以由圖9A和9B的NIO平臺900的服務(wù)進程執(zhí)行的進程的一個實施例。如先前所陳述,當(dāng)起動服務(wù)916時,由服務(wù)管理器914將服務(wù)語境傳遞到服務(wù)進程。在步驟1602中,服務(wù)進程接收服務(wù)語境。在步驟1604中,服務(wù)進程初始化服務(wù)進程自身所需的任何模塊以及在服務(wù)916中使用的塊918所需的模塊。服務(wù)進程可以直接使用模塊,例如登錄模塊938和線程處理模塊942。一些模塊(比如通信模塊944)可由服務(wù)進程使用來輔助塊918設(shè)置通信通道。塊918可以直接使用其它模塊。在步驟1606中,塊路由器921啟動屬于服務(wù)916的塊918。參考圖16B,方法1610示出在起動對應(yīng)的服務(wù)916之后可以由圖9A和9B的NIO平臺900的服務(wù)進程執(zhí)行的進程的一個實施例。舉例來說,方法1610可為圖16A的步驟1606的更詳細(xì)實施例,并且可以對每個塊918發(fā)生。在步驟1612中,將塊918初始化以創(chuàng)建塊實例。在步驟1618中,配置塊實例,其可包含傳遞信息,例如塊實例使用模塊所需的模塊信息。在步驟1616中,起動塊實例。如先前所描述,起動塊實例可包含向塊實例通知已經(jīng)起動對應(yīng)的服務(wù)916。如果被配置成這樣做,那么塊實例隨后可以將所述通知用作觸發(fā)來執(zhí)行指令。在沒有此通知的情況下,塊實例可以保持閑置,直到被processSignals()調(diào)用為止。參考圖16C,方法1620示出可以由圖9A和9B的NIO平臺900的塊路由器921執(zhí)行的進程的一個實施例。在步驟1622中,塊路由器921從塊918接收輸出通知。在步驟1624中,塊路由器921查找路由表中的接下來的塊,且在步驟1626中,調(diào)用接下來的塊來處理輸出。如先前所描述,此進程可涉及例如Blockrouter.notifySignals()和processSignals()等調(diào)用。如先前所描述,由于塊918的異步性質(zhì),所以服務(wù)916中的塊918中的一些或全部可以同時處理niogram。此外,單個塊918可以通過使用線程處理來執(zhí)行多個并發(fā)線程中的塊的功能而同時處理多個niogram。對于此進程不需要改變方法1620,因為每個processSignals()調(diào)用啟動新的線程。在本實例中,線程可生成block.processSignals()的目標(biāo)。在需要時,塊918可包含用于獲取和釋放鎖的指令,以防止同時執(zhí)行的線程之間的問題??梢灾饓K地包含這些指令,因為競爭條件或其它線程沖突問題對于一些塊來說可能不是關(guān)注點。參考圖16D,方法1630示出可以由圖9A和9B的NIO平臺900的塊路由器921執(zhí)行的進程的一個實施例。在步驟1632中,塊路由器921接收消息。所述消息可能來自塊918并且既定用于RESTAPI908/964,或者可能來自RESTAPI且被引導(dǎo)到塊。在步驟1634中,塊路由器921將消息繼續(xù)傳遞到目的地(例如,經(jīng)由RESTAPI908/964、通過將消息發(fā)布到通道,或者經(jīng)由另一傳送機制)。參考圖16E,方法1640示出可以由圖9A和9B的NIO平臺900的塊918執(zhí)行的進程的一個實施例。在步驟1642中,塊918接收一個或多個信號和/或niogram。塊918可以在所述塊直接耦合到外部源的情況下接收信號,并且可以從另一塊接收niogram(直接地接收或者經(jīng)由塊路由器921,其取決于特定實施方案)。應(yīng)理解,接收包含塊918可借以獲得數(shù)據(jù)的主動進程,例如從外部源抽取數(shù)據(jù)。在步驟1644中,塊918基于塊的內(nèi)部指令而執(zhí)行處理。如先前所描述,這些指令的范圍可從簡單到復(fù)雜,這取決于塊918的特定配置。在步驟1646中,一旦步驟1644的處理產(chǎn)生輸出,塊918便可以發(fā)出存在輸出的通知(例如,通過通知塊路由器921),且/或可以將輸出直接發(fā)送到外部源,這取決于塊的內(nèi)部指令。再次參考圖9A和9B,NIO平臺900包含可為API908的部分的REST接口964。REST接口964輔助與外部工具和系統(tǒng)通信,所述外部工具和系統(tǒng)例如為控制臺972、企業(yè)監(jiān)視工具974、企業(yè)應(yīng)用程序976,和外部裝置978(例如,移動裝置、服務(wù)器、數(shù)據(jù)庫、機器、制造設(shè)備,和/或任何其它裝置、系統(tǒng),和/或NIO平臺900被配置成與其通信的應(yīng)用程序)。NIO平臺900可以針對特定語言(例如,Python)使用運行時環(huán)境966,并且還與正在運行NIO平臺900的無論什么裝置上的操作系統(tǒng)968交互。參考圖17,環(huán)境1700的一個實施例示出用戶對圖9A和9B的NIO平臺900和外部裝置、系統(tǒng)和應(yīng)用程序1706的角度。舉例來說,外部裝置、系統(tǒng)和應(yīng)用程序1706可類似于或等同于圖1E到1G和1I的外部源/目的地132。從用戶的角度來看,隱藏了大多數(shù)核心的功能(未示出)。用戶具有經(jīng)由RESTAPI908、964從外部系統(tǒng)和應(yīng)用程序1706對NIO平臺900的一些部件的存取權(quán)。外部裝置、系統(tǒng)和應(yīng)用程序1706可包含移動裝置1708、企業(yè)應(yīng)用程序1710、用于NIO平臺900的管理控制臺1712,和/或可以經(jīng)由RESTAPI存取NIO平臺900的任何其它外部系統(tǒng)和應(yīng)用程序1714。使用外部裝置、系統(tǒng)和應(yīng)用程序1706,用戶可以將命令1704(例如,起動和停止命令)發(fā)出到服務(wù)916,所述服務(wù)繼而處理或停止處理niogram1702。如上文所描述,服務(wù)916使用塊918,所述塊可以從各種外部裝置、系統(tǒng)和應(yīng)用程序1706接收信息以及向其發(fā)送信息。外部裝置、系統(tǒng)和應(yīng)用程序1706可充當(dāng)信號源,其使用以下各者作為塊918的輸入而產(chǎn)生信號:傳感器(例如,運動傳感器、振動傳感器、熱傳感器、電磁傳感器,和/或任何其它類型的傳感器)1716、網(wǎng)絡(luò)1718、RFID1720、語音1722、GPS1724、SMS1726、RTLS1728、PLC1730,和/或任何其它模擬和/或數(shù)字信號源1732。外部裝置、系統(tǒng)和應(yīng)用程序1706可充當(dāng)由塊918產(chǎn)生的任何類型的信號(包含致動信號)的信號目的地。應(yīng)理解,如本文使用的術(shù)語“信號”包含數(shù)據(jù)。參考圖18,圖1800示出從NIO平臺1802(其可類似于或等同于圖1A的NIO平臺100、圖2A的200、圖4A的400,和/或圖9A和9B的900)的創(chuàng)建運行到啟動的工作流的一個實施例。所述工作流開始于庫1804。庫1804包含核心類別206(其包含本實例中的任何核心部件和模塊的類別)、基礎(chǔ)服務(wù)類別202、基礎(chǔ)塊類別1806,和從基礎(chǔ)塊類別1806擴展的塊類別204。每個經(jīng)擴展的塊類別204包含任務(wù)特定的代碼。用戶可以修改和/或創(chuàng)建用于庫1804中的現(xiàn)有的塊類別204的代碼,且/或創(chuàng)建具有所要的任務(wù)特定的功能的新塊類別204。雖然未示出,但還可以定制基礎(chǔ)服務(wù)類別202,且各種經(jīng)擴展的服務(wù)類別可以存在于庫1804中。配置環(huán)境1808使得用戶能夠限定已經(jīng)從庫1804選擇的核心類別206、服務(wù)類別202和塊類別204的配置,以便限定將從NIO平臺1802內(nèi)的類別實例化的對象的平臺特定的行為。NIO平臺1802將運行如由平臺自身的架構(gòu)限定的對象,但配置進程使得用戶能夠限定NIO平臺1802的各種任務(wù)特定的操作方面。所述操作方面包含將運行哪些核心部件、模塊、服務(wù)和塊,核心部件、模塊、服務(wù)和塊將具有什么性質(zhì)(如通過架構(gòu)準(zhǔn)許),以及將何時運行服務(wù)。此配置進程產(chǎn)生配置文件210,其用于配置將通過NIO平臺1802從核心類別206、服務(wù)類別202和塊類別204實例化的對象。在一些實施例中,配置環(huán)境1808可為圖形用戶接口環(huán)境,其產(chǎn)生被加載到NIO平臺1802中的配置文件。在其它實施例中,配置環(huán)境1808可以使用NIO平臺1802的REST接口908、964(圖9A和9B)將配置命令發(fā)出到NIO平臺1802。因此,應(yīng)理解,存在可創(chuàng)建且產(chǎn)生配置信息以供NIO平臺1802使用的各種方式。當(dāng)啟動NIO平臺1802時,識別核心類別206中的每一者,并且使用用于核心、核心部件和模塊的適當(dāng)?shù)呐渲梦募?10來將對應(yīng)的對象實例化和配置。對于將在起動NIO平臺1802時運行的每個服務(wù),識別服務(wù)類別202和對應(yīng)的塊類別204,且使用適當(dāng)?shù)呐渲梦募?10將所述服務(wù)和塊實例化和配置。NIO平臺1802隨后經(jīng)過配置,并且開始運行來執(zhí)行由服務(wù)提供的任務(wù)特定的功能。查看圖19A,示出在其內(nèi)在運行時配置服務(wù)230的服務(wù)配置環(huán)境1900的一個實施例。在NIO平臺1802內(nèi),使用類別文件202和配置信息1902來創(chuàng)建每個服務(wù)230。所述配置信息包含在運行時之前存在的預(yù)先限定的信息(例如,作為圖2A的平臺配置信息210的部分)和在運行時動態(tài)地產(chǎn)生的信息。所述動態(tài)地產(chǎn)生的信息在啟動NIO平臺1802之前并不知曉,并且可包含關(guān)于圖13的環(huán)境1300所描述的信息。類別文件202可由多個服務(wù)使用,但配置信息1902對于正在創(chuàng)建的特定服務(wù)230是唯一的。對于每個服務(wù)230,配置信息1902可處于單獨文件中,或者可處于較大的文件中,從其提取特定服務(wù)的配置信息。在運行時,類別文件202被實例化,且隨后將配置信息1902應(yīng)用于實例化的服務(wù)對象。參考圖19B,示出在其內(nèi)在運行時配置塊232的塊配置環(huán)境1904的一個實施例。在NIO平臺1802內(nèi),使用類別文件204和配置信息1906來創(chuàng)建每個塊232。所述配置信息包含在運行時之前存在的預(yù)先限定的信息(例如,作為圖2A的平臺配置信息210的部分)和在運行時動態(tài)地產(chǎn)生的信息。所述動態(tài)地產(chǎn)生的信息在啟動NIO平臺1802之前并不知曉,并且可包含關(guān)于圖13的環(huán)境1300所描述的信息。類別文件204可由多個塊使用,但配置信息1906對于正在創(chuàng)建的特定塊232是唯一的。對于每個塊232,配置信息1906可處于單獨文件中,或者可處于較大的文件中,從其提取特定塊的配置信息。在運行時,類別文件204被實例化,且隨后將配置信息1906應(yīng)用于實例化的塊對象。參考圖20A和20B,分別示出塊232a和232b(未示出)的類別文件204a和204b的實施例。在NIO平臺1802內(nèi),服務(wù)類別文件202和塊類別文件204是分別基于基礎(chǔ)服務(wù)模板(對于服務(wù)230)和基礎(chǔ)塊模板(對于塊232)。這些基礎(chǔ)模板包含擴展它們的任何類別繼承的NIO平臺特定的行為。這意味著每個服務(wù)類別202和塊類別204繼承NIO平臺特定的行為,這允許對應(yīng)的服務(wù)230或塊232在NIO平臺架構(gòu)內(nèi)起作用。在沒有此NIO平臺特定的行為的情況下,將不會在NIO平臺架構(gòu)內(nèi)辨識出類別文件202和204,并且因此可能創(chuàng)建不了對應(yīng)的服務(wù)230和類別232。除了NIO平臺特定的行為之外,每個塊類別204還含有提供特定任務(wù)特定的功能的可執(zhí)行指令。具體參考圖20A,塊類別1的類別文件204a包含用于NIO平臺的標(biāo)準(zhǔn)基礎(chǔ)塊代碼,并且還含有用于連接到外部信號源(其例如為推特(Twitter))的定制代碼。具體參考圖20B,塊類別2的類別文件204b包含用于NIO平臺的標(biāo)準(zhǔn)基礎(chǔ)塊代碼,并且還含有用于發(fā)送電子郵件的定制代碼。如果不存在含有執(zhí)行特定任務(wù)所需的代碼的現(xiàn)有的塊類別,那么可使用基礎(chǔ)塊模板來創(chuàng)建新的塊類別,或者可以修改現(xiàn)有的塊類別204。雖然服務(wù)類別202還可以包含定制代碼,但它們很少這樣做,這是因為基礎(chǔ)服務(wù)模板一般提供服務(wù)230所需的所有功能。然而,應(yīng)理解,還可以定制服務(wù)類別202。參考圖21,示出在其內(nèi)使用配置信息以不同方式基于同一塊類別204來配置兩個塊232的環(huán)境2100的一個實施例。配置信息1906(圖19B)允許通過設(shè)定在塊類別204內(nèi)限定的可配置參數(shù)的值而在運行時配置特定塊232。這意味著可以不同方式來配置同一塊232,其取決于用于配置塊232的配置信息1906中的值。塊類別204b(如圖20B中所示)含有將由塊232接收到的任何信息發(fā)送到目的地電子郵件地址的定制代碼。所述代碼包含目的地電子郵件地址的可配置參數(shù),從而避免必須在每次使用不同的電子郵件地址時改變基礎(chǔ)塊類別204。這允許在配置信息1906中限定電子郵件地址,這意味著可以使用同一塊類別204來創(chuàng)建將它們的電子郵件發(fā)送到不同地址的多個塊。因此,在本實例中,將使用塊類別204b來將兩個塊232a(還被稱作塊#1)和232b(還被稱作塊#2)實例化。塊232a和232b將被配置成分別使用配置信息1906a(還被稱作塊#1配置信息)和1906b(還被稱作塊配置信息#2)將電子郵件發(fā)送到兩個不同的地址。當(dāng)將塊232a和232b實例化且配置時,所述兩個塊將具有相同的電子郵件發(fā)送功能,但將把它們的電子郵件發(fā)送到不同的電子郵件地址。參考圖22,示出在其內(nèi)使用配置信息以不同方式基于同一服務(wù)類別202來配置兩個服務(wù)230的環(huán)境2200的一個實施例。配置信息1902(圖19A)允許通過限定將由服務(wù)執(zhí)行哪些塊232以及執(zhí)行塊232的次序而在運行時對特定服務(wù)230進行有限配置。配置信息1902還可以用于設(shè)定在服務(wù)類別202內(nèi)限定的可配置參數(shù)的值。這意味著可以不同方式來配置同一服務(wù)230,其取決于塊232、執(zhí)行的次序,和用于配置服務(wù)230的配置信息1902中的值。在本實例中,服務(wù)230的配置信息1902包含在將服務(wù)230實例化時建置路由表所需的源塊和目的地塊。因為塊232除了通過服務(wù)230以外不具有到彼此的任何連接,所以服務(wù)230使用路由表將信息從一個塊(源塊)引導(dǎo)到下一塊(目的地塊)。服務(wù)230在服務(wù)230被實例化之后接收源塊和目的地塊作為配置信息,因此可以使用同一基礎(chǔ)服務(wù)類別202來用于不同的服務(wù)230。這意味著服務(wù)230可以基于特定塊232以及在它們的配置信息1902中限定的塊執(zhí)行次序而具有不同的功能。因此,在本實例中,將使用服務(wù)類別202來將兩個服務(wù)230a(還被稱作服務(wù)#1)和230b(還被稱作服務(wù)#2)實例化。將分別使用配置信息1902a(還被稱作服務(wù)#1配置信息)和1902b(還被稱作服務(wù)配置信息#2)使用不同的塊和不同的執(zhí)行次序來配置服務(wù)230a和230b。當(dāng)將服務(wù)230a和230b實例化和配置時,所述兩個服務(wù)將具有不同的功能。在本實例中,服務(wù)230是由服務(wù)類別202和配置信息1902構(gòu)成的事實意味著,在實例化之前,在服務(wù)230內(nèi)不存在可以進行檢查來確定塊232的執(zhí)行次序或甚至確定待使用的塊232的服務(wù)類別202。為了確定服務(wù)230的行為,將必須檢查配置信息1902。參考圖23,使用經(jīng)擴展以創(chuàng)建各種定制的塊類別(未示出)(例如,圖18的庫1804中的塊類別)的基礎(chǔ)塊類別1806來示出環(huán)境2300的一個實施例。隨后可以如先前所描述將定制的塊類別實例化,從而形成各種塊232a到232j。如上文所描述,NIO平臺通過使用服務(wù)230來組織適當(dāng)?shù)膲K232執(zhí)行特定任務(wù)而操作。在本實例中,塊232除了通過服務(wù)230以外不具有到彼此的任何連接。此組織結(jié)構(gòu)提供若干益處,例如塊執(zhí)行中的異步性、動態(tài)擴張和響應(yīng)于輸入改變的塊資源的撤回,以及在不必重新起動NIO平臺1802的情況下修改服務(wù)230和塊232的能力。舉例來說,如圖23中所示,環(huán)境2300包含塊庫,其含有十個塊232a到232j。塊232a到232j中的每一個是由基礎(chǔ)塊模板建置,因此每個塊與NIO平臺架構(gòu)兼容。塊232a到232j除了它們?nèi)靠梢栽贜IO平臺架構(gòu)內(nèi)操作以外,不具有到彼此的連接。每個塊232a到232j含有任務(wù)特定的代碼,其允許那個塊執(zhí)行特定功能。舉例來說,塊232a連接到Twitter,塊232b發(fā)送含有從另一塊接收到的任何信息的電子郵件,塊232c連接到裝配線中的機器,塊232d為了一個或多個所限定的文本串而過濾從另一塊接收到的任何輸入,塊232e發(fā)送關(guān)閉裝配線上的機器的信號,等等。假設(shè)用戶想要使用十個塊232a到232j來創(chuàng)建兩個不同的服務(wù)230a和230b。服務(wù)230a將監(jiān)視外部源(例如,Twitter)Twitter以尋找詞語“公司名稱”,并且在檢測到此推文的情況下向user1@companyname.com發(fā)送電子郵件。服務(wù)230b將監(jiān)視裝配線機器以尋找某些錯誤代碼的出現(xiàn),并且在檢測到錯誤的情況下向user2@companyname.com發(fā)送電子郵件。服務(wù)230b還將在檢測到錯誤的情況下關(guān)掉機器。服務(wù)230a和230b將在單個NIO平臺上同時運行,并且異步地且實時地執(zhí)行它們的任務(wù),而不進行任何數(shù)據(jù)存儲。另外參考圖24,使用來自圖23的環(huán)境2300的塊來示出服務(wù)230a的一個實施例。通過識別所需的塊類別且限定它們的執(zhí)行次序來創(chuàng)建服務(wù)230a。舉例來說,塊232a(連接到Twitter)的后面將緊跟著塊232d(針對“公司名稱”進行過濾),且隨后在塊232d識別出具有“公司名稱”的任何推文的情況下塊232b將向user1@companyname發(fā)送電子郵件。塊類別包含可配置參數(shù),其允許定制塊類別,而不需要打開塊類別并改變它們的代碼。圖24示出從功能角度來看的服務(wù)230a的經(jīng)配置的外觀。服務(wù)230a的路由表針對來自源塊的任何輸出而限定目的地塊。如果塊不將輸出發(fā)送到另一塊(即,塊232b),那么在路由表中不存在條目。不存在塊232a的源塊,因為塊232a直接連接到Twitter。表3示出用于服務(wù)230a的路由表的實例。表3由路由表提供的塊的解耦的性質(zhì)以及靈活性允許相對容易地修改服務(wù)230a或者用其它塊交換塊。應(yīng)理解,必須將任何配置改變和任何新塊加載到NIO平臺中(假設(shè)新塊已經(jīng)不在那里),并且隨后必須重新起動服務(wù)230a,以讓改變起作用。舉例來說,如果用戶想要用文本消息塊交換電子郵件塊232b,那么可以使用用于發(fā)送文本的合適配置的塊來取代塊232b。如果塊的名稱保持相同,那么路由表在一些實施例中甚至可以不改變。如果塊的名稱不同,那么需要更新路由表,但可能不需要其它改變。表4示出在通過文本消息塊232g取代塊232b的情況下的用于服務(wù)230a的路由表的實例。表4如果用戶想要發(fā)送文本消息和電子郵件兩者,那么可以添加文本消息塊232g,使得其在電子郵件塊232b旁邊存在于服務(wù)230a內(nèi)。在此情況下,可以更新路由表以包含新塊232g作為源塊232d的另一目的地。表5示出用于具有塊232a和塊232g兩者的服務(wù)230a的路由表的實例。表5另外參考圖25,使用來自圖23的環(huán)境2300的塊來示出服務(wù)230b的一個實施例。通過識別所需的塊類別且限定它們的執(zhí)行次序來創(chuàng)建服務(wù)230b。舉例來說,塊232c(連接到機器)的后面將緊跟著塊232d(相對于錯誤列表進行過濾)。如果檢測到錯誤,那么塊232b將向user2@companyname發(fā)送電子郵件,且塊232e將關(guān)掉機器。塊類別包含可配置參數(shù),其允許定制塊類別,而不需要打開塊類別并改變它們的代碼。圖25示出從功能角度來看的服務(wù)230b的經(jīng)配置的外觀。表6示出用于服務(wù)232b的路由表的實例。表6參考圖26,在環(huán)境2600內(nèi)示出NIO平臺1802的一個實施例。環(huán)境2600包含Twitter2602和機器2604的入口。如所示,NIO平臺1802包含核心228,并且正同時運行兩個服務(wù)230a和230b。每個服務(wù)230a和230b與另一服務(wù)獨立地執(zhí)行其所配置的功能。參考圖27,方法2700示出可以由圖26的NIO平臺執(zhí)行來創(chuàng)建和配置塊232的進程的一個實施例。在步驟2702中,識別塊類別204連同塊的對應(yīng)的配置信息以及塊232所需的動態(tài)產(chǎn)生的信息。在步驟2704中,根據(jù)塊類別204將塊232實例化。在步驟2706中,使用對應(yīng)的配置信息和動態(tài)產(chǎn)生的信息來配置塊232。參考圖28,方法2800示出可以由圖26的NIO平臺執(zhí)行來創(chuàng)建和配置服務(wù)230的進程的一個實施例。在步驟2802中,識別服務(wù)類別202連同服務(wù)的對應(yīng)的配置信息以及服務(wù)230所需的動態(tài)產(chǎn)生的信息。在步驟2804中,根據(jù)服務(wù)類別202將服務(wù)230實例化。在步驟2806中,使用對應(yīng)的配置信息和動態(tài)產(chǎn)生的信息來配置服務(wù)230。參考圖29,示出環(huán)境2900的一個實施例,其中實時發(fā)布系統(tǒng)2901實時地或準(zhǔn)實時地異步地捕獲、規(guī)格化、過濾、區(qū)分優(yōu)先級,并且發(fā)布來自多個數(shù)據(jù)流的數(shù)據(jù)。不同于常規(guī)系統(tǒng),實時發(fā)布系統(tǒng)2901不需要在捕獲數(shù)據(jù)之后將數(shù)據(jù)存儲在數(shù)據(jù)存儲庫(例如,數(shù)據(jù)庫)中,而是能夠在直接從數(shù)據(jù)源接收到數(shù)據(jù)時處理所述數(shù)據(jù),并且發(fā)布所述數(shù)據(jù)以供觀看顯示器。每當(dāng)從源捕獲到額外數(shù)據(jù)時實時地或準(zhǔn)實時地更新顯示器,從而向動態(tài)更新的顯示器提供一致刷新的信息。在本實例中,可能類似于或等同于先前描述的NIO平臺100(圖1)、NIO平臺200(圖2A)或NIO平臺900(圖9A)的NIO平臺2902可以與一個或多個發(fā)布服務(wù)器2904(例如,用于經(jīng)由網(wǎng)站進行發(fā)布的網(wǎng)絡(luò)服務(wù)服務(wù)器)一起使用,以提供實時發(fā)布系統(tǒng)2901。NIO平臺100從一個或多個外部源2906a、2906b、2906c,...,和2906N接收數(shù)據(jù),其中N是外部源的總數(shù)。所述外部源2906a、2906b、2906c,...,和2906N分別產(chǎn)生數(shù)據(jù)2908a、2908b、2908c,...,和2908N,其由NIO平臺2902捕獲。NIO平臺2902處理所述數(shù)據(jù),并且將所述數(shù)據(jù)(以niogram或不同的格式)饋送到發(fā)布服務(wù)器2904,所述發(fā)布服務(wù)器處置發(fā)布信息以供觀看的進程。發(fā)布服務(wù)器2904可以向一個或多個通道發(fā)布,所述通道例如為網(wǎng)絡(luò)2910、電子郵件2912、SMS2914、饋送2916(例如,RSS饋送)、郵遞2918(例如,去往社交媒體站點)、語音郵件2920,和/或任何其它通道2922。出于實例的目的,發(fā)布服務(wù)器2904是網(wǎng)絡(luò)服務(wù)服務(wù)器,其被配置成經(jīng)由一個或多個網(wǎng)頁發(fā)布信息。實時發(fā)布系統(tǒng)2901被配置成從外部源2906a到2906N獲得數(shù)據(jù),處理所述數(shù)據(jù),且實時地或準(zhǔn)實時地發(fā)布所述數(shù)據(jù)。NIO平臺2902被配置成將相對穩(wěn)定的數(shù)據(jù)流(例如,每秒最小數(shù)目的niogram)發(fā)送到發(fā)布服務(wù)器2901以進行發(fā)布??梢栽S多不同方式發(fā)生發(fā)布,但在本實例中是經(jīng)由相對連續(xù)地刷新的拼塊矩陣(下文更詳細(xì)地描述)來完成。實時發(fā)布系統(tǒng)2901對外部源2906a到2906N不具有控制,并且無法確保將定期地接收到新的數(shù)據(jù)。因為新的數(shù)據(jù)可能并非始終可用于刷新矩陣,所以NIO平臺2902可以高速緩沖數(shù)據(jù),并且使用經(jīng)高速緩沖的數(shù)據(jù)來連續(xù)地刷新矩陣。在沒有經(jīng)高速緩沖的數(shù)據(jù)的情況下,如果到了發(fā)送時間卻尚未接收到新的數(shù)據(jù),那么NIO平臺2902將沒有東西發(fā)送到發(fā)布服務(wù)器2904。因此,可以實時地或準(zhǔn)實時地將新的數(shù)據(jù)發(fā)送到矩陣,并且可以在需要時使用經(jīng)高速緩沖的數(shù)據(jù)以確保發(fā)布服務(wù)器2904接收到穩(wěn)定的數(shù)據(jù)供應(yīng)以進行顯示。參考圖30,環(huán)境3的一個實施例將圖29的NIO平臺2902示出為被配置成提供捕獲數(shù)據(jù)、并且將所捕獲的數(shù)據(jù)準(zhǔn)備好進行發(fā)布的各種部件/功能。應(yīng)理解,可以許多不同方式來組織由部件提供的功能,并且所述功能可以跨額外的部件而散布,或者組合為更少的部件。在本實例中,功能包含從外部源2906a到2906N獲得信息且隨后變換并過濾數(shù)據(jù)的數(shù)據(jù)部件3002a、3002b、3002c,...,和3002M。在本實例中,數(shù)據(jù)檢索、變換和過濾的進程是基于每個源而發(fā)生。數(shù)據(jù)檢索部件3002a到3002M可以與外部源2906a到2906N具有一一對應(yīng)關(guān)系,或者單個數(shù)據(jù)部件可以連接到一個以上外部源。所述功能還包含區(qū)分優(yōu)先級部件3004,其從數(shù)據(jù)部件3002a到3002M接收經(jīng)變換和經(jīng)過濾的數(shù)據(jù)且對所述數(shù)據(jù)區(qū)分優(yōu)先級以供發(fā)布。如將在下文更詳細(xì)地描述,這允許向特定類型的數(shù)據(jù)和/或特定外部源給予發(fā)布的優(yōu)先級,這繼而允許按需要對實際顯示的數(shù)據(jù)進行調(diào)整。雖然區(qū)分優(yōu)先級部件3004針對所有數(shù)據(jù)部件3002a到3002M執(zhí)行優(yōu)先級區(qū)分,但應(yīng)理解,數(shù)據(jù)部件3002a到3002M中的每一者可能存在單獨的區(qū)分優(yōu)先級部件。在本實例中,區(qū)分優(yōu)先級部件3004將經(jīng)優(yōu)先級區(qū)分的數(shù)據(jù)發(fā)送到排隊部件3006且直接發(fā)送到遞送部件3008。排隊部件3006提供一個或多個隊列,數(shù)據(jù)臨時存儲在所述隊列中,以確保NIO平臺2902始終具有要發(fā)送到網(wǎng)絡(luò)服務(wù)服務(wù)器2904的數(shù)據(jù)。到遞送部件3008的直接路徑為服務(wù)器2904提供實時或準(zhǔn)實時的數(shù)據(jù),而不具有由隊列部件3006引入的延遲。參考圖31,使用源服務(wù)3102a到3102M和流服務(wù)3104更詳細(xì)地示出圖30的NIO平臺2902的一個實施例。源服務(wù)3102a到3102M和流服務(wù)3104是被配置成在NIO平臺2902內(nèi)操作的服務(wù),如先前實施例中所描述。NIO平臺2902包含多個源服務(wù)3102a、3102b、3102c,...,和3102M。源服務(wù)3102a到3102M被配置成分別從外部源2906a到2906N獲得數(shù)據(jù)。在本實例中,源服務(wù)3102a到3102M包含執(zhí)行關(guān)于圖30所描述的數(shù)據(jù)檢索、變換和過濾功能的塊(未示出)。源服務(wù)3102a到3102M將數(shù)據(jù)傳遞到流服務(wù)3104,其處置關(guān)于圖30所描述的區(qū)分優(yōu)先級、排隊和遞送。應(yīng)理解,在其它實施例中,源服務(wù)3102a到3102M和流服務(wù)3104中的一者或多者可以組合為單個服務(wù)。在仍其它實施例中,源服務(wù)3102a到3102M和流服務(wù)3104可以被進一步劃分。舉例來說,可以創(chuàng)建一個或多個額外服務(wù),并且將其配置成處置變換功能、過濾功能、區(qū)分優(yōu)先級功能、排隊功能,和/或遞送功能。如先前所描述,可以使用許多不同的服務(wù)和/或塊以許多不同方式配置NIO平臺2902來提供相同的功能。參考圖32,示出圖31的源服務(wù)3102a的一個實施例。在本實例中,源服務(wù)包含連接塊3202、變換塊3204、白名單過濾塊3206、黑名單過濾塊3208,和發(fā)布塊3210。當(dāng)塊3202到3210結(jié)束執(zhí)行其所配置的處理時,其調(diào)用如先前所描述的Blockrouter.notifySignals(),且服務(wù)的塊路由器調(diào)用下一塊上的processSignals()。連接塊3202被配置成連接到特定外部源,例如Twitter、Facebook、Google+、Instagram、Youtube或提供內(nèi)容的另一源。連接的類型可基于特定站點,其中一些站點將數(shù)據(jù)推送到連接塊3202,且其它站點需要連接塊3202被配置成從那些站點抽取數(shù)據(jù)。因此,連接塊3202的實際配置可取決于以下各者而變化:外部源的API、正獲得的信息的類型(例如,流數(shù)據(jù)對其它非流數(shù)據(jù)類型)、是否需要認(rèn)證證書來用于存取,和/或其它因素。變換塊3204將所獲得的數(shù)據(jù)轉(zhuǎn)換為niogram,其中每個niogram含有單條內(nèi)容(例如,F(xiàn)acebook帖子、推文、具有附加圖片的文章,或Youtube視頻)。在本實例中,不管外部源和數(shù)據(jù)的類型(例如,視頻、音頻、圖像,和/或文本)如何,將把數(shù)據(jù)置于niogram中的所限定的字段中。此解構(gòu)進程會將數(shù)據(jù)規(guī)格化以用于稍后處理。變換塊3204可以保留從外部源獲得的所有信息,或者可以丟棄信息。變換塊3204還可以將其它信息插入到niogram中,例如源類型(例如,Twitter或Facebook)、對應(yīng)于源數(shù)據(jù)的用戶名、文本(例如,每個內(nèi)容源的相關(guān)文本)、到內(nèi)容的鏈接、唯一ID(例如,全局或局部地,例如根據(jù)類型),和/或狀態(tài)旗標(biāo)(例如,“舊”、“新”或“VIP”)。過濾塊3206和3208針對niogram的字段中含有的內(nèi)容而執(zhí)行過濾。白名單塊3206含有必須存在于字段中來通過過濾器的文本(例如,字或短語),且黑名單塊3208含有必須不存在于字段中來通過過濾器的文本。所述文本可處于帖子、圖像題注、用戶名中和/或其它地方,并且可以取決于特定源和/或待發(fā)布的內(nèi)容而變化。過濾塊3206和3208使得能夠屏蔽內(nèi)容,以防止錯誤肯定并且移除不想要(例如,有異議的、無禮的和/或不相關(guān))的材料。一個或多個定制塊3210可以定位在服務(wù)3102內(nèi)的任何地方,或者可以完全省略。在本實例中,不使用定制塊3210。發(fā)布塊3212發(fā)布經(jīng)變換和經(jīng)過濾的niogram以供服務(wù)3104使用。舉例來說,發(fā)布塊3212可以向?qū)λ性捶?wù)3102a到3102M共用的publisher_sources通道進行發(fā)布。應(yīng)理解,在其它實施例中,塊3202到3212中的一者或多者可以組合為單個塊。在仍其它實施例中,塊3202到3212中的一者或多者可以被進一步劃分。參考圖33A,示出圖31的流服務(wù)3104的一個實施例。在本實例中,流服務(wù)包含預(yù)訂塊3302、隊列(按照類型)塊3304、時戳塊3306、新鮮度塊3308、優(yōu)先級塊3310、隊列(按照優(yōu)先級)塊3312,和輸出塊3314。當(dāng)塊3302到3312結(jié)束執(zhí)行其所配置的處理時,其調(diào)用如先前所描述的Blockrouter.notifySignals(),且服務(wù)的塊路由器調(diào)用下一塊上的processSignals()。預(yù)訂塊3302向subscriber_sources預(yù)訂,其接收由源服務(wù)3102a到3102M經(jīng)由publisher_sources發(fā)布的所有niogram。預(yù)訂塊3302將所接收的niogram傳遞到隊列塊3304和時戳塊3306兩者。隊列(按照類型)塊3304連同隊列(按照優(yōu)先級)塊3312可用于提供經(jīng)高速緩沖的數(shù)據(jù),以確保發(fā)送數(shù)據(jù)的穩(wěn)定流,以供發(fā)布到網(wǎng)絡(luò)服務(wù)服務(wù)器2904。在本實例中,兩個單獨的隊列塊用于確?;陬愋秃蛢?yōu)先級兩者來發(fā)布內(nèi)容。隊列塊3304存儲每種類型的外部源(例如,Twitter、Facebook和Google+)的隊列。每個隊列被配置成保持所限定的數(shù)目的niogram。隊列塊3304按所限定的間隔(例如,每X毫秒或秒)從每個隊列發(fā)射niogram,并且將突然離開隊列的niogram自動重新加載到隊列末尾以進行再循環(huán)。對隊列的新的添加會彈出隊列,從而丟棄前面的niogram,并且將新的niogram添加到隊列的末尾。重新加載確保隊列將保持完整,甚至在不添加新的niogram的情況下也如此。因此,如果外部源不頻繁地產(chǎn)生新的內(nèi)容,用于那種類型的隊列中的niogram將通常比對應(yīng)于頻繁更新的類型的隊列中的niogram舊。隊列塊3304可以使用值(例如,節(jié)流閥)來展開所發(fā)射的niogram。舉例來說,如果存在八種類型,且隊列塊3304被配置成每五秒針對每種類型發(fā)射一niogram,那么每五秒發(fā)射八個niogram。節(jié)流閥可用于使所述八個niogram排隊,使得它們的發(fā)射跨五秒的窗相對均勻地散布。時戳塊3306將識別特定參考時間的時戳指派給每個niogram,例如當(dāng)那個niogram的內(nèi)容被時戳塊3306接收時。因為最初實時地或準(zhǔn)實時地將niogram傳遞到時戳塊3306,所以時戳將接近niogram被對應(yīng)的源服務(wù)接收的時間。在使用新鮮度的實施例中,新鮮度塊3308將新鮮度水平指派給每個niogram。向每個niogram指派隨時間改變的新鮮度水平(例如,niogram隨時間失去其“新鮮度”)。可基于內(nèi)容(例如,文本可能比圖像更快地失去新鮮度)、類型和/或其它因素而應(yīng)用不同新鮮度水平和不同衰退速率。新鮮度水平使得流服務(wù)3104能夠基于在多久以前接收到內(nèi)容來調(diào)整內(nèi)容,以通過網(wǎng)絡(luò)服務(wù)服務(wù)器2904進行顯示。優(yōu)先級塊3310基于一個或多個所限定的準(zhǔn)則而將優(yōu)先級指派給每個niogram。舉例來說,可以使用優(yōu)先級尺度1到5,其中基于內(nèi)容(例如,可以向圖像指派比文本高的優(yōu)先級)、類型和/或其它準(zhǔn)則而向niogram指派優(yōu)先級。新鮮度可以影響優(yōu)先級水平,其中niogram的優(yōu)先級水平隨著其新鮮度減小而減小。在其操作方式方面可能類似于或等同于隊列塊3304的隊列(按照優(yōu)先級)塊3312針對niogram的每個優(yōu)先級而存儲隊列。輸出塊3314接收niogram并且將它們發(fā)送到網(wǎng)絡(luò)服務(wù)服務(wù)器2904。輸出塊3314可為能夠與網(wǎng)絡(luò)服務(wù)服務(wù)器2904直接通信的網(wǎng)絡(luò)套接字。參考圖33B,方法3320的一個實施例示出可以在圖29的NIO平臺2902內(nèi)使用的進程。應(yīng)注意,方法3320聚焦于發(fā)布的實時或準(zhǔn)實時方面,且不描述排隊。在步驟3322中,從外部源獲得媒體。在步驟3324中,對媒體進行變換并且插入到niogram中。在此步驟中還可以發(fā)生額外的加標(biāo)簽。在步驟3326中,基于白名單和/或黑名單信息對媒體進行過濾。在步驟3328中,作出關(guān)于是否基于步驟3326的過濾而丟棄niogram的確定。如果將丟棄niogram,那么方法3320移動到步驟3330,且丟棄niogram。如果不丟棄niogram,那么方法3320移動到步驟3332。在步驟3332中,添加時戳,以將參考時間指派給niogram。在步驟3334中,在使用新鮮度水平來控制媒體的顯示的實施例中設(shè)定媒體的新鮮度水平。在步驟3336中,將優(yōu)先級指派給媒體。在步驟3338中,將媒體輸出到服務(wù)器2904以供顯示。參考圖34,網(wǎng)絡(luò)服務(wù)服務(wù)器2904使用來自NIO平臺2902的經(jīng)區(qū)分優(yōu)先級的數(shù)據(jù)流來填充并刷新矩陣。在本實例中,網(wǎng)絡(luò)服務(wù)服務(wù)器2904具有兩個主要功能。第一功能是指派功能3402,網(wǎng)絡(luò)服務(wù)服務(wù)器2904使用所述功能將niogram指派給拼塊。如將在下文描述的,不是所有niogram都可以被指派給拼塊。第二功能是發(fā)布功能,網(wǎng)絡(luò)服務(wù)服務(wù)器2904使用所述功能經(jīng)由矩陣發(fā)布niogram以供在一個或多個裝置顯示器3406上觀看。參考圖35,示出矩陣3500的一個實施例。矩陣3500表示圖29的實時發(fā)布系統(tǒng)2901可如何組織并呈現(xiàn)所發(fā)布的數(shù)據(jù)、以供在網(wǎng)站上、移動裝置應(yīng)用程序內(nèi)和/或其它地方觀看的一個實例。在本實例中,網(wǎng)絡(luò)服務(wù)服務(wù)器2904確定經(jīng)區(qū)分優(yōu)先級的數(shù)據(jù)在矩陣3500中屬于何處,所述數(shù)據(jù)隨后可以被發(fā)布到顯示器。舉例來說,可使用級聯(lián)樣式表單(CSS)來限定矩陣3500。矩陣3500表示可以在模擬或數(shù)字顯示器上顯示的顯示區(qū)域(例如,在網(wǎng)絡(luò)瀏覽器或其它觀看軟件內(nèi))的一部分或全部。如所示,將矩陣3500劃分為十六個拼塊(例如,單元)3501、3504、3506,...,和3532,且每個拼塊3501到3532表示可以在其中顯示數(shù)據(jù)的矩陣3500的唯一區(qū)域。應(yīng)理解,矩陣3500可具有任何大小和形狀,但在本實施例中出于示出的目的是矩形。雖然是矩形,但矩陣3500可以具有如所示的不規(guī)則列和/或行,或者列和/或行可為規(guī)則的。此外,矩陣3500和/或拼塊3501到3532中的一者或多者可為固定或動態(tài)的。另外參考圖25A到D,使用拼塊3502、3504、3510和3512來示出矩陣3500的一部分。在本實例中,向拼塊3502、3504和3512指派改變的內(nèi)容,且拼塊3510是靜態(tài)的(例如,內(nèi)容不改變)。因為拼塊3502、3504和3512含有改變的內(nèi)容,所以用戶可能難以在內(nèi)容改變之前讀取或以其它方式觀看拼塊的內(nèi)容。因為內(nèi)容可能不會再次在矩陣3500中出現(xiàn),或者從用戶的角度來看可能會以某一看似隨機的時間出現(xiàn)在另一拼塊中,所以一直改變的拼塊可能難以觀看。因此,拼塊3502、3504和3512可分別包含用戶可選擇的區(qū)3602、3604和3606。用戶可選擇的區(qū)3602、3604和3606可為任何形狀和/或大小,并且可以定位在其相應(yīng)的拼塊3502、3504和3512內(nèi)的任何地方。每個用戶可選擇的區(qū)3602、3604和3606使得能夠鎖定相應(yīng)的拼塊,其防止在將拼塊解鎖之前內(nèi)容會改變。舉例來說,在圖36A中,未選擇用戶可選擇的區(qū)3602、3604和3606中的任一者,且相應(yīng)的拼塊3502、3504和3512中的內(nèi)容正在改變。對比而言,在圖36B中,已經(jīng)選擇用戶可選擇的區(qū)3602,其鎖定了拼塊3502且防止拼塊3502的內(nèi)容被新內(nèi)容刷新。用戶可選擇的區(qū)3604和3606未被選擇,且相應(yīng)的拼塊3504和3512中的內(nèi)容不斷改變。對用戶可選擇的區(qū)域3602的取消選擇(例如,第二次選擇所述用戶可選擇的區(qū)域)將把拼塊3502解鎖,且允許刷新內(nèi)容。當(dāng)將拼塊3502解鎖時,拼塊3502可即時地刷新,或者可以使用一個或多個其它準(zhǔn)則進行刷新。舉例來說,對應(yīng)于拼塊3502的定時器可以在鎖定拼塊3502的同時不斷運行。在此情況下,如果定時器在拼塊3502被鎖定的同時到期,那么拼塊3502可基于到期的定時器在解鎖時刷新。在其它實施例中,鎖定拼塊3502可能會凍結(jié)定時器,并且將拼塊3502解鎖可能會將定時器解凍。在此情況下,定時器可在解凍時正常繼續(xù),并且可以在定時器到期時刷新拼塊3502。具體參考圖36C和36D,對拼塊3502、3504、3510和3512的選擇可在所述拼塊被配置成放大的情況下放大所述拼塊。舉例來說,對圖36C和36D兩者中的拼塊3502的選擇(例如,對拼塊3502的一部分的用戶選擇)已經(jīng)放大了拼塊。在一些實施例中,經(jīng)放大的拼塊3502的內(nèi)容可以繼續(xù)改變,如圖36C中所示。在其它實施例中,在放大拼塊3502時,可鎖定內(nèi)容,如圖36D中所示。在將拼塊3502最小化時,可將拼塊3502解鎖。在其中放大拼塊3502會鎖定拼塊的內(nèi)容的情況下,對應(yīng)的定時器可如先前所描述而操作。參考圖36E,更詳細(xì)地示出拼塊3502的一個實施例。在本實例中,拼塊3502可包含通過線3612勾勒出的頁眉區(qū)域3610。頁眉區(qū)域3610可包含用戶可選擇的區(qū)域3602、對應(yīng)于當(dāng)前正由拼塊3502顯示的媒體的源的用戶名3614(在適用時),和識別內(nèi)容的類型的指示符3616(例如,圖標(biāo))。拼塊3502還可以包含通過線3620勾勒出的頁腳區(qū)域3618。頁腳區(qū)域3618可包含對應(yīng)于當(dāng)前正由拼塊3502顯示的媒體的源的源鏈接,從而使得用戶能夠選擇所述源鏈接以從原始源加載媒體。舉例來說,如果用戶正在瀏覽器中觀看矩陣,那么選擇所述鏈接可以在另一瀏覽器標(biāo)簽或另一瀏覽器窗口中打開源。在一些實施例中,頁眉區(qū)域3610和/或頁腳區(qū)域3618可僅在發(fā)生觸發(fā)時顯示,例如用戶用鼠標(biāo)經(jīng)過或者以其它方式選擇拼塊。在一些實施例中,頁眉區(qū)域3610和/或頁腳區(qū)域3618可能覆蓋正由拼塊3502顯示的媒體的一部分,而在其它實施例中,媒體可以完全顯示在頁眉區(qū)域3610與頁腳區(qū)域3618之間。在一些實施例中,頁眉區(qū)域3610和/或頁腳區(qū)域3618可以部分透明。在一些實施例中,可以基于類型或另一屬性向拼塊指派特定色彩,使得取決于文本的源而使用不同的色彩背景來顯示文本內(nèi)容。可以許多不同方式來過濾矩陣3500。舉例來說,用戶可以選擇用戶名3614,以僅示出來自那個用戶的內(nèi)容。用戶還可以選擇指示符1516來僅顯示來自那個源的內(nèi)容??梢酝ㄟ^對一個或多個用戶名和/或源的選擇來堆疊過濾器,從而使得能夠創(chuàng)建可定制的顯示。另外參考圖37,方法3700示出可以在圖29的實時發(fā)布系統(tǒng)內(nèi)使用、以將數(shù)據(jù)指派給矩陣3500的各個拼塊3502到3532的進程的一個實例。應(yīng)理解,這是實時或準(zhǔn)實時進程,其中數(shù)據(jù)經(jīng)過識別,被指派給拼塊3502到3532中的一個,并且進行發(fā)布以供實時地或準(zhǔn)實時地顯示,而不將數(shù)據(jù)存儲在數(shù)據(jù)存儲庫中。在步驟3702中,識別用于發(fā)布的內(nèi)容。在步驟3704和3706中,確定將用于顯示內(nèi)容的特定拼塊3501到3532,并且將內(nèi)容指派給拼塊。以所限定的方式發(fā)生拼塊指派。在一些實施例中,可以將一個外部源指派給矩陣3500的一個拼塊3501到3532,或者指派給多個拼塊(例如,其中數(shù)據(jù)在拼塊之間交錯或者以其它方式指派)。舉例來說,可以將外部源2906a指派給拼塊3501、3506、3510、3514、3518、3528和3532??梢詫⑼獠吭?906b指派給拼塊3504、3508、3522、3524和3530??梢詫⑼獠吭?906N指派給拼塊3512、3516和3526。不將拼塊3520指派給任何外部源。可使用拼塊3520來提供文章、評論、廣告和/或任何其它所要的內(nèi)容。在一些實施例中,在需要時,例如在出現(xiàn)尖峰時(如將在稍后描述),拼塊3520可用于溢出。在指派給特定外部源的拼塊內(nèi),可以各種方式來更新數(shù)據(jù)。舉例來說,可以將最新的數(shù)據(jù)指派給將要針對那個外部源進行刷新的下一個拼塊,或者可以指派給從可用的拼塊群組(例如,在五秒刷新內(nèi)的所有拼塊的群組)選擇的拼塊。從群組選擇拼塊可輔助將隨機性水平提供給矩陣3500。用于指派進程的拼塊的此外部源分組允許廣告商或其它贊助商保留某些拼塊。此指派進程還使得實時發(fā)布系統(tǒng)2901能夠為具有更高數(shù)據(jù)量的外部源保留更多拼塊,這通過控制拼塊3501到3532的指派而允許某一水平的負(fù)載平衡。在其它實施例中,可以將數(shù)據(jù)隨機地指派給拼塊,而非將拼塊系到特定外部源,且拼塊指派可以頻繁地改變。舉例來說,可以將最新的數(shù)據(jù)指派給待刷新的下一個拼塊,而不管從其獲得數(shù)據(jù)的外部源如何,但這可取決于特定準(zhǔn)則,例如拼塊對于內(nèi)容是否不適當(dāng)(例如,太小而不能顯示圖像或文本框)。當(dāng)隨機地指派時,可以對拼塊進行分組,使得每個外部源具有一定數(shù)目的拼塊。舉例來說,可以向外部源2906a指派X個拼塊(其中X為從一到十六的整數(shù))、形成矩陣3500的百分比區(qū)域的拼塊(例如,形成矩陣區(qū)域的至少百分之五十的拼塊)、在X與Y之間的數(shù)目的拼塊(其中X是等于或大于一且小于Y的整數(shù),且Y是從X+1到十六的整數(shù)),或者全部大于每拼塊指定最小大小的X個拼塊。因此,可以許多不同方式指派拼塊。還可以基于內(nèi)容來指派拼塊。舉例來說,可始終將推文指派給拼塊3506和3528。可以始終將圖像指派給拼塊3501、3504、3520和3516??梢允冀K將文本指派給拼塊3518。其它拼塊可以類似地聯(lián)系到內(nèi)容的類型,或者可以如先前所描述而指派。這使得設(shè)計者能夠按需要以已知型式將內(nèi)容分布在整個矩陣3500上,而不管內(nèi)容的源如何。不管接收到的數(shù)據(jù)的量如何,實時發(fā)布系統(tǒng)2901被配置成在給定在其內(nèi)發(fā)生發(fā)布的約束(例如,矩陣3500中的拼塊的數(shù)目)的情況下,發(fā)布盡可能多的新內(nèi)容。應(yīng)理解,可基于用戶偏好、帶寬限制和/或類似因素來扼制或以其它方式限制內(nèi)容,并且因此所發(fā)布的新內(nèi)容的量可在用戶間變化。在一些實施例中,為了確定應(yīng)示出哪些內(nèi)容,可基于以下各項對內(nèi)容區(qū)分優(yōu)先級:源、內(nèi)容的類型(例如,圖像可具有比文本高的優(yōu)先級)、新鮮度、基于數(shù)個因素的相關(guān)度加權(quán),和/或其它準(zhǔn)則??梢詫⒁粭l內(nèi)容的優(yōu)先級添加到內(nèi)容(例如,作為標(biāo)簽),并且在將所述內(nèi)容指派給拼塊時,可用于確定是否用其它內(nèi)容取代所述內(nèi)容。因此,拼塊的顯示屬性可基于當(dāng)前正由那個拼塊顯示的內(nèi)容而改變。這意味著可對拼塊區(qū)分優(yōu)先級,以用于基于它們的內(nèi)容進行取代。在本實例中,拼塊指派區(qū)分優(yōu)先級是基于確保發(fā)布盡可能多的新內(nèi)容,這一般意味著每當(dāng)新的內(nèi)容變得可用時,實時發(fā)布系統(tǒng)2901使用新的內(nèi)容取代較舊的內(nèi)容。這意味著拼塊指派區(qū)分優(yōu)先級決策可集中于在矩陣3500中將取代什么拼塊。雖然簡單地將新的內(nèi)容指派給矩陣3500中(或在指派給特定源的拼塊群組中)含有最舊內(nèi)容的拼塊是可由實時發(fā)布系統(tǒng)2901使用的一種方法,但其它方法可集中于簡單的拼塊內(nèi)容年齡(age)之外,例如拼塊內(nèi)容的優(yōu)先級水平。更具體來說,雖然拼塊指派區(qū)分優(yōu)先級可為部分基于年齡的決策,但在一些實施例中,年齡可能不是決定將取代什么拼塊的唯一因素或甚至主要因素。舉例來說,實時發(fā)布系統(tǒng)2901可被配置成在較舊的內(nèi)容具有比較新的內(nèi)容更高的優(yōu)先級級別的情況下,在較舊的內(nèi)容之前取代矩陣3500中的較新的內(nèi)容。在一些實施例中,可以將年齡視為確定取代優(yōu)先級的滑動尺度優(yōu)先級因素,因此拼塊的內(nèi)容的優(yōu)先級級別可隨著內(nèi)容變老而隨時間減小。換句話說,隨著拼塊的內(nèi)容變舊,內(nèi)容的優(yōu)先級水平可以某一方式下降(例如,連續(xù)地或者基于階梯函數(shù))。此下降可繼續(xù)下去,直到拼塊的內(nèi)容下降到原先具有較低優(yōu)先級水平的較新內(nèi)容的優(yōu)先級水平以下為止。使用此方法,將使用新內(nèi)容取代的拼塊是具有最舊內(nèi)容和/或最低優(yōu)先級水平的拼塊。在步驟3708中,可作出關(guān)于所指派的拼塊是否準(zhǔn)備好刷新的確定。在發(fā)生觸發(fā)時,例如在捕獲到新數(shù)據(jù)時和/或在定時器到期時,刷新矩陣3500內(nèi)的拼塊3501到3532。舉例來說,在捕獲到新數(shù)據(jù)時可發(fā)生觸發(fā),但拼塊可能在定時器到期之前不會更新。在較短時間量內(nèi)接收到新數(shù)據(jù)時,定時器防止拼塊過快地刷新。舉例來說,如果將定時器設(shè)定為兩秒且五條數(shù)據(jù)在兩秒內(nèi)到達那個拼塊,那么定時器可防止最后四條數(shù)據(jù)在到達時顯示,因為用戶將有可能難以那么快地消費數(shù)據(jù)。觸發(fā)可以每拼塊地操作(例如,每個拼塊可具有其自己的定時器),或者可以多個拼塊或者整個矩陣地操作。一般來說,矩陣3500中的一些或全部拼塊3501到3532將被定期地刷新,以維持動態(tài)數(shù)據(jù)的外觀。在一些實施例中,至少一個拼塊可在任何特定時間刷新。可將不同的觸發(fā)指派給不同類型的數(shù)據(jù)。舉例來說,圖像和推文可具有不同的刷新速率,這可影響已經(jīng)向其指派內(nèi)容的拼塊的刷新速率。當(dāng)刷新速率聯(lián)系到內(nèi)容自身時,一些拼塊3501到3532可被省略而不進行選擇。舉例來說,拼塊3530可被視為對于圖像來說太小,并且因此可能在圖像是將指派給拼塊的下一內(nèi)容的情況下不被考慮。如果步驟3708的確定指示拼塊未準(zhǔn)備好,那么方法3700可以重復(fù)步驟3708,直到拼塊準(zhǔn)備好為止。如果拼塊準(zhǔn)備好,那么方法3700移動到步驟3710,且更新所述拼塊。在下文關(guān)于表7來示出用于對矩陣3500內(nèi)的內(nèi)容進行區(qū)分優(yōu)先級的更詳細(xì)實例。表7表7示出五個優(yōu)先級水平,其中水平一最低,且水平五最高。每個優(yōu)先級水平與三個持續(xù)時間相關(guān)聯(lián),所述持續(xù)時間在本實例中是以秒計。每個優(yōu)先級水平具有最小持續(xù)時間、用于新內(nèi)容的最小持續(xù)時間,和最大持續(xù)時間。最小持續(xù)時間是將顯示指派給那個拼塊的內(nèi)容的最短時間周期,除非新內(nèi)容可用。此持續(xù)時間設(shè)定使得較高優(yōu)先級內(nèi)容能夠在矩陣3500中保持比較低優(yōu)先級內(nèi)容更長的時間。最大持續(xù)時間是在刷新之前將顯示內(nèi)容的最長時間周期,即使所述刷新使用經(jīng)高速緩沖的內(nèi)容也如此。此持續(xù)時間設(shè)定確保將使用不同的內(nèi)容周期性地刷新矩陣3500。用于新內(nèi)容的最小持續(xù)時間是在使用新內(nèi)容刷新之前將示出當(dāng)前內(nèi)容的時間量。此持續(xù)時間設(shè)定確保新內(nèi)容被推送到矩陣3500而覆蓋先前內(nèi)容,但還可以被設(shè)定成防止內(nèi)容以無法消費的快速度被刷新?;诒?,假設(shè)沒有新內(nèi)容和/或較高優(yōu)先級內(nèi)容可用,那么涉及三個時間周期。在到達最小持續(xù)時間之前、在已經(jīng)到達最大持續(xù)時間之后,以及在最小持續(xù)時間與最大持續(xù)時間之間。在到達拼塊的最小持續(xù)時間之前,拼塊的內(nèi)容將不會被取代。在經(jīng)過最大持續(xù)時間之后,拼塊的內(nèi)容將始終被取代,甚至被較低優(yōu)先級內(nèi)容取代,其中首先取代最舊的拼塊。處于最小持續(xù)時間與最大持續(xù)時間之間的任何拼塊基于它們的時間窗中剩余的時間百分比而進行比較。舉例來說,優(yōu)先級二拼塊對于十五秒窗口來說分別具有十五秒的最小持續(xù)時間和三十秒的最大持續(xù)時間。優(yōu)先級三拼塊對于二十秒窗口來說分別具有二十秒的最小持續(xù)時間和四十秒的最大持續(xù)時間。假設(shè)優(yōu)先級二拼塊的內(nèi)容已經(jīng)顯示了二十秒,且優(yōu)先級三拼塊的內(nèi)容已經(jīng)顯示了三十秒。優(yōu)先級二拼塊穿過其十五秒窗口的大約百分之三十三,且優(yōu)先級三拼塊穿過其二十秒窗口的百分之五十。在此情況下,將取代優(yōu)先級三拼塊,因為其已經(jīng)使用了比優(yōu)先級二拼塊更多的其顯示時間。在其它實施例中,可僅針對相同優(yōu)先級的拼塊來比較窗口,且較低優(yōu)先級拼塊可始終在較高優(yōu)先級拼塊之前進行刷新,而不管剩余的時間量如何。如果新內(nèi)容可用,那么將用于新內(nèi)容的最小持續(xù)時間應(yīng)用于所述拼塊。舉例來說,優(yōu)先級一拼塊可能已經(jīng)在其被檢查時將其信息顯示了五秒。如果可用的內(nèi)容不是新的,那么什么都不發(fā)生,因為七秒的最小持續(xù)時間尚未到期。然而,如果可用的內(nèi)容是新的,那么應(yīng)用用于新內(nèi)容的最小持續(xù)時間,且刷新拼塊,因為最小持續(xù)時間是一秒且定時器處于五秒。這使得在新內(nèi)容變得可用時能夠快速地刷新現(xiàn)有的內(nèi)容,其中較低優(yōu)先級內(nèi)容比較高優(yōu)先級內(nèi)容更快地被取代。在一些實施例中,可能存在始終被給予優(yōu)先的優(yōu)先級水平。舉例來說,VIP水平可意味著即使沒有拼塊準(zhǔn)備好刷新也刷新拼塊。將內(nèi)容指定為VIP會確保將即時地發(fā)布所述內(nèi)容,而不管拼塊狀態(tài)如何。應(yīng)理解,被取代的拼塊可仍然是最舊的、剩余最少時間等的拼塊,但甚至將超馳用于新內(nèi)容周期的最小持續(xù)時間來顯示新內(nèi)容。舉例來說,假設(shè)待取代的下一拼塊是已經(jīng)僅使用了其用于新內(nèi)容的十五秒最小持續(xù)時間中的五秒的優(yōu)先級五拼塊。如果VIP內(nèi)容可用,那么將忽略剩余的十秒,且將使用VIP內(nèi)容來刷新所述拼塊。應(yīng)理解,可以按需要混合不同類型的拼塊指派。這在呈現(xiàn)內(nèi)容方面提供大量靈活性,且使得能夠在內(nèi)容改變時動態(tài)地調(diào)整矩陣3500。在本實施例中,將內(nèi)容發(fā)布到矩陣3500,且隨后實時地或準(zhǔn)實時地使用其它內(nèi)容進行取代。雖然一些內(nèi)容可能被暫時高速緩沖并且被遞送(例如,以在第一次加載矩陣時快速地填充矩陣3500)和/或再遞送(例如,在其中尚未接收到新內(nèi)容但必須刷新拼塊的情形中),但實時發(fā)布系統(tǒng)2901不將內(nèi)容存儲在數(shù)據(jù)存儲庫中,且一旦系統(tǒng)丟棄所述內(nèi)容,所述內(nèi)容便無法被檢索到且再顯示。換句話說,不存在用戶可借以在時間上向后移動穿過拼塊的內(nèi)容的“后退”按鈕或其它機制。系統(tǒng)的實時方面意味著信息一直進入,且用于取代先前信息,且先前信息不再可用。應(yīng)理解,在其它實施例中,可以高速緩沖或者以其它方式保存內(nèi)容,所述內(nèi)容包含拼塊的內(nèi)容。另外參考圖38,方法3800示出可以由圖29的實時發(fā)布系統(tǒng)內(nèi)的網(wǎng)絡(luò)服務(wù)服務(wù)器2904使用、以將數(shù)據(jù)指派給矩陣3500的各個拼塊3501到3532的進程的一個實例。應(yīng)理解,這是實時或準(zhǔn)實時進程,其中數(shù)據(jù)經(jīng)過識別,被指派給拼塊3501到3532中的一個,并且進行發(fā)布,以供實時地或準(zhǔn)實時地顯示。在需要時,可以使用經(jīng)高速緩沖的數(shù)據(jù)來防止拼塊保持在未刷新或空白狀態(tài),如先前所描述。在步驟3802中,從NIO平臺2902接收到媒體。在步驟3804中,作出關(guān)于任何適當(dāng)?shù)钠磯K定時器是否已經(jīng)到期的確定。舉例來說,如果將媒體標(biāo)記為“新”,那么適當(dāng)?shù)钠磯K定時器將是新內(nèi)容持續(xù)時間定時器。如果媒體不是新的,那么適當(dāng)?shù)钠磯K定時器將是最小持續(xù)時間定時器。如果沒有拼塊定時器已經(jīng)到期,那么在步驟3806中丟棄媒體,且方法3800返回到步驟3802。如果適當(dāng)?shù)钠磯K定時器已經(jīng)到期,那么方法3800移動到步驟3808。在步驟3808中,作出關(guān)于具有到期的定時器的拼塊對于媒體來說是否為適當(dāng)(例如,匹配)拼塊的確定。舉例來說,如果拼塊是優(yōu)先級1拼塊、且媒體是優(yōu)先級3媒體,那么存在不匹配。如果存在不匹配,那么在步驟3806中丟棄媒體,且方法3800返回到步驟3802。如果存在匹配,那么在步驟3810中使用新媒體來取代當(dāng)前正在匹配的拼塊處顯示的媒體。應(yīng)理解,方法3800可快速地發(fā)生,其中媒體被連續(xù)地接收并且指派或丟棄。實際速度取決于若干因素,例如所接收的媒體的輸入速率、相對于指派如何發(fā)生的媒體的內(nèi)容(例如,高優(yōu)先級內(nèi)容與矩陣中的高優(yōu)先級拼塊的數(shù)目的比率)、定時器的持續(xù)時間、矩陣的大小,和/或其它因素。參考圖39,方法3900示出可以在圖29的實時公布系統(tǒng)內(nèi)使用的進程的一個實例。實時發(fā)布系統(tǒng)2901可以對所捕獲的內(nèi)容中的一些或全部進行高速緩沖,并且如果在預(yù)期刷新拼塊時尚未接收到新內(nèi)容,那么可以使用經(jīng)高速緩沖的內(nèi)容來刷新拼塊。換句話說,可以使用舊的內(nèi)容(無論先前是否示出)來使矩陣3500保持在經(jīng)刷新的狀態(tài)中。當(dāng)“按需要”將經(jīng)高速緩沖的內(nèi)容注入到媒體流中而不是定時地自動注入時,可以使用此方法。因此,在步驟3902中,作出關(guān)于拼塊是否準(zhǔn)備好刷新的確定。如果拼塊未準(zhǔn)備好刷新,那么方法3900返回到步驟3902,且等待拼塊準(zhǔn)備好刷新。如果拼塊準(zhǔn)備好刷新,那么方法3900繼續(xù)進行到步驟3904。在步驟3904中,作出關(guān)于是否存在用于拼塊的新內(nèi)容的確定。如果存在新數(shù)據(jù),那么在步驟3906中使用新內(nèi)容來更新拼塊。如果不存在新內(nèi)容,那么在步驟3908中使用經(jīng)高速緩沖的內(nèi)容來更新拼塊。應(yīng)注意,步驟3908可取決于實時發(fā)布系統(tǒng)2901的配置而變化。舉例來說,如果不存在來自指派給拼塊的外部源(例如,外部源2906a)的新內(nèi)容,但存在來自另一外部源(例如,外部源2906a)的新內(nèi)容,那么可使用來自外部源2906b的新內(nèi)容來刷新拼塊。換句話說,可向新鮮內(nèi)容給予優(yōu)于經(jīng)高速緩沖的內(nèi)容的優(yōu)先級。然而,如果實時發(fā)布系統(tǒng)2901被配置成僅使用某些外部源來用于某些拼塊,那么將在刷新給定拼塊時僅使用經(jīng)高速緩沖的內(nèi)容,且從對應(yīng)的外部源得不到新內(nèi)容。參考圖40A到40D,各種方法示出當(dāng)在來自外部源2906a到2906N中的一個或多個的輸入速率中出現(xiàn)尖峰時、可以在圖29的實時發(fā)布系統(tǒng)內(nèi)使用的進程的實例。更具體來說,不管如何指派拼塊3501到3532,實時發(fā)布系統(tǒng)2901應(yīng)準(zhǔn)備好處置外部源2906a到2906N的輸入速率(和因此輸入量)中的尖峰。因為實時發(fā)布系統(tǒng)2901實時地或準(zhǔn)實時地顯示內(nèi)容,所以可能會意外地出現(xiàn)尖峰,且系統(tǒng)必須以一種方式處置那些尖峰,使得維持顯示的實時性質(zhì),而不會那么快地刷新矩陣3500,以至內(nèi)容無法被觀看顯示的某人消費。因此,圖40A到40E示出當(dāng)接收到太多數(shù)據(jù)時、可以由實時發(fā)布系統(tǒng)2901執(zhí)行的方法??梢曰诿總€流或基于合計(即,多個流或所有流)作出是什么構(gòu)成太多數(shù)據(jù)的確定。具體參考圖40A,方法4的一個實施例示出實時發(fā)布系統(tǒng)2901可借以響應(yīng)于輸入速率中的尖峰的進程。在步驟4002中,作出關(guān)于輸入速率是否高于所限定的閾值的確定。如果不高于所限定的閾值,那么步驟4002可以重復(fù),直到檢測到超過閾值的輸入速率為止。如果輸入速率超過閾值,那么方法4繼續(xù)進行到步驟4004。在步驟4004中,丟棄未顯示的任何內(nèi)容。這導(dǎo)致完全不示出被丟棄的內(nèi)容,其中丟失的內(nèi)容的量取決于若干因素,例如輸入速率、正用于那個流的拼塊的數(shù)目,和那些拼塊的刷新速率。具體參考圖40B,方法4010的一個實施例示出實時發(fā)布系統(tǒng)2901可借以響應(yīng)于輸入速率中的尖峰的另一進程。步驟4012等同于圖40A的步驟4002,且不在本實例中重復(fù)。在步驟4014中,自動將拼塊添加到矩陣2900。舉例來說,可以將拼塊添加到矩陣2900的底部,這使得矩陣更長。由于矩陣2900是實況顯示,所以應(yīng)該以一種方式添加拼塊,使得在發(fā)生添加時,使對觀看矩陣2900的某人的任何可能的中斷最小化。在一些實施例中,可以將拼塊添加到矩陣2900的側(cè)面和/或頂部,但添加到矩陣2900的底部可以減輕對觀看者的中斷。一旦尖峰結(jié)束,便可以移除額外的拼塊,但這可以隨時間進行,從而避免擦去用戶可能正在觀看的內(nèi)容。在一些實施例中,可以在移除經(jīng)高速緩沖的內(nèi)容之前在拼塊中使用經(jīng)高速緩沖的內(nèi)容,因為這將是較舊的內(nèi)容,且可能對觀看者沒那么吸引人。觀看者隨后可以在矩陣上向上移動得更高,從而搜尋新內(nèi)容,并且隨后可以移除底部拼塊。在其它實施例中,只要所添加的拼塊處于顯示器的可見區(qū)域中,它們便可以不被移除,但隨后它們不再可見時可以被移除。具體參考圖40C,方法4020的一個實施例示出實時發(fā)布系統(tǒng)2901可借以響應(yīng)于輸入速率中的尖峰的又另一進程。步驟4022等同于圖40A的步驟4002,且不在本實例中重復(fù)。在步驟4024中,對內(nèi)容進行高速緩沖且示出為速率減緩,但這將導(dǎo)致一些內(nèi)容上的時間延遲??梢詠G棄超過一定年齡的內(nèi)容,但丟棄年齡可取決于接收到多少數(shù)據(jù)而變化。舉例來說,如果流減緩到閾值以下,那么一些內(nèi)容可能被高速緩沖地更長,使得可以使用看不見的內(nèi)容來刷新矩陣2900,即使那個內(nèi)容略微過時也如此。如果輸入速率保持在閾值以上,那么可以繼續(xù)丟棄更多的內(nèi)容。具體參考圖40D,方法4030的一個實施例示出實時發(fā)布系統(tǒng)2901可借以響應(yīng)于輸入速率中的尖峰的進程。步驟4032等同于圖40A的步驟4002,且不在本實例中重復(fù)。在步驟4034中,可以將矩陣2900中的一個或多個額外拼塊指派給具有輸入速率尖峰的外部源2906a到2906N。舉例來說,如果來自外部源2906a的輸入速率已經(jīng)達到尖峰,那么可以將專門指派給緩慢更新的外部源2906b的拼塊指派給外部源2906a,或者來自外部源2906a的內(nèi)容可以與來自外部源2906b的內(nèi)容交錯。一旦尖峰結(jié)束,便可以使拼塊返回到它們原先被指派到的外部源。在其中將拼塊隨機地指派給外部源而非指派給特定外部源的配置中,可以為具有尖峰的外部源保留拼塊。舉例來說,特定百分比的拼塊可以保持用于其它外部源,而將另一百分比的拼塊特定地指派給具有尖峰的外部源。一旦尖峰結(jié)束,便可以正常分配拼塊。具體參考圖40E,方法4040的一個實施例示出實時發(fā)布系統(tǒng)2901可借以響應(yīng)于輸入速率中的尖峰的仍另一進程。步驟4042等同于圖40A的步驟4002,且不在本實例中重復(fù)。在步驟4044中,可以改變指派給具有輸入速率尖峰的外部源的一個或多個拼塊的刷新速率,使得可以在相同時間量內(nèi)示出更多的內(nèi)容。舉例來說,如果當(dāng)前刷新速率是兩秒,那么可以將刷新速率降低到一秒,這將使可以使用相同拼塊顯示的數(shù)據(jù)量加倍。如果輸入速率保持高,那么可以重復(fù)地降低刷新速率定時器,直到達到限定最小刷新速率的底限為止。一旦尖峰結(jié)束,便可以使刷新速率返回到正常,但這可以逐漸地發(fā)生。如果將改變整個矩陣2900的刷新速率,那么可以跨不同的拼塊分階段地改變,直到已經(jīng)改變整個矩陣為止。此分階段的方法可用于使可能對于觀看者引起的、突然改變整個矩陣2900的視覺中斷最小化。如先前所陳述,圖40A到40E的方法可以級聯(lián)的方法組合或者同時地進行組合。方法的組合可基于若干因素,例如實際輸入速率、是涉及單個外部源還是多個外部源、如何指派拼塊(例如,每個外部源或跨多個外部源),涉及哪一外部源(例如,其是否為已經(jīng)被指派多個拼塊的外部源)、外部源的歷史趨勢數(shù)據(jù)(例如,對于此外部源,尖峰通常持續(xù)多長時間,以及在尖峰期間最大量是多少),和/或類似信息。舉例來說,在級聯(lián)方法中,可以首先對內(nèi)容進行高速緩沖(圖40C)。隨后,如果輸入速率在特定時間周期內(nèi)未下降到閾值以下和/或輸入速率增加,那么可以改變刷新速率(圖40E)。隨后,如果輸入速率在特定時間周期內(nèi)未下降到閾值以下和/或輸入速率增加,那么可以重新指派拼塊(圖40D)。隨后,如果輸入速率在特定時間周期內(nèi)未下降到閾值以下和/或輸入速率增加,那么可以擴展矩陣2900(圖40B)。應(yīng)理解,此次序僅用于實例的目的,且可以任何次序執(zhí)行圖40A到40E的方法。在同時組合圖40A到40E的方法的實例中,可以對內(nèi)容進行高速緩沖(圖40C),同時重新指派拼塊(圖40D),且隨后重新指派的拼塊可用于經(jīng)高速緩沖的和/或新的內(nèi)容。在另一實例中,可以改變刷新速率(圖40E),同時擴展矩陣2900(圖40B)。因此,可以使用許多不同的方法來處置來自外部源2906a到2906N的輸入速率中的尖峰。一般來說,所述方法將針對于保留盡可能多的內(nèi)容,同時顯示盡可能多的實時或準(zhǔn)實時內(nèi)容。實時發(fā)布系統(tǒng)2901可以特定地被配置成用于外部源2906a到2906N,進而使得能夠響應(yīng)于外部源中的改變而優(yōu)化所述系統(tǒng)。在一些實施例中,用戶可以選擇將在矩陣2900中顯示的數(shù)據(jù)。舉例來說,用戶可以僅選擇某些拼塊或某些類型的內(nèi)容,且實時發(fā)布系統(tǒng)2901隨后可以根據(jù)那個選擇進行調(diào)整。在其它實施例中,用戶可以調(diào)整矩陣2900中的拼塊。舉例來說,用戶可以將內(nèi)容指派給某些拼塊、移動拼塊,和/或以其它方式修改由矩陣2900提供的視覺顯示。矩陣2900表示待發(fā)布的信息的一個可能的顯示格式,且可以使用許多其它格式。舉例來說,可以使用直方圖、維恩圖、條形圖、字云、滾動條、蜂巢曲線圖,和/或?qū)τ谡l(fā)布的內(nèi)容適當(dāng)?shù)娜魏纹渌袷?。在一些實施例中,可以使用三維形狀,其中將信息投影到所述形狀上。在這些實施例中,可以旋轉(zhuǎn)所述形狀來觀看信息。仍在其它實施例中,實時發(fā)布系統(tǒng)2901可以實時地顯示關(guān)于其自己的性能以及關(guān)于數(shù)據(jù)的信息。舉例來說,實時發(fā)布系統(tǒng)2901可以顯示關(guān)于以下各者的信息:每單位時間處理多少數(shù)據(jù)、丟棄多少數(shù)據(jù),和類似信息。實時發(fā)布系統(tǒng)2901還可以顯示因為(例如)由于信息量的原因系統(tǒng)無法全部顯示信息而有多少相關(guān)信息未示出。舉例來說,實時發(fā)布系統(tǒng)2901可以示出有多少推文未顯示。此信息隨后可用于修改實時發(fā)布系統(tǒng)2901正在發(fā)布的內(nèi)容,使得用戶可以將焦點縮小到特定內(nèi)容。除了所附權(quán)利要求書中的所要求的實施例之外,以下內(nèi)容還是可以用作本申請或后續(xù)分案申請中的額外權(quán)利要求的基礎(chǔ)的實施例的列表:實施例1:一種用于在數(shù)字裝置上執(zhí)行的方法,其包含:運行核心進程以創(chuàng)建實時處理平臺的平臺實例,其中所述平臺實例與所述數(shù)字裝置上的操作系統(tǒng)交互,并且被配置成運行使用已經(jīng)為了在所述處理平臺內(nèi)使用而限定的可擴展基礎(chǔ)類別創(chuàng)建的任何服務(wù)實例,且其中所述核心進程包含服務(wù)管理器,其被配置成:管理由所述平臺實例運行的任何服務(wù)實例;通過所述服務(wù)管理器,從對應(yīng)于所述平臺實例的配置信息來識別:所述平臺實例被配置成運行由擴展所限定的基礎(chǔ)服務(wù)類別的服務(wù)類別所限定的服務(wù)實例;通過所述服務(wù)管理器,從所述配置信息來識別:所述服務(wù)實例將使用由多個塊類別限定的多個塊實例,其中每個塊類別擴展所限定的基礎(chǔ)塊類別,并且含有提供所述服務(wù)實例的處理功能的可執(zhí)行指令;通過所述服務(wù)管理器起動所述服務(wù)實例,其中所述服務(wù)實例包含塊路由器和路由表;通過所述塊路由器起動所述塊實例,其中每個塊實例不知曉所述服務(wù)實例以及除了自身以外的所述多個塊實例;通過所述多個塊實例中的第一塊實例,從在所述平臺實例外部的源接收待處理的流輸入數(shù)據(jù);通過所述第一塊實例處理所述流輸入數(shù)據(jù),以創(chuàng)建經(jīng)處理的數(shù)據(jù);通過所述第一塊實例,將所述第一塊實例準(zhǔn)備好所述經(jīng)處理的數(shù)據(jù)用于輸出的通知發(fā)送到所述塊路由器;通過所述塊路由器來識別:將基于所述路由表,將來自所述第一塊實例的所述經(jīng)處理的數(shù)據(jù)引導(dǎo)到所述多個塊實例中的第二塊實例;通過所述塊路由器,將來自所述第一塊實例的所述經(jīng)處理的數(shù)據(jù)引導(dǎo)到所述第二塊實例;針對所述多個塊實例中的每一個,重復(fù)處理、發(fā)送、識別和引導(dǎo)的步驟,直到到達最后的塊實例為止,其中所述最后的塊實例創(chuàng)建輸出數(shù)據(jù);以及通過所述最后的塊實例,將所述輸出數(shù)據(jù)發(fā)送到在所述平臺實例外部的目的地,其中從通過第一塊實例接收所述流輸入數(shù)據(jù)的步驟到從所述最后的塊實例發(fā)送所述輸出數(shù)據(jù)的步驟中的每個步驟是實時地發(fā)生,而不使所述數(shù)據(jù)在所述平臺實例內(nèi)排隊。實施例1+1:實施例1的方法,其進一步包含:通過所述服務(wù)管理器,從在所述平臺實例外部的源接收停止命令,其中所述停止命令指示將停止所述服務(wù)實例;通過所述服務(wù)管理器將所述停止命令發(fā)送到所述塊路由器;以及通過所述塊路由器停止所述多個塊實例。實施例1+2:實施例1或1+1中的任一者的方法,其進一步包含:通過所述第一塊實例,從在所述平臺實例外部的第二源接收待處理的第二流輸入數(shù)據(jù),其中緊接在將所述第一塊實例準(zhǔn)備好所述經(jīng)處理的數(shù)據(jù)用于輸出的所述通知發(fā)送到所述塊路由器之后,接收所述第二流輸入數(shù)據(jù);通過所述第一塊實例處理所述第二流輸入數(shù)據(jù),以創(chuàng)建第二經(jīng)處理的數(shù)據(jù);通過所述第一塊實例,將所述第一塊實例準(zhǔn)備好所述第二經(jīng)處理的數(shù)據(jù)用于輸出的通知發(fā)送到所述塊路由器;通過所述塊路由器識別:將基于所述路由表將來自所述第一塊實例的第二經(jīng)處理的數(shù)據(jù)引導(dǎo)到第二塊實例;通過所述塊路由器,將來自所述第一塊實例的所述第二經(jīng)處理的數(shù)據(jù)引導(dǎo)到第二塊實例;針對所述多個塊實例中的每一個重復(fù)處理、發(fā)送、識別和引導(dǎo)的步驟,直到到達最后的塊實例為止,其中所述最后的塊實例創(chuàng)建第二輸出數(shù)據(jù);以及通過所述最后的塊實例,將所述第二輸出數(shù)據(jù)發(fā)送到在所述平臺實例外部的目的地,其中從通過第一塊實例接收所述第二流輸入數(shù)據(jù)的步驟到從所述最后的塊實例發(fā)送所述第二輸出數(shù)據(jù)的步驟中的每個步驟是實時地發(fā)生,而不使所述數(shù)據(jù)在所述平臺實例內(nèi)排隊。實施例2:一種用于在數(shù)字裝置上執(zhí)行的方法,其包含:運行核心進程,以創(chuàng)建處理平臺的平臺實例,其中所述平臺實例與所述數(shù)字裝置上的操作系統(tǒng)交互,并且被配置成運行使用已經(jīng)為了在所述處理平臺內(nèi)使用而限定的可擴展基礎(chǔ)類別創(chuàng)建的任何服務(wù);通過所述核心進程,從對應(yīng)于所述平臺實例的配置信息來識別:所述平臺實例被配置成運行由擴展所限定的基礎(chǔ)服務(wù)類別的服務(wù)類別限定的服務(wù),其中所述配置信息進一步識別將由所述服務(wù)使用的多個塊類別,其中每個塊類別擴展所限定的基礎(chǔ)塊類別,并且含有提供所述服務(wù)的處理功能的可執(zhí)行指令;將所述服務(wù)類別實例化,以創(chuàng)建服務(wù)實例,且將所述塊類別中的每一個實例化,以創(chuàng)建多個塊實例,其中所述塊實例彼此互不知曉,且其中所述服務(wù)實例被配置成在所述塊實例之間引導(dǎo)數(shù)據(jù);以及通過所述服務(wù)實例使用所述塊實例來處理傳入數(shù)據(jù),以將所述處理功能提供給所述平臺實例。實施例2+1:實施例2的方法,其進一步包含:通過所述核心進程創(chuàng)建服務(wù)語境,所述服務(wù)語境限定在所述服務(wù)實例外部并且可由所述服務(wù)實例存取的所述平臺實例的功能;以及在將所述服務(wù)類別實例化時,將所述服務(wù)語境傳遞到所述服務(wù)實例。實施例2+2:實施例2+1的方法,其中創(chuàng)建所述服務(wù)語境包含將所述服務(wù)語境傳遞到模塊,其中所述模塊將所述服務(wù)實例使用所述模塊所需的信息插入到所述服務(wù)語境中。實施例2+3:實施例2到2+2中的任一個的方法,其通過所述核心進程接收用于將所述服務(wù)類別實例化的命令。實施例2+4:實施例2到2+3中的任一個的方法,其進一步包含:通過所述核心進程接收命令以停止所述服務(wù)實例;以及通過所述核心進程停止所述服務(wù)實例,其中所述核心進程在所述服務(wù)實例已經(jīng)被停止之后繼續(xù)運行。實施例2+5:實施例2到2+4中的任一個的方法,其進一步包含停止所述核心進程,其中在停止所述核心進程時摧毀所述平臺實例。實施例2+6:實施例2到2+5中的任一個的方法,其中所述服務(wù)實例被配置成基于路由表在所述塊實例之間引導(dǎo)數(shù)據(jù),其中基于所述路由表將所述塊實例中的一個的發(fā)布發(fā)送到所述塊實例中的另一個。實施例2+7:實施例2到2+6中的任一個的方法,其中通過所述操作系統(tǒng)將所述服務(wù)實例運行為與所述核心進程分開的進程。實施例2+8:實施例2到2+6中的任一個的方法,其中所述服務(wù)實例是所述核心進程的線程。實施例2+9:實施例2到2+8中的任一個的方法,其進一步包含將進入所述服務(wù)實例的所有數(shù)據(jù)轉(zhuǎn)換為通用數(shù)據(jù)對象,其中在所述塊實例之間僅傳遞所述通用數(shù)據(jù)對象。實施例2+10:實施例2到2+9中的任一個的方法,其進一步包含:通過所述核心進程從對應(yīng)于所述平臺實例的配置信息來識別所述平臺實例被配置成運行由擴展所限定的基礎(chǔ)服務(wù)類別的第二服務(wù)類別限定的第二服務(wù),其中所述配置信息進一步識別將由所述第二服務(wù)使用的多個第二塊類別,其中每個第二塊類別擴展所限定的基礎(chǔ)塊類別并且含有提供所述第二服務(wù)的第二處理功能的可執(zhí)行指令;將所述第二服務(wù)類別實例化以創(chuàng)建第二服務(wù)實例,且將所述第二塊類別中的每一個實例化以創(chuàng)建作為所述第二服務(wù)實例的部分而操作的多個第二塊實例,其中所述第二塊實例彼此互不知曉,且其中所述第二服務(wù)實例被配置成在所述第二塊實例之間引導(dǎo)數(shù)據(jù);以及通過所述第二服務(wù)實例使用所述第二塊實例來處理傳入數(shù)據(jù),以將所述第二處理功能提供給所述平臺實例。實施例2+11:實施例2+10的方法,其中所述服務(wù)實例和所述第二服務(wù)實例在所述平臺實例上同時運行。實施例2+12:實施例2+10到2+11中的任一個的方法,其中所述服務(wù)實例和所述第二服務(wù)實例彼此通信。實施例2+13:實施例2+10到2+12中的任一個的方法,其中所述服務(wù)實例和所述第二服務(wù)實例中的每一個包含通信管理器,所述通信管理器發(fā)布通信以供所預(yù)訂的服務(wù)實例消費。實施例3:一種用于在數(shù)字裝置上執(zhí)行的方法,其包含:通過被配置成與在所述數(shù)字裝置上運行的操作系統(tǒng)交互的平臺實例來運行服務(wù)實例,所述服務(wù)實例被配置成使用路由表在向所述服務(wù)實例提供處理能力的多個塊實例之間引導(dǎo)數(shù)據(jù),其中每個塊實例在接收到輸入后,異步地執(zhí)行在所述塊實例內(nèi)含有的任何內(nèi)部指令;通過所述多個塊實例中的第一塊實例,從在所述平臺實例外部的源接收輸入數(shù)據(jù);通過所述第一塊實例處理所述輸入數(shù)據(jù),以創(chuàng)建經(jīng)處理的數(shù)據(jù);通過所述第一塊實例,向所述服務(wù)實例通知所述經(jīng)處理的數(shù)據(jù);通過所述服務(wù)實例,確定將基于所述路由表將所述經(jīng)處理的數(shù)據(jù)引導(dǎo)到所述多個塊實例中的第二塊實例;以及通過所述服務(wù)實例,將所述經(jīng)處理的數(shù)據(jù)傳送到所述第二塊實例以供進一步處理。實施例3+1:實施例3的方法,其進一步包含通過所述服務(wù)實例存取由作為所述平臺實例的核心進程的部分的模塊提供的功能。實施例3+2:實施例3到3+1中的任一個的方法,其中所述服務(wù)實例包含塊路由器,其中所述服務(wù)實例使用所述塊路由器與所述平臺實例的核心進程通信,且所述核心進程起動和停止所述服務(wù)實例。實施例3+3:實施例3+2的方法,其中所述核心進程通過所述塊路由器與所述多個塊實例中的至少一個通信。實施例3+4:實施例3+1到3+3中的任一個的方法,其中由用戶經(jīng)由所述核心進程來設(shè)定所述第一塊實例的配置參數(shù)。實施例3+5:實施例3+1到3+4中的任一個的方法,其中由用戶經(jīng)由所述核心進程來設(shè)定所述服務(wù)實例的配置參數(shù)。實施例4:一種用于使用存儲在數(shù)字裝置上的可配置平臺的方法,其包含:通過所述數(shù)字裝置接收指令,所述指令限定將由所述可配置平臺執(zhí)行的服務(wù),其中通過服務(wù)類別在所述可配置平臺內(nèi)表示所述服務(wù),所述服務(wù)類別擴展為了在所述可配置平臺內(nèi)使用而限定的基礎(chǔ)服務(wù)類別,其中限定所述服務(wù)包含識別將由所述服務(wù)使用的多個塊,其中通過塊類別,在所述可配置平臺內(nèi)表示每個塊,所述塊類別擴展為了在所述可配置平臺內(nèi)使用而限定的基礎(chǔ)塊類別;在所述塊類別中的至少一個內(nèi)限定指令,其中所述指令配置所述塊類別,以執(zhí)行由所述指令限定的功能;以及針對所述多個塊類別中的每一個,在所述塊產(chǎn)生輸出時,在路由表內(nèi)限定將把輸出引導(dǎo)到的所述多個塊中的任何另一個;以及通過所述數(shù)字裝置接收用于將所述服務(wù)保存在可由所述可配置平臺存取的存儲器中的指令。實施例4+1:實施例4的方法,其中識別將由所述服務(wù)使用的所述多個塊包含:限定將所述多個塊中的至少一個存儲在其處的遠離所述數(shù)字裝置的位置。實施例4+2:實施例4到4+1中的任一個的方法,其中識別將由所述服務(wù)使用的所述多個塊包含:加載所述多個塊中的曾作為消息的附件而接收的至少一個塊。實施例4+3:實施例4到4+2中的任一個的方法,其進一步包含通過所述數(shù)字裝置接收用于將所述服務(wù)標(biāo)記為配置文件中的自動起動服務(wù)的指令。實施例4+4:實施例4到4+3中的任一個的方法,其進一步包含:接收用于運行可配置平臺的指令;以及執(zhí)行核心進程以創(chuàng)建所述可配置平臺的實例。實施例4+5:實施例4到4+4中的任一個的方法,其進一步包含:通過所述核心進程接收用于運行所述服務(wù)的指令;以及通過所述核心進程起動作為服務(wù)類別的實例化的服務(wù)實例和作為塊類別的實例化的多個塊實例。實施例4+6:實施例4到4+5中的任一個的方法,其進一步包含通過所述核心進程提供圖形用戶接口,其中所述圖形用戶接口使得用戶能夠修改所述服務(wù)類別和所述多個塊類別。實施例4+7:實施例4到4+6中的任一個的方法,其進一步包含通過所述核心進程提供圖形用戶接口,所述圖形用戶接口使得用戶能夠修改所述基礎(chǔ)服務(wù)類別和所述多個基礎(chǔ)塊類別。實施例4+8:實施例4到4+7中的任一個的方法,其進一步包含通過所述核心進程提供圖形用戶接口,所述圖形用戶接口使得用戶能夠從所述可配置平臺上可用的多個現(xiàn)有的服務(wù)選擇并運行現(xiàn)有的服務(wù)。實施例4+9:實施例4+8的方法,其進一步包含通過所述核心進程提供圖形用戶接口,所述圖形用戶接口使得用戶能夠修改所述現(xiàn)有的服務(wù)。實施例5:一種用于使用存儲在數(shù)字裝置上的可配置平臺的方法,其包含:通過在所述數(shù)字裝置上運行的操作系統(tǒng),來接收用于起動對應(yīng)于所述可配置平臺的實例的核心進程的指令;通過所述核心進程識別將由所述可配置平臺執(zhí)行的服務(wù),其中通過服務(wù)類別在所述可配置平臺內(nèi)表示所述服務(wù),所述服務(wù)類別擴展為了在所述可配置平臺內(nèi)使用而限定的基礎(chǔ)服務(wù)類別;通過所述核心進程識別將由所述服務(wù)使用的多個塊,其中通過塊類別在所述可配置平臺內(nèi)表示每個塊,所述塊類別擴展為了在所述可配置平臺內(nèi)使用而限定的基礎(chǔ)塊類別;通過所述核心進程起動所述服務(wù);通過所述服務(wù)起動所述塊;以及通過所述塊處理由所述可配置平臺從在所述可配置平臺外部的源接收的數(shù)據(jù),其中所述處理創(chuàng)建輸出,所述輸出被發(fā)送到在所述可配置平臺外部的目的地。實施例5+1:實施例5的方法,其進一步包含將來自所述核心進程的服務(wù)語境傳遞到所述服務(wù),其中核心語境含有所述服務(wù)所需的配置信息。實施例5+2:實施例5到5+1中的任一個的方法,其進一步包含:通過所述服務(wù)確定所述多個塊中的第一塊需要模塊,其中所述模塊由所述核心進程提供,且被配置成提供預(yù)先限定的功能;通過所述服務(wù)初始化所述模塊;以及通過所述服務(wù)將模塊信息傳遞到所述第一塊,其中所述第一塊使用所述模塊信息來存取所述模塊的所述預(yù)先限定的功能。實施例5+3:實施例5到5+2中的任一個的方法,其進一步包含:通過所述服務(wù)確定所述服務(wù)需要模塊,其中所述模塊由所述核心進程提供,且被配置成提供預(yù)先限定的功能;通過所述服務(wù)初始化所述模塊;以及通過所述服務(wù)使用所述模塊的所述預(yù)先限定的功能。實施例5+4:實施例5到5+3中的任一個的方法,其中所述服務(wù)包含塊路由器,其被配置成:從所述多個塊的源塊接收所述源塊具有輸出的通知;在對應(yīng)于所述源塊的路由表中查找目的地塊;以及調(diào)用所述目的地塊來處置來自所述源塊的輸出。實施例5+5:實施例5+4的方法,其中所述多個塊之間的所有通信通過所述塊路由器。實施例5+6:實施例5到5+5中的任一個的方法,其中被配置成將輸出傳遞到另一塊的塊含有識別所述另一塊的目的地信息。實施例5+7:實施例5到5+6中的任一個的方法,其進一步包含通過所述多個塊中的第一塊將數(shù)據(jù)轉(zhuǎn)換為對應(yīng)于為了在可配置平臺內(nèi)使用而限定的內(nèi)部數(shù)據(jù)對象模板的多個數(shù)據(jù)對象,其中所述多個塊之間的所有通信是基于所述內(nèi)部數(shù)據(jù)對象模板。實施例5+8:實施例5到5+7中的任一個的方法,其中所述服務(wù)是所述多個服務(wù)中的第一服務(wù),且所述方法進一步包含通過所述核心進程接收用于起動將由所述可配置平臺執(zhí)行的所述多個服務(wù)中的第二服務(wù)的指令,其中由擴展基礎(chǔ)服務(wù)類別的第二服務(wù)類別在所述可配置平臺內(nèi)表示所述第二服務(wù);通過所述核心進程識別將由所述第二服務(wù)使用的多個第二塊,其中由擴展基礎(chǔ)塊類別的第二塊類別在所述可配置平臺內(nèi)表示每個第二塊;通過所述核心進程起動所述第二服務(wù);以及通過所述第二服務(wù)起動所述第二塊。實施例5+9:實施例5+8的方法,其進一步包含通過所述第二塊處理由所述可配置平臺從在所述可配置平臺外部的源接收的數(shù)據(jù),其中所述處理創(chuàng)建輸出,所述輸出被發(fā)送到在所述可配置平臺外部的目的地。實施例5+10:實施例5+8到5+9中的任一個的方法,其進一步包含通過所述第二塊處理從所述第一服務(wù)接收的數(shù)據(jù),其中所述處理創(chuàng)建輸出,所述輸出被發(fā)送到在所述可配置平臺外部的目的地。實施例5+11:實施例5+8到5+10中的任一個的方法,其進一步包含通過所述第二塊處理從所述第一服務(wù)接收的數(shù)據(jù),其中所述處理創(chuàng)建輸出,所述輸出被發(fā)送到所述第一服務(wù)。實施例6:一種用于使用數(shù)字裝置上的可配置平臺的方法,其包含:通過所述可配置平臺提供運行時環(huán)境,所述運行時環(huán)境與所述數(shù)字裝置上的操作系統(tǒng)交互,且可以在所述運行時環(huán)境內(nèi)執(zhí)行與所述可配置平臺兼容的任何服務(wù),其中所述運行時環(huán)境包含服務(wù)管理器,所述服務(wù)管理器被配置成管理擴展為了在所述可配置平臺內(nèi)使用而限定的基礎(chǔ)服務(wù)類別的任何服務(wù);配置文件,其識別加載到所述可配置平臺中以用于在所述運行時環(huán)境內(nèi)執(zhí)行的任何服務(wù);以及應(yīng)用程序編程接口(API),其使得用戶能夠配置服務(wù)以用于在所述可配置平臺內(nèi)使用。實施例6+1:實施例6的方法,其進一步包含通過所述可配置平臺提供將由所述服務(wù)使用的多個塊,其中通過塊類別在所述可配置平臺內(nèi)表示每個塊,所述塊類別擴展為了在所述可配置平臺內(nèi)使用而限定的基礎(chǔ)塊類別。實施例6+2:實施例6到6+1中的任一個的方法,其進一步包含通過所述可配置平臺提供可由所述服務(wù)管理器存取、但不可由在所述運行時環(huán)境內(nèi)執(zhí)行的任何服務(wù)存取的多個核心模塊。實施例6+3:實施例6到6+2中的任一個的方法,其進一步包含通過所述可配置平臺提供可由所述服務(wù)管理器和在所述運行時環(huán)境內(nèi)執(zhí)行的任何服務(wù)存取的多個功能模塊。實施例6+4:實施例6到6+3中的任一個的方法,其進一步包含加載在所述配置文件中識別的服務(wù),并且識別將由所述服務(wù)使用的任何塊,其中通過塊類別在所述可配置平臺內(nèi)表示每個塊,所述塊類別擴展為了在所述可配置平臺內(nèi)使用而限定的基礎(chǔ)塊類別。實施例7:一種用于供存儲在數(shù)字裝置上的可配置平臺使用的方法,其包含:通過所述可配置平臺的實例存在于所述數(shù)字裝置上所必需的核心進程,創(chuàng)建服務(wù)語境,所述服務(wù)語境包含在所述可配置平臺上創(chuàng)建服務(wù)實例所需的信息;通過所述核心進程的服務(wù)管理器起動將由所述可配置平臺執(zhí)行的服務(wù)實例,其中所述服務(wù)實例是擴展為了由所述可配置平臺使用而限定的基礎(chǔ)服務(wù)類別的服務(wù)類別的實例化;以及通過基于所述服務(wù)語境的所述服務(wù)實例的塊路由器,起動將由所述服務(wù)實例使用的多個塊實例,其中每個塊實例是擴展為了由所述可配置平臺使用而限定的基礎(chǔ)塊類別的塊類別的實例化,且其中每個塊實例含有在那個塊實例接收到輸入時所執(zhí)行的指令。實施例7+1:實施例7的方法,其進一步包含通過所述塊路由器,基于路由表,在所述多個塊實例之間發(fā)送數(shù)據(jù),其中每個塊實例不知曉其它塊實例,并且塊實例之間的所有通信依賴于所述塊路由器。實施例7+2:實施例7到7+1中的任一個的方法,其中在所述服務(wù)實例內(nèi)不發(fā)生排隊。實施例7+3:實施例7到7+2中的任一個的方法,其中所述塊實例中的一個使用由所述核心進程提供的模塊。實施例7+4:實施例7+3的方法,其進一步包含:通過所述塊路由器初始化所述模塊,以供基于所述服務(wù)語境而使用;以及通過所述塊路由器將關(guān)于所述模塊的信息傳遞到使用所述模塊的塊實例,其中所述塊實例需要關(guān)于所述模塊的所述信息來使用所述模塊。實施例7+5:實施例7到7+4中的任一個的方法,其中所述塊路由器使用由所述核心進程提供的模塊。實施例7+6:實施例7+5的方法,其進一步包含通過所述塊路由器初始化所述模塊以供所述塊路由器基于所述服務(wù)語境而使用。實施例8:一種方法,其包含:通過塊路由器,所述快路由器作為在由存儲在數(shù)字裝置上的可配置平臺的平臺實例提供的運行時環(huán)境內(nèi)運行的服務(wù)實例的部分,從第一塊實例接收所述第一塊實例已經(jīng)產(chǎn)生輸出對象的通知,其中所述第一塊實例是向所述服務(wù)實例提供處理功能的多個塊實例中的一個;通過所述塊路由器存取路由表,其中所述路由表將所述多個塊實例中的第二塊實例識別為由所述第一塊實例產(chǎn)生的輸出對象的輸出目的地;以及通過所述塊路由器將所述輸出對象發(fā)送到所述第二塊實例。實施例8+1:實施例8的方法,其中所述塊實例不知曉所述多個塊實例中的其它塊實例。實施例8+2:實施例8到8+1中的任一個的方法,其中來自所述第一塊實例的通知是對在所述服務(wù)實例內(nèi)限定的方法的調(diào)用。實施例8+3:實施例8+2的方法,其中對所述方法的調(diào)用包含輸出對象。實施例8+4:實施例8到8+3中的任一個的方法,其中發(fā)送所述輸出對象包含執(zhí)行對所述第二塊實例的調(diào)用。實施例8+5:實施例8+4的方法,其中對所述第二塊實例的調(diào)用包含輸出對象。實施例8+6:實施例8+4到8+5中的任一個的方法,其進一步包含通過所述塊路由器起動所述第二塊實例的線程。實施例8+7:實施例8到8+6中的任一個的方法,其進一步包含:通過所述塊路由器從所述平臺實例的核心進程接收所述第一塊實例的消息;以及通過所述塊路由器將所述消息傳遞到所述第一塊實例。實施例8+8:實施例8到8+7中的任一個的方法,其中所述核心進程與所述多個塊實例之間的所有通信通過所述塊路由器。實施例8+9:實施例8到8+8中的任一個的方法,其中所述多個塊實例中的第三塊實例不經(jīng)過所述塊路由器而與信號源和在所述平臺實例外部的信號目的地中的至少一個通信。實施例8+10:實施例8到8+9中的任一個的方法,其進一步包含:通過所述塊路由器接收停止的消息;以及通過所述塊路由器停止所述多個塊實例中的每一個。實施例8+11:實施例8到8+10中的任一個的方法,其進一步包含通過所述塊路由器發(fā)布信息以供所述服務(wù)實例的預(yù)訂者消費。實施例8+12:實施例8到8+11中的任一個的方法,其中所述第一塊實例基于識別所述多個塊實例的子組內(nèi)的數(shù)據(jù)流的群組路由表,來管理所述塊實例子組之間的數(shù)據(jù)流,且所述塊實例子組與所述塊路由器之間的所有通信通過所述第一塊實例。實施例9:一種用于在數(shù)字裝置上的平臺內(nèi)配置服務(wù)的方法,其包含:通過可配置平臺提供運行時環(huán)境,所述運行時環(huán)境與所述數(shù)字裝置上的操作系統(tǒng)交互,且可以在所述運行時環(huán)境內(nèi)執(zhí)行與所述可配置平臺兼容的任何服務(wù),其中所述運行時環(huán)境包含服務(wù)配置文件,所述服務(wù)配置文件含有詳述在所述運行時環(huán)境內(nèi)的服務(wù)的操作的信息;以及應(yīng)用程序編程接口(API),其使得用戶能夠修改所述服務(wù)配置文件來配置所述服務(wù);接收關(guān)于將與所述服務(wù)相關(guān)聯(lián)的多個塊的服務(wù)配置信息,其中所述服務(wù)配置信息識別所述多個塊中的每一個的位置;以及針對所述多個塊中的每個塊,其中所述每個快產(chǎn)生輸出以供所述多個塊中的另一個消費,識別輸出應(yīng)被引導(dǎo)到的塊;以及將所述服務(wù)配置信息保存在所述服務(wù)配置文件中,以供在所述運行時環(huán)境內(nèi)起動所述服務(wù)時使用。實施例9+1:實施例9的方法,其中所述服務(wù)配置信息識別將由所述服務(wù)使用的模塊,其中由核心進程在所述運行時環(huán)境內(nèi)提供所述模塊。實施例9+2:實施例9到9+1中的任一個的方法,其進一步包含:接收含有所述塊中的一個的參數(shù)的塊配置信息;以及將所述塊配置信息保存在塊配置文件中以供在所述運行時環(huán)境內(nèi)起動所述塊時使用。實施例9+3:實施例9+2的方法,其中所述塊配置信息識別將由所述塊使用的模塊,其中由核心進程在所述運行時環(huán)境內(nèi)提供所述模塊。實施例9+4:實施例9到9+3中的任一個的方法,其進一步包含:接收將由所述塊中的一個執(zhí)行的指令;以及將所述指令保存在用于將所述塊實例化的塊類別文件中。實施例10:一種用于在數(shù)字裝置上提供運行時環(huán)境的方法,其包含:運行平臺核心,其中所述平臺核心是所述數(shù)字裝置上的操作系統(tǒng)內(nèi)的第一進程,且提供所述運行時環(huán)境;運行僅可以在所述運行時環(huán)境內(nèi)運行的第一服務(wù),其中所述第一服務(wù)是所述操作系統(tǒng)內(nèi)的第二進程,且其中所述第一服務(wù)使用第一多個可配置塊來提供第一數(shù)據(jù)處理功能;以及運行僅可以在所述運行時環(huán)境內(nèi)運行的第二服務(wù),其中所述第二服務(wù)與所述第一服務(wù)同時運行,并且是所述操作系統(tǒng)內(nèi)的第三進程,且其中所述第二服務(wù)使用第二多個可配置塊來提供第二數(shù)據(jù)處理功能。實施例10+1:實施例10的方法,其進一步包含通過所述第一服務(wù)和第二服務(wù)在所述運行時環(huán)境內(nèi)彼此通信。實施例10+2:實施例10到10+1中的任一個的方法,其中發(fā)生在所述運行時環(huán)境內(nèi)的任何通信使用符合被配置成在所述運行時環(huán)境內(nèi)使用的數(shù)據(jù)對象模板的數(shù)據(jù)對象。實施例10+3:實施例10到10+2中的任一個的方法,其進一步包含通過所述第一服務(wù)來使用由所述平臺核心所支持的模塊提供的功能。實施例10+4:實施例10到10+3中的任一個的方法,其中所述第一多個塊和所述第二多個塊中的至少一個塊使用由所述第一服務(wù)和所述第二服務(wù)共享的單個塊配置。實施例10+5:實施例10到10+4中的任一個的方法,其中所述第一多個塊是第二進程的線程,且所述第二多個塊是第三進程的線程。實施例10+6:實施例10到10+5中的任一個的方法,其中所述第一服務(wù)是擴展為了在所述運行時環(huán)境內(nèi)使用而限定的基礎(chǔ)服務(wù)類別的第一服務(wù)類別的實例化,且所述第二服務(wù)是擴展所述基礎(chǔ)服務(wù)類別的第二服務(wù)類別的實例化。實施例10+7:實施例10+6的方法,其中所述第一服務(wù)類別等同于所述第二服務(wù)類別。實施例10+8:實施例10+6的方法,其中所述第一服務(wù)類別不同于所述第二服務(wù)類別。實施例10+9:實施例10到10+8中的任一個的方法,其中所述第一數(shù)據(jù)處理功能不同于所述第二數(shù)據(jù)處理功能。實施例10+10:實施例10到10+8中的任一個的方法,其中所述第一數(shù)據(jù)處理功能等同于所述第二數(shù)據(jù)處理功能。實施例10+11:實施例10+10的方法,其進一步包含通過所述第一服務(wù)和所述第二服務(wù)執(zhí)行負(fù)載平衡,以平衡將使用所述第一處理功能和所述第二處理功能處理的輸入數(shù)據(jù)的量。實施例10+12:實施例10到10+11中的任一個的方法,其進一步包含:在所述數(shù)字裝置上運行第二平臺核心,其中所述第二平臺核心是所述數(shù)字裝置上的所述操作系統(tǒng)內(nèi)的第四進程,且提供與由所述第一進程提供的所述運行時環(huán)境分開的第二運行時環(huán)境;以及運行作為所述操作系統(tǒng)內(nèi)的第五進程的第三服務(wù),其中所述第三服務(wù)使用第三多個可配置塊來提供第三數(shù)據(jù)處理功能。實施例10+13:實施例10+12的方法,其中所述第三服務(wù)等同于所述第一服務(wù),且所述方法進一步包含通過所述第一服務(wù)和所述第三服務(wù)執(zhí)行負(fù)載平衡,以平衡將使用所述第一處理功能和所述第三處理功能處理的輸入數(shù)據(jù)的量。實施例10+14:實施例10+12到10+13中的任一個的方法,其進一步包含將來自所述第三服務(wù)的輸出數(shù)據(jù)發(fā)送到所述第二服務(wù)。實施例11:一種用于在運行時配置平臺實例內(nèi)的服務(wù)的方法,其包含:通過在數(shù)字裝置上運行且與所述數(shù)字裝置的操作系統(tǒng)交互的平臺實例,來識別將由所述平臺實例運行的服務(wù),其中所述服務(wù)是可以由所述平臺實例運行的多個可用服務(wù)中的一個,且其中所述可用服務(wù)對應(yīng)于單個服務(wù)類別;通過所述平臺實例使用所述服務(wù)類別,將所述服務(wù)實例化;通過所述平臺實例識別所述服務(wù)的配置文件,其中所述配置文件含有預(yù)先限定的服務(wù)配置信息,所述服務(wù)配置信息包含識別將由所述服務(wù)運行的多個塊的塊信息,其中所述塊是基于可由所述可用服務(wù)中的任一個使用的對應(yīng)的多個塊類別,且其中所述塊中的每一個當(dāng)包含在所述可用服務(wù)中的一個中時提供任務(wù)特定的功能;使用來自所述配置文件的所述預(yù)先限定的服務(wù)配置信息、以及關(guān)于直到在平臺實例已經(jīng)開始運行之后才知曉的平臺實例的動態(tài)產(chǎn)生的信息來配置所述服務(wù),其中所述配置通過提供使得所述服務(wù)能夠在所述塊之間發(fā)送數(shù)據(jù)的多個路由方向來讓所述服務(wù)準(zhǔn)備使用所述塊;以及在配置所述服務(wù)之后運行所述服務(wù),其中當(dāng)所述服務(wù)正在運行時,由所述塊提供的任務(wù)特定的功能可用于所述平臺實例。實施例11+1:實施例11的方法,其中所述服務(wù)類別包含至少一個可配置參數(shù),且配置所述服務(wù)包含將配置值指派給所述可配置參數(shù)。實施例11+2:實施例11+1的方法,其中所述可配置參數(shù)限定所述塊的執(zhí)行規(guī)則。實施例11+3:實施例11+2的方法,其中所述執(zhí)行規(guī)則確定將同步地還是異步地執(zhí)行所述塊。實施例11+4:實施例11+1的方法,其中所述可配置參數(shù)識別將由所述服務(wù)使用的多個塊路由器中的一個,且所述塊路由器負(fù)責(zé)在所述塊之間傳遞數(shù)據(jù)。實施例11+5:實施例11到11+4中的任一個的方法,其進一步包含:將來自所述多個塊類別的第一塊類別的多個塊中的第一塊實例化;識別所述第一塊的第一塊配置文件;使用來自所述第一塊配置文件的第一配置值來配置所述第一塊的第一可配置參數(shù);以及在所述服務(wù)內(nèi)運行所述第一塊。實施例11+6:實施例11+5的方法,其進一步包含:將來自所述多個塊類別的第二塊類別的多個塊中的第二塊實例化;識別所述第二塊的第二塊配置文件;使用來自所述第二塊配置文件的第二配置值來配置所述第二塊的第二可配置參數(shù);以及在所述服務(wù)內(nèi)運行所述第二塊。實施例11+7:實施例11+6的方法,其中所述第一塊類別和所述第二塊類別是同一塊類別,且由于所述第一塊配置文件與所述第二塊配置文件之間的差異,所述第一塊在功能上不同于所述第二塊。實施例11+8:實施例11到11+7中的任一個的方法,其中所述動態(tài)產(chǎn)生的信息識別在所述服務(wù)外部且是所述平臺實例的部分的模塊,其中所述模塊將由所述服務(wù)使用。實施例11+9:實施例11+8的方法,其進一步包含通過所述服務(wù)將所述模塊的實例實例化以供所述服務(wù)使用。實施例12:一種用于在運行時在平臺實例內(nèi)配置服務(wù)的方法,其包含:通過在數(shù)字裝置上運行并且與所述數(shù)字裝置的操作系統(tǒng)交互的平臺實例來識別將由所述平臺實例同時運行的第一服務(wù)和第二服務(wù);通過所述平臺實例使用單個服務(wù)類別將所述第一服務(wù)和所述第二服務(wù)實例化;通過所述平臺實例識別第一配置文件,所述第一配置文件識別將由所述第一服務(wù)運行的多個第一塊,其中所述第一塊中的每一個被配置成在由所述第一服務(wù)運行時提供任務(wù)特定的功能;通過所述平臺實例識別第二配置文件,所述第二配置文件識別將由所述第二服務(wù)運行的多個第二塊,其中所述第二塊中的每一個被配置成在由所述第二服務(wù)運行時提供任務(wù)特定的功能;使用所述第一配置文件以及關(guān)于直到在平臺實例已經(jīng)開始運行之后才知曉的平臺實例的動態(tài)產(chǎn)生的信息來配置所述第一服務(wù),其中所述配置通過提供使得所述第一服務(wù)能夠在所述第一塊之間發(fā)送數(shù)據(jù)的第一多個路由方向來讓所述第一服務(wù)準(zhǔn)備使用所述第一塊;使用所述第二配置文件以及所述動態(tài)產(chǎn)生的信息來配置所述第二服務(wù),其中所述配置通過提供使得所述第二服務(wù)能夠在所述第二塊之間發(fā)送數(shù)據(jù)的多個路由方向來讓所述第二服務(wù)準(zhǔn)備使用所述第二塊;以及同時運行所述第一服務(wù)和所述第二服務(wù)。實施例12+1:實施例12的方法,其中配置所述第一服務(wù)包含將來自所述第一配置文件的第一配置值應(yīng)用于所述第一服務(wù)的第一可配置參數(shù),且配置所述第二服務(wù)包含將來自所述第二配置文件的第二配置值應(yīng)用于所述第二服務(wù)的第二可配置參數(shù)。實施例12+2:實施例12+1的方法,其中所述第一可配置參數(shù)指示由所述第一服務(wù)使用的塊路由器異步地執(zhí)行所述第一塊,且所述第二可配置參數(shù)指示由所述第二服務(wù)使用的塊路由器同步地執(zhí)行所述第二塊。實施例12+3:實施例12到12+2中的任一個的方法,其中所述動態(tài)產(chǎn)生的信息識別作為所述平臺實例的部分且在所述第一服務(wù)和所述第二服務(wù)外部的模塊。實施例12+4:實施例12+3的方法,其進一步包含通過所述第一服務(wù)將所述模塊的實例實例化以供所述第一服務(wù)使用。實施例13:一種用于基于優(yōu)先級而顯示多個媒體對象的方法,其包含:提供具有多個拼塊的矩陣,其中每個拼塊表示媒體對象的顯示位置且被指派多個優(yōu)先級水平中的一個,且其中每個優(yōu)先級水平與最小持續(xù)時間和最大持續(xù)時間相關(guān)聯(lián);針對所述拼塊中的每一個,跟蹤拼塊定時器,所述拼塊定時器表示所述拼塊已經(jīng)顯示指派給那個拼塊的當(dāng)前媒體對象多長時間;接收已經(jīng)被指派所述多個優(yōu)先級水平中的一個的第一媒體對象;確定用于所述多個拼塊中的第一拼塊的拼塊定時器已經(jīng)超過用于指派給所述拼塊的優(yōu)先級水平的最小持續(xù)時間;確定所述第一媒體對象的優(yōu)先級水平等同于所述第一拼塊的優(yōu)先級水平;以及將所述第一媒體對象指派給所述第一拼塊以供顯示,其中通過所述第一媒體對象來取代在所述第一拼塊處顯示的當(dāng)前媒體對象。實施例13+1:實施例13的方法,其進一步包含:接收已經(jīng)被指派所述多個優(yōu)先級水平中的一個的第二媒體對象;確定用于具有等同于指派給所述第二媒體對象的優(yōu)先級水平的優(yōu)先級水平的拼塊的拼塊定時器都沒有超過最小持續(xù)時間;以及丟棄所述第二媒體對象,而不將所述第二媒體對象指派給所述拼塊中的任一個。實施例13+2:實施例13或13+1中的任一個的方法,其中每個優(yōu)先級水平進一步與具有比所述最小持續(xù)時間短的持續(xù)時間的新內(nèi)容持續(xù)時間相關(guān)聯(lián),所述方法進一步包括:接收第二媒體對象,所述第二媒體對象已經(jīng)被指派所述多個優(yōu)先級水平中的一個,并且還已經(jīng)被指派標(biāo)簽,所述標(biāo)簽指示所述第二媒體對象包含先前尚未顯示的新內(nèi)容;確定用于所述多個拼塊中的第二拼塊的拼塊定時器已經(jīng)超過用于指派給所述拼塊的優(yōu)先級水平的新內(nèi)容持續(xù)時間定時器,其中由于所述標(biāo)簽的存在而使用所述新內(nèi)容持續(xù)時間替代所述最小持續(xù)時間;確定所述第二媒體對象的優(yōu)先級水平等同于所述第二拼塊的優(yōu)先級水平;以及將所述第二媒體對象指派給所述第二拼塊以供顯示,其中通過所述第二媒體對象來取代在所述第二拼塊處顯示的當(dāng)前媒體對象。實施例13+3:實施例13+2的方法,其中當(dāng)將所述第二媒體對象指派給所述第二拼塊時,用于所述第二拼塊的拼塊定時器尚未超過最小持續(xù)時間。實施例13+4:實施例13到13+3中的任一個的方法,其進一步包含:接收第二媒體對象,所述第二媒體對象已經(jīng)被指派所述多個優(yōu)先級水平中的一個,并且還已經(jīng)被指派標(biāo)簽,所述標(biāo)簽指示所述第二媒體對象包含優(yōu)先于任何其它內(nèi)容類型的極重要人物(VIP)內(nèi)容;識別所述多個拼塊中的具有等同于所述第二媒體對象的優(yōu)先級水平的優(yōu)先級水平的每個拼塊;確定所識別的拼塊都未度過它們的對應(yīng)最小持續(xù)時間;基于至少一個所限定的取代準(zhǔn)則,從所識別的拼塊選擇第二拼塊來用于所述第二媒體對象;以及將所述第二媒體對象指派給所述第二拼塊。實施例13+5:實施例13+4的方法,其中所述所限定的取代準(zhǔn)則是最少量的剩余時間,且其中選擇所述第二拼塊包含確定所識別的拼塊中的每一個的剩余時間。實施例13+6:實施例13+5的方法,其中確定所述剩余時間包含,針對每個所識別的拼塊,計算在最小持續(xù)時間與最大持續(xù)時間之間限定的時間窗內(nèi)剩余的時間的百分比。實施例13+7:實施例13+5的方法,其中確定所述剩余時間包含,針對每個所識別的拼塊,計算在新內(nèi)容持續(xù)時間與最大持續(xù)時間之間限定的窗內(nèi)剩余的時間的百分比。實施例13+8:實施例13+5的方法,其中確定所述剩余時間包含,針對每個所識別的拼塊,計算在最小持續(xù)時間與最大持續(xù)時間之間限定的時間窗內(nèi)剩余的時間的百分比。實施例13+9:實施例13+5的方法,其中確定所述剩余時間包含,針對每個所識別的拼塊,計算在新內(nèi)容持續(xù)時間與最大持續(xù)時間之間限定的窗內(nèi)剩余的時間的百分比。實施例13+10:實施例13到13+9中的任一個的方法,其進一步包含:確定所述多個拼塊中的第二拼塊已經(jīng)將第二媒體對象顯示了比所述第二拼塊的最大持續(xù)時間長的時間周期;以及使用具有等同于所述第二拼塊的優(yōu)先級水平的優(yōu)先級水平的下一所接收的媒體對象來取代所述第二媒體對象。實施例13+11:實施例13到13+10中的任一個的方法,其中基于媒體對象的源而向每個媒體對象指派優(yōu)先級水平。實施例13+12:實施例13+11的方法,其中至少一個源是第三方站點。實施例13+13:實施例13到13+12中的任一個的方法,其中基于對應(yīng)于所述媒體對象的內(nèi)容的至少一個內(nèi)容類型而向每個媒體對象指派優(yōu)先級水平。實施例13+14:實施例13到13+13中的任一個的方法,其中每個媒體對象含有來自多個媒體源中的一個的內(nèi)容,且其中每個媒體對象處于被矩陣接受的單個標(biāo)準(zhǔn)化格式,而不管所述媒體對象含有的內(nèi)容如何。實施例13+15:實施例13到13+14中的任一個的方法,其進一步包含發(fā)布所述矩陣以供觀看。實施例14:一種用于顯示媒體對象的方法,其包含:提供具有多個拼塊的矩陣,其中每個拼塊表示用戶可觀看的顯示屏上的媒體對象的顯示位置,并且被指派多個優(yōu)先級水平中的一個,且其中每個優(yōu)先級水平與最大持續(xù)時間相關(guān)聯(lián);接收媒體對象流,其中每個媒體對象已經(jīng)被指派所述多個優(yōu)先級水平中的一個;針對每個拼塊確定所述拼塊是否已超過對應(yīng)于所指派的優(yōu)先級水平的最大持續(xù)時間;以及對于已超過其最大持續(xù)時間的每個拼塊,使用具有與所述拼塊的優(yōu)先級水平匹配的優(yōu)先級水平的媒體對象中的另一個來取代當(dāng)前由所述拼塊顯示的媒體對象。實施例14+1:實施例14的方法,其進一步包含提供與所述多個拼塊中的第一拼塊相關(guān)聯(lián)的用戶可選擇的區(qū),其中用戶對所述用戶可選擇的區(qū)的選擇會防止正在所述第一拼塊處顯示的所述媒體對象被取代。實施例14+2:實施例14+1的方法,其中對所述用戶可選擇的區(qū)的重新選擇會使得正在所述第一拼塊處顯示的所述媒體對象能夠被取代。實施例14+3:實施例14到14+2中的一個的方法,其進一步包含提供與所述多個拼塊中的第一拼塊相關(guān)聯(lián)的鏈接,其中所述鏈接識別存儲在所述第一拼塊處顯示的媒體對象的原始源的遠程位置,且其中對所述第一拼塊的選擇會從所述遠程位置打開所述媒體對象的所述原始源。實施例14+4:實施例14到14+3中的一個的方法,其進一步包含提供覆蓋所述多個拼塊中的第一拼塊的至少一部分的用戶可選擇的區(qū),其中對所述用戶可選擇的區(qū)的選擇會放大所述第一拼塊。實施例14+5:實施例14+4的方法,其中所述矩陣在所述第一拼塊被放大時重新布置,以確保所述矩陣的所有拼塊都可見。實施例14+6:實施例14+4的方法,其中在放大所述第一拼塊的同時,正在所述第一拼塊處顯示的所述媒體對象不可取代。實施例14+7:實施例14+4的方法,其進一步包含提供與所述第一拼塊相關(guān)聯(lián)的鏈接,其中所述鏈接識別存儲在所述第一拼塊處顯示的媒體對象的原始源的遠程位置,且其中對所述第一拼塊的選擇會從所述遠程位置打開所述媒體對象的所述原始源。實施例14+8:實施例14+4的方法,其進一步包含丟棄沒有拼塊可用于其的任何媒體對象。實施例14+9:實施例14+4的方法,其中所述媒體對象中的至少一個已經(jīng)被指派指示何時接收所述媒體對象的時戳,其中所述方法進一步包括與所述媒體對象一起顯示所述時戳的表示。實施例14+10:實施例14+9的方法,其中所述時戳的所述表示是所述媒體對象的年齡。實施例15:一種方法,其包含:提供重復(fù)刷新的拼塊的矩陣以用于向用戶顯示,其中每個拼塊表示媒體對象的顯示位置;從多個媒體源接收表示內(nèi)容的媒體對象流;以及使用來自所述媒體對象流的不同媒體對象來重復(fù)地更新所述拼塊中的每一個。實施例15+1:實施例15的方法,其中在媒體對象被另一媒體對象取代之前,每個拼塊將所述媒體對象顯示不長于所限定的最大時間量。實施例15+2:實施例15+1的方法,其中所述媒體對象會被取代,除非用戶鎖定拼塊來防止取代發(fā)生。實施例16:一種用于在裝置上使用的用于可配置處理平臺的軟件架構(gòu),其包括:核心,其被配置成與所述裝置上的操作系統(tǒng)交互,其中所述核心可配置成同時運行通過配置信息限定的用于所述處理平臺的多個服務(wù)中的任一個,其中將在所述處理平臺上運行的每個服務(wù)是由服務(wù)類別和所述配置信息來限定,以包含一組平臺特定的指令以及一組任務(wù)特定的指令,所述平臺特定的指令使得所述服務(wù)能夠在所述處理平臺內(nèi)操作,所述任務(wù)特定的指令使得所述服務(wù)能夠運行向所述服務(wù)提供任務(wù)特定的功能的多個塊,且其中將在所述處理平臺上運行的每個塊是由塊類別和所述配置信息來限定,以包含一組平臺特定的指令以及一組任務(wù)特定的指令,所述平臺特定的指令使得所述塊能夠與所述處理平臺內(nèi)的其它塊異步地且獨立地操作,所述任務(wù)特定的指令使得所述塊能夠執(zhí)行用于使用所述塊的所述服務(wù)的特定的處理任務(wù),其中通過所述配置信息來限定所述服務(wù)內(nèi)的所述塊的執(zhí)行次序。實施例17:一種處理系統(tǒng),其包括:處理器;以及存儲器,其被耦合到所述處理器且含有由所述處理器執(zhí)行的指令,所述指令用于執(zhí)行本文中所描述的方法中的任一個或?qū)嵤┍疚闹兴枋龅募軜?gòu)。實施例18:一種計算機程序產(chǎn)品,其被配置成可操作以執(zhí)行本文中所描述的方法中的任一個或?qū)嵤┍疚闹兴枋龅募軜?gòu)。當(dāng)前第1頁1 2 3