專利名稱:構(gòu)建對等消息通信應(yīng)用程序的api的制作方法
背景技術(shù):
因特網(wǎng)上的組通信技術(shù)允許具有共同興趣的用戶協(xié)作、共享文件、彼此聊天、組播音頻和視頻用于演示和分組會議、以及參與多玩家游戲。實(shí)際上,在自組織(adhoc)的基礎(chǔ)上形成組的能力提供了允許具有共同興趣的用戶在與一般的因特網(wǎng)總體隔離的虛擬區(qū)域或組中聚集的重大優(yōu)點(diǎn),從而便于在諸如此類的有意向個人之間的協(xié)作中的有用討論。然而,當(dāng)前大多數(shù)組通信和形成在以服務(wù)器為中心的環(huán)境中發(fā)生,由此,所有通信都流向或流過個人可連接到其上來加入和參與組的大型中央服務(wù)器。
對等技術(shù)使得用戶能夠在無服務(wù)器的環(huán)境中彼此聯(lián)系,從而不受基于服務(wù)器的因特網(wǎng)通信的約束。在基于對等的系統(tǒng)中,可以維護(hù)用戶的自由性(anominity)和私密性,因?yàn)橥ㄐ胖苯釉诰W(wǎng)絡(luò)內(nèi)的對等體之間發(fā)生。然而,盡管個人通信和文件共享在對等網(wǎng)絡(luò)中是相對良好地建立的,在組對等環(huán)境中建立、發(fā)現(xiàn)、加入、維護(hù)和共享信息不是良好建立的。然而,個人越來越習(xí)慣于由以服務(wù)器為中心的環(huán)境中這樣的分組技術(shù)所提供的好處。
發(fā)明內(nèi)容
所要求保護(hù)的方法和系統(tǒng)是一種支持用于在面向服務(wù)的框架上,尤其在面向服務(wù)的消息通信系統(tǒng)實(shí)現(xiàn)的組播編程模型的API集。它提供了應(yīng)用層組播能力,而無需要求一IP組播基礎(chǔ)結(jié)構(gòu)。所要求保護(hù)的系統(tǒng)使得面向服務(wù)的應(yīng)用程序能夠簡易且有效地實(shí)現(xiàn)組播通信。此外,所要求保護(hù)的權(quán)利要求中的方法和系統(tǒng)提供了用于為可增強(qiáng)組播過程的對等應(yīng)用程序創(chuàng)建和維護(hù)網(wǎng)孔拓?fù)浣Y(jié)構(gòu)的管理過程。這些過程中的某一些可包括信道監(jiān)視和傳遞服務(wù);洪泛和過濾服務(wù);通告服務(wù);連接維護(hù)服務(wù);跨領(lǐng)域因特網(wǎng)范圍網(wǎng)孔能力;以及無服務(wù)器對等解決方案服務(wù)。
圖1是可依照本發(fā)明操作的計算系統(tǒng)的框圖;
圖2示出了開放系統(tǒng)互連模型;圖3示出了其中可構(gòu)建所要求保護(hù)的系統(tǒng)的可能的面向服務(wù)的消息通信系統(tǒng);圖4示出了使用圖3的消息通信系統(tǒng)的消息通信;圖5示出了組播網(wǎng)孔拓?fù)浣Y(jié)構(gòu);圖6示出了所要求保護(hù)的系統(tǒng)的邏輯網(wǎng)孔實(shí)施例;圖7示出了用于在本發(fā)明的實(shí)施例中實(shí)現(xiàn)網(wǎng)孔的通用對象模型;圖8示出了用于在本發(fā)明的實(shí)施例中創(chuàng)建網(wǎng)孔的通用流程圖;圖9示出了本發(fā)明的實(shí)施例中的近鄰連接過程;圖10可示出本發(fā)明的實(shí)施例中的同步器過程;圖11可示出一對近鄰之間的各種同步相關(guān)消息的交換,其中發(fā)起者是新節(jié)點(diǎn);圖12可示出網(wǎng)孔中一對現(xiàn)有節(jié)點(diǎn)之間的同步過程;圖13可示出現(xiàn)有節(jié)點(diǎn)和新節(jié)點(diǎn)之間的同步過程,其中現(xiàn)有節(jié)點(diǎn)是發(fā)起者;圖14可示出本發(fā)明的實(shí)施例中的通用洪泛過程;圖15示出了本發(fā)明的實(shí)施例中的消息處理過程;圖16示出了本發(fā)明的實(shí)施例中的網(wǎng)孔管理過程;以及圖17是依照本發(fā)明的方法的流程圖。
具體實(shí)施例方式
盡管以下文本陳述了眾多不同實(shí)施例的詳細(xì)描述,然而應(yīng)當(dāng)理解,該描述的合法范圍是由本專利所附的權(quán)利要求書中的文字來定義的。該詳細(xì)描述被解釋為僅為示例性的,且不描述每一可能的實(shí)施例,因?yàn)槊枋雒恳豢赡艿膶?shí)施例即使不是不可能的也是不切實(shí)際的??蓪?shí)現(xiàn)眾多替換實(shí)施例,使用其它現(xiàn)有技術(shù)或在本專利的提交日期之后開發(fā)的技術(shù),這些都落入權(quán)利要求書的范圍之內(nèi)。
也應(yīng)當(dāng)理解,除非在本專利中使用句子“如此處所使用的,術(shù)語‘__’在此被定義為意味著……”或類似的句子來明確定義術(shù)語,否則沒有意圖要明確或隱含地限制該術(shù)語的意義超出其簡單或普通意義之外,且這樣的術(shù)語不應(yīng)被解釋為基于本專利任何章節(jié)中所作出的任何語句(除權(quán)利要求書中的語言之外)而在范圍上有限制。在本專利所附的權(quán)利要求書中所述的任何術(shù)語在本專利中以與單個意義相一致的方式來引用意義上,這是為簡明起見,僅僅為了不使讀者感到迷惑,且這樣的權(quán)利要求術(shù)語不旨在隱含地或另外限于該單個意義。最后,除非權(quán)利要求元素是通過敘述單詞“裝置”和功能而沒有敘述任何結(jié)構(gòu)來定義的,否則任何權(quán)利要求元素的范圍不旨在基于35U.S.C.§112第6段的應(yīng)用來解釋。
圖1示出了其中可實(shí)現(xiàn)所要求保護(hù)的方法和裝置的塊的系統(tǒng)的合適的計算系統(tǒng)環(huán)境100的示例。計算系統(tǒng)環(huán)境100僅是合適的計算環(huán)境的一個示例,且不旨在對本發(fā)明的方法和裝置的使用范圍或功能提出任何局限。也不應(yīng)將計算環(huán)境100解釋為對示例性操作環(huán)境100中所示的任何一個組件或組件的組合具有任何依賴性或要求。
所要求保護(hù)的方法和裝置的塊可以使用眾多其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置來操作。適用于本發(fā)明的眾所周知的計算系統(tǒng)、環(huán)境和/或配置包括但不限于,個人計算機(jī)、服務(wù)器計算機(jī)、手持式或膝上設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)者電子設(shè)備、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)、包括任一上述系統(tǒng)或設(shè)備的分布式計算環(huán)境等等。
所要求保護(hù)的方法和裝置的塊可在諸如程序模塊等由計算機(jī)執(zhí)行的計算機(jī)可執(zhí)行指令的一般上下文環(huán)境中描述。一般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。該方法和裝置也可以在分布式計算環(huán)境中實(shí)踐,其中,任務(wù)由通過通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備來執(zhí)行。在分布式計算環(huán)境中,程序模塊可以位于包括存儲器存儲設(shè)備的本地和遠(yuǎn)程計算機(jī)存儲介質(zhì)中。
參考圖1,用于實(shí)現(xiàn)所要求保護(hù)的方法和裝置的塊的示例性系統(tǒng)包括計算機(jī)110形式的通用計算設(shè)備。計算機(jī)110的組件可包括,但不限于,處理單元120、系統(tǒng)存儲器130以及將包括系統(tǒng)存儲器的各類系統(tǒng)組件耦合至處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可以是若干種總線結(jié)構(gòu)類型的任一種,包括存儲器總線或存儲器控制器、外圍總線以及使用各類總線體系結(jié)構(gòu)的局部總線。作為示例而非局限,這類體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(VESA)局部總線以及外圍部件互連(PCI)總線,也稱為Mezzanine總線。
計算機(jī)110通常包括各種計算機(jī)可讀介質(zhì)。計算機(jī)可讀介質(zhì)可以是可由計算機(jī)110訪問的任一可用介質(zhì),包括易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。作為示例而非局限,計算機(jī)可讀介質(zhì)包括計算機(jī)存儲介質(zhì)和通信介質(zhì)。計算機(jī)存儲介質(zhì)包括以用于儲存諸如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任一方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性,可移動和不可移動介質(zhì)。計算機(jī)存儲介質(zhì)包括但不限于,RAM、ROM、EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲、磁盒、磁帶、磁盤存儲或其它磁存儲設(shè)備、或可以用來儲存所期望的信息并可由計算機(jī)110訪問的任一其它介質(zhì)。通信介質(zhì)通常具體化為諸如載波或其它傳輸機(jī)制的已調(diào)制數(shù)據(jù)信號中的計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任一信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”指以對信號中的信息進(jìn)行編碼的方式設(shè)置或改變其一個或多個特征的信號。作為示例而非局限,通信介質(zhì)包括有線介質(zhì),如有線網(wǎng)絡(luò)或直接連線連接,以及無線介質(zhì),如聲學(xué)、RF、紅外和其它無線介質(zhì)。上述任一的組合也應(yīng)當(dāng)包括在計算機(jī)可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲器130包括以易失性和/或非易失性存儲器形式的計算機(jī)存儲介質(zhì),如只讀存儲器(ROM)131和隨機(jī)存取存儲器(RAM)132?;据斎?輸出系統(tǒng)133(BIOS)包括如在啟動時幫助在計算機(jī)110內(nèi)的元件之間傳輸信息的基本例程,通常儲存在ROM131中。RAM132通常包含處理單元120立即可訪問或者當(dāng)前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非局限,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。
計算機(jī)110也可包括其它可移動/不可移動、易失性/非易失性計算機(jī)存儲介質(zhì)。僅作示例,圖1示出了對不可移動、非易失性磁介質(zhì)進(jìn)行讀寫的硬盤驅(qū)動器141、對可移動、非易失性磁盤152進(jìn)行讀寫的磁盤驅(qū)動器151以及對可移動、非易失性光盤156,如CDROM或其它光介質(zhì)進(jìn)行讀寫的光盤驅(qū)動器155。可以在示例性操作環(huán)境中使用的其它可移動/不可移動、易失性/非易失性計算機(jī)存儲介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動器141通常通過不可移動存儲器接口,如接口140連接到系統(tǒng)總線121,磁盤驅(qū)動器151和光盤驅(qū)動器155通常通過可移動存儲器接口,如接口150連接到系統(tǒng)總線121。
上文討論并在圖1示出的驅(qū)動器及其關(guān)聯(lián)的計算機(jī)存儲介質(zhì)為計算機(jī)110提供了計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲。例如,在圖1中,示出硬盤驅(qū)動器141儲存操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147。注意,這些組件可以與操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137相同,也可以與它們不同。這里對操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147給予不同的標(biāo)號來說明至少它們是不同的副本。用戶可以通過輸入設(shè)備,如鍵盤162和定位設(shè)備161(通常指鼠標(biāo)、跟蹤球或觸摸板)向計算機(jī)110輸入命令和信息。其它輸入設(shè)備(未示出)可包括麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通常通過耦合至系統(tǒng)總線的用戶輸入接口160連接至處理單元120,但是也可以通過其它接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器191或其它類型的顯示設(shè)備也通過接口,如視頻接口190連接至系統(tǒng)總線121。除監(jiān)視器之外,計算機(jī)也可包括其它外圍輸出設(shè)備,如揚(yáng)聲器197和打印機(jī)196,它們通過輸出外圍接口195連接。
計算機(jī)110可以使用到一個或多個遠(yuǎn)程計算機(jī),如遠(yuǎn)程計算機(jī)180的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計算機(jī)180可以是個人計算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其它常見的網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括許多或所有相對于計算機(jī)110所描述的元件,盡管在圖1中僅示出了存儲器存儲設(shè)備181。圖1描述的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,這里示出作為示例而非局限。這類網(wǎng)絡(luò)環(huán)境常見于辦公室、企業(yè)范圍計算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)以及因特網(wǎng)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時,計算機(jī)110通過網(wǎng)絡(luò)接口或適配器170連接至LAN171。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時,計算機(jī)110通常包括調(diào)制解調(diào)器172或用于通過WAN173,如因特網(wǎng)建立通信的其它裝置。調(diào)制解調(diào)器172可以是內(nèi)置或外置的,它通過用戶輸入接口160連接至系統(tǒng)總線121。在網(wǎng)絡(luò)化環(huán)境中,相對于計算機(jī)110所描述的程序模塊或其部分可儲存在遠(yuǎn)程存儲器存儲設(shè)備中??梢岳斫猓境龅木W(wǎng)絡(luò)連接是示例性的,也可以使用在計算機(jī)之間建立通信鏈路的其它裝置。
圖2示出了由國際標(biāo)準(zhǔn)化組織(“ISO”)開發(fā)的開放系統(tǒng)互連(“OSI”)模型,它可用于描述本發(fā)明的方法和系統(tǒng)的各方面。OSI是一種對于如何在電信網(wǎng)絡(luò)中的兩點(diǎn)之間傳送消息的標(biāo)準(zhǔn)描述。
依照OSI模型,電信網(wǎng)絡(luò)中兩個端點(diǎn)之間的通信過程可被分為層,每一層添加一組其自己的特殊的、相關(guān)的功能。通信計算機(jī)可配備這七層功能。當(dāng)在用戶之間傳遞給定消息時,數(shù)據(jù)流通過一端的每一層,往下通過該計算機(jī)中的各層,且在另一端,當(dāng)消息到達(dá)時,另一數(shù)據(jù)流往上通過接收計算機(jī)中的各層并最終到達(dá)最終用戶或程序。提供這七層功能的實(shí)際的編程和硬件通常是計算機(jī)操作系統(tǒng)、應(yīng)用程序、傳輸控制協(xié)議(“TCP”)/網(wǎng)際協(xié)議(“IP”)或替換的傳輸和網(wǎng)絡(luò)協(xié)議、以及使得信號能夠被施加在附加到計算機(jī)的線之一上的軟件和硬件的組合。
OSI將通信劃分成七層。這些層分為兩組。較高層209是在消息從用戶傳遞或傳遞到用戶時使用的,而較低層208是在任何消息通過主計算機(jī)時使用的。針對該計算機(jī)的消息通過較高層209。目的地為某一其它主機(jī)的消息不被向上傳遞到較高層,而是被轉(zhuǎn)發(fā)到另一主機(jī)。該七層現(xiàn)在簡要描述如下。
物理層201定義了接口的物理特征,諸如機(jī)械組件和連接器、諸如表示二進(jìn)制值的電壓電平等電氣方面、以及諸如設(shè)置、維護(hù)和移去物理鏈路的功能方面。用于數(shù)據(jù)通信的公知的物理層接口包括串行接口、并行接口以及用于諸如以太網(wǎng)和令牌環(huán)等LAN的物理規(guī)范。
數(shù)據(jù)鏈路層202定義了用于跨物理連接在兩個系統(tǒng)之間發(fā)送和接收信息的規(guī)則。數(shù)據(jù)鏈路通常是網(wǎng)絡(luò)段(不是網(wǎng)間)和點(diǎn)對點(diǎn)鏈路。數(shù)據(jù)被打包成幀,用于跨底層物理網(wǎng)絡(luò)傳輸??墒褂媚承┛煽啃怨δ埽T如接收數(shù)據(jù)的確認(rèn)。
網(wǎng)絡(luò)層203提供了跨多個網(wǎng)絡(luò)傳遞數(shù)據(jù)的網(wǎng)間服務(wù)。網(wǎng)間尋址方案向每一網(wǎng)絡(luò)和每一節(jié)點(diǎn)分配一唯一的地址。網(wǎng)絡(luò)層支持多個數(shù)據(jù)鏈路連接。在因特網(wǎng)協(xié)議套件中,IP是網(wǎng)絡(luò)層網(wǎng)際協(xié)議。
傳輸層204提供了端對端通信服務(wù),并確保數(shù)據(jù)在這些最終系統(tǒng)之間可靠地傳遞。兩個最終系統(tǒng)建立連接,且參與對話以跟蹤跨網(wǎng)絡(luò)的分組傳遞。該協(xié)議也調(diào)節(jié)分組流以容納較慢的接收器,并確保如果在鏈路中發(fā)生了中斷,則傳輸不會完全被停止。傳輸控制協(xié)議(“TCP”)可以是一種傳輸層協(xié)議。
會話層205通過使用常規(guī)技術(shù)或?qū)υ拝f(xié)調(diào)系統(tǒng)之間的信息交換。對話不總是需要的,但是某些應(yīng)用程序可能需要一種如果連接臨時丟失則知道何處重新開始數(shù)據(jù)傳輸?shù)姆绞?,或可能需要周期對話以指示一個數(shù)據(jù)集的末端和一個新的數(shù)據(jù)集的始端。
表示層206包含作為用戶在工作站上運(yùn)行的操作系統(tǒng)和應(yīng)用程序的一部分的協(xié)議。在該層中,信息被格式化以供顯示或打印。數(shù)據(jù)內(nèi)的代碼被解釋,且在該層中也處理數(shù)據(jù)加密和轉(zhuǎn)換。
應(yīng)用層207提供了用于訪問底層網(wǎng)絡(luò)服務(wù)的定義過程。應(yīng)用層用于定義各種用戶應(yīng)用程序的范圍。
盡管組播技術(shù)是為OSI模型的較低層208,即傳輸/網(wǎng)絡(luò)層開發(fā)的,然而所要求保護(hù)的系統(tǒng)集中于提供用于在OSI模型的較高層209上實(shí)現(xiàn)組播的應(yīng)用程序級編程模型。由此,使用本發(fā)明的方法和系統(tǒng),開發(fā)者可實(shí)現(xiàn)組播功能,而無需IP組播基礎(chǔ)結(jié)構(gòu)。此外,如下所述,所要求保護(hù)的系統(tǒng)可改進(jìn)面向服務(wù)的編程模型。
面向服務(wù)的框架和編程模型面向服務(wù)與面向?qū)ο蟮闹饕獏^(qū)別在于面向服務(wù)的框架如何定義“應(yīng)用程序”。面向?qū)ο蟮拈_發(fā)可集中于從獨(dú)立的類庫構(gòu)建的應(yīng)用程序,而面向服務(wù)的開發(fā)可集中于從一組自治服務(wù)構(gòu)建的系統(tǒng)。服務(wù)可以簡單地是通過消息交換來與其交互的程序。然而,不像現(xiàn)有的分布式對象技術(shù),服務(wù)可僅通過良好定義的XML接口來與其客戶機(jī)交互。諸如跨服務(wù)邊界傳遞完整類、方法和調(diào)用等行為可能不被允許。由此,應(yīng)用程序開發(fā)者和系統(tǒng)繼承者可能不需要所集成的軟件的底層對象模型、類型系統(tǒng)和協(xié)議的具體知識。
應(yīng)用程序可展示一組其它應(yīng)用程序可利用的“服務(wù)”,而不是如分布式對象系統(tǒng)中那樣通過直接對象激活來集成完全不同的應(yīng)用程序。利用服務(wù)框架的應(yīng)用程序可使用基于標(biāo)準(zhǔn)的協(xié)議和可動態(tài)獲取的策略定義來展示其服務(wù)。構(gòu)成連接系統(tǒng)的應(yīng)用程序的這種去耦合可允許更簡單的集成,在對系統(tǒng)進(jìn)行自適應(yīng)以隨時間改變時更靈活,并且也可允許更可靠的操作。
現(xiàn)有的面向服務(wù)的編程模型可實(shí)現(xiàn)現(xiàn)有的較高OSI層消息通信服務(wù),諸如簡單對象訪問協(xié)議(“SOAP”)。SOAP可以作為為消息提供方案的較高層OSI服務(wù)來操作。利用SOAP協(xié)議的消息通信系統(tǒng)的一個可能的實(shí)施例在圖3中示出。所示的消息體系結(jié)構(gòu)(后文稱為“消息總線”)可被視為用于簡化SOAP節(jié)點(diǎn)的開發(fā)和維護(hù)的應(yīng)用程序編程接口(“API”)。所要求保護(hù)的系統(tǒng)和方法可在提供基本的較高層消息處理的任何面向服務(wù)的模型上實(shí)現(xiàn),但是為演示起見,所要求保護(hù)的方法和系統(tǒng)將使用圖3中所示的消息總線來描述。
如圖3所示,消息總線網(wǎng)絡(luò)層301和傳輸302可由已存在的典型傳輸層/網(wǎng)絡(luò)層協(xié)議的任一種構(gòu)成。TCP/IP是一種流行的傳輸層/網(wǎng)絡(luò)層協(xié)議,且可以無需啟用IP組播,這是使用本發(fā)明的應(yīng)用層組播系統(tǒng)的一個優(yōu)點(diǎn)。傳輸層可封裝諸如IP套接字或命名等聯(lián)網(wǎng)機(jī)制,或用于傳遞數(shù)據(jù)的任何機(jī)制。消息總線傳輸303可將消息轉(zhuǎn)換成要通過數(shù)據(jù)鏈路層和物理層在線纜上傳遞的實(shí)際字節(jié)。
向上移至表示/會話層307,端口對象305可表示用于消息的可配置的、邏輯管道。每一端口對象305具有該端口用于將邏輯消息轉(zhuǎn)換成實(shí)際網(wǎng)絡(luò)通信的傳輸集合303。端口內(nèi)部地被實(shí)現(xiàn)為一對管道對象發(fā)送管道306和接收管道307。每一管道可支持可插式消息處理程序(未示出)、組成端口擴(kuò)展,它可檢查和操縱沿該管道行進(jìn)的消息。使用消息總線的應(yīng)用中的典型節(jié)點(diǎn)可僅例示單個端口對象,盡管可能創(chuàng)建一個以上對象。本說明書的剩余部分將引用端口以協(xié)助用戶概念化本說明書,但是對端口的使用在現(xiàn)代消息總線體系結(jié)構(gòu)中可能是不必要的。
在應(yīng)用層309,應(yīng)用程序節(jié)點(diǎn)310可通過信道對象308向端口對象發(fā)送消息。信道對象在各種實(shí)施例中存在,它可被縮小成兩組發(fā)送信道和接收信道。單個信道類也可實(shí)現(xiàn)發(fā)送和接收信道。
消息總線可支持各種信道實(shí)現(xiàn),以允許各種消息交換模式。例如,用于單向數(shù)據(jù)包樣式的消息的簡單信道可以僅表示最終接收器。另一方面,更復(fù)雜的信道可支持相關(guān)的雙向消息通信、可靠消息通信或跨應(yīng)用程序執(zhí)行的消息持續(xù)性。信道可以是其中由應(yīng)用程序節(jié)點(diǎn)創(chuàng)建的消息對象可被傳遞給基礎(chǔ)結(jié)構(gòu)節(jié)點(diǎn)(例如,IP)的第一點(diǎn),而從應(yīng)用程序節(jié)點(diǎn)的觀點(diǎn)來看,信道是消息總線體系結(jié)構(gòu)中的可擴(kuò)展性的第一點(diǎn)。
使用消息總線框架發(fā)送和接收消息的通用過程如下。
1.由初始發(fā)送者創(chuàng)建消息對象。
2.通過將對消息對象的引用傳遞到信道來發(fā)送消息。
3.信道將消息傳遞到與該信道相關(guān)聯(lián)的端口對象。
4.端口將消息注入到端口的發(fā)送管道中,其中消息由向管道注冊的每一消息處理程序順序地處理。
5.當(dāng)消息到達(dá)發(fā)送管道的末端時,端口將消息引用傳遞到向該端口注冊的傳輸對象。該傳輸對象是基于消息的下一中繼段的地址來選擇的。
6.傳輸層將消息格式化成字節(jié)流,并將字節(jié)推到網(wǎng)絡(luò)上。
此時,消息離開了SOAP節(jié)點(diǎn),且進(jìn)入網(wǎng)絡(luò)云狀框。在消息到達(dá)其行程中的下一SOAP節(jié)點(diǎn)之前,消息不再服從消息總線或SOAP。相反,消息可以是通過諸如TCP/IP或HTTP等網(wǎng)絡(luò)協(xié)議的字節(jié)流。
在某一點(diǎn),消息字節(jié)到達(dá)網(wǎng)絡(luò)上作為SOAP節(jié)點(diǎn)的監(jiān)聽節(jié)點(diǎn)。以下可在監(jiān)聽節(jié)點(diǎn)處發(fā)生。
1.傳輸導(dǎo)出的對象接收字節(jié)流,從字節(jié)流中它在存儲器中創(chuàng)建消息對象。消息頭部被全部讀入存儲器中,然而,消息內(nèi)容保留在傳輸中,且在需要之前可能保留在線纜上。
2.傳輸然后將消息引用傳遞到傳輸對象向其注冊的端口的接收管道。
3.消息由向接收管道注冊的每一消息處理程序順序地處理。如果消息處理程序選擇,它可將消息從接收管道中拉出,并將其傳遞到與該消息處理程序相關(guān)聯(lián)的信道。
4.如果消息使其到達(dá)端口上接收管道的末端,則端口將消息傳遞到向該端口的主接收信道注冊的應(yīng)用程序定義的消息處理程序。
5.應(yīng)用程序代碼具有對消息對象的引用,使用該引用,它可以完成它感到滿意的任何事情。通常,檢查消息的動作頭部,且處理消息的內(nèi)容。
6.一旦應(yīng)用程序代碼完成了該消息,消息總線讀取并丟棄消息內(nèi)容中剩余的任何未讀的字節(jié),以清除傳輸,且將消息對象留給無用信息收集。
7.如果消息在其從初始發(fā)送者到最終接收者的路線上通過SOAP中介,則該中介也可使用如上列出的接收步驟以及發(fā)送步驟來處理消息。中介是同時作為單個消息的發(fā)送者和接收者的節(jié)點(diǎn)。SOAP路由器是中介的一個常見示例。
圖4示出了消息從初始發(fā)送者401通過兩個中介403、404到最終接收者402可采取的路徑。該圖示出了僅發(fā)送管道405可由初始發(fā)送者401使用,且僅接收管道406可由最終接收者使用。同時,對于中介403、404。發(fā)送管道407、408和接收管道409、410都可用于處理消息。注意,初始發(fā)送者和最終接收者的角色可在響應(yīng)消息的行程中交換。
盡管消息總線框架提供了用于實(shí)現(xiàn)使用面向服務(wù)的框架的服務(wù)的基本機(jī)制,但是沒有規(guī)定要啟用組播功能。所要求保護(hù)的方法和系統(tǒng)在這樣一種面向服務(wù)的消息總線體系結(jié)構(gòu)上構(gòu)建,以向開發(fā)者提供在面向服務(wù)的模型上構(gòu)建以向其應(yīng)用程序添加組播功能的能力。
組播網(wǎng)孔系統(tǒng)所要求保護(hù)的系統(tǒng)和方法可以實(shí)現(xiàn)被稱為網(wǎng)孔的特定組播拓?fù)浣Y(jié)構(gòu)。圖5示出了一種可能的網(wǎng)孔拓?fù)洹R话愣?,組播組的成員可被稱為節(jié)點(diǎn)501,而組可被認(rèn)為是網(wǎng)孔500且由使用通信信道(例如,509)來彼此互連的一組節(jié)點(diǎn)501-508來表示。網(wǎng)孔中的每一節(jié)點(diǎn)501-508能夠通過傳播過程向網(wǎng)孔中的每一其它節(jié)點(diǎn)傳遞消息,在該傳播過程中,由一個節(jié)點(diǎn)(例如,節(jié)點(diǎn)501)發(fā)送的每一消息傳遞到相鄰的節(jié)點(diǎn)502-505,相鄰節(jié)點(diǎn)繼續(xù)將消息傳遞到其相鄰節(jié)點(diǎn),直到每一節(jié)點(diǎn)接收到該消息。當(dāng)節(jié)點(diǎn)具有多個連接時,它可接收消息并制作該消息的副本以沿連接到它的每一信道發(fā)送。由于傳播的方向一般從消息發(fā)送者流走,且類似于物理洪泛,因此使用組播的消息傳播一般被稱為洪泛。組播網(wǎng)孔中的每一節(jié)點(diǎn)可接收,且可知道在網(wǎng)絡(luò)上洪泛的任何消息,即一個節(jié)點(diǎn)通過洪泛的消息知道什么,網(wǎng)孔中的每一節(jié)點(diǎn)也知道什么。因此,有益的是具有一種合理大小或關(guān)于何時應(yīng)繼續(xù)洪泛消息的規(guī)則的網(wǎng)孔。
使用面向服務(wù)的消息通信系統(tǒng)的組播網(wǎng)孔環(huán)境圖6示出了所要求保護(hù)的組播網(wǎng)孔系統(tǒng)的通用實(shí)施例。在該實(shí)施例中,對等節(jié)點(diǎn)601是連接到網(wǎng)孔602的節(jié)點(diǎn)。網(wǎng)孔可以是一組命名的對等節(jié)點(diǎn)601-605,它們由相鄰信道607-611多重連接以形成節(jié)點(diǎn)的耦合網(wǎng)絡(luò),用于以消息或點(diǎn)對點(diǎn)數(shù)據(jù)流的形式來傳播數(shù)據(jù)。網(wǎng)孔是基于到相鄰節(jié)點(diǎn)的連接來構(gòu)建的,其中網(wǎng)孔中的相鄰節(jié)點(diǎn)是離開一個通信鏈路(通過通信信道直接連接)的對等節(jié)點(diǎn)。
對等節(jié)點(diǎn)可以與耦合到網(wǎng)孔602的應(yīng)用程序612的實(shí)例相關(guān)聯(lián)。對等信道613、614可被認(rèn)為是對于對等節(jié)點(diǎn)的特定信道,用于在應(yīng)用程序612或服務(wù)(以面向服務(wù)的語言)和網(wǎng)孔602之間通過網(wǎng)孔的對等節(jié)點(diǎn)601來通信。任何應(yīng)用程序可創(chuàng)建節(jié)點(diǎn),但是節(jié)點(diǎn)不可創(chuàng)建應(yīng)用程序。應(yīng)用程序可創(chuàng)建多個節(jié)點(diǎn),且每一節(jié)點(diǎn)可主存多個服務(wù)。例如,考慮聊天應(yīng)用程序。聊天應(yīng)用程序可在稱為ChatMesh(聊天網(wǎng)孔)的網(wǎng)孔中創(chuàng)建節(jié)點(diǎn)。它可創(chuàng)建兩個不同的服務(wù),即VideoService(視頻服務(wù))和TextService(文本服務(wù))。所發(fā)送的任何文本消息可被傳遞到TextService,且所發(fā)送的任何視頻消息可被傳遞到VideoService。
當(dāng)最初連接到網(wǎng)孔時,對等節(jié)點(diǎn)601可連接到已經(jīng)連接到該網(wǎng)孔的另一對等節(jié)點(diǎn),例如603。連接對等節(jié)點(diǎn)601可確定連接到該網(wǎng)孔的相鄰節(jié)點(diǎn)603的地址,并向相鄰節(jié)點(diǎn)發(fā)送加入網(wǎng)孔的請求。在連接到網(wǎng)孔之后,新對等節(jié)點(diǎn)601可創(chuàng)建到網(wǎng)孔中的其它近鄰,例如604、605的連接608、610。
網(wǎng)孔的目的可以是創(chuàng)建用于將消息洪泛到所有網(wǎng)孔節(jié)點(diǎn)的邏輯拓?fù)浣Y(jié)構(gòu)。為自動實(shí)現(xiàn)用于洪泛的最優(yōu)拓?fù)浣Y(jié)構(gòu),網(wǎng)孔可維護(hù)簽名、一組觸點(diǎn)節(jié)點(diǎn),并評估重復(fù)洪泛的消息以確定哪些近鄰更有效。隨著時間的推移,連接可以被創(chuàng)建和移除,使得網(wǎng)孔收斂于對洪泛最優(yōu)的拓?fù)浣Y(jié)構(gòu)。
當(dāng)節(jié)點(diǎn)從網(wǎng)孔斷開時,它可能在網(wǎng)孔中創(chuàng)建稱為網(wǎng)孔分區(qū)的間斷。對等節(jié)點(diǎn)使用網(wǎng)孔簽名(下文描述)以及網(wǎng)孔觸點(diǎn)信息來檢測和修復(fù)圖分區(qū)。
對等信道613、614可以是在應(yīng)用程序612和對等節(jié)點(diǎn)601之間發(fā)送和接收的通信信道。它們可向應(yīng)用程序表現(xiàn)為組播信道,而無需啟用IP的組播基礎(chǔ)結(jié)構(gòu)。每一對等信道613、614可與對等節(jié)點(diǎn)601相關(guān)聯(lián)。對等節(jié)點(diǎn)601可以負(fù)責(zé)實(shí)現(xiàn)網(wǎng)孔算法(例如,優(yōu)化、分區(qū)檢測和修復(fù))以及貫穿網(wǎng)孔洪泛消息。每一對等節(jié)點(diǎn)可提供其自己的服務(wù),稱為節(jié)點(diǎn)服務(wù),它使用可靠消息總線信道與一組相鄰節(jié)點(diǎn)服務(wù)交互。該節(jié)點(diǎn)服務(wù)例如可在服務(wù)框架上實(shí)現(xiàn),并使用TCP和HTTP傳輸上的可靠信道。
在對等信道上發(fā)送的消息的目的地可以是由網(wǎng)孔中的另一節(jié)點(diǎn)提供的特定服務(wù)。網(wǎng)孔中的每一節(jié)點(diǎn)可接收網(wǎng)孔上發(fā)送的每一消息的副本。當(dāng)節(jié)點(diǎn)接收消息時,它可將其傳遞到實(shí)現(xiàn)該消息的預(yù)期服務(wù)的任何相關(guān)聯(lián)的對等信道。為將消息傳播到網(wǎng)孔中的每一節(jié)點(diǎn),始發(fā)節(jié)點(diǎn)可將消息發(fā)送到其近鄰的每一個。這些近鄰可將消息發(fā)送到其近鄰,依此類推。實(shí)際的洪泛算法描述如下。
應(yīng)用程序可從一個相鄰對等節(jié)點(diǎn)601通過隧道到另一個對等節(jié)點(diǎn)602,例如,通過在定址到節(jié)點(diǎn)的近鄰的另一外部消息中封裝應(yīng)用程序消息或內(nèi)部消息。新外部消息可由每一近鄰創(chuàng)建。以此方式,原始消息,包括其目的地服務(wù)地址,可在節(jié)點(diǎn)之間保持不變。所有節(jié)點(diǎn)可從所有其它節(jié)點(diǎn)到達(dá)。在這不為真的意義上(例如,節(jié)點(diǎn)在不可遍歷的防火墻之后),網(wǎng)孔的彈力降低。
對象模型環(huán)境圖7示出了可實(shí)現(xiàn)所要求保護(hù)的系統(tǒng)的實(shí)施例的對象。所要求保護(hù)的組播系統(tǒng)的對象可由對等信道工廠(PeerChannelFactory)701、對等信道(PeerChannel)702、對等監(jiān)聽器工廠(PeerListenerFactory)703、對等監(jiān)聽器(PeerListener)704、對等節(jié)點(diǎn)(PeerNode)705、同步器(Synchronizer)706、維護(hù)器(Maintainer)707、連接器(Connector)708、洪泛器(Flooder)709、近鄰管理器(NeighborManager)710以及近鄰(Neighbor)711構(gòu)成。邏輯上,上述邏輯對等節(jié)點(diǎn)可以被實(shí)現(xiàn)為由對等節(jié)點(diǎn)705、同步器706、連接器708、維護(hù)器707、洪泛器709和近鄰管理器710構(gòu)成的一組對象。
對等信道工廠701可負(fù)責(zé)產(chǎn)生對等信道702。對等信道工廠701也可維護(hù)它所創(chuàng)建的活動信道的集合。對等信道工廠701可以不直接與對等節(jié)點(diǎn)705相關(guān)聯(lián),但是在需要時查找或創(chuàng)建它們。
對等監(jiān)聽器工廠703對象可負(fù)責(zé)產(chǎn)生對等監(jiān)聽器704。對等監(jiān)聽器工廠703管理活動監(jiān)聽器,并維護(hù)監(jiān)聽器所產(chǎn)生的活動信道的集合。對等監(jiān)聽器工廠703可以僅與一個對等節(jié)點(diǎn)705相關(guān)聯(lián)。
對等節(jié)點(diǎn)705可表示網(wǎng)孔中的一個節(jié)點(diǎn),并包含其相關(guān)聯(lián)的配置。對等節(jié)點(diǎn)705可以是實(shí)現(xiàn)該節(jié)點(diǎn)的所有內(nèi)部組件的所有者。該類也可包含用于查找現(xiàn)有節(jié)點(diǎn)的靜態(tài)方法。
近鄰711可包含底層的相鄰信道,并跟蹤該信道的狀態(tài)。近鄰可展示用于與相鄰節(jié)點(diǎn)通信的方法。
近鄰管理器710可包含近鄰711的集合。近鄰管理器710可展示作為所有近鄰711的聚集的事件(例如,MessageAvailable(消息可用))。該對象可提供對等節(jié)點(diǎn)服務(wù)的實(shí)現(xiàn)。
連接器708對象可處理發(fā)送和接收連接消息(CONNECT(連接)、WELCOME(歡迎)、REFUSE(拒絕)、DISCONNECT(斷開))。
維護(hù)器707對象可實(shí)現(xiàn)網(wǎng)孔維護(hù)算法。維護(hù)器707可包含網(wǎng)孔簽名、已知網(wǎng)孔節(jié)點(diǎn)的集合以及當(dāng)前網(wǎng)孔觸點(diǎn)的集合。
洪泛器709可實(shí)現(xiàn)洪泛邏輯。洪泛器可包含近來看見的消息的表。
同步器706可協(xié)調(diào)相鄰信道上的輕量級觸點(diǎn)/簽名同步協(xié)議。
網(wǎng)孔構(gòu)造網(wǎng)孔可按名稱或網(wǎng)孔ID來標(biāo)識。網(wǎng)孔ID是可被解析成IP地址(例如,123.12.123.12)的有效主機(jī)名(例如,soccerpals)。網(wǎng)孔上的服務(wù)的地址可由統(tǒng)一資源標(biāo)識符(“URI”)來指定,且使用對等信道方案前綴(net.p2p://)、網(wǎng)孔ID、路徑以及服務(wù)名稱(例如,net.p2p://soccerpals/path/service)來指定。EndpointAddress(端點(diǎn)地址)結(jié)構(gòu)可用于引用網(wǎng)孔中的節(jié)點(diǎn),且可部分地由至少一個URI構(gòu)成。
圖8示出了使用本發(fā)明的對象模型實(shí)施例來創(chuàng)建網(wǎng)孔的過程。(以下描述將使用其枚舉的名稱,例如對等節(jié)點(diǎn)、對等信道來參考上述所要求保護(hù)的系統(tǒng)的對象)。
一般而言,在服務(wù)或客戶機(jī)期望與網(wǎng)孔通信的任何時刻,可要求該服務(wù)或客戶機(jī)通過網(wǎng)孔的對等節(jié)點(diǎn)來通信。具體地,服務(wù)可與對等監(jiān)聽器工廠相關(guān)聯(lián),而客戶機(jī)可與對等信道工廠相關(guān)聯(lián)。這一過程可涉及首先創(chuàng)建(801)和打開(802)對等信道工廠的應(yīng)用程序。對等信道工廠可被例示為應(yīng)用程序中的對象,且因此可與該應(yīng)用程序相關(guān)聯(lián)。接著,可通過調(diào)用對等信道工廠上的方法(稱為CreateChannel(創(chuàng)建信道))來創(chuàng)建(803)對等信道。對等信道然后可檢查是否有相關(guān)聯(lián)的對等節(jié)點(diǎn)(804)。如果有相關(guān)聯(lián)的對等節(jié)點(diǎn),則對等信道可連接到該對等節(jié)點(diǎn),并打開對等信道(805),且開始接收和發(fā)送消息(806)。否則,如果沒有現(xiàn)有的對等節(jié)點(diǎn),對等信道可創(chuàng)建新的對等節(jié)點(diǎn)(807),打開對等信道(808)(例如,通過調(diào)用對等信道上的OPEN函數(shù)并傳入EndpointAddress)并打開新的對等節(jié)點(diǎn)(809)。
在打開新對等節(jié)點(diǎn)時,對等節(jié)點(diǎn)可調(diào)用解析器(Resolver)對象,它負(fù)責(zé)提供名稱解析服務(wù)。存在眾多解析器方法,包括RegisterMeshID(注冊網(wǎng)孔ID)、UnregisterMeshID(未注冊網(wǎng)孔ID)等。解析器方法可實(shí)現(xiàn)自定義名稱解析服務(wù),或可使用由消息總線提供的解析服務(wù),諸如對等名稱解析協(xié)議(“PNRP”)。新創(chuàng)建的對等節(jié)點(diǎn)可調(diào)用解析器來注冊節(jié)點(diǎn)服務(wù)(810),該節(jié)點(diǎn)服務(wù)是由每一對等節(jié)點(diǎn)為內(nèi)部實(shí)現(xiàn)目的而唯一提供的服務(wù)。該節(jié)點(diǎn)服務(wù)可以與發(fā)起新對等節(jié)點(diǎn)的創(chuàng)建或發(fā)起到現(xiàn)有對等節(jié)點(diǎn)的連接的應(yīng)用程序服務(wù)不同。通過向解析器注冊,其它節(jié)點(diǎn)可通過其節(jié)點(diǎn)服務(wù)引用獲得對新創(chuàng)建的對等節(jié)點(diǎn)的引用。
除注冊其節(jié)點(diǎn)服務(wù)之外,對等節(jié)點(diǎn)可向解析器查詢網(wǎng)孔中的其它節(jié)點(diǎn)(811)。如果不調(diào)用解析器的ResolveMeshId(解析網(wǎng)孔ID)方法,節(jié)點(diǎn)可能不知道在網(wǎng)孔中是否有其它節(jié)點(diǎn)(除非其它節(jié)點(diǎn)之一發(fā)起了到該節(jié)點(diǎn)的連接)。如果沒有其它節(jié)點(diǎn),則對等節(jié)點(diǎn)可向?qū)Φ刃诺酪l(fā)指示,該指示向應(yīng)用程序引發(fā)警告。如果有其它節(jié)點(diǎn),則對等節(jié)點(diǎn)可調(diào)用其維護(hù)器對象以將網(wǎng)孔ID解析成遠(yuǎn)程節(jié)點(diǎn)服務(wù)的EndpointAddress。一旦獲得了EndpointAddress,近鄰管理器可用于創(chuàng)建到相鄰節(jié)點(diǎn)的相鄰信道(811)。一旦創(chuàng)建了相鄰信道,可通過發(fā)送CONNECT消息來嘗試連接(812)。如果接收到WELCOME消息,則對等節(jié)點(diǎn)可被打開且在線,且同步過程開始。如果接收到REFUSE消息,則對等節(jié)點(diǎn)可嘗試其它連接。如果對等節(jié)點(diǎn)未找到或連接到任何其它節(jié)點(diǎn),則對等節(jié)點(diǎn)可將其自身設(shè)為離線狀態(tài)(813),否則對等節(jié)點(diǎn)可以在線(814),并可接收和發(fā)送消息(815)。
一般而言,上述過程可以類似于對等監(jiān)聽器過程,不同之處在于初始信道創(chuàng)建框。當(dāng)處理僅對在由目標(biāo)為該服務(wù)的消息請求之后與網(wǎng)格通信感興趣的服務(wù)時,該服務(wù)可創(chuàng)建并打開對等監(jiān)聽器工廠而非對等信道工廠。對等信道然后可用于創(chuàng)建對等監(jiān)聽器工廠。當(dāng)由對等節(jié)點(diǎn)接收到匹配過濾器準(zhǔn)則的第一消息時,對等監(jiān)聽器可產(chǎn)生對等信道。一旦創(chuàng)建了對等信道,可進(jìn)行類似于上述過程的雙向通信。然而,對等監(jiān)聽器也可用消息過濾器來匹配,使得它僅向應(yīng)用程序通知匹配過濾器準(zhǔn)則的消息。
當(dāng)應(yīng)用程序希望洪泛消息時,它可通過其對等信道與對等節(jié)點(diǎn)通信。只要消息對其可用,對等信道就通知應(yīng)用程序。或者,如果實(shí)現(xiàn)使用對等監(jiān)聽器,對等監(jiān)聽器可生成對等信道,并通知應(yīng)用程序已為其接收消息。一旦創(chuàng)建了對等信道,應(yīng)用程序可接收并處理它。
每一對等節(jié)點(diǎn)可具有單個相關(guān)聯(lián)的近鄰管理器。近鄰管理器可被限于傳遞和接收角色,并可被賦予維護(hù)所有其近鄰,即直接連接到它的對等節(jié)點(diǎn)的列表,以及收集定向到它的消息和發(fā)送來自屬于對等節(jié)點(diǎn)的對等信道的消息的任務(wù)。
近鄰接收連接請求圖9示出了處理相鄰連接的情形。當(dāng)?shù)谝还?jié)點(diǎn)發(fā)起到第二節(jié)點(diǎn)的連接時(901),可通知第二節(jié)點(diǎn)的近鄰管理器,并可創(chuàng)建近鄰對象以跟蹤遠(yuǎn)程第一節(jié)點(diǎn)(902)。近鄰管理器可通知其對等節(jié)點(diǎn)(903),該對等節(jié)點(diǎn)表示第二相鄰節(jié)點(diǎn),并進(jìn)而通知連接器。第一節(jié)點(diǎn)的連接器通過發(fā)送CONNECT消息啟動與第二節(jié)點(diǎn)的連接協(xié)議。響應(yīng)的連接器然后可依照以下向發(fā)起節(jié)點(diǎn)發(fā)送響應(yīng)如果當(dāng)前近鄰數(shù)大于或等于最大值(在下文“網(wǎng)孔維護(hù)”一節(jié)中進(jìn)一步描述),則可向該近鄰發(fā)回具有短近鄰列表和/或其它已知節(jié)點(diǎn)的REFUSE消息(905),并關(guān)閉信道(906)。否則,可發(fā)送具有短近鄰列表和/或已知節(jié)點(diǎn)的WELCOME消息(907)。
如果信道不被上述過程關(guān)閉,則節(jié)點(diǎn)可交換包含每一節(jié)點(diǎn)上通告的服務(wù)(908)的ADVERTISE(通告)消息。
同步節(jié)點(diǎn)當(dāng)近鄰連接到網(wǎng)孔上的另一節(jié)點(diǎn)時,可以要求該網(wǎng)孔的當(dāng)前狀態(tài)同步以確保所有節(jié)點(diǎn)共享該網(wǎng)孔的同一視圖。該狀態(tài)包括網(wǎng)孔觸點(diǎn)節(jié)點(diǎn)的列表以及網(wǎng)孔簽名(用于如下描述的內(nèi)部網(wǎng)孔維護(hù)功能)。
對等同步器(Peer Synchronizer)可以是對等節(jié)點(diǎn)的一個組件,它負(fù)責(zé)在一對相鄰節(jié)點(diǎn)之間運(yùn)行同步協(xié)議。該同步過程可涉及圖10中示出的以下步驟。在框1000,當(dāng)近鄰轉(zhuǎn)移到已連接狀態(tài)時,發(fā)起同步器可通過發(fā)送SyncRequest(同步請求)消息來啟動同步過程。SyncRequest消息可包含維護(hù)器的觸點(diǎn)高速緩存中的觸點(diǎn)抽象列表以及簽名。每一觸點(diǎn)抽象可包含觸點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)ID以及觸點(diǎn)的版本號。對于新節(jié)點(diǎn),該列表可以為空。
在框1005,在接收SyncRequest消息之后,響應(yīng)的同步器可將抽象列表移交給維護(hù)器。維護(hù)器可實(shí)現(xiàn)網(wǎng)孔維護(hù)算法,并可包含網(wǎng)孔簽名、已知網(wǎng)孔節(jié)點(diǎn)的集合以及當(dāng)前網(wǎng)孔觸點(diǎn)的集合。在框1010,維護(hù)器進(jìn)而可將抽象列表與其觸點(diǎn)高速緩存的內(nèi)容進(jìn)行比較。在框1015,維護(hù)器可構(gòu)建存在于其高速緩存中但不存在于抽象列表中的觸點(diǎn)的列表(即,發(fā)起節(jié)點(diǎn)不具有這些觸點(diǎn)),并添加比抽象列表中的觸點(diǎn)更新的觸點(diǎn)。在框1020,創(chuàng)建經(jīng)更新的抽象。不在響應(yīng)者的高速緩存中的任何觸點(diǎn)被添加,或者如果響應(yīng)者具有較舊的版本,則維護(hù)器可將它們添加到新的、經(jīng)更新的抽象列表中。在框1025,可將觸點(diǎn)列表、簽名和新抽象列表返回給同步器。
在框1030,如果由維護(hù)器返回的抽象列表非空,則控制可傳遞到框1035,其中響應(yīng)的同步器發(fā)送具有該抽象列表和簽名的其自己的SyncRequest消息。在框1040,同步器可發(fā)送具有觸點(diǎn)的一系列SyncData(同步數(shù)據(jù))消息。最終的觸點(diǎn)塊和簽名可以在SyncEnd(同步結(jié)束)消息中發(fā)送。如果在框1030,由維護(hù)器返回的抽象列表為空,則同步器可以不發(fā)送其自己的SyncRequest,且控制可傳遞到框1040。
在框1043,在發(fā)起方,可確定發(fā)起方是否發(fā)送其自己的SyncRequest。如果發(fā)起者未發(fā)送SyncRequest,則當(dāng)發(fā)送了所有的SyncData和SyncEnd消息之后,可在框1045發(fā)消息通知同步過程的的結(jié)束。如果發(fā)起者發(fā)送了其自己的SyncRequest,則同步過程可在框1050處接收到SyncEnd消息時結(jié)束。
在框1055,在響應(yīng)方,可確定響應(yīng)方是否發(fā)送了其自己的SyncRequest。如果響應(yīng)者未發(fā)送SyncRequest,則當(dāng)發(fā)送了所有的SyncData和SyncEnd消息之后可在框1060發(fā)信號通知同步過程的結(jié)束。如果響應(yīng)者發(fā)送了其自己的SyncRequest,則同步過程可在框1065接收到SyncEnd消息時結(jié)束。
圖11可示出一對近鄰之間的各種同步相關(guān)消息的交換,其中發(fā)起者是新節(jié)點(diǎn)。圖12可示出網(wǎng)孔中一對現(xiàn)有節(jié)點(diǎn)之間的同步過程。圖13可示出現(xiàn)有節(jié)點(diǎn)和新節(jié)點(diǎn)之間的同步過程,其中現(xiàn)有節(jié)點(diǎn)是發(fā)起者。
發(fā)送/洪泛消息圖14示出了洪泛消息的情形。當(dāng)應(yīng)用程序希望發(fā)送消息時(1401),它可調(diào)用對等信道方法的SEND(發(fā)送)方法(1402),對等信道可調(diào)用對等節(jié)點(diǎn)(1403),對等節(jié)點(diǎn)可調(diào)用洪泛器來發(fā)送消息(1404)、內(nèi)部消息的ID可被添加到洪泛器的消息表(1405),且洪泛器可將內(nèi)部消息封裝到外部隧道消息中(1406),并將消息作為隧道消息發(fā)送到所有近鄰(1407)。外部隧道消息可僅用于相鄰信道上的通信,而不會改變內(nèi)部應(yīng)用程序消息??梢酝瓿伤淼酪跃S持內(nèi)部消息的完整性,以僅供內(nèi)部對等節(jié)點(diǎn)組件處理和傳遞,同時提供封裝頭部和傳遞機(jī)制以供相鄰信道處理。這可有效地隔離兩條路徑之間的傳輸機(jī)制。
接收消息圖15示出了接收消息的情形。當(dāng)在與對等節(jié)點(diǎn)相關(guān)聯(lián)的相鄰信道上接收消息時(1501),近鄰管理器可通知對等節(jié)點(diǎn)(1502),對等節(jié)點(diǎn)可調(diào)用其洪泛器(1503)以依照其類型來處理消息。
對于所有洪泛的消息,內(nèi)部消息可從外部隧道消息中提取(1504)。對等節(jié)點(diǎn)可調(diào)用洪泛器來確定內(nèi)部消息之前是否已被發(fā)送過(1505)。如果是,則可關(guān)閉該消息,且處理完成(1506)。如果內(nèi)部消息未完成通過網(wǎng)孔傳播(即,消息應(yīng)當(dāng)被進(jìn)一步洪泛),則可發(fā)生進(jìn)一步的處理。
如果內(nèi)部消息是用于處理網(wǎng)孔功能的內(nèi)部消息(1507),則對等節(jié)點(diǎn)可將該消息轉(zhuǎn)發(fā)到其正確的內(nèi)部節(jié)點(diǎn)對象(例如,維護(hù)器)(1508)。這些組件如下所述處理消息。對于簽名消息,維護(hù)器可確定該消息應(yīng)當(dāng)是否停止進(jìn)一步洪泛(1509),此時消息被關(guān)閉且處理完成(1506)。否則,內(nèi)部消息的ID可被添加到洪泛器的消息表(1516),且內(nèi)部消息可由洪泛器重新封裝到另一外部隧道消息并被發(fā)送到除從其接收該原始消息的近鄰之外的所有近鄰(1517)。
如果內(nèi)部消息是應(yīng)用程序消息(1510),則對等節(jié)點(diǎn)可搜索與該消息的目的地服務(wù)相關(guān)聯(lián)的信道對象(例如,對等信道或?qū)Φ缺O(jiān)聽器)(1511)。如果找到匹配的對等信道,則消息可被發(fā)送到與對等信道相關(guān)聯(lián)的應(yīng)用程序/服務(wù)(1512)。否則,如果找到匹配的對等監(jiān)聽器,則可通過調(diào)用AcceptChannel(接受信道)或BeginAcceptChannel(開始接受信道)來向應(yīng)用程序/服務(wù)創(chuàng)建新對等信道(1513),且消息可被發(fā)送到對應(yīng)的應(yīng)用程序。
如果內(nèi)部消息不是應(yīng)用程序消息(1510),則內(nèi)部消息的ID可被添加到洪泛器的消息表(1516),且內(nèi)部消息可由洪泛器重新封裝到另一外部隧道消息并發(fā)送到除從其接收原始消息的近鄰之外的所有近鄰(1517)。附加的洪泛剪除邏輯也可在這一過程中實(shí)現(xiàn)(1514、1515)。例如,某些應(yīng)用程序可實(shí)現(xiàn)與洪泛器相關(guān)聯(lián)的傳播過濾器接口對象(可以被稱為IPeerMessagePropagationFilter(對等消息傳播過濾器)接口)(1514),以確定消息是否應(yīng)被進(jìn)一步洪泛。如果洪泛過濾器接口確定不應(yīng)當(dāng)有進(jìn)一步的洪泛,則處理完成(1515)。
關(guān)閉網(wǎng)孔的一部分以下是可發(fā)生的事件,其中可拆散或關(guān)閉網(wǎng)孔的一部分。
近鄰發(fā)起的斷開連接如果近鄰干凈地斷開連接,則近鄰可發(fā)送DISCONNECT(斷開連接)消息。該消息可由連接器處理,它關(guān)閉相鄰信道。當(dāng)相鄰信道關(guān)閉時(突然或通過正式的斷開連接過程),近鄰管理器可通知其它內(nèi)部節(jié)點(diǎn)組件。維護(hù)器可通過執(zhí)行網(wǎng)孔維護(hù)算法(下文描述)來處理這一事件。對等節(jié)點(diǎn)可通過通知應(yīng)用程序由遠(yuǎn)程節(jié)點(diǎn)通告的服務(wù)不再可用來處理這一事件。如果這是唯一的相鄰連接,則該節(jié)點(diǎn)現(xiàn)在可以離線。
對等節(jié)點(diǎn)發(fā)起的斷開連接近鄰可以被本地(例如,由對等節(jié)點(diǎn))斷開連接,這可以由于對等節(jié)點(diǎn)正在關(guān)閉或由于維護(hù)器選擇剪除連接。當(dāng)近鄰正在關(guān)閉時,可通知本地組件。連接器可通過向近鄰發(fā)送DISCONNECT消息來處理這一事件。一旦關(guān)閉了近鄰,可通知應(yīng)用程序,遠(yuǎn)程節(jié)點(diǎn)通告的服務(wù)不再可用。
關(guān)閉對等信道當(dāng)信道被關(guān)閉時,它可從擁有工廠的信道集合中移除,且釋放對相關(guān)聯(lián)的對等節(jié)點(diǎn)的引用。
通告服務(wù)所要求保護(hù)的網(wǎng)孔系統(tǒng)的一個優(yōu)點(diǎn)是它可允許應(yīng)用程序使用網(wǎng)孔來定位應(yīng)用程序然后可消耗的服務(wù)。為允許訪問由網(wǎng)孔上的各節(jié)點(diǎn)提供的服務(wù),應(yīng)用程序可能需要首先檢索關(guān)于其近鄰的信息。具體地,應(yīng)用程序可能需要能夠枚舉在其近鄰上通告的服務(wù)。
為向相鄰節(jié)點(diǎn)通告本地服務(wù),應(yīng)用程序可調(diào)用對等節(jié)點(diǎn)的AddAdvertisedAddress(添加通告的地址)方法,指定本地應(yīng)用程序服務(wù)的EndpointAddress。這可導(dǎo)致維護(hù)器將該服務(wù)添加到其當(dāng)前通告的列表中,并向近鄰發(fā)送包含經(jīng)更新的通告服務(wù)列表的ADVERTISE(通告)消息。類似地,應(yīng)用程序可通過調(diào)用對等節(jié)點(diǎn)的RemoveAdvertisedAddress(移除廣告的地址)函數(shù)來取消通告服務(wù)。
當(dāng)應(yīng)用程序通告其服務(wù)地址時,該信息由節(jié)點(diǎn)高速緩存并被發(fā)送到近鄰。在接收到該信息時,可引發(fā)事件。該事件可向應(yīng)用程序提供近鄰的節(jié)點(diǎn)ID以及該節(jié)點(diǎn)上通告的所有EndpointAddress。
通過通告應(yīng)用程序服務(wù)的地址,應(yīng)用程序可打開直接到近鄰的應(yīng)用程序服務(wù)的信道,由此啟用了專用通信信道。為向近鄰發(fā)送消息(而非向整個網(wǎng)孔發(fā)送消息),可要求應(yīng)用程序檢索相鄰節(jié)點(diǎn)上通告的服務(wù)的列表并決定要向哪一服務(wù)發(fā)送。為找出這一服務(wù)列表,應(yīng)用程序可調(diào)用對等節(jié)點(diǎn)的函數(shù)以檢索通告的服務(wù),該函數(shù)可被稱為GetNeighborAdvertisedAddtesses(獲取近鄰?fù)ǜ娴牡刂?,它收集高速緩存的服務(wù)信息。該方法向相鄰節(jié)點(diǎn)上通告的服務(wù)返回EndpointAddress的集合以及近鄰的節(jié)點(diǎn)ID。
應(yīng)用程序可選擇這些EndpointAddress之一,并可使用底層消息總線的信道(例如,http、tcp等—不是對等通道)來創(chuàng)建到服務(wù)的信道。應(yīng)用程序可使用該信道來直接與近鄰的服務(wù)通信(離開網(wǎng)孔)。
網(wǎng)孔維護(hù)圖16示出了本發(fā)明的實(shí)施例中的網(wǎng)孔維護(hù)過程。網(wǎng)孔連接可由三個參數(shù)確定,這三個參數(shù)被稱為cIdealNeighbors(理想近鄰)、cMaxNeighbors(最大近鄰)、cMinNeighbors(最小近鄰)。節(jié)點(diǎn)可維護(hù)連接的相鄰節(jié)點(diǎn)數(shù)的計數(shù)(1601)。節(jié)點(diǎn)可試圖維護(hù)任一給定時刻到其它節(jié)點(diǎn)的近似cIdealNeighbors連接。節(jié)點(diǎn)可以不建立新的外出連接,或者如果當(dāng)前它具有cMaxNeighbors可接受新的進(jìn)入連接(1602),且可向試圖連接到它的任何節(jié)點(diǎn)發(fā)送REFUSE消息(1603)。如果任何時刻連接數(shù)低于cMinNeighbors(1604),則節(jié)點(diǎn)可試圖建立更多連接。節(jié)點(diǎn)可歡迎(WELCOME)待決的信道請求(1605)(1606),或者節(jié)點(diǎn)可使用由其近鄰傳遞到它(通過WELCOME、REFUSE和DISCONNECT消息)的已知節(jié)點(diǎn)列表(1607)。如果該列表是不足夠的,則它可試圖將網(wǎng)孔ID解析到新節(jié)點(diǎn)(例如,通過如上所述打開新信道)。
cIdealNeighbors、cMaxneighbors和cMinNeighbors的值可取決于各種因素,包括網(wǎng)孔大小和網(wǎng)孔通信量。由于為1的cMinNeighbors值可在一個且僅一個連接丟失的情況下導(dǎo)致完全隔離,因此對任何網(wǎng)孔,至少為2的cMinNeighbors值是適當(dāng)?shù)?。cMaxNeighbors的高值可意味著特定的節(jié)點(diǎn)正在代表其它節(jié)點(diǎn)進(jìn)行非常不成比例數(shù)量的洪泛。在cMinNeighbors和cMaxNeighbors之間的cIdealNeighbors值可以基于良好的冗余度,具有最小的額外開銷。
網(wǎng)孔中的每一節(jié)點(diǎn)可試圖盡可能維護(hù)一組最有用的連接,其中連接的有用性可由未看到的其上發(fā)送(在任一方向上)的消息的數(shù)量來確定。周期性地,當(dāng)節(jié)點(diǎn)具有比cIdealNeighbors多時(1608),它可斷開最不有用的連接(1609)。
每一節(jié)點(diǎn)可具有節(jié)點(diǎn)ID,它是隨機(jī)的64位數(shù)字。網(wǎng)孔具有簽名,簽名可被計算為網(wǎng)孔中存在的最低節(jié)點(diǎn)ID。計算可通過令具有最低節(jié)點(diǎn)ID的節(jié)點(diǎn)將其ID公布為簽名來完成。然而,節(jié)點(diǎn)可能不直接知道它具有最低ID,因此所有節(jié)點(diǎn)可試圖公布其ID。如果網(wǎng)孔簽名已低于其ID,則節(jié)點(diǎn)可以不公布。同樣,每一節(jié)點(diǎn)具有公布之前的補(bǔ)償周期,它可以與其節(jié)點(diǎn)ID成指數(shù)比例,因此幫助減少不正確的簽名公布數(shù)。
網(wǎng)孔可具有一組觸點(diǎn)節(jié)點(diǎn),觸點(diǎn)節(jié)點(diǎn)可負(fù)責(zé)周期性地發(fā)布它們所見到的網(wǎng)孔的簽名。只要節(jié)點(diǎn)的網(wǎng)孔簽名視圖變得與觸點(diǎn)公布的視圖不同步(1610),節(jié)點(diǎn)就知道網(wǎng)孔已被分區(qū),且可在隨機(jī)補(bǔ)償周期之后試圖重新連接到不同步的觸點(diǎn)之一(1611)。存在該過程可能未檢測到分區(qū)的少量機(jī)會。為緩和這一機(jī)會,觸點(diǎn)節(jié)點(diǎn)可周期性地試圖將網(wǎng)孔ID解析成新的(隨機(jī))節(jié)點(diǎn)并形成連接。
API圖17是依照本發(fā)明的方法的圖示。方法1700可用于啟用對等聯(lián)網(wǎng)的計算機(jī),該計算機(jī)適用于作為通過具有對等網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)的對等網(wǎng)絡(luò)協(xié)議來互操作的計算設(shè)備的網(wǎng)絡(luò)的一部分。
對等協(xié)議的成功可取決于協(xié)議在選中實(shí)體之間建立有效連接的能力。同樣,這一對等網(wǎng)絡(luò)中組的形成依賴于該能力。然而,本領(lǐng)域的技術(shù)人員可以從以下教導(dǎo)中認(rèn)識到,本發(fā)明的方法不限于特定的對等協(xié)議。
方法1700可在用于實(shí)現(xiàn)一組設(shè)備服務(wù)的軟件程序的應(yīng)用程序編程接口中實(shí)施。該方法可以是如先前所解釋的設(shè)立對等監(jiān)聽器的對等監(jiān)聽工廠的一部分,以及設(shè)立對等信道的對等信道工廠的一部分。在框1710,該方法可服務(wù)對最大數(shù)量服務(wù)的請求,以向?qū)Φ染W(wǎng)絡(luò)上的其它計算設(shè)備通告。默認(rèn)值可以是例如25。服務(wù)可被認(rèn)為是計算機(jī)程序或用戶的計算機(jī)體驗(yàn)。組成員可以無需了解可從組中的每一計算設(shè)備的獲得的所有服務(wù),因?yàn)檫^多的通告會不必要地堵塞網(wǎng)絡(luò)。要通告的服務(wù)的成員可以是任意的,或者可以基于公式,諸如在具有有限網(wǎng)絡(luò)通信量的較小組中,可通告較多服務(wù),而在具有較多網(wǎng)絡(luò)通信量的較大網(wǎng)絡(luò)中,可通告較少服務(wù)。另外,可被通告的服務(wù)的數(shù)目可被設(shè)置。數(shù)目可由網(wǎng)絡(luò)的另一成員或網(wǎng)絡(luò)的管理成員設(shè)置。一個示例計算機(jī)代碼實(shí)現(xiàn)如下public int MaxAdvertisedAddressPerNeighbor{get;set}在框1720,可服務(wù)確定消息是否應(yīng)當(dāng)被傳播到對等網(wǎng)絡(luò)上的其它計算設(shè)備的請求。確定也可以被認(rèn)為是過濾器,消息應(yīng)當(dāng)通過該過濾器到達(dá)網(wǎng)絡(luò)上的其它計算設(shè)備。過濾器可具有無限數(shù)目的設(shè)置,諸如消息先前是否接收過,消息是否具有接收計算機(jī)識別的預(yù)期接收者,網(wǎng)絡(luò)通信量是否高,消息是最近的還是舊的,等等。默認(rèn)值可以是無過濾器,這意味著所有消息都被轉(zhuǎn)發(fā)。過濾器也可被設(shè)置。例如,如果對接收者已知的計算設(shè)備離線,且對該已知計算機(jī)設(shè)備接收到消息,則過濾器可被設(shè)置成不轉(zhuǎn)發(fā)消息。一個示例計算機(jī)代碼實(shí)現(xiàn)如下public IPeerMessagePropagationFilter MessagePropagationFilter{get;set;}在框1730,可服務(wù)對用于聯(lián)系對等網(wǎng)絡(luò)上的計算設(shè)備的端口號的請求。端口可用于將消息傳遞到網(wǎng)絡(luò),且網(wǎng)絡(luò)上的不同計算設(shè)備可使用不同的端口。框1740可提供計算設(shè)備正用于向網(wǎng)絡(luò)上的其它成員發(fā)送和/或接收消息的端口。默認(rèn)可以是底層傳輸(即,TCP、HTTP)選擇端口。另外,用于與網(wǎng)絡(luò)通信的計算設(shè)備的端口可被設(shè)置。端口可以由網(wǎng)絡(luò)的另一成員或網(wǎng)絡(luò)的管理成員來設(shè)置。一個示例計算機(jī)代碼實(shí)現(xiàn)如下public Nullable<int>NeighborServicePort{get;set}在框1740,可服務(wù)對用于聯(lián)系對等網(wǎng)絡(luò)上的計算設(shè)備的傳輸方法的請求。可獲得各種傳輸方法,諸如HTTP或TCP。另外,計算設(shè)備的傳輸方法可被設(shè)置。傳輸方法可由網(wǎng)絡(luò)的另一成員或網(wǎng)絡(luò)的管理成員來設(shè)置。一個示例計算機(jī)代碼實(shí)現(xiàn)如下public Transport NeighborServiceTransport{get;set;}在框1750,可服務(wù)關(guān)于要使用哪一解析器的請求。由于特定用戶可以用各種方式在具有不同地址的各種位置連接到網(wǎng)絡(luò),因此可向用戶或組分配唯一的身份。該地址然后需要被解析,使得身份通過協(xié)議被綁定到一個或多個特定的地址。一個這樣的對等名稱解析協(xié)議是對等名稱解析協(xié)議(“RNRP”)。例如,解析器可使用PNRP將網(wǎng)絡(luò)地址解析成網(wǎng)孔id。然而,本領(lǐng)域的技術(shù)人員可以認(rèn)識到,本發(fā)明的方法不限于特定的對等協(xié)議,而是可以應(yīng)用于具有同等力度的其它協(xié)議。另外,由計算設(shè)備使用的解析器可被設(shè)置。解析器可由網(wǎng)絡(luò)的另一成員或網(wǎng)絡(luò)的管理成員來設(shè)置。一個示例計算機(jī)代碼實(shí)現(xiàn)如下public IPeerResolver Resovler{get;set;}從以上描述中,本發(fā)明的方法和系統(tǒng)使得使用面向服務(wù)的應(yīng)用程序框架的應(yīng)用程序開發(fā)者能夠使用對等節(jié)點(diǎn)對象來簡易且方便地集成組播功能。使用該框架,可創(chuàng)建具有組播功能的服務(wù),而無需關(guān)注TCP/IP或其它底層的低級通信協(xié)議,因?yàn)閷Φ裙?jié)點(diǎn)對象使用任何可用的協(xié)議來管理消息通信。本系統(tǒng)的一個優(yōu)點(diǎn)是可創(chuàng)建跨越整個因特網(wǎng)的網(wǎng)孔,而組播IP要求某些啟用組播IP的因特網(wǎng)段(例如,“Mbone”)來操作。所要求保護(hù)的系統(tǒng)也提供了基于應(yīng)用程序的過濾機(jī)制,其中消息流可以使用過濾器接口來智能地控制(例如,消息抑制在使得網(wǎng)孔更有效和安全時是有用的),而IP組播解決方案未提供這樣的接口。
此外,由于所要求保護(hù)的是構(gòu)建在面向服務(wù)的框架之上的,因此應(yīng)用程序開發(fā)者無需使其自身涉及從頭開始對組播解決方案編程,它們只需關(guān)注它們需要什么組播功能來實(shí)現(xiàn)作為其服務(wù)的一部分。對等節(jié)點(diǎn)對象模型提供了一種基本的基礎(chǔ)結(jié)構(gòu),使得開發(fā)者可集中于開發(fā)啟用組播的服務(wù)。所描述的API也使得編程更為簡易。
盡管以上文本陳述了眾多不同實(shí)施例的詳細(xì)描述,然而應(yīng)當(dāng)理解,本專利的范圍是由本專利所附權(quán)利要求書中所陳述的文字來定義的。詳細(xì)描述應(yīng)被解釋為僅為示例性的,且不描述每一可能的實(shí)施例,因?yàn)槊枋雒恳豢赡艿膶?shí)施例即使不是不可能的,也是不切實(shí)際的。可使用現(xiàn)有技術(shù)或在本專利提交日之后開發(fā)的技術(shù)來實(shí)現(xiàn)眾多替換實(shí)施例,而這些都落入所附權(quán)利要求書的范圍之內(nèi)。
由此,可以在此處所描述和示出的技術(shù)和結(jié)構(gòu)上作出各種修改和變化,而不脫離所附權(quán)利要求書的精神和范圍。因此,應(yīng)當(dāng)理解,此處所描述的方法和裝置僅是說明性的,而非對所附權(quán)利要求書有限制。
權(quán)利要求
1.在啟用對等聯(lián)網(wǎng)的計算機(jī)中為實(shí)現(xiàn)一組設(shè)備服務(wù)的軟件程序提供一種應(yīng)用程序編程接口,所述計算機(jī)適用于作為通過具有對等聯(lián)網(wǎng)協(xié)議的實(shí)現(xiàn)的對等聯(lián)網(wǎng)協(xié)議來互操作的計算設(shè)備的網(wǎng)絡(luò)的一部分,所述提供應(yīng)用程序編程接口包括服務(wù)對要向?qū)Φ染W(wǎng)絡(luò)上的其它計算設(shè)備通告的最大數(shù)量服務(wù)的請求;服務(wù)確定消息是否應(yīng)當(dāng)被傳播到對等網(wǎng)絡(luò)上的其它計算設(shè)備的請求;服務(wù)用于聯(lián)系對等網(wǎng)絡(luò)上的計算設(shè)備的端口號的請求;服務(wù)對用于聯(lián)系對等網(wǎng)絡(luò)上的計算設(shè)備的傳輸方法的請求;以及服務(wù)關(guān)于要使用哪一解析器的請求。
2.如權(quán)利要求1所述的應(yīng)用程序編程接口,其特征在于,所述解析器使用pnrp將網(wǎng)孔id轉(zhuǎn)換成網(wǎng)絡(luò)地址。
3.如權(quán)利要求1所述的應(yīng)用程序編程接口,其特征在于,還包括允許設(shè)置要向?qū)Φ染W(wǎng)絡(luò)上的其它計算設(shè)備通告的最大數(shù)量服務(wù)。
4.如權(quán)利要求1所述的應(yīng)用程序編程接口,其特征在于,還包括允許設(shè)置過濾器來確定消息是否應(yīng)當(dāng)被傳播到對等網(wǎng)絡(luò)上的其它計算設(shè)備。
5.如權(quán)利要求1所述的應(yīng)用程序編程接口,其特征在于,還包括允許設(shè)置用于聯(lián)系對等網(wǎng)絡(luò)上的計算設(shè)備的端口號。
6.如權(quán)利要求1所述的應(yīng)用程序編程接口,其特征在于,還包括允許設(shè)置用于聯(lián)系對等網(wǎng)絡(luò)上的計算設(shè)備的傳輸方法。
7.如權(quán)利要求1所述的應(yīng)用程序編程接口,其特征在于,還包括允許設(shè)置要使用的解析器。
8.一種具有計算機(jī)可執(zhí)行指令的計算機(jī)可讀介質(zhì),所述計算機(jī)指令在啟用對等聯(lián)網(wǎng)的計算機(jī)中使用,所述計算機(jī)適用于作為通過具有對等聯(lián)網(wǎng)協(xié)議的實(shí)現(xiàn)的對等聯(lián)網(wǎng)協(xié)議來互操作的計算設(shè)備的網(wǎng)絡(luò)的一部分,所述計算機(jī)指令為實(shí)現(xiàn)一組設(shè)備服務(wù)的軟件程序提供一種應(yīng)用程序編程接口,包括用于服務(wù)對要向?qū)Φ染W(wǎng)絡(luò)上的其它計算設(shè)備通告的最大數(shù)量服務(wù)的請求的計算機(jī)可執(zhí)行指令;用于服務(wù)確定消息是否應(yīng)當(dāng)被傳播到對等網(wǎng)絡(luò)上的其它計算設(shè)備的請求的計算機(jī)可執(zhí)行指令;用于服務(wù)用于聯(lián)系對等網(wǎng)絡(luò)上的計算設(shè)備的端口號的請求的計算機(jī)可執(zhí)行指令;用于服務(wù)對用于聯(lián)系對等網(wǎng)絡(luò)上的計算設(shè)備的傳輸方法的請求的計算機(jī)可執(zhí)行指令;以及用于服務(wù)關(guān)于要使用哪一解析器的請求的計算機(jī)可執(zhí)行指令。
9.如權(quán)利要求8所述的計算機(jī)可讀介質(zhì),其特征在于,所述解析器使用pnrp將網(wǎng)孔id轉(zhuǎn)換成網(wǎng)絡(luò)地址。
10.如權(quán)利要求8所述的計算機(jī)可讀介質(zhì),其特征在于,還包括用于允許設(shè)置要向?qū)Φ染W(wǎng)絡(luò)上的其它計算設(shè)備通告的最大數(shù)量服務(wù)的計算機(jī)可執(zhí)行指令。
11.如權(quán)利要求8所述的計算機(jī)可讀介質(zhì),其特征在于,還包括用于允許設(shè)置過濾器來確定消息是否應(yīng)當(dāng)被傳播到對等網(wǎng)絡(luò)上的其它計算設(shè)備的計算機(jī)可執(zhí)行指令。
12.如權(quán)利要求8所述的計算機(jī)可讀介質(zhì),其特征在于,還包括用于允許設(shè)置用于聯(lián)系對等網(wǎng)絡(luò)上的計算設(shè)備的端口號的計算機(jī)可執(zhí)行指令。
13.如權(quán)利要求8所述的計算機(jī)可讀介質(zhì),其特征在于,還包括用于允許設(shè)置用于聯(lián)系對等網(wǎng)絡(luò)上的計算設(shè)備的傳輸方法的計算機(jī)可執(zhí)行指令。
14.如權(quán)利要求8所述的計算機(jī)可讀介質(zhì),其特征在于,還包括用于允許設(shè)置要使用的解析器的計算機(jī)可執(zhí)行指令。
15.一種計算裝置,包括能夠生成視頻圖像的顯示單元;輸入設(shè)備;操作上耦合到所述顯示單元和所述輸入設(shè)備的處理裝置,所述處理裝置包括處理器和操作上耦合到所述處理器的存儲器;連接到網(wǎng)絡(luò)以及所述處理裝置的網(wǎng)絡(luò)接口;所述處理裝置被編程為,在啟用對等聯(lián)網(wǎng)的計算機(jī)中為實(shí)現(xiàn)一組設(shè)備服務(wù)的軟件程序提供一種應(yīng)用程序編程接口,所述計算機(jī)適用于作為通過具有對等聯(lián)網(wǎng)協(xié)議的實(shí)現(xiàn)的對等聯(lián)網(wǎng)協(xié)議來互操作的計算設(shè)備的網(wǎng)絡(luò)的一部分,所述提供應(yīng)用程序編程接口包括服務(wù)對要向?qū)Φ染W(wǎng)絡(luò)上的其它計算設(shè)備通告的最大數(shù)量服務(wù)的請求;服務(wù)確定消息是否應(yīng)當(dāng)被傳播到對等網(wǎng)絡(luò)上的其它計算設(shè)備的請求;服務(wù)用于聯(lián)系對等網(wǎng)絡(luò)上的計算設(shè)備的端口號的請求;服務(wù)對用于聯(lián)系對等網(wǎng)絡(luò)上的計算設(shè)備的傳輸方法的請求;以及服務(wù)關(guān)于要使用哪一解析器的請求;其中,所述解析器使用pnrp將網(wǎng)孔id轉(zhuǎn)換成網(wǎng)絡(luò)地址。
16.如權(quán)利要求15所述的計算裝置,其特征在于,還包括被編程為允許設(shè)置要向?qū)Φ染W(wǎng)絡(luò)上的其它計算設(shè)備通告的最大數(shù)量服務(wù)的處理裝置。
17.如權(quán)利要求15所述的計算裝置,其特征在于,還包括被編程為允許設(shè)置過濾器來確定消息是否應(yīng)當(dāng)被傳播到對等網(wǎng)絡(luò)上的其它計算設(shè)備的處理裝置。
18.如權(quán)利要求15所述的計算裝置,其特征在于,還包括被編程為允許設(shè)置用于聯(lián)系對等網(wǎng)絡(luò)上的計算設(shè)備的端口號的處理裝置。
19.如權(quán)利要求15所述的計算裝置,其特征在于,還包括被編程為允許設(shè)置用于聯(lián)系對等網(wǎng)絡(luò)上的計算設(shè)備的傳輸方法的處理裝置。
20.如權(quán)利要求15所述的計算裝置,其特征在于,還包括被編程為允許設(shè)置要使用的解析器的處理裝置。
全文摘要
所要求保護(hù)的方法和系統(tǒng)是被設(shè)置成支持用于在面向服務(wù)的框架,尤其是面向服務(wù)的消息通信系統(tǒng)上實(shí)現(xiàn)的組播編程模型的API。
文檔編號H04L29/10GK1893434SQ20061006814
公開日2007年1月10日 申請日期2006年3月14日 優(yōu)先權(quán)日2005年3月15日
發(fā)明者A·古普塔, J·L·迪維, P·C·埃耶, R·T·拉奧, T·R·馬尼恩 申請人:微軟公司