使用restlike api進(jìn)行實(shí)時(shí)通信的制作方法
【專利摘要】一種計(jì)算設(shè)備執(zhí)行應(yīng)用的客戶端側(cè)實(shí)例,其支持利用符合表征狀態(tài)轉(zhuǎn)移(RESTlike)設(shè)計(jì)原則的應(yīng)用編程接口(API)與服務(wù)器計(jì)算設(shè)備進(jìn)行雙向的實(shí)時(shí)同步通信和實(shí)時(shí)異步通信。服務(wù)器計(jì)算設(shè)備上的事件構(gòu)架被用來(lái)對(duì)針對(duì)服務(wù)器上被客戶端計(jì)算設(shè)備所請(qǐng)求的資源的更新進(jìn)行匯總,并且進(jìn)一步被用來(lái)向客戶端計(jì)算設(shè)備傳送指示有哪些更新可用的元數(shù)據(jù)。實(shí)時(shí)敏感更新包括在該元數(shù)據(jù)中,并且客戶端計(jì)算設(shè)備可以決定何時(shí)以及如何檢索其它可用更新。異步操作在服務(wù)器計(jì)算設(shè)備上由可以對(duì)服務(wù)器計(jì)算設(shè)備上的其它資源進(jìn)行修改并且使得有關(guān)操作狀態(tài)的更新被發(fā)送至客戶端計(jì)算設(shè)備的操作資源進(jìn)行建模。
【專利說(shuō)明】使用RESTLIKE API進(jìn)行實(shí)時(shí)通信
【背景技術(shù)】
[0001] 計(jì)算機(jī)所實(shí)現(xiàn)的統(tǒng)一通信(UC)應(yīng)用使得其用戶能夠利用多種不同的通信形態(tài)接 收并傳送實(shí)時(shí)通信。例如,除其它通信形態(tài)之外,示例性的UC應(yīng)用可以被配置為支持即時(shí) 消息傳送、話音通信、電話會(huì)議、視頻會(huì)議、話音郵件檢索、日歷同步和內(nèi)容共享。
[0002] 傳統(tǒng)上,端點(diǎn)與安裝于其上的UC應(yīng)用的客戶端側(cè)實(shí)例的信令已經(jīng)由諸如SH1PLE、 SIP、Η. 323、XMPP、Jingle、Skinny等之類的專用、私有和標(biāo)準(zhǔn)協(xié)議(基于會(huì)話的、命令和控 制,或者逐跳的)所支持(power)。這些協(xié)議中的每一種已經(jīng)被微調(diào)以針對(duì)UC應(yīng)用所支持 的通信的相應(yīng)方面;例如,第一協(xié)議可以被用于電話呼叫建立,第二協(xié)議可以被用于設(shè)置或 訂閱個(gè)人的存在,等等。該方法的結(jié)果是常規(guī)UC應(yīng)用的客戶端側(cè)實(shí)例相對(duì)復(fù)雜,因?yàn)楹诵?邏輯被推送至這樣的客戶端側(cè)實(shí)例(在本文被稱之為"客戶端")。因此,客戶端有效地用作 各種信令流的相應(yīng)協(xié)調(diào)點(diǎn)一如果客戶端不能支持某些協(xié)議,則其不會(huì)被用戶認(rèn)為是成熟的 (full-fledged) UC應(yīng)用。在示例中,常規(guī)的基于web的客戶端支持即時(shí)消息傳送和存在 (presence),但是并不支持企業(yè)范圍的話音和視頻通信,并且因此可能不被用戶認(rèn)為是成 熟的UC應(yīng)用。
[0003] 由于以上所描述的架構(gòu),有若干種與常規(guī)UC相關(guān)聯(lián)的缺陷。首先,輕量級(jí)客戶端 的演進(jìn)是困難的,因?yàn)檫h(yuǎn)程過(guò)程調(diào)用協(xié)議的變化相對(duì)不靈活,因?yàn)檫@樣的協(xié)議迫使在客戶 端以及服務(wù)器上所執(zhí)行的相對(duì)應(yīng)代碼之間進(jìn)行明確或隱含的耦合(緊密耦合)。因此,如果 新的特征被添加至UC應(yīng)用,則舊有的客戶端可能變得無(wú)法操作。另外,常規(guī)方法與高度存 儲(chǔ)器占用空間(footprint)、通信量(chattiness)和高帶寬使用相關(guān)聯(lián)。采用來(lái)對(duì)UC應(yīng)用 中常規(guī)的基于web的客戶端提供支持的遠(yuǎn)程過(guò)程協(xié)議(RPC)可以使得服務(wù)器側(cè)代碼(本文 被稱之為"服務(wù)器")經(jīng)常同步100%的客戶端狀態(tài),即使在客戶端的用戶接口需要相對(duì)少量 信息時(shí)也是如此。此外,這樣的方法與標(biāo)準(zhǔn)/監(jiān)控工具的缺失相關(guān)聯(lián),因?yàn)橐陨纤岬降?RPC采用超文本傳輸協(xié)議(HTTP)作為傳輸層,其中一個(gè)統(tǒng)一資源定位符(URL)表示服務(wù)一 這導(dǎo)致了缺少標(biāo)準(zhǔn)工具對(duì)UC應(yīng)用的健康進(jìn)行監(jiān)控。
【發(fā)明內(nèi)容】
[0004] 以下是在本文中更為詳細(xì)描述的主題的簡(jiǎn)要
【發(fā)明內(nèi)容】
。該
【發(fā)明內(nèi)容】
不是旨在作為 對(duì)權(quán)利要求范圍的限制。
[0005] 本文描述了關(guān)于總體上符合表征狀態(tài)轉(zhuǎn)移(REST)架構(gòu)的應(yīng)用編程接口(API)的 各種技術(shù)。當(dāng)被UC應(yīng)用所采用時(shí),這樣的API為同步通信(例如,IP話音通信(VoIP)、視頻 會(huì)議、應(yīng)用共享、數(shù)據(jù)合作......)提供支持。此外,UC應(yīng)用還可以支持異步通信(例如,在 線會(huì)議調(diào)度、存在,以及同步聯(lián)系人和群組信息......)。此外,采用本文所描述的API的 UC應(yīng)用可以實(shí)時(shí)地(以數(shù)毫秒或更短的量級(jí))促進(jìn)異步和同步通信。
[0006] 在一個(gè)示例性實(shí)施例中,這樣的應(yīng)用可以是統(tǒng)一通信(UC)應(yīng)用。支持這樣的應(yīng)用 的系統(tǒng)架構(gòu)包括與服務(wù)器計(jì)算設(shè)備進(jìn)行通信的客戶端計(jì)算設(shè)備,其中該客戶端計(jì)算設(shè)備執(zhí) 行應(yīng)用的客戶端側(cè)實(shí)例(客戶端)并且該服務(wù)器計(jì)算設(shè)備執(zhí)行服務(wù)器側(cè)代碼(服務(wù)器)??蛻?端計(jì)算設(shè)備可以包括臺(tái)式計(jì)算設(shè)備以及諸如移動(dòng)電話、平板設(shè)備(板式設(shè)備)、平板電話、可 穿戴設(shè)備等之類的便攜式計(jì)算設(shè)備。依據(jù)本文所描述的多個(gè)方面,客戶端之間和/或客戶 端與服務(wù)器之間的實(shí)時(shí)同步和異步通信可以通過(guò)采用符合REST架構(gòu)的API(例如,RESTlike API)來(lái)完成。
[0007] 該API是根據(jù)標(biāo)識(shí)符和命令而被建模,其中該標(biāo)識(shí)符表示資源并且該命令表示與 資源進(jìn)行交互的方法,諸如常規(guī)超文本傳輸協(xié)議(HTTP)方法。該UC應(yīng)用可以使用諸如常 規(guī)超媒體類型的各種有效載荷格式而利用該API傳送數(shù)據(jù)。資源可以是或包括數(shù)據(jù),諸如 文檔、圖像、數(shù)據(jù)庫(kù)條目等。在另一個(gè)示例中,資源可以是或包括計(jì)算機(jī)可執(zhí)行代碼,諸如服 務(wù)、可執(zhí)行線程等。此外,資源通常關(guān)于由其相應(yīng)標(biāo)識(shí)符所描述的特定概念。例如,"聯(lián)系人" 資源可以包括用戶的聯(lián)系人的列表,或者可以是從其它資源檢索聯(lián)系人列表的服務(wù)。每個(gè) 資源是由相應(yīng)的全局標(biāo)識(shí)符所標(biāo)識(shí),諸如可以被客戶端用來(lái)訪問(wèn)相應(yīng)資源的統(tǒng)一資源定位 符(URL)。資源還可以包括其它資源的全局標(biāo)識(shí)符,從而指示鏈接關(guān)系。例如,"聯(lián)系人"資 源還可以包括"簡(jiǎn)檔"資源的全局標(biāo)識(shí)符,所述"簡(jiǎn)檔"資源包括用戶聯(lián)系人的簡(jiǎn)檔。在訪 問(wèn)"聯(lián)系人"資源并且定位用于"簡(jiǎn)檔"資源的全局標(biāo)識(shí)符之后,該客戶端然后可以使用用 于"簡(jiǎn)檔"資源的全局標(biāo)識(shí)符來(lái)檢索聯(lián)系人的簡(jiǎn)檔。這樣的鏈接關(guān)系可以允許客戶端以類 似于用戶可以使用超鏈接在網(wǎng)頁(yè)內(nèi)導(dǎo)航的方式而在資源內(nèi)導(dǎo)航。
[0008] 因此,UC應(yīng)用所采用的示例性API可以使用鏈接關(guān)系來(lái)表達(dá)該UC應(yīng)用所支持的 能力,其中鏈接關(guān)系的使用符合HATE0AS (超文本即應(yīng)用狀態(tài)引擎)原則。通過(guò)添加新的鏈 接關(guān)系可以引入新的能力。
[0009] 如以上所提到的,命令表示與資源進(jìn)行交互的相應(yīng)方法。示例性方法包括從資源 檢索數(shù)據(jù),向資源添加數(shù)據(jù),替換或添加資源,以及刪除資源。通過(guò)將標(biāo)識(shí)符與命令在請(qǐng)求 中進(jìn)行組合,客戶端可以指示所期望被訪問(wèn)的資源以及所期望被執(zhí)行的資源。例如,為了檢 索用戶的聯(lián)系人列表,客戶端可以生成包括表示檢索操作的命令以及表示"聯(lián)系人"資源的 標(biāo)識(shí)符的請(qǐng)求。
[0010] 然而,添加、修改或刪除服務(wù)器所支持的資源可以是合期望的,并且因此對(duì)客戶端 進(jìn)行更新可能是合期望的。因此,在示例中,客戶端可以針對(duì)事件(例如,列出針對(duì)資源的更 新)向服務(wù)器發(fā)送"掛起請(qǐng)求",其中該掛起請(qǐng)求是服務(wù)器不需要立即回復(fù)的請(qǐng)求。例如,服 務(wù)器可以進(jìn)行等待直至發(fā)生了更新從而生成/傳送回復(fù),而不回復(fù)以沒(méi)有針對(duì)客戶端所使 用的資源的新的更新是可用的。
[0011] 附加地,服務(wù)器可以運(yùn)用事件構(gòu)架以便對(duì)服務(wù)器上的事件以及資源的更新進(jìn)行匯 總,并且確定這樣的更新的通知如何以及何時(shí)被遞送至客戶端。服務(wù)器可以向客戶端傳送 描述可用的更新的元數(shù)據(jù),而不發(fā)送所有這樣的更新,例如同步100%的狀態(tài),并且客戶端 可以請(qǐng)求所期望的更新。在示例性實(shí)施例中,服務(wù)器可以將類別指派給每個(gè)事件/更新,其 中示例性類別包括實(shí)時(shí)敏感、高度緊急和低度緊急。
[0012] 當(dāng)更新為實(shí)時(shí)敏感時(shí),服務(wù)器可以將該更新嵌入到被傳送至客戶端的元數(shù)據(jù)中, 從而允許客戶端在不必確定需要更新,向服務(wù)器進(jìn)行請(qǐng)求并且等待接收更新的情況下接收 到該實(shí)時(shí)敏感的更新由此減少了遞送實(shí)時(shí)敏感更新的延時(shí)。高度緊急更新可以在元數(shù)據(jù)中 進(jìn)行指示,并且客戶端可以選擇何時(shí)從服務(wù)器請(qǐng)求遞送這樣的更新。更新可以被急切地(例 如,相對(duì)快速地)、怠惰地(在方便時(shí)或者在檢索更新的成本低于閾值時(shí))被檢索,或者更新 可以被忽略。低度緊急更新可以被服務(wù)器進(jìn)行匯總并保留直至已經(jīng)過(guò)去了預(yù)定時(shí)間段(例 如,直至掛起請(qǐng)求超期)或者直至低度緊急更新變?yōu)楦呔o急。關(guān)于早期檢索的請(qǐng)求,高度 緊急更新的提供可以被延遲相對(duì)短的時(shí)間段(例如,以50 ms的量級(jí))以允許高度緊急更新 的匯總。
[0013] 另外,應(yīng)用可以并入異步操作,其中一個(gè)或多個(gè)端點(diǎn)和/或服務(wù)器無(wú)需同時(shí)進(jìn)行 操作。例如,在電子消息傳送中,接收方對(duì)于發(fā)送消息的發(fā)送方而言無(wú)需是活動(dòng)的。異步操 作可以由客戶端發(fā)起,諸如期望發(fā)送消息的發(fā)送方,或者由服務(wù)器諸如在該服務(wù)器期望遞 送針對(duì)在多個(gè)異步工作的客戶端之間進(jìn)行共享的文件的更新時(shí)所發(fā)起。由于異步操作的多 個(gè)部分可以在不同位置發(fā)生(例如,在客戶端或服務(wù)器),并且由于這樣的部分可能在不同 時(shí)間發(fā)生,所以資源可以在客戶端的請(qǐng)求已經(jīng)完成之后持續(xù)處于服務(wù)器上。在常規(guī)(例如, 無(wú)狀態(tài)的)REST架構(gòu)中,持續(xù)的資源可能在后續(xù)請(qǐng)求中并不被提供給客戶端。然而,通過(guò)運(yùn) 用RESTlike API,客戶端通過(guò)請(qǐng)求執(zhí)行這樣的異步操作,可以使得服務(wù)器創(chuàng)建操作的資源, 所述操作資源可以在仍然遵循HATE0AS原則的同時(shí),保持客戶端關(guān)于異步操作的進(jìn)程得到 更新。
[0014] 上述
【發(fā)明內(nèi)容】
給出了簡(jiǎn)化的概述以便提供對(duì)本文所描述的系統(tǒng)和/或方法的一 些方面的基本理解。該
【發(fā)明內(nèi)容】
并不是對(duì)本文所描述的系統(tǒng)和/或方法的廣泛的概述。其 不是旨在標(biāo)識(shí)出關(guān)鍵/必要要素或者描繪這樣的系統(tǒng)和/或方法的范圍。其唯一目的是以 簡(jiǎn)化形式給出一些概念以作為隨后所給出的更為詳細(xì)的說(shuō)明書(shū)的序言。
【附圖說(shuō)明】
[0015] 圖1和2是相應(yīng)示例性系統(tǒng)的功能框圖,所述系統(tǒng)促進(jìn)執(zhí)行在也支持異步通信的 同時(shí),通過(guò)使用RESTlike API而支持雙向的實(shí)時(shí)同步通信的應(yīng)用。
[0016] 圖3是示例性系統(tǒng)的功能框圖,所述系統(tǒng)促進(jìn)執(zhí)行通過(guò)使用RESTlike API而支持 異步操作的應(yīng)用。
[0017] 圖4-9是圖示用于通過(guò)使用RESTlike API而進(jìn)行雙向的實(shí)時(shí)異步和同步通信的 相應(yīng)示例性方法的流程圖。
[0018] 圖10是圖示用于通過(guò)使用RESTlike API而進(jìn)行異步操作的雙向通信的示例性方 法的流程圖。
[0019] 圖11是示例性計(jì)算系統(tǒng)。
【具體實(shí)施方式】
[0020] 現(xiàn)在參考附圖對(duì)關(guān)于通過(guò)使用符合表征狀態(tài)轉(zhuǎn)移(REST)架構(gòu)的API在計(jì)算設(shè)備 之間進(jìn)行實(shí)時(shí)通信的各種技術(shù)進(jìn)行描述,其中同樣的附圖標(biāo)記始終被用來(lái)指代同樣的要 素。在以下說(shuō)明書(shū)中,出于示例的目的,闡述了多種具體細(xì)節(jié)以便提供對(duì)一個(gè)或多個(gè)方面的 透徹理解。然而,顯而易見(jiàn)的是,這樣的(多個(gè))方面可以在沒(méi)有這些具體細(xì)節(jié)的情況下而 被實(shí)踐。在其它實(shí)例中,公知的結(jié)構(gòu)和設(shè)備以框圖形式被示出以便促進(jìn)對(duì)一個(gè)或多個(gè)方面 的描述。另外,所要理解的是,被描述為由某些系統(tǒng)組件所實(shí)施的功能可以由多個(gè)組件來(lái)執(zhí) 行。類似地,例如,一個(gè)組件可以被配置為執(zhí)行被描述為由多個(gè)組件所實(shí)施的功能。
[0021] 此外,術(shù)語(yǔ)"或"是旨在意指包含性的"或"而非排斥性的"或"。也就是說(shuō),除非另 外指出或者從上下文所明確,否則短語(yǔ)"X采用A或B"是旨在意指任意的自然包含性的排 列。也就是說(shuō),對(duì)于實(shí)例:X采用A、X采用B或者X采用A和B,短語(yǔ)"X采用A或B"在以上 任意實(shí)例下都得以滿足。此外,除非另外規(guī)定或從上下文明確是指代單數(shù)形式,否則本申請(qǐng) 和所附權(quán)利要求中所使用的冠詞"一"和"一個(gè)"通??梢员唤忉尀橐庵?一個(gè)或多個(gè)"。
[0022] 另外,如本文所使用的,術(shù)語(yǔ)"組件"和"系統(tǒng)"是旨在包含利用計(jì)算機(jī)可執(zhí)行指令 進(jìn)行配置的計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)裝置,當(dāng)所述計(jì)算機(jī)可執(zhí)行指令被處理器執(zhí)行時(shí),所述計(jì) 算機(jī)可執(zhí)行指令使得某些功能得以被執(zhí)行。該計(jì)算機(jī)可執(zhí)行指令可以包括例程、函數(shù)等。還 要理解的是,組件或系統(tǒng)可以位于單個(gè)設(shè)備或者跨若干設(shè)備進(jìn)行分布。另外,如本文所使用 的,術(shù)語(yǔ)"示例性"旨在意指用作某物的說(shuō)明或示例而并非旨在指示偏好。
[0023] 現(xiàn)在參考圖1,圖示了促進(jìn)計(jì)算設(shè)備之間實(shí)時(shí)的同步和異步通信的示例性系統(tǒng) 100。系統(tǒng)100包括多個(gè)客戶端計(jì)算設(shè)備102-104??蛻舳擞?jì)算設(shè)備102-104可以包括臺(tái) 式計(jì)算設(shè)備、膝上計(jì)算設(shè)備、上網(wǎng)本、超級(jí)本、平板設(shè)備(板式設(shè)備)、平板電話、移動(dòng)電話等。 系統(tǒng)100進(jìn)一步包括服務(wù)器計(jì)算設(shè)備106,其通過(guò)適當(dāng)?shù)南鄳?yīng)網(wǎng)絡(luò)連接與客戶端計(jì)算設(shè)備 102-104進(jìn)行通信。附加地,可以在客戶端計(jì)算設(shè)備102-104中的計(jì)算設(shè)備之間直接建立通 信信道以促進(jìn)在其之間的通信。
[0024] 客戶端計(jì)算設(shè)備102-104和服務(wù)器計(jì)算設(shè)備106被配置為通過(guò)在客戶端計(jì)算設(shè)備 102-104和服務(wù)器計(jì)算設(shè)備106之間分布的通信應(yīng)用而支持在其之間的同步和異步實(shí)時(shí)通 信。更具體地,第一計(jì)算設(shè)備102包括第一處理器模塊108,其執(zhí)行保存在第一存儲(chǔ)器110 中的指令。第一存儲(chǔ)器110可以包括被稱作第一客戶端112的通信應(yīng)用的第一客戶端側(cè)實(shí) 例。類似地,第N計(jì)算設(shè)備104可以包括第N處理器模塊114,其被配置為執(zhí)行第N存儲(chǔ)器 116中的指令。第N存儲(chǔ)器116包括被稱作第N客戶端118的通信應(yīng)用的第N客戶端側(cè)實(shí) 例。
[0025] 雖然服務(wù)器計(jì)算設(shè)備106在圖1中被描繪為單個(gè)設(shè)備,但是服務(wù)器計(jì)算設(shè)備106 可以是多個(gè)服務(wù)器計(jì)算設(shè)備(例如,分布式服務(wù)器)并且可以是或包括一個(gè)或多個(gè)虛擬機(jī)。 服務(wù)器計(jì)算設(shè)備106包括服務(wù)器處理器模塊120,其被配置為執(zhí)行服務(wù)器側(cè)存儲(chǔ)器122中的 代碼。例如,服務(wù)器側(cè)存儲(chǔ)器122可以包括通信應(yīng)用的服務(wù)器側(cè)代碼,其中該服務(wù)器側(cè)代碼 被配置為支持該通信應(yīng)用的至少一種通信形態(tài)。該服務(wù)器側(cè)代碼在本文中指的是作服務(wù)器 124。例如,服務(wù)器124可以支持客戶端計(jì)算設(shè)備之間的即時(shí)消息傳送,維護(hù)并且向客戶端 計(jì)算設(shè)備提供存在信息等。
[0026] 在客戶端計(jì)算設(shè)備102-104和服務(wù)器計(jì)算設(shè)備106之間進(jìn)行分布的通信應(yīng)用可以 支持計(jì)算設(shè)備之間的實(shí)時(shí)異步通信和實(shí)時(shí)同步通信。實(shí)時(shí)異步通信是指在接收設(shè)備未知的 時(shí)間或時(shí)間間隔向接收設(shè)備(例如,客戶端計(jì)算設(shè)備102-104之一)傳送數(shù)據(jù)。例如,異步 通信可以是文件傳輸、電子消息(例如,電子郵件、即時(shí)消息......)、事件調(diào)度請(qǐng)求、存在指 示、針對(duì)聯(lián)系人列表或群組的更新等中的至少一種。同步通信是指發(fā)送方和接收方都彼此 進(jìn)行通信并且同步的時(shí)候,雖然在一些實(shí)例中同步可以是近似的。例如,同步通信可以包括 視頻流式傳輸、視頻會(huì)議、話音通信、在計(jì)算設(shè)備之間共享應(yīng)用、桌面共享等。
[0027] 在一個(gè)示例性實(shí)施例中,在客戶端計(jì)算設(shè)備102-104和服務(wù)器計(jì)算設(shè)備106之間 分布的通信應(yīng)用可以是支持多種通信形態(tài)的統(tǒng)一通信(UC)應(yīng)用,所述通信形態(tài)包括以上所 提到的同步和異步形態(tài)中的至少一種。在另一個(gè)示例中,該通信應(yīng)用可以是支持即時(shí)消息 傳送、存在和群組的社交網(wǎng)絡(luò)應(yīng)用或者包括在所述社交網(wǎng)絡(luò)應(yīng)用之中。在又另一個(gè)示例中, 這樣的通信應(yīng)用可以是支持即時(shí)消息傳送、存在和話音通信的即時(shí)消息傳送應(yīng)用。還預(yù)見(jiàn) 到其它類型的通信應(yīng)用。
[0028] 客戶端112-118和服務(wù)器124可以使用RESTlike API實(shí)時(shí)地同步進(jìn)行通信。為 此,客戶端112可以使得圖形用戶接口(⑶I)得以被顯示,其例如包括客戶端112的用戶的 聯(lián)系人、客戶端112所接收的消息等。例如,服務(wù)器124可以訪問(wèn)用戶的聯(lián)系人列表、經(jīng)由 客戶端112所發(fā)送和接收的消息以及其它數(shù)據(jù),以便例如填充該用戶接口。例如,當(dāng)?shù)谝豢?戶端計(jì)算設(shè)備102的用戶嘗試向聯(lián)系人(例如,第N客戶端計(jì)算設(shè)備104的用戶)發(fā)送通信 時(shí),第一客戶端112可以經(jīng)由服務(wù)器124或經(jīng)由服務(wù)器124所建立的信道與第N客戶端118 進(jìn)行通信。除了對(duì)通信進(jìn)行路由之外,服務(wù)器124還可以向第一客戶端112發(fā)送諸如聯(lián)系 人可以進(jìn)行實(shí)時(shí)通信之類的其它信息。
[0029] 如將在本文中更為詳細(xì)描述的,RESTlike API是根據(jù)標(biāo)識(shí)符和命令而被建模,其 中該標(biāo)識(shí)符表示存儲(chǔ)在服務(wù)器存儲(chǔ)器122中的資源,并且該命令表示與資源進(jìn)行交互的方 法,諸如常規(guī)的超文本傳輸協(xié)議(HTTP)方法和超媒體類型。資源可以是或包括數(shù)據(jù),諸如文 檔、圖像等。此外,資源可以是或包括計(jì)算機(jī)可執(zhí)行服務(wù)或其它計(jì)算機(jī)可執(zhí)行指令。另外, 資源可以是或包括數(shù)據(jù)和計(jì)算機(jī)可執(zhí)行指令的組合。附加地,每種資源可以被指向由其標(biāo) 識(shí)符所描述的相應(yīng)概念。例如,"聯(lián)系人"資源可以包括用戶的聯(lián)系人的列表。每種資源由 相應(yīng)的全局標(biāo)識(shí)符所標(biāo)識(shí),諸如可以被客戶端用來(lái)訪問(wèn)相應(yīng)資源的統(tǒng)一資源定位符(URL)。 資源還可以包括另一種資源(或多種資源)的全局標(biāo)識(shí)符,以便指示該資源和另一種資源之 間的鏈接關(guān)系。例如,"聯(lián)系人"資源還可以包括"簡(jiǎn)檔"資源的全局標(biāo)識(shí)符,其中該簡(jiǎn)檔資 源包括用戶聯(lián)系人的簡(jiǎn)檔。在訪問(wèn)"聯(lián)系人"資源(例如,從服務(wù)器124)并且在其中定位用 于"簡(jiǎn)檔"資源的全局標(biāo)識(shí)符之后,第一客戶端112然后可以使用用于"簡(jiǎn)檔"資源的全局 標(biāo)識(shí)符來(lái)訪問(wèn)聯(lián)系人的簡(jiǎn)檔。這樣的鏈接關(guān)系可以允許第一客戶端112以類似于用戶可以 使用超級(jí)鏈接在網(wǎng)頁(yè)內(nèi)導(dǎo)航的方式而在資源內(nèi)進(jìn)行導(dǎo)航。以下闡述關(guān)于RESTlike API的 另外的細(xì)節(jié)。
[0030] 現(xiàn)在參考圖2,圖示了通過(guò)利用RESTlike API而促進(jìn)實(shí)時(shí)同步和實(shí)時(shí)異步雙向通 信(例如,在客戶端和服務(wù)器之間或者客戶端和客戶端之間)的示例性系統(tǒng)200。系統(tǒng)200 包括通過(guò)利用RESTlike API與服務(wù)器124進(jìn)行通信的第一客戶端112。在可替換的實(shí)施例 中,服務(wù)器124可以被第N客戶端118替換,以便第一客戶端112和第N客戶端118彼此直 接通信。如以上所提到的,RESTlike API使用標(biāo)識(shí)符和命令進(jìn)行建模。這樣的標(biāo)識(shí)符和命 令可以是通用的,這是由于它們無(wú)論所正在執(zhí)行的具體應(yīng)用、與之通信的具體設(shè)備或者所 進(jìn)行的具體操作如何都可以被使用,并且因此在設(shè)備之間提供了通用的接口。
[0031] 現(xiàn)在對(duì)與RESTlike API相對(duì)應(yīng)的資源進(jìn)行描述。如所示出的,服務(wù)器124可以包 括或可以訪問(wèn)多種資源(例如,第一資源202至第Μ資源204)。資源的格式是任意的,因?yàn)?資源可以被構(gòu)造為數(shù)據(jù)庫(kù)、文件等。標(biāo)識(shí)符可以相應(yīng)表示資源202-204,其中資源可以包括 數(shù)據(jù)(諸如文檔、圖像、一個(gè)或多個(gè)數(shù)據(jù)庫(kù)條目等)、計(jì)算機(jī)可執(zhí)行代碼等中的至少一種。每 種資源是關(guān)于相應(yīng)概念的(例如,其可以直接由用于資源的標(biāo)識(shí)符進(jìn)行描述)。例如,第一資 源202可以是"聯(lián)系人"資源,并且因此可以包括第一客戶端計(jì)算設(shè)備102 (其包括第一客 戶端112)的用戶的聯(lián)系人的列表。每種資源是由相應(yīng)的全局標(biāo)識(shí)符所標(biāo)識(shí),其中全局標(biāo)識(shí) 符可以是可以被第一客戶端112用來(lái)訪問(wèn)對(duì)應(yīng)于該全局標(biāo)識(shí)符的服務(wù)器124上的資源的通 用資源定位符(URL)。例如,用于第一資源202的全局標(biāo)識(shí)符可以如下: /messagingapp/user/contacts 〇
[0032] 資源還可以包括(多個(gè))其它資源的(多個(gè))全局標(biāo)識(shí)符,以便指示與(多個(gè))其它資 源的鏈接關(guān)系。例如,第一資源202可以包括用于第Μ資源204的全局標(biāo)識(shí)符,其中第Μ資 源204是"簡(jiǎn)檔"資源并且包括"聯(lián)系人"資源中所包括的聯(lián)系人的簡(jiǎn)檔。因此,例如,第一 資源202可以包括將第一客戶端112的用戶的聯(lián)系人(例如,"聯(lián)系人1")與第Μ資源204 的全局標(biāo)識(shí)符相聯(lián)系的數(shù)據(jù)庫(kù)條目,其中該第Μ資源包括聯(lián)系人1的簡(jiǎn)檔,如以下示例中所 示:
[0033] 資源202-204可以包括各種不同類型的資源,其包括但并不局限于動(dòng)態(tài)資源、操 作資源、發(fā)送方資源、事件資源、能力資源、容器資源、操作工廠資源、動(dòng)態(tài)容器資源,和/或 將以上所提到的資源的多個(gè)方面進(jìn)行組合的資源。動(dòng)態(tài)資源是很可能經(jīng)常變化或更新的資 源,諸如聯(lián)系人的存在指示符;操作資源表示異步操作;發(fā)送方資源被配置為針對(duì)動(dòng)態(tài)和 操作資源的群組報(bào)告更新;事件資源包括發(fā)送方所分組的更新的批次或列表;能力資源表 示特定客戶端的能力;容器資源包括其它類型的資源;操作工廠資源是可以主要被用來(lái)發(fā) 起操作資源的資源;動(dòng)態(tài)容器資源包括其它資源并且在資源被插入、修改或變化時(shí)生成事 件。也要理解的是,資源可以包括或組合以上所提到的資源類型。例如,操作資源也可以用 作發(fā)送方資源并發(fā)送更新。
[0034] 現(xiàn)在描述(由命令所表示的)RESTlike API所支持的用于與資源進(jìn)行交互的方法。 RESTlike API所支持的示例性方法包括常規(guī)的超文本傳輸協(xié)議(HTTP)方法和超媒體類型。 因此,更具體地,示例性方法包括用于從資源檢索數(shù)據(jù)(例如,經(jīng)由"GET"命令)的方法,用于 向資源添加數(shù)據(jù)(例如,經(jīng)由"POST"命令)的方法,用于替換或添加資源(例如,經(jīng)由"RJT" 命令)的方法,以及用于刪除資源(例如,經(jīng)由"DELETE"命令)的方法。第一客戶端112可 以生成包括標(biāo)識(shí)符和命令的請(qǐng)求,由此標(biāo)識(shí)合期望地被訪問(wèn)的資源以及要結(jié)合該資源所執(zhí) 行的方法。因此,第一客戶端112包括請(qǐng)求器組件206,其被配置為通過(guò)向服務(wù)器124發(fā)送 包括方法的標(biāo)識(shí)(諸如用于從方法檢索數(shù)據(jù)的方法)以及合期望地被訪問(wèn)的資源的全局標(biāo) 識(shí)符的標(biāo)識(shí)的請(qǐng)求來(lái)訪問(wèn)資源202-204中的資源。
[0035] 例如,為了從"聯(lián)系人"資源檢索聯(lián)系人列表,請(qǐng)求器組件206可以給出如下請(qǐng)求: GET/messagingapp/user/contacts 其中"GET"標(biāo)識(shí)用于檢索數(shù)據(jù)的方法,并且/messagingapp/user/contacts是標(biāo)識(shí)第 一資源202的全局標(biāo)識(shí)符。因此,第一客戶端112可以請(qǐng)求服務(wù)器124的第一資源202的 內(nèi)容,而不必在本地存儲(chǔ)聯(lián)系人列表。使用全局標(biāo)識(shí)符和方法允許第一客戶端112針對(duì)資 源做出請(qǐng)求而并不必對(duì)于該資源如何存儲(chǔ)在服務(wù)器計(jì)算設(shè)備106或者服務(wù)器124實(shí)現(xiàn)所請(qǐng) 求的方法的方式具有任何了解。
[0036] 響應(yīng)于從第一客戶端112接收到針對(duì)第一資源202的請(qǐng)求,服務(wù)器124可以將第 一資源202傳送至客戶端112。在另一個(gè)示例中,服務(wù)器124可以基于第一資源202的內(nèi)容 生成數(shù)據(jù)分組,并且將這樣的數(shù)據(jù)分組傳送至第一客戶端112。例如,這樣的數(shù)據(jù)分組在與 第一資源202自身相比時(shí),大小可能較小。附加地,在與第一資源202的格式相比時(shí),該數(shù) 據(jù)分組可能是為更容易被第一客戶端112所解析的格式。在另一個(gè)示例中,其中資源是服 務(wù)或者包括可執(zhí)行代碼,該數(shù)據(jù)分組可以包括表示該服務(wù)或可執(zhí)行代碼的數(shù)據(jù)。附加地,該 數(shù)據(jù)分組可以是對(duì)客戶端而言是可識(shí)別的格式。
[0037] 因此,服務(wù)器124可以基于第一資源202的內(nèi)容生成并返回?cái)?shù)據(jù)分組,而不返回在 請(qǐng)求器組件206給出的請(qǐng)求中所標(biāo)識(shí)的第一資源202,其中這樣的數(shù)據(jù)分組可以是或包括 文檔、列表等,并且可以為諸如標(biāo)記文件(例如,XML)或?qū)ο笞⑨屛募?例如,JS0N)的結(jié)構(gòu)化 的文件格式。例如,服務(wù)器124可以基于資源生成的數(shù)據(jù)分組可以是諸如以下的、包括聯(lián)系 人列表的數(shù)據(jù)庫(kù)的JS0N表示:
[0038] 第一客戶端112進(jìn)一步包括接收器組件208,其接收從服務(wù)器124傳送至第一客戶 端112的數(shù)據(jù),諸如第一資源202或者基于其的數(shù)據(jù)分組,所述數(shù)據(jù)分組可以存儲(chǔ)在可以被 第一客戶端112所訪問(wèn)的高速緩存中。
[0039] 在示例性實(shí)施例中,如以上所指示的,第一資源202包括第一客戶端112的用戶的 聯(lián)系人的列表,并且可以進(jìn)一步包括第Μ資源204的全局標(biāo)識(shí)符,其中第Μ資源204包括第 一資源202的聯(lián)系人列表中的聯(lián)系人的簡(jiǎn)檔。因此,響應(yīng)于接收到第一資源202或與之相 對(duì)應(yīng)的數(shù)據(jù)分組,第一客戶端112可以標(biāo)識(shí)第Μ資源的全局標(biāo)識(shí)符。然后,請(qǐng)求器組件206 可以從服務(wù)器124 (例如,使用"GET"命令和第Μ資源204的全局標(biāo)識(shí)符)傳送檢索第Μ資 源204 (或者其中所包括的數(shù)據(jù))的請(qǐng)求。有效地,然后,第一資源202經(jīng)由鏈接關(guān)系而被 鏈接至第Μ資源204。資源202-204之間的鏈接關(guān)系允許第一客戶端112以類似于用戶可 以使用超級(jí)鏈接在網(wǎng)頁(yè)內(nèi)進(jìn)行導(dǎo)航的方式而在資源內(nèi)進(jìn)行導(dǎo)航。
[0040] 第一資源202 (包括第一客戶端112的用戶的聯(lián)系人列表)在服務(wù)器124接收到 針對(duì)這樣的第一資源202的請(qǐng)求之前可能并不存在。在這樣的情況下,服務(wù)器124可以響 應(yīng)于接收到該請(qǐng)求而收集生成第一資源202所需的數(shù)據(jù),并且隨后可以將第一資源202 (或 者相對(duì)應(yīng)的數(shù)據(jù)分組)傳送至第一客戶端112。然而,所要理解的是,第一客戶端112并不 需要了解所請(qǐng)求的資源如何/何時(shí)被生成,因?yàn)镽ESTlike API在第一客戶端112和服務(wù)器 124之間提供了通用接口。因此,第一客戶端112和服務(wù)器124可以被認(rèn)為是松散耦合,這 是因?yàn)榈谝豢蛻舳?12和服務(wù)器124并不需要具有由其他另一方所執(zhí)行的組件或方法的具 體知識(shí)。
[0041] 第一客戶端112和服務(wù)器124所采用的RESTlike API可以利用附加的功能(或減 少的功能)促進(jìn)對(duì)第一客戶端112進(jìn)行更新。例如,服務(wù)器124所提供的服務(wù)或信息可以以 合所期望的方式被更新,并且將這樣的更新提供至第一客戶端112可能是更加合期望的。
[0042] 例如,通信應(yīng)用可以利用新的特征進(jìn)行更新,所述特征為用戶提供聯(lián)系人的列表 以及該聯(lián)系人列表中的每位聯(lián)系人的位置數(shù)據(jù)。因此,在該示例中包括第一客戶端112的 用戶的聯(lián)系人列表的第一資源202可以被修改以包括多個(gè)資源202-204中的第I資源(未 示出)的全局標(biāo)識(shí)符。第一客戶端112可以忽略新的鏈接關(guān)系,并且因此第一服務(wù)器112針 對(duì)第一資源202所給出的請(qǐng)求保持有效。因此,第一資源202可以在不影響第一客戶端112 的行為的情況下被修改。在特定示例中,第一資源202可以被修改為包括如下:
[0043] 服務(wù)器124可以基于第一資源202生成如下數(shù)據(jù)分組:
[0044] 繼續(xù)該示例,第Μ資源 204 由全局標(biāo)識(shí)符/messagingapp/contactl/profile. html 所標(biāo)識(shí),并且針對(duì)這樣的第Μ資源204的請(qǐng)求保持有效。因此,在服務(wù)器124上的更新并不 必影響到第一客戶端112的行為。
[0045] 同樣,第一客戶端112可以被更新以便考慮到針對(duì)資源的變化而并不影響服務(wù)器 124的操作。例如,第一客戶端112可以被更新來(lái)預(yù)期用于第I資源的全局標(biāo)識(shí)符,而使得 請(qǐng)求器組件206在客戶端112解析第一資源202 (或與之相對(duì)應(yīng)的數(shù)據(jù)分組)時(shí)傳送針對(duì) 第I資源的請(qǐng)求。
[0046] 檢測(cè)這些類型的更新例如可以包括通過(guò)資源的全局標(biāo)識(shí)符進(jìn)行導(dǎo)航,基于該導(dǎo)航 構(gòu)建映射或圖形,并且將該映射或圖形與之前的映射或圖像進(jìn)行比較。第一客戶端112可 以通過(guò)第一資源202中、諸如第I資源和第Μ資源204的全局標(biāo)識(shí)符之類的全局標(biāo)識(shí)符進(jìn) 行導(dǎo)航,并且可以類似地通過(guò)第I和第Μ資源204所包括的任意全局標(biāo)識(shí)符進(jìn)行導(dǎo)航。這 樣的導(dǎo)航可以針對(duì)另外的全局標(biāo)識(shí)符所標(biāo)識(shí)的另外的資源進(jìn)行重復(fù)。然后,通過(guò)這樣的全 局標(biāo)識(shí)符,導(dǎo)航隨后可以被形成映射或圖形,并且該映射或圖形可以與之前的映射或圖形 進(jìn)行比較以便檢測(cè)變化。
[0047] 針對(duì)客戶端112和/或服務(wù)器124的更新并不需要以特定順序或在特定時(shí)間實(shí) 現(xiàn),因?yàn)镽ESTlike API在客戶端和服務(wù)器之間具有高度的向前和向后兼容性。因此,分布 式通信應(yīng)用中的客戶端和服務(wù)器所支持的功能可以獨(dú)立演進(jìn),而并不會(huì)中斷或者變得無(wú)法 一起使用。這種類型的行為尤其適用于相對(duì)大型的分布式架構(gòu),其中不可能在所支持的功 能每次有所變化時(shí)都對(duì)整個(gè)編程環(huán)境進(jìn)行重新部署。
[0048] 附加地,服務(wù)器124上的資源202-204可以被修改或變化。在一個(gè)示例中,第一客 戶端112可以從服務(wù)器124請(qǐng)求資源,并且服務(wù)器124可以在每次從第一客戶端112接收 到請(qǐng)求時(shí)生成相應(yīng)的響應(yīng)。然而,頻繁的請(qǐng)求會(huì)對(duì)實(shí)時(shí)通信造成不利影響。因此,可以結(jié)合 確定第一客戶端112何時(shí)以及如何得到有關(guān)針對(duì)相應(yīng)資源的更新的通知以及這樣的更新 何時(shí)以及如何從服務(wù)器124被遞送至第一客戶端112而使用事件構(gòu)架。為此,第一客戶端 112可以包括更新請(qǐng)求器組件210,其被配置為向被配置為檢索針對(duì)資源202-204中的一個(gè) 或多個(gè)的可用更新的標(biāo)識(shí)的服務(wù)器124傳送請(qǐng)求。在示例中,服務(wù)器124可以包括或可以 訪問(wèn)事件資源212,所述事件資源212被配置為使得服務(wù)器124標(biāo)識(shí)針對(duì)更新所指派的類 別并且將更新的標(biāo)識(shí)(或更新自身)傳送至第一客戶端112。例如,可以被指派給更新的類 別可以1)包括實(shí)時(shí)敏感;2)高優(yōu)先級(jí);或3)低優(yōu)先級(jí)。如以下更為詳細(xì)描述的,事件資源 212可以使得服務(wù)器124將實(shí)時(shí)敏感更新立即傳送至第一客戶端112,可以使得服務(wù)器124 立即向第一客戶端112通知可用的高優(yōu)先級(jí)更新,并且可以使得服務(wù)器124在以下任意時(shí) 刻之一向第一客戶端112通知可用的低優(yōu)先級(jí)更新,1)標(biāo)識(shí)到實(shí)時(shí)敏感更新;2)標(biāo)識(shí)到高 優(yōu)先級(jí)更新;或者3)針對(duì)事件資源202的掛起請(qǐng)求過(guò)期(例如,30秒、45秒、60秒)。
[0049] 使用掛起請(qǐng)求減少了第一客戶端112和服務(wù)器124之間的通信中的通信量,因?yàn)?從服務(wù)器124到第一客戶端112的回復(fù)將較不頻繁。更新請(qǐng)求器組件210可以被配置為 周期性地或者在接收到針對(duì)掛起請(qǐng)求的回復(fù)時(shí)傳送掛起請(qǐng)求(例如,使得針對(duì)事件資源212 的至少一個(gè)請(qǐng)求在第一客戶端112正在被執(zhí)行時(shí)是始終活動(dòng)的)。
[0050] 如以上所提到的,服務(wù)器124可以向事件資源212中所標(biāo)識(shí)的每個(gè)更新指派相應(yīng) 類別,其中類別包括實(shí)時(shí)敏感、高度緊急或低度緊急。當(dāng)事件資源212標(biāo)識(shí)出被指派為實(shí)時(shí) 敏感類別的更新時(shí),服務(wù)器124可以立即針對(duì)來(lái)自第一客戶端112的掛起請(qǐng)求生成回復(fù), 其中該更新被包括在回復(fù)之中。響應(yīng)于第一客戶端112的接收器組件208接收到該回復(fù), 更新請(qǐng)求器組件210可以向服務(wù)器124傳送針對(duì)事件資源212的另一個(gè)掛起請(qǐng)求(例如, 掛起GET)。因此,針對(duì)資源的實(shí)時(shí)敏感更新隨著這樣的更新在服務(wù)器124被標(biāo)識(shí)而實(shí)時(shí)地 在第一客戶端112處被接收。附加地,響應(yīng)于在事件資源212中標(biāo)識(shí)出高度緊急更新,服務(wù) 器124可以針對(duì)從第一客戶端112所接收的掛起請(qǐng)求生成回復(fù),其中該高度緊急更新針對(duì) 第一客戶端112在回復(fù)中被標(biāo)識(shí),但是該更新自身并不包括在回復(fù)之中。響應(yīng)于接收到該 高度緊急更新的標(biāo)識(shí),第一客戶端112可以從服務(wù)器124請(qǐng)求更新(例如,其中該請(qǐng)求標(biāo)識(shí) 所要更新的資源)。針對(duì)被分類為低度緊急的更新,事件資源212可以對(duì)這樣的更新進(jìn)行匯 總,其中服務(wù)器124在掛起請(qǐng)求過(guò)期時(shí)或者在低度緊急更新變?yōu)楦叨染o急更新時(shí)傳送針對(duì) 掛起請(qǐng)求的回復(fù)。服務(wù)器124所生成的該回復(fù)標(biāo)識(shí)出可用更新,但是并不在回復(fù)中包括更 新。
[0051] 更具體地,如以上所指示的,針對(duì)資源202-204中的一個(gè)或多個(gè)的可用更新(例 如,低度緊急更新)可以在事件資源212中進(jìn)行匯總。因此,在資源202-204之一被更新時(shí), 服務(wù)器124使得關(guān)于這樣的更新的信息被包括在事件資源212中。針對(duì)資源202-204的示 例性更新包括向資源202-204添加資源,修改資源202-204中的資源中的數(shù)據(jù)(例如,相對(duì) 于資源之前的狀態(tài)),從資源202-204中刪除資源,等等。因此,如果第一資源202被修改為 包括針對(duì)第I資源的引用,則關(guān)于這樣的修改的信息被包括在事件資源212中。
[0052] 因此,事件資源212可以包括可被第一客戶端112所使用的至少一個(gè)更新(或若干 低度緊急更新)的標(biāo)識(shí)。因此,事件資源212可以包括標(biāo)識(shí)出可用更新的事件的列表、事件 的相應(yīng)更新類型,以及被更新的資源的相應(yīng)全局標(biāo)識(shí)符。事件資源212中所包括的示例性 數(shù)據(jù)因此可以如下:
[0053] 當(dāng)更新被歸類為實(shí)時(shí)敏感時(shí),第一客戶端112盡可能快地(例如,實(shí)時(shí)地)接收到 更新是合期望的。因此,當(dāng)更新被服務(wù)器124歸類為實(shí)時(shí)敏感時(shí),該更新可以包括在服務(wù)器 124在對(duì)針對(duì)事件資源212的掛起請(qǐng)求作出響應(yīng)時(shí)傳送至客戶端112的回復(fù)之中--因此, 該更新在服務(wù)器124識(shí)別更新時(shí)立即可被第一客戶端112所使用。類似地,當(dāng)事件資源212 包括指示特定更新被歸類為高度緊急的數(shù)據(jù)時(shí),服務(wù)器124可以利用指示該更新可被客戶 端112使用的元數(shù)據(jù)對(duì)針對(duì)事件資源212的掛起請(qǐng)求進(jìn)行回復(fù)(并不提供更新本身)。該回 復(fù)例如可以通過(guò)VoIP套接字而被送至客戶端112。
[0054] 然而,被歸類為低度緊急的更新并不需要立即被送至第一客戶端112。相反,低度 緊急更新的標(biāo)識(shí)可以在閾值量的時(shí)間內(nèi)在事件資源212中進(jìn)行匯總,或者直至更新的緊急 性發(fā)生被改變(例如,從低度緊急變?yōu)楦叨染o急)。這樣的匯總可以有利地對(duì)第一客戶端112 和服務(wù)器124之間的通信有所影響。例如,如果另一個(gè)資源被添加并且然后被更新,則本是 單獨(dú)的兩個(gè)更新可以被匯總在一起。由于另一個(gè)資源僅需要被請(qǐng)求并處理一次,這不僅可 以簡(jiǎn)化第一客戶端112的處理,而且還可以減少應(yīng)用的通信量,因?yàn)槎鄠€(gè)請(qǐng)求和/或更新被 減少為針對(duì)匯總的更新的單次通信。
[0055] 還可以意識(shí)到的是,高度緊急和低度緊急更新也可以被嵌入到針對(duì)掛起請(qǐng)求的回 復(fù)之中。例如,更新的大小可能很小并且對(duì)于傳送回復(fù)將不會(huì)有負(fù)面影響。在另一個(gè)示例 中,可用更新的總數(shù)可能很低,而使得傳送更新而不是等待請(qǐng)求是更為高效的。
[0056] 來(lái)自服務(wù)器124的針對(duì)來(lái)自第一客戶端112的掛起請(qǐng)求的回復(fù)可以包括元數(shù)據(jù), 該元數(shù)據(jù)包括更新類型的指示以及已經(jīng)被更新的資源的全局標(biāo)識(shí)符。可以在服務(wù)器對(duì)針對(duì) 事件資源212的掛起請(qǐng)求進(jìn)行回復(fù)并且更新并非實(shí)時(shí)敏感更新時(shí),從服務(wù)器124向客戶端 112進(jìn)行傳送的XML文件形式的示例性元數(shù)據(jù)可以如下:
[0057] 針對(duì)被歸類為高度或低度緊急的更新,第一客戶端112可以對(duì)來(lái)自服務(wù)器124的 回復(fù)進(jìn)行分析并且標(biāo)識(shí)已經(jīng)合期望地從服務(wù)器124檢索的更新。然后,第一客戶端112可 以針對(duì)至少一個(gè)所期望的更新向服務(wù)器124傳送請(qǐng)求。響應(yīng)于該請(qǐng)求,服務(wù)器124將該更 新提供至第一客戶端112。
[0058] 如以上所提到的,客戶端112的接收器組件206從服務(wù)器124接收回復(fù),響應(yīng)于接 收到該回復(fù),第一客戶端112向服務(wù)器124傳送確認(rèn)接收。在一些情況下,該確認(rèn)還可以包 括針對(duì)下一個(gè)批次的可用更新的掛起請(qǐng)求。由于該確認(rèn)還包括下一個(gè)掛起請(qǐng)求,所以通信 的通信量可以進(jìn)一步被減少。由于從服務(wù)器124傳送至第一客戶端112的回復(fù)(除了包括 被歸類為實(shí)時(shí)敏感的回復(fù)之外)包括元數(shù)據(jù)但并不包括更新,所以第一客戶端112可以確定 何時(shí)以及如何檢索更新,并且因此可以指引服務(wù)器124僅送出第一客戶端112針對(duì)其準(zhǔn)備 接收和/或接收的那些更新。
[0059] 第一客戶端112還可以包括決策器組件214,其被配置為確定從服務(wù)器124所接 收的回復(fù)中所標(biāo)識(shí)的更新的檢索類型。決策器組件214可以至少部分基于第一客戶端112 的能力、更新的緊急性或者網(wǎng)絡(luò)流量條件中的至少一個(gè)來(lái)作出這樣的決定。例如,第一客戶 端112可能每次僅正確接收一定數(shù)量的數(shù)據(jù),并且因此無(wú)法接收所有可用更新;第一客戶 端112可能被設(shè)計(jì)為每次接收一定數(shù)量的更新;或者高網(wǎng)絡(luò)流量可能導(dǎo)致通信延遲,這會(huì) 影響到數(shù)據(jù)保真度或者以其它方式導(dǎo)致通信問(wèn)題、瓶頸或錯(cuò)誤。該檢索類型可以是急迫檢 索、怠惰檢索或不檢索中的一個(gè)。
[0060] 關(guān)于急迫檢索,決策器組件214使得更新請(qǐng)求器組件210立即傳送針對(duì)可被服務(wù) 器124標(biāo)識(shí)為對(duì)于服務(wù)器124而言是可用的更新的請(qǐng)求(例如,針對(duì)所更新的第一資源202 的請(qǐng)求)。當(dāng)檢索類型為也被稱作機(jī)會(huì)檢索的怠惰檢索時(shí),決策器組件214在滿足預(yù)定條件 時(shí)使得更新請(qǐng)求器組件210傳送針對(duì)可被服務(wù)器124標(biāo)識(shí)為對(duì)服務(wù)器124而言是可用的更 新的請(qǐng)求。該條件例如可以是當(dāng)檢索更新的成本低于閾值時(shí);當(dāng)沒(méi)有其它更新或業(yè)務(wù)到來(lái) 時(shí),當(dāng)?shù)谝豢蛻舳?12和服務(wù)器124之間有某個(gè)通信速度或比特率可用時(shí),等等。
[0061] 決策器組件214還可以針對(duì)第一客戶端112的當(dāng)前狀態(tài)和/或當(dāng)前時(shí)間點(diǎn)確定 從服務(wù)器124所接收的回復(fù)中所標(biāo)識(shí)的更新并非是必要的,并且并不針對(duì)該更新做出請(qǐng)求 (例如,檢索類型為不檢索)。然而,決策器組件214可以被配置為設(shè)置標(biāo)志位以指示特定資 源(例如,第一資源202)已經(jīng)被更新,而使得當(dāng)?shù)谝豢蛻舳?12確定該資源被合期望地訪問(wèn) 時(shí),第一客戶端112使得更新請(qǐng)求器組件210針對(duì)該資源的更新傳送請(qǐng)求。響應(yīng)于接收到 針對(duì)更新的請(qǐng)求,服務(wù)器124向第一客戶端112傳送更新。
[0062] 現(xiàn)在參考圖3,圖示了使用RESTlike API促進(jìn)在第一客戶端112和服務(wù)器124之 間的實(shí)時(shí)雙向通信期間執(zhí)行異步操作的示例性系統(tǒng)300。系統(tǒng)300包括使用RESTlike API 與服務(wù)器124進(jìn)行實(shí)時(shí)通信的第一客戶端112。
[0063] 異步操作可以包括要由第一客戶端112或服務(wù)器124中的至少一個(gè)所執(zhí)行的至少 一個(gè)步驟。例如,服務(wù)器124所執(zhí)行的通過(guò)話音通信應(yīng)用進(jìn)行在被接受或拒絕之前可以指 向多個(gè)客戶端的呼叫的操作可以包括動(dòng)作:1)接收從第一客戶端112進(jìn)行呼叫的請(qǐng)求;2) 標(biāo)識(shí)預(yù)期接收方;3)標(biāo)識(shí)預(yù)期接收方的可用于接收呼叫的客戶端;和4)完成呼叫請(qǐng)求。月艮 務(wù)器124可以被配置為接收/生成該操作中的步驟已經(jīng)被執(zhí)行或者已經(jīng)執(zhí)行失敗的指示。 另外,該操作可以利用可以導(dǎo)致生成中間事件的框架進(jìn)行建模。例如,為了第一客戶端112 理解呼叫的狀態(tài)(例如,響鈴、已連接或失敗),事件合期望地被提供給第一客戶端112,所述 事件向第一客戶端112指示操作的狀態(tài)。
[0064] 為此,第一客戶端112包括請(qǐng)求器組件206,其中該請(qǐng)求器組件206向服務(wù)器124 傳送執(zhí)行異步操作的請(qǐng)求。響應(yīng)于接收到執(zhí)行異步操作的請(qǐng)求,服務(wù)器124創(chuàng)建操作資源 302。該操作資源302可以被用來(lái)對(duì)異步操作進(jìn)行建模,并且可以在遵循開(kāi)始、更新和完成 的模式的專用瞬態(tài)資源之后進(jìn)一步進(jìn)行建模。
[0065] 以上已經(jīng)關(guān)于資源202-204而被描述的操作資源302可以使用命令進(jìn)行訪問(wèn)并與 之交互,上述命令包括諸如HTTP方法"GET"、"PUT"、"POST"和"DELETE"之類的方法。然 而,操作資源302還可以被配置為使得服務(wù)器124添加(在該示例中)第一資源202、修改第 一資源202或者刪除第一資源202。這樣的添加、修改或刪除至少部分基于異步操作中的步 驟。例如,在其中第一客戶端112希望向第二客戶端計(jì)算設(shè)備104的用戶的聯(lián)系人進(jìn)行呼 叫的示例中,該請(qǐng)求可以被傳送至服務(wù)器124,所述服務(wù)器響應(yīng)于接收到該請(qǐng)求而創(chuàng)建操作 資源302。該操作資源302例如可以將第一資源202創(chuàng)建為"可用設(shè)備"資源,其包括指示 該聯(lián)系人的設(shè)備可以接收呼叫的數(shù)據(jù)。
[0066] 操作資源302還被配置為使得服務(wù)器124傳送事件,該事件表示異步操作的狀態(tài) 演進(jìn)直至該異步操作最終成功或失敗。隨著異步操作朝向完成進(jìn)行轉(zhuǎn)變,操作資源302向 事件資源212傳送高度緊急更新/事件,并且如以上所描述的,服務(wù)器124可以傳送標(biāo)識(shí) 針對(duì)第一客戶端112的高優(yōu)先級(jí)更新的回復(fù)。例如,當(dāng)進(jìn)行呼叫的請(qǐng)求已經(jīng)被服務(wù)器124 所接收時(shí),該服務(wù)器可以使得高度緊急更新被送至第一客戶端112以便指示該呼叫正在進(jìn) 行,并且檢測(cè)到可用設(shè)備。操作資源302所標(biāo)識(shí)的其它更新可以包括:操作開(kāi)始;操作進(jìn)行 中;以及操作已經(jīng)結(jié)束。這樣的更新類型還可以包括有關(guān)操作狀態(tài)的附加信息。在示例中, 當(dāng)更新類型為該操作已經(jīng)結(jié)束時(shí),該更新類型可以附加地包括該操作例如成功或者失敗的 信息以及該操作成功或失敗的原因。
[0067] 操作資源302還可以使得第一資源202被添加、修改或者從服務(wù)器124刪除。月艮 務(wù)器124可以使得這樣針對(duì)第一資源202的更新被傳送至事件資源212,并且像來(lái)自操作資 源302的更新一樣,該更新被歸類為高度緊急。通過(guò)將有關(guān)異步操作的更新歸類為高度緊 急,如以上所描述的,有關(guān)該更新的元數(shù)據(jù)被立即傳送至第一客戶端112。因此,第一客戶端 112對(duì)異步操作的狀態(tài)保持了解而并不必等待該異步操作完成。
[0068] 如以上所描述的,客戶端112進(jìn)一步包括更新請(qǐng)求器組件210,其被配置為向服務(wù) 器124發(fā)送針對(duì)事件資源212的掛起請(qǐng)求。在適當(dāng)時(shí),服務(wù)器124以上文中關(guān)于圖2中的 系統(tǒng)200的描述所給出的方式生成針對(duì)該掛起請(qǐng)求的回復(fù)。如以上所討論的,該回復(fù)中的 元數(shù)據(jù)可以指示第一資源202已經(jīng)被更新。更新請(qǐng)求器組件210然后可以使用RESTlike API將針對(duì)第一資源202的更新的請(qǐng)求(例如,針對(duì)已經(jīng)更新的第一資源202的請(qǐng)求)傳送 至服務(wù)器124。因此,當(dāng)操作資源302已經(jīng)使得第一資源202被添加、修改或刪除時(shí),第一客 戶端112被通知以這樣的更新并且可以在期望時(shí)請(qǐng)求這樣的更新。
[0069] 響應(yīng)于更新請(qǐng)求器組件210請(qǐng)求針對(duì)第一資源202的更新,服務(wù)器124可以傳送 這樣的更新,并且第一客戶端112的接收器組件208可以接收這樣的更新(并且第一客戶端 112相應(yīng)地被更新)。應(yīng)當(dāng)理解的是,當(dāng)操作資源302使得諸如第一資源202的其它資源被 更新時(shí),這樣的更新在異步操作完成之前被提供至客戶端112,而無(wú)論該操作成功還是不成 功地完成操作。通過(guò)這樣做,針對(duì)資源的更新在與異步操作相關(guān)聯(lián)的任何動(dòng)態(tài)資源被刪除 之前被遞送。
[0070] 圖4-10圖示了與通過(guò)使用RESTlike API在計(jì)算設(shè)備之間進(jìn)行雙向的實(shí)時(shí)異步和 同步通信相關(guān)的示例性方法。雖然該方法被示出并描述為按順序執(zhí)行的一系列動(dòng)作,但是 將要理解并意識(shí)到的是,該方法并不被該順序的次序所限制。例如,一些動(dòng)作可以以不同于 本文所描述的次序發(fā)生。此外,動(dòng)作可以與另一個(gè)動(dòng)作同時(shí)發(fā)生。另外,在一些情況下,實(shí) 現(xiàn)本文所描述的方法并非需要所有的動(dòng)作。
[0071] 此外,本文所描述的動(dòng)作可以是可以由一個(gè)或多個(gè)處理器所實(shí)現(xiàn)和/或被存儲(chǔ)在 計(jì)算機(jī)可讀介質(zhì)或媒體上的計(jì)算機(jī)可執(zhí)行指令。計(jì)算機(jī)可執(zhí)行指令可以包括例程、子例程、 程序、執(zhí)行的線程和/或類似物。又另外地,方法中的動(dòng)作的結(jié)果可以存儲(chǔ)在計(jì)算機(jī)可讀介 質(zhì)中,在顯不設(shè)備上進(jìn)彳丁顯不,等等。
[0072] 現(xiàn)在參考圖4,圖示了通過(guò)使用RESTlike API而在計(jì)算設(shè)備之間促進(jìn)雙向的實(shí)時(shí) 異步和同步通信的示例性方法400。方法400在402開(kāi)始,并且在404,在客戶端計(jì)算設(shè)備 上執(zhí)行應(yīng)用的客戶端側(cè)實(shí)例,其中該應(yīng)用支持通過(guò)使用RESTlike API而與第二計(jì)算設(shè)備的 實(shí)時(shí)異步通信和實(shí)時(shí)同步通信。在406,客戶端側(cè)實(shí)例使用API實(shí)時(shí)地與服務(wù)器進(jìn)行同步和 /或異步通信。方法400在408結(jié)束。
[0073] 現(xiàn)在參考圖5,圖示了在第一計(jì)算設(shè)備所執(zhí)行的(使用RESTlike API)促進(jìn)與第二 計(jì)算設(shè)備實(shí)時(shí)地進(jìn)行異步和同步通信的另一種示例性方法500。方法500在502開(kāi)始,并 且在504,針對(duì)服務(wù)器上的資源的請(qǐng)求被傳送至服務(wù)器,其中該請(qǐng)求包括該資源的全局標(biāo)識(shí) 符。在506,從服務(wù)器接收有關(guān)該資源的數(shù)據(jù),其中有關(guān)該資源的數(shù)據(jù)可以是XML文件、針對(duì) 資源的更新等。方法500在508終止。
[0074] 現(xiàn)在參考圖6,圖示了由第一(客戶端)計(jì)算設(shè)備所執(zhí)行的促進(jìn)與第二計(jì)算設(shè)備(例 如,服務(wù)器計(jì)算設(shè)備)實(shí)時(shí)地進(jìn)行雙向通信的另一種示例性方法600。方法600在602開(kāi)始, 并且在604,從客戶端計(jì)算設(shè)備向第二計(jì)算設(shè)備傳送包括全局標(biāo)識(shí)符的掛起請(qǐng)求,該全局標(biāo) 識(shí)符標(biāo)識(shí)服務(wù)器上的資源。在606,接收有關(guān)針對(duì)該資源的更新的元數(shù)據(jù)。該元數(shù)據(jù)可以標(biāo) 識(shí)可用于該資源的更新,或者可以包括針對(duì)該資源的更新。方法600在618完成。
[0075] 現(xiàn)在參考圖7,圖示了由第一(客戶端)計(jì)算設(shè)備所執(zhí)行的利用RESTlike API促 進(jìn)與第二(服務(wù)器)計(jì)算設(shè)備雙向地、同步地和異步地以及實(shí)時(shí)地通信的另一種示例性方法 700。方法700在702開(kāi)始,并且在704,包括資源的全局標(biāo)識(shí)符的掛起請(qǐng)求被傳送至第二計(jì) 算設(shè)備,其中該全局標(biāo)識(shí)符標(biāo)識(shí)該資源。在706,從第一計(jì)算設(shè)備接收針對(duì)該掛起請(qǐng)求的回 復(fù),其中該回復(fù)包括標(biāo)識(shí)針對(duì)該資源的可用更新的元數(shù)據(jù)。在708,確定用于檢索該更新的 檢索類型,其中該檢索類型可以是急迫檢索、怠惰檢索或不檢索之一。在710,針對(duì)該更新的 請(qǐng)求依據(jù)在710所確定的檢索類型而被傳送至第二計(jì)算設(shè)備。在712,從服務(wù)器接收該更 新,并且方法700在714完成。
[0076] 現(xiàn)在參考圖8,圖示了由第一(服務(wù)器)計(jì)算設(shè)備所執(zhí)行的利用RESTlike API促進(jìn) 在第一計(jì)算設(shè)備與第二(客戶端)計(jì)算設(shè)備之間進(jìn)行雙向的實(shí)時(shí)異步和同步通信的示例性 方法800。方法800在802開(kāi)始,并且在804,接收針對(duì)事件資源的掛起請(qǐng)求,其中該事件資 源被保存在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。在806,該服務(wù)器計(jì)算設(shè)備確定(事件資源以外的)資源 已經(jīng)被更新。在808,有關(guān)該資源的更新的數(shù)據(jù)被發(fā)送至事件資源,并且在810,該更新被歸 類為高度緊急。在812,服務(wù)器計(jì)算設(shè)備將針對(duì)該掛起請(qǐng)求的回復(fù)傳送至客戶端計(jì)算設(shè)備, 該回復(fù)包括標(biāo)識(shí)該更新可用的元數(shù)據(jù)。在814,在服務(wù)器計(jì)算設(shè)備在812傳送回復(fù)之后,該 服務(wù)器計(jì)算設(shè)備從客戶端計(jì)算設(shè)備接收針對(duì)該更新的請(qǐng)求。在816,服務(wù)器計(jì)算設(shè)備將該更 新傳送至客戶端計(jì)算設(shè)備,并且方法800在818完成。
[0077] 現(xiàn)在參考圖9,圖示了在服務(wù)器計(jì)算設(shè)備執(zhí)行的促進(jìn)在服務(wù)器計(jì)算設(shè)備和客戶端 計(jì)算設(shè)備進(jìn)行雙向?qū)崟r(shí)通信的另一種示例性方法900。方法900在902開(kāi)始,并且在904,接 收針對(duì)服務(wù)器計(jì)算設(shè)備上的資源的請(qǐng)求。例如,該請(qǐng)求可以包括該資源的全局標(biāo)識(shí)符。在 906,針對(duì)該請(qǐng)求的回復(fù)被傳送至客戶端,其中該回復(fù)包括與該資源相關(guān)的數(shù)據(jù)分組(例如, 以可以由客戶端計(jì)算設(shè)備進(jìn)行解析的形式格式化的數(shù)據(jù))。在908,從客戶端計(jì)算設(shè)備接收 掛起請(qǐng)求,該掛起請(qǐng)求標(biāo)識(shí)被用來(lái)監(jiān)控針對(duì)該資源所做出的更新的事件資源。在912,針對(duì) 該掛起請(qǐng)求的回復(fù)被傳送至客戶端,其中該響應(yīng)包括關(guān)于該資源的元數(shù)據(jù)。方法900在914 完成。
[0078] 現(xiàn)在參考圖10,圖示了在客戶端計(jì)算設(shè)備執(zhí)行的(例如,通過(guò)使用RESTlike API) 促進(jìn)執(zhí)行與服務(wù)器計(jì)算設(shè)備的異步操作的示例性方法1000。方法1000在1002開(kāi)始,并且 在1004,執(zhí)行異步操作的請(qǐng)求被傳送至服務(wù)器。在示例中,該請(qǐng)求可以使得服務(wù)器針對(duì)所 請(qǐng)求的異步操作創(chuàng)建操作資源。在1006,針對(duì)事件資源的掛起請(qǐng)求被傳送至服務(wù)器計(jì)算設(shè) 備。在1008,針對(duì)在服務(wù)器計(jì)算設(shè)備執(zhí)行的操作資源中所表示的異步操作中的每個(gè)步驟,從 服務(wù)器計(jì)算設(shè)備接收相應(yīng)的高度緊急更新通知。在1010,從服務(wù)器計(jì)算設(shè)備接收標(biāo)識(shí)針對(duì) 另一個(gè)資源的可用更新的元數(shù)據(jù)。例如,該可用更新可以是由所執(zhí)行操作的步驟所導(dǎo)致的 更新。在1012,針對(duì)該更新的請(qǐng)求被傳送至服務(wù)器計(jì)算設(shè)備,并且在1014,在客戶端計(jì)算設(shè) 備接收該更新。方法1000在1016完成。
[0079] 現(xiàn)在參考圖11,圖示了可以依據(jù)本文所公開(kāi)的系統(tǒng)和方法而使用的示例性計(jì)算設(shè) 備1100的高層圖示。例如,計(jì)算設(shè)備1100可以在使用RESTlike API而促進(jìn)雙向的實(shí)時(shí)異 步和同步通信的系統(tǒng)中使用。作為另一個(gè)示例,計(jì)算設(shè)備1100可以在使用RESTlike API 而促進(jìn)執(zhí)行異步操作的系統(tǒng)中使用。計(jì)算設(shè)備1100包括至少一個(gè)處理器1102,其執(zhí)行存儲(chǔ) 在存儲(chǔ)器1104中的指令。該指令例如可以是用于實(shí)現(xiàn)被描述為由以上所討論的一個(gè)或多 個(gè)組件所執(zhí)行的功能的指令,或者用于實(shí)現(xiàn)以上所描述的一種或多種方法的指令。處理器 1102可以利用系統(tǒng)總線1106訪問(wèn)存儲(chǔ)器1104。除了存儲(chǔ)可執(zhí)行指令之外,存儲(chǔ)器1104還 可以存儲(chǔ)應(yīng)用實(shí)例、本地高速緩存、資源或資源的表示、更新、有關(guān)更新的元數(shù)據(jù),或者更新 通知或指示。
[0080] 計(jì)算設(shè)備1100附加地包括數(shù)據(jù)倉(cāng)庫(kù)1108,其可以由處理器1102利用系統(tǒng)總線 1106進(jìn)行訪問(wèn)。數(shù)據(jù)倉(cāng)庫(kù)1108可以包括可執(zhí)行指令、有關(guān)執(zhí)行應(yīng)用的客戶端或者服務(wù)器的 數(shù)據(jù)或元數(shù)據(jù)、資源、API指令或方法等。計(jì)算設(shè)備1100還包括輸入接口 1110,其允許外部 設(shè)備與計(jì)算設(shè)備1100進(jìn)行通信。例如,輸入接口 1100可以被用來(lái)從外部計(jì)算設(shè)備、從用戶 等接收指令。計(jì)算設(shè)備1100還包括輸出接口 1112,其將計(jì)算設(shè)備1100與一個(gè)或多個(gè)外部 設(shè)備進(jìn)行對(duì)接。例如,計(jì)算設(shè)備1100可以利用輸出接口 1112顯示文本、圖像等。
[0081] 所預(yù)見(jiàn)到的是,經(jīng)由輸入接口 1110和輸出接口 1112與計(jì)算設(shè)備1100進(jìn)行通信的 外部設(shè)備可以包括在提供用戶可以與之進(jìn)行交互的基本上任意類型的用戶接口的環(huán)境之 中。用戶接口類型的示例包括圖形用戶接口、自然用戶接口等。例如,圖形用戶接口可以接 受用戶采用諸如鍵盤(pán)、鼠標(biāo)、遙控器等的(多種)輸入設(shè)備所進(jìn)行的輸入,并且在諸如顯示器 之類的輸出設(shè)備上提供輸出。另外,自然用戶接口可以使得用戶能夠以不受諸如鍵盤(pán)、鼠 標(biāo)、遙控器等的輸入設(shè)備所施加的約束的方式與計(jì)算設(shè)備1100進(jìn)行交互。相反,自然用戶 接口可以依賴于語(yǔ)音識(shí)別、觸摸和輸入筆識(shí)別、屏幕上和鄰近屏幕的手勢(shì)識(shí)別、懸浮手勢(shì)、 頭部和眼睛追蹤、話音和語(yǔ)音、視覺(jué)、觸摸、手勢(shì)、機(jī)器智能等。
[0082] 附加地,雖然被圖示為單個(gè)系統(tǒng),但是要理解的是,計(jì)算設(shè)備1100可以是分布式 系統(tǒng)。因此,例如,若干設(shè)備可以利用網(wǎng)絡(luò)連接進(jìn)行通信并且可以共同執(zhí)行被描述為由計(jì)算 設(shè)備1100所執(zhí)行的任務(wù)。
[0083] 本文所描述的各種功能可以以硬件、軟件或者它們的任意組合來(lái)實(shí)現(xiàn)。如果以軟 件實(shí)現(xiàn),該功能可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上或者作為計(jì)算機(jī)可讀介質(zhì)上的一個(gè)或多個(gè)指 令或代碼而被傳送。計(jì)算機(jī)可讀媒體包括計(jì)算機(jī)可讀存儲(chǔ)媒體。計(jì)算機(jī)可讀存儲(chǔ)媒體可以 是能夠由計(jì)算機(jī)進(jìn)行訪問(wèn)的任意可用存儲(chǔ)媒體。作為示例而非限制,這樣的計(jì)算機(jī)可讀存 儲(chǔ)媒體可以包括RAM、ROM、EEPROM、CD-ROM或其它光盤(pán)存儲(chǔ)裝置、磁盤(pán)存儲(chǔ)裝置或者其它磁 性存儲(chǔ)設(shè)備,或者可以被用來(lái)承載或存儲(chǔ)指令或數(shù)據(jù)結(jié)構(gòu)形式的所期望的程序代碼并且可 以由計(jì)算機(jī)所訪問(wèn)的任意其它介質(zhì)。如本文所使用的,盤(pán)或碟包括緊致盤(pán)(CD)、激光盤(pán)、光 盤(pán)、數(shù)字多功能盤(pán)(DVD)、軟盤(pán)和藍(lán)光盤(pán)(BD),其中盤(pán)通常以磁性方式再現(xiàn)數(shù)據(jù)而碟在通常 利用激光以光學(xué)方式再現(xiàn)數(shù)據(jù)。另外,所傳播的信號(hào)并不包括在計(jì)算機(jī)可讀存儲(chǔ)媒體的范 圍之內(nèi)。計(jì)算機(jī)可讀媒體還包括通信媒體,所述通信媒體包括促進(jìn)計(jì)算機(jī)程序從一處傳輸 至另一處的任意介質(zhì)。例如,連接可以是通信介質(zhì)。例如,如果軟件從網(wǎng)站、服務(wù)器或其它 遠(yuǎn)程源使用同軸線纜、光纖線纜、雙絞線、數(shù)字訂戶線路(DSL),或者諸如紅外、無(wú)線電和微 波之類的無(wú)線技術(shù)進(jìn)行傳送時(shí),則該同軸線纜、光纖線纜、雙絞線、DSL或者諸如紅外、無(wú)線 電和微波之類的無(wú)線技術(shù)包括在通信介質(zhì)的定義之內(nèi)。以上的組合也應(yīng)當(dāng)包括在計(jì)算機(jī)可 讀媒體的范圍之內(nèi)。
[0084] 可替換地或附加地,本文所描述的功能至少部分可以由一個(gè)或多個(gè)硬件邏輯組件 來(lái)執(zhí)行。例如而并非限制,所能夠使用的硬件邏輯組件說(shuō)明性類型包括現(xiàn)場(chǎng)可編程門(mén)陣列 (FPGA)、程序?qū)S眉呻娐?ASIC)、程序?qū)S脴?biāo)準(zhǔn)產(chǎn)品(ASSP)、片上系統(tǒng)(S0C)、復(fù)雜可編 程邏輯器件(CPLD)等。本文所描述的處理器模塊和/或處理器模塊與相關(guān)聯(lián)存儲(chǔ)器的組 合是旨在包含這樣的硬件邏輯組件的任何一種。
[0085] 以上已經(jīng)描述的內(nèi)容包括一個(gè)或多個(gè)實(shí)施例的示例。當(dāng)然,并不可能出于描述上 述方面的目的而對(duì)以上設(shè)備和方法的每一種能夠想到的修改和變更形式進(jìn)行描述,但是本 領(lǐng)域普通技術(shù)人員能夠認(rèn)識(shí)到,各個(gè)方面的許多進(jìn)一步的修改和置換是可能的。因此,所 描述的方面是旨在包含落入所附權(quán)利要求的精神和范圍之內(nèi)的所有這樣的變更、修改和變 例。此外,就在【具體實(shí)施方式】或權(quán)利要求中所使用的術(shù)語(yǔ)"包括"而言,這樣的術(shù)語(yǔ)是旨在 以類似于術(shù)語(yǔ)"包含"的方式而是包括性的,這是由于在"包含"被使用時(shí),其在權(quán)利要求 中被解釋為過(guò)渡詞。
【主權(quán)項(xiàng)】
1. 一種計(jì)算設(shè)備,其包括: 處理器模塊;和 存儲(chǔ)器,其包括應(yīng)用的客戶端側(cè)實(shí)例,該應(yīng)用的客戶端側(cè)實(shí)例由該處理器模塊所執(zhí)行, 該應(yīng)用使用符合表征狀態(tài)轉(zhuǎn)移(REST)架構(gòu)的應(yīng)用編程接口(API)支持在該計(jì)算設(shè)備與第 二計(jì)算設(shè)備之間的實(shí)時(shí)同步通信和實(shí)時(shí)異步通信。2. 根據(jù)權(quán)利要求1所述的計(jì)算設(shè)備,該應(yīng)用的客戶端側(cè)實(shí)例包括: 請(qǐng)求器組件,其使用該API向該第二計(jì)算設(shè)備傳送請(qǐng)求,該請(qǐng)求包括資源的全局標(biāo)識(shí) 符;和 接收器組件,其從該第二計(jì)算設(shè)備接收基于該請(qǐng)求的回復(fù),該回復(fù)包括該資源的表示、 針對(duì)該資源的更新或者針對(duì)該資源的元數(shù)據(jù)中的至少一種。3. 根據(jù)權(quán)利要求1所述的計(jì)算設(shè)備,該應(yīng)用的該客戶端側(cè)實(shí)例進(jìn)一步包括: 更新請(qǐng)求器組件,其向該第二計(jì)算設(shè)備傳送針對(duì)事件資源的掛起請(qǐng)求,該事件資源包 括與針對(duì)該第二計(jì)算設(shè)備所保存的資源的更新相關(guān)的數(shù)據(jù),該掛起請(qǐng)求包括該事件資源的 全局標(biāo)識(shí)符;和 接收器組件,其接收針對(duì)該掛起請(qǐng)求的回復(fù),該回復(fù)包括基于該事件資源中所包括的 該數(shù)據(jù)的元數(shù)據(jù),該元數(shù)據(jù)包括該更新的類型的指示以及該資源的全局標(biāo)識(shí)符。4. 根據(jù)權(quán)利要求3所述的計(jì)算設(shè)備,其中該回復(fù)無(wú)法包括該更新,并且該應(yīng)用的該客 戶端側(cè)實(shí)例進(jìn)一步包括決策器組件,其至少部分基于該計(jì)算設(shè)備的能力、該更新的緊急性 或者網(wǎng)絡(luò)業(yè)務(wù)量條件中的至少一種來(lái)確定更新的檢索類型,該決策器組件使得該更新請(qǐng)求 器組件基于該檢索類型而傳送該掛起請(qǐng)求。5. 根據(jù)權(quán)利要求3所述的計(jì)算設(shè)備,其中該更新的類型是在該第二計(jì)算設(shè)備上添加資 源,修改該資源或者從該第二計(jì)算設(shè)備刪除該資源之一。6. 根據(jù)權(quán)利要求1所述的計(jì)算設(shè)備,該應(yīng)用的該客戶端側(cè)實(shí)例進(jìn)一步包括請(qǐng)求器組 件,其使用該API向該第二計(jì)算設(shè)備傳送執(zhí)行異步操作的請(qǐng)求,其中該請(qǐng)求被配置為使得 該第二計(jì)算設(shè)備在該第二計(jì)算設(shè)備上創(chuàng)建操作資源,該操作資源能夠被用于基于該異步操 作的至少一個(gè)步驟對(duì)該第二計(jì)算設(shè)備上的資源進(jìn)行更新,該操作資源進(jìn)一步能夠用于使得 該第二計(jì)算設(shè)備對(duì)該第二計(jì)算設(shè)備上的事件資源進(jìn)行更新。7. 根據(jù)權(quán)利要求1所述的計(jì)算設(shè)備,其中該實(shí)時(shí)異步通信是文件傳輸、電子消息、事件 調(diào)度請(qǐng)求、存在指示、針對(duì)聯(lián)系人列表的更新或者針對(duì)群組列表的更新中的至少一種。8. 根據(jù)權(quán)利要求1所述的計(jì)算設(shè)備,其中實(shí)時(shí)同步通信包括視頻流、視頻會(huì)議、話音通 信或有關(guān)應(yīng)用共享的數(shù)據(jù)中的至少一種。9. 一種由計(jì)算設(shè)備的處理器模塊所執(zhí)行的方法,該方法包括: 執(zhí)行應(yīng)用的客戶端側(cè)實(shí)例,其利用符合表征狀態(tài)轉(zhuǎn)移(RE S T )架構(gòu)的應(yīng)用編程接口 (API)支持在該計(jì)算設(shè)備與第二計(jì)算設(shè)備之間的實(shí)時(shí)同步通信和實(shí)時(shí)異步通信;并且 利用該應(yīng)用實(shí)時(shí)地異步和/或同步傳送和接收數(shù)據(jù)。10. 根據(jù)權(quán)利要求9所述的方法,其中利用該應(yīng)用實(shí)時(shí)地異步和/或同步傳送和接收 數(shù)據(jù)包括: 利用該API向該第二計(jì)算設(shè)備傳送針對(duì)資源的請(qǐng)求,該請(qǐng)求包括該資源的全局標(biāo)識(shí) 符;和 從該第二計(jì)算設(shè)備接收針對(duì)該請(qǐng)求的回復(fù),該回復(fù)包括資源的表示、針對(duì)該資源的更 新或者針對(duì)該資源的元數(shù)據(jù)中的至少一種。
【文檔編號(hào)】H04L29/06GK105900391SQ201480011290
【公開(kāi)日】2016年8月24日
【申請(qǐng)日】2014年2月26日
【發(fā)明人】S.泰恩, D.勞, S.揚(yáng)尼斯, K.加內(nèi)桑, A.埃德?tīng)査共?
【申請(qǐng)人】微軟技術(shù)許可有限責(zé)任公司