国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      使用restlikeapi進行實時通信的制作方法

      文檔序號:10541131閱讀:279來源:國知局
      使用restlike api進行實時通信的制作方法
      【專利摘要】一種計算設(shè)備執(zhí)行應(yīng)用的客戶端側(cè)實例,其支持利用符合表征狀態(tài)轉(zhuǎn)移(RESTlike)設(shè)計原則的應(yīng)用編程接口(API)與服務(wù)器計算設(shè)備進行雙向的實時同步通信和實時異步通信。服務(wù)器計算設(shè)備上的事件構(gòu)架被用來對針對服務(wù)器上被客戶端計算設(shè)備所請求的資源的更新進行匯總,并且進一步被用來向客戶端計算設(shè)備傳送指示有哪些更新可用的元數(shù)據(jù)。實時敏感更新包括在該元數(shù)據(jù)中,并且客戶端計算設(shè)備可以決定何時以及如何檢索其它可用更新。異步操作在服務(wù)器計算設(shè)備上由可以對服務(wù)器計算設(shè)備上的其它資源進行修改并且使得有關(guān)操作狀態(tài)的更新被發(fā)送至客戶端計算設(shè)備的操作資源進行建模。
      【專利說明】使用RESTLIKE API進行實時通信
      【背景技術(shù)】
      [0001] 計算機所實現(xiàn)的統(tǒng)一通信(UC)應(yīng)用使得其用戶能夠利用多種不同的通信形態(tài)接 收并傳送實時通信。例如,除其它通信形態(tài)之外,示例性的UC應(yīng)用可以被配置為支持即時 消息傳送、話音通信、電話會議、視頻會議、話音郵件檢索、日歷同步和內(nèi)容共享。
      [0002] 傳統(tǒng)上,端點與安裝于其上的UC應(yīng)用的客戶端側(cè)實例的信令已經(jīng)由諸如SH1PLE、 SIP、Η. 323、XMPP、Jingle、Skinny等之類的專用、私有和標準協(xié)議(基于會話的、命令和控 制,或者逐跳的)所支持(power)。這些協(xié)議中的每一種已經(jīng)被微調(diào)以針對UC應(yīng)用所支持 的通信的相應(yīng)方面;例如,第一協(xié)議可以被用于電話呼叫建立,第二協(xié)議可以被用于設(shè)置或 訂閱個人的存在,等等。該方法的結(jié)果是常規(guī)UC應(yīng)用的客戶端側(cè)實例相對復(fù)雜,因為核心 邏輯被推送至這樣的客戶端側(cè)實例(在本文被稱之為"客戶端")。因此,客戶端有效地用作 各種信令流的相應(yīng)協(xié)調(diào)點一如果客戶端不能支持某些協(xié)議,則其不會被用戶認為是成熟的 (full-fledged) UC應(yīng)用。在示例中,常規(guī)的基于web的客戶端支持即時消息傳送和存在 (presence),但是并不支持企業(yè)范圍的話音和視頻通信,并且因此可能不被用戶認為是成 熟的UC應(yīng)用。
      [0003] 由于以上所描述的架構(gòu),有若干種與常規(guī)UC相關(guān)聯(lián)的缺陷。首先,輕量級客戶端 的演進是困難的,因為遠程過程調(diào)用協(xié)議的變化相對不靈活,因為這樣的協(xié)議迫使在客戶 端以及服務(wù)器上所執(zhí)行的相對應(yīng)代碼之間進行明確或隱含的耦合(緊密耦合)。因此,如果 新的特征被添加至UC應(yīng)用,則舊有的客戶端可能變得無法操作。另外,常規(guī)方法與高度存 儲器占用空間(footprint)、通信量(chattiness)和高帶寬使用相關(guān)聯(lián)。采用來對UC應(yīng)用 中常規(guī)的基于web的客戶端提供支持的遠程過程協(xié)議(RPC)可以使得服務(wù)器側(cè)代碼(本文 被稱之為"服務(wù)器")經(jīng)常同步100%的客戶端狀態(tài),即使在客戶端的用戶接口需要相對少量 信息時也是如此。此外,這樣的方法與標準/監(jiān)控工具的缺失相關(guān)聯(lián),因為以上所提到的 RPC采用超文本傳輸協(xié)議(HTTP)作為傳輸層,其中一個統(tǒng)一資源定位符(URL)表示服務(wù)一 這導(dǎo)致了缺少標準工具對UC應(yīng)用的健康進行監(jiān)控。

      【發(fā)明內(nèi)容】

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