遠程訪問環(huán)境中客戶端流量控制的裝置和方法
【專利摘要】一種客戶端流量控制機制,其用于在遠程訪問系統(tǒng)中控制從服務(wù)傳送到客戶端的消息流量。所述服務(wù)可為托管或非托管服務(wù),可將消息傳送到所述客戶端,其中所述消息包括服務(wù)序列ID(SSI)。隨著所述客戶端處理來自所述服務(wù)的消息,所述客戶端以客戶端序列ID(CSI)響應(yīng)。所述SSI和CSI值確定在傳輸隊列中的消息數(shù)量。所述服務(wù)將當前SSI與CSI之間的差與停止窗口值進行比較。如果所述差大于所述停止窗口值,關(guān)閉從所述服務(wù)到所述客戶端的消息傳輸。隨著所述客戶端處理消息,其繼續(xù)發(fā)送CSI確認。一旦所述差下降低于開始窗口值,開啟到所述客戶端的所述消息傳輸。
【專利說明】遠程訪問環(huán)境中客戶端流量控制的裝置和方法
[0001]相關(guān)申請的交叉引用
[0002]本申請要求2013年11月6日提交的標題為“METHOD FOR CLIENT-SIDE FLOWCONTROL IN AREM0TE ACCESS ENVIRONMENT” 的美國臨時專利申請第61/900,940號和2013年11 月 29 日提交的標題為 “METHOD FOR SERVER-SERVICE SEPARAT1N WITH END-TO-ENDFLOW CONTROL IN A CLIENT-SERVER REMOTE ACCESS ENVIRONMENT” 的美國臨時專利申請第61/910,189號的優(yōu)先權(quán),其公開內(nèi)容以引用的方式整體并入本文。
[0003]發(fā)明背景
[0004]由于寬帶和無線網(wǎng)絡(luò)訪問的增加和可用性,對服務(wù)無處不在的遠程訪問已成為普遍。因而,用戶正使用不斷增多的各種客戶端設(shè)備(例如,移動設(shè)備、平板計算設(shè)備、膝上型/筆記本/臺式計算機等等)訪問服務(wù)。遠程服務(wù)器可在服務(wù)與客戶端設(shè)備之間通過各種網(wǎng)絡(luò)傳送包含數(shù)據(jù)或其它信息的消息,所述網(wǎng)絡(luò)包括3G和4G移動數(shù)據(jù)網(wǎng)絡(luò),無線網(wǎng)絡(luò)諸如WiFi和WiMax,有線網(wǎng)絡(luò)等等。
[0005]在具有足夠網(wǎng)絡(luò)帶寬將消息從服務(wù)發(fā)送到連接的客戶端,但客戶端無法足夠快處理所述消息時會出現(xiàn)問題。例如,對于一些API,聯(lián)網(wǎng)是基于推送的。因而,在客戶端閑置或執(zhí)行背景任務(wù)的時間段,額外消息可被發(fā)送并在客戶端處排隊。如果發(fā)送太多消息且客戶端無法及時處理所述消息,可能出現(xiàn)錯誤。
【發(fā)明內(nèi)容】
[0006]本文公開在遠程訪問系統(tǒng)中提供流量控制的系統(tǒng)和方法。根據(jù)本公開的方面,所述方法可包括將消息從服務(wù)傳送到客戶端,所述服務(wù)被所述客戶端遠程訪問,且所述消息包括服務(wù)序列ID(SSI);響應(yīng)于所述客戶端完成處理具有與所述消息關(guān)聯(lián)的特定SSI的消息,在所述服務(wù)處接收來自所述客戶端的客戶端序列ID(CSI);在所述服務(wù)處確定傳送到所述客戶端的當前SSI與從所述客戶端接收的當前CSI之間的差;且如果所述差大于預(yù)定的停止窗口值,將從所述服務(wù)到所述客戶端的通信關(guān)閉。
[0007]根據(jù)本公開的其它方面,描述一種提供客戶端流量控制的方法,其可包括:將消息從服務(wù)傳送到客戶端,所述消息包括第一序列號,其由所述服務(wù)進行遞增來表示所述消息在從所述服務(wù)傳送到所述客戶端的多個消息內(nèi)的相對位置;在所述服務(wù)處接收來自所述客戶端的指示完成處理具有小于第一序列號的第二序列號的消息的響應(yīng);在所述服務(wù)處從所述響應(yīng)確定所述客戶端處的消息處理是否滯后超過第一預(yù)定值,且如果所述客戶端滯后超過所述預(yù)定值,關(guān)閉從所述服務(wù)到所述客戶端的通信。
[0008]根據(jù)本公開的還有其它方面,描述一種用于對從服務(wù)到客戶端的消息傳送提供客戶端流量控制的裝置。所述裝置可包括:遠程訪問服務(wù)器,其具有服務(wù)器層,所述服務(wù)器層用作在客戶端與服務(wù)之間發(fā)送的消息的通信代理,所述服務(wù)器層包含要發(fā)往所述客戶端的消息的出站客戶端隊列;和第二服務(wù)器,其執(zhí)行與所述服務(wù)關(guān)聯(lián)的服務(wù)層,所述服務(wù)層具有從客戶端接收的消息的服務(wù)接收隊列和要發(fā)往客戶端的消息的服務(wù)發(fā)送隊列。要發(fā)往客戶端的消息可包括服務(wù)序列ID(SSI),且從所述客戶端接收的消息包括客戶端序列ID(CSI),指示客戶端完成處理具有與消息關(guān)聯(lián)的特定SSI的消息。所述服務(wù)可確定當前SSI與從所述客戶端接收的CSI之間的差是否大于預(yù)定停止窗口值來關(guān)閉從所述服務(wù)到客戶端的通信。
[0009]根據(jù)本公開的一方面,描述一種在遠程訪問系統(tǒng)中提供客戶端流量控制的方法。所述方法可包括將消息從服務(wù)傳送到客戶端,所述服務(wù)被所述客戶端遠程訪問,且所述消息包括服務(wù)序列ID(SSI);響應(yīng)于所述客戶端完成處理具有與CSI關(guān)聯(lián)的SSI的消息,從所述客戶端接收客戶端序列ID(CSI);在所述服務(wù)處確定傳送到所述客戶端的當前SSI與從所述客戶端接收的CSI之間的差;且如果所述差大于預(yù)定停止窗口值,關(guān)閉從所述服務(wù)到客戶端的通信。
[0010]本領(lǐng)域技術(shù)人員在檢閱以下圖示和【具體實施方式】時,其它系統(tǒng)、方法、特征和/或優(yōu)點將會或可以變得明顯。所有這些額外系統(tǒng)、方法、特征和/或優(yōu)點都意在包括在本說明書內(nèi),并受到隨附權(quán)利要求的保護。
[0011]附圖簡述
[0012]圖中的組件不一定關(guān)于彼此按比例繪制。貫穿幾個視圖,相同附圖標記表示相應(yīng)部件。
[0013]圖1圖示根據(jù)本公開的示例分層架構(gòu);
[0014]圖2圖示圖1的架構(gòu)內(nèi)執(zhí)行的示例操作流程圖;
[0015]圖3圖示圖1的架構(gòu)內(nèi)執(zhí)行的示例操作的流程圖;
[0016]圖4A和圖4B圖示在分層架構(gòu)中(諸如圖1中所示)用于客戶端遠程訪問服務(wù)的示例服務(wù)器-服務(wù)模型;和
[0017]圖5圖示示例性計算設(shè)備。
【具體實施方式】
[0018]除非另外定義,否則本文使用的所有技術(shù)和科學術(shù)語具有與本領(lǐng)域一般技術(shù)人員通常的理解相同的意義。類似于或等效于本文描述的方法和材料可在本公開的實踐或測試中使用。雖然將要描述遠程訪問服務(wù)的實施方式,但是對本領(lǐng)域那些技術(shù)人員將變得明顯的是,所述實施方式并非就此限制,而是適用于通過遠程設(shè)備遠程訪問任何類型的服務(wù),包括應(yīng)用和數(shù)據(jù)。
[0019]上述概述作為介紹,現(xiàn)在參考圖1,其圖示根據(jù)本公開的分層架構(gòu)。所述分層架構(gòu)實施客戶端流量控制機制,其允許客戶端102通過遠程訪問服務(wù)器104控制來自應(yīng)用服務(wù)器106上執(zhí)行的服務(wù)的信息流。如圖1中圖示,所述系統(tǒng)中有三層:客戶端層112,服務(wù)器層114和服務(wù)層116。根據(jù)本公開,所述分層架構(gòu)包括消息傳遞隊列,其說明客戶端處理來自應(yīng)用服務(wù)器106的包含數(shù)據(jù)或其它信息的消息的特殊能力。所述客戶端層112駐留在客戶端102中,且用于連接到服務(wù)器層114。通常,所述客戶端層112包括客戶端應(yīng)用,例如,web瀏覽器,專用應(yīng)用等等,其用于在客戶端102處提供用戶界面。所述客戶端102可為無線手持設(shè)備,諸如例如通過通信網(wǎng)絡(luò)12 5連接到遠程訪問服務(wù)器104的IPHONE、基于ANDROID的設(shè)備、平板設(shè)備或臺式/筆記本個人計算機。
[0020]遠程訪問服務(wù)器104可包括服務(wù)器遠程訪問程序,其用于將客戶端102連接到應(yīng)用服務(wù)器106,所述應(yīng)用服務(wù)器例如可為醫(yī)療應(yīng)用。服務(wù)器遠程訪問程序的示例為可從加拿大阿爾伯塔省卡爾加里的Calgary Scientific,Inc.獲取的PUREWEB。所述服務(wù)器遠程訪問程序可在圖1的架構(gòu)上任選地提供連接編組和應(yīng)用進程管理。遠程訪問服務(wù)器104可通過通信連接126連接到應(yīng)用服務(wù)器106。如果應(yīng)用服務(wù)器106在除了遠程訪問服務(wù)器104以外的計算設(shè)備上執(zhí)行,通信連接126可為通信網(wǎng)絡(luò)。例如,通信連接126可為TCP/IP通信網(wǎng)絡(luò),VPN連接、專用連接等等。如果應(yīng)用服務(wù)器106在與遠程訪問服務(wù)器相同的節(jié)點或計算機上執(zhí)行,通信連接126可為TCP/IP套接字連接、共享存儲器空間、共享文件位置等等。
[0021]服務(wù)器層114用于代理從客戶端102到服務(wù)層116的通信,如下文所描述。客戶端層112包含從遠程訪問服務(wù)器104接收的消息的客戶端接收隊列120,所述消息被代表與客戶端102邏輯連接的應(yīng)用服務(wù)器106發(fā)送??蛻舳藢?12還包含消息的客戶端發(fā)送隊列122,其被發(fā)送到遠程訪問服務(wù)器104的服務(wù)器層114中的接收隊列123。所述消息例如可最終被發(fā)往應(yīng)用服務(wù)器106。
[0022]服務(wù)層116(例如,與服務(wù)關(guān)聯(lián))的實例連接到服務(wù)器層114,其代理從應(yīng)用服務(wù)器106到與該服務(wù)邏輯關(guān)聯(lián)的客戶端102的通信。服務(wù)層116包含代表客戶端102從服務(wù)器104接收的消息的服務(wù)接收隊列128。每個消息可用客戶端102的唯一識別符標記。服務(wù)層116還包含消息的服務(wù)發(fā)送隊列130,其被發(fā)送到遠程訪問服務(wù)器104的服務(wù)器層114中的客戶端隊列124。服務(wù)發(fā)送隊列130中的每個消息也可以用客戶端102的唯一識別符標記。此外,參考圖4A和圖4B,提供了關(guān)于服務(wù)類型的細節(jié)。
[0023]本公開的客戶端流量控制機制可作為在服務(wù)層116中實施的服務(wù)軟件開發(fā)套件(SDK)的部分包括在內(nèi),其在由消息跟蹤系統(tǒng)確定服務(wù)器104與客戶端102之間的網(wǎng)絡(luò)連接飽和時致使服務(wù)停止發(fā)送消息。如下文參考圖2將描述,可添加序列計數(shù)器來對每個連接的會話跟蹤發(fā)送到客戶端的當前服務(wù)序列ID(SSI)和從客戶端接收的當前客戶端序列ID(CSI)。客戶端層112監(jiān)聽來自應(yīng)用服務(wù)器106上執(zhí)行的服務(wù)的具有服務(wù)序列ID(SSI)的消息。只要在客戶端接收且處理具有SSI的消息時,它將客戶端序列ID(CSI)作為確認發(fā)送到所述服務(wù)。當服務(wù)序列ID(SSI)與客戶端序列ID(CSI)之間的差大于預(yù)定OffWindowSize值時,可關(guān)閉到客戶端102的傳輸。換句話說,SSI和CSI的結(jié)合指示隊列120、124和130中的消息數(shù)量大于OffWindowSize值。當服務(wù)序列ID(SSI)與客戶端序列ID(CSI)之間的差低于OnWindowSize值時可開啟到客戶端102的傳輸。因而,服務(wù)將能夠確定客戶端102在其消息處理上落后多少。所述OnWindowSize值允許客戶端在服務(wù)發(fā)送更多數(shù)據(jù)之前“趕上進度”。
[0024]服務(wù)序列ID: SSI
[0025]客戶端序列ID: CSI
[0026]流量控制消息
[0027]CSI SSI
[0028]客戶端傳輸接通(初始)O O
[0029]服務(wù)發(fā)送序列ID
[0030]客戶端接收/處理O I
[0031]確認
[0032]客戶端發(fā)送更新序列ID
[0033]服務(wù)接收/處理I I
[0034]如果SS1-CSI〉停止窗口大小
[0035]客戶端傳輸關(guān)斷
[0036]如果SS1-CSK開始窗口大小
[0037]客戶端傳輸接通
[0038]停止窗口大小彡開始窗口大小
[0039]圖2是提供客戶端流量控制的操作流程圖200。在202,會話開始時其傳輸狀態(tài)“接通”。因而,建立了客戶端102與應(yīng)用服務(wù)器106上執(zhí)行的服務(wù)之間的通信,且消息在流動。在204,服務(wù)將具有服務(wù)序列ID(SSI)的消息發(fā)送到客戶端。所述SSI是應(yīng)用服務(wù)器106發(fā)送的遞增識別符。如上文所述,每次應(yīng)用服務(wù)器106處的服務(wù)將消息包發(fā)送到客戶端102時,其會將序列ID發(fā)送到客戶端102。在206,具有SSI的入站消息被客戶端處理,且生成客戶端序列ID(CSI)。如上文所述,所述CSI可以是由客戶端102處理的消息中所包含的SSI的反映。在208,客戶端將具有CSI的確認消息發(fā)送到服務(wù)。根據(jù)本公開的方面,由客戶端102發(fā)送的CSI在客戶端102處理了來自應(yīng)用服務(wù)器106的消息后被發(fā)送。例如,如果SSI為“I”,則客戶端102可將應(yīng)用服務(wù)器106的確認消息中的CSI反映為“I”。
[0040]在210,服務(wù)確定當前SSI與當前CSI之間的差。應(yīng)用服務(wù)器106維持當前SSI和CSI值。這些值之間的差可被應(yīng)用服務(wù)器106用以確定所述客戶端102是否不堪重負,或者另外滯后于應(yīng)用服務(wù)器106。在21 2,如果SSI與CSI之間的差大于停止窗口大小(例如,OfTWindowSize值)且當前狀態(tài)傳輸狀態(tài)為“接通”,則所述會話在203被設(shè)為“關(guān)斷”傳輸狀態(tài)。這種傳輸狀態(tài)的變化將使應(yīng)用服務(wù)器106停止將額外消息發(fā)送到客戶端102。應(yīng)用服務(wù)器106將繼續(xù)跟蹤SSI和CSI值,因為客戶端102可隨著其繼續(xù)處理消息來發(fā)送消息更新CSI。在傳輸狀態(tài)為關(guān)斷時,消息在服務(wù)層116中的服務(wù)發(fā)送隊列130中排隊。處理再在206繼續(xù),其中客戶端102繼續(xù)處理在客戶端接收隊列120中排隊的消息。
[0041 ] 如果在212處,SSI與CSI之間的差不大于停止窗口大小,則處理返回204,此處服務(wù)將具有遞增SSI的下一消息發(fā)送到客戶端。應(yīng)用服務(wù)器106將服務(wù)發(fā)送隊列130中的下一消息發(fā)送到客戶端102。處理繼續(xù),如上文所述。
[0042]如果在212處,如果當前傳輸狀態(tài)為“關(guān)斷”,則在214處確定SSI與CSI之間的差是否小于開始窗口大小(例如,OnWindowSize值)。如果否,處理則返回到206,此處客戶端102處理客戶端接收隊列120中的下一消息。如果在214處,SSI與CSI之間的差小于開始窗口大小,則客戶端準備處理來自服務(wù)的消息,且傳輸狀態(tài)在202設(shè)為“接通”。
[0043]在以上操作流程中,示例停止窗口(OffWindowSize)值為5。注意,這個值可基于分配到客戶端102與應(yīng)用服務(wù)器I 06之間的通信會話的權(quán)重來調(diào)節(jié)。示例開始窗口(OnWindowSize)值為2。根據(jù)一些實施方式,所述停止窗口值和所述開始窗口值不同,以防止傳輸在接通與關(guān)斷之間快速來回切換的情況。
[0044]根據(jù)還有其它實施方式,開始和停止窗口值例如可基于客戶端102的歷史性能、被使用的網(wǎng)絡(luò)類型(例如,以太網(wǎng)對比蜂窩數(shù)據(jù))等等被動態(tài)調(diào)節(jié)。在應(yīng)用服務(wù)器106與客戶端102之間的傳輸成功時,開始窗口值和停止窗口值之間的差可以更大,且在傳輸有問題時更小。
[0045]因此,如上文所述,應(yīng)用服務(wù)器106基于從客戶端102接收的信息來進行所有流量控制決策。此外,過程200防止在應(yīng)用服務(wù)器106中延遲通知在客戶端102處存在延遲。這允許消息流能適應(yīng)客戶端102的質(zhì)量/性能。例如,即使客戶端102變慢且無法足夠快處理消息,即便網(wǎng)絡(luò)完全能夠發(fā)送消息,圖2的流量控制機制也將停止消息的傳輸。
[0046]根據(jù)上文,圖2的操作流程還可以用于說明通信連接126的傳輸特性。例如,通信連接126可能無法提供計算設(shè)備的高帶寬內(nèi)部系統(tǒng)總線。因此,操作流程200解決了應(yīng)用服務(wù)器106與遠程訪問服務(wù)器104之間的通信過程中可能出現(xiàn)的延遲。
[0047]根據(jù)其它實施方式,操作流程200可在不識別或發(fā)送SSI和/或CSI的服務(wù)和/或客戶端之間提供互操作性。例如,如果應(yīng)用服務(wù)器106不發(fā)送SSI,客戶端102可被適配成其不發(fā)送CSI。另外,如果服務(wù)發(fā)送SSI,但是客戶端102不響應(yīng)CSI,則服務(wù)將假設(shè)客戶端未被啟用。
[0048]在一些實施方式中,兩個或多個客戶端設(shè)備可使用遠程訪問服務(wù)器104在協(xié)作會話中與服務(wù)協(xié)作交互。遠程訪問服務(wù)器104可利用狀態(tài)模型來呈現(xiàn)與應(yīng)用服務(wù)器106關(guān)聯(lián)的顯示數(shù)據(jù)的同步視圖。流量控制可按每客戶端為基礎(chǔ)來實施。在傳輸對于特定客戶端為關(guān)斷的情況下,當傳輸返回接通狀態(tài)時,所述客戶端可在協(xié)作會話中跳過消息以重新同步它與其它客戶端的視圖。
[0049]圖3圖示了利用SSI和CSI提供在服務(wù)與邏輯連接的客戶端之間關(guān)聯(lián)的可靠消息傳遞的操作流程圖300。例如,在一些實施方式中,可使用來自客戶端的CSI響應(yīng)使得應(yīng)用服務(wù)器106知道客戶端102已成功接收了哪些消息。在302,服務(wù)將具有SSI的消息發(fā)送到客戶端。接著,在302,客戶端將具有CSI值的消息發(fā)送到服務(wù)。如果應(yīng)用服務(wù)器106接收此消息,則在306,應(yīng)用服務(wù)器106可從服務(wù)發(fā)送隊列130安全移除與關(guān)聯(lián)SSI值關(guān)聯(lián)的消息。然而,在未接收到CSI的情況下,服務(wù)可重新發(fā)送具有相應(yīng)SSI的消息(308)。類似地,在客戶端處可使用過程302-308。例如,每次應(yīng)用服務(wù)器106將消息發(fā)送到客戶端102時,可使用接收的SSI值將與先前SSI值關(guān)聯(lián)的消息從客戶端發(fā)送隊列122安全移除。因此,可使用SSI值和CSI值在應(yīng)用服務(wù)器106與客戶端102之間提供可靠通信。
[0050]現(xiàn)對圖4A和圖4B進行參考,其圖示在分層架構(gòu)中客戶端遠程訪問服務(wù)的替代模型示例,所述分層架構(gòu)諸如為圖1所示的分層架構(gòu),其中可實施上文描述的客戶端流量機制。圖4A圖示“托管服務(wù)”115,其中服務(wù)部署在與客戶端設(shè)備通信的遠程訪問和應(yīng)用服務(wù)器相同的系統(tǒng)節(jié)點或計算設(shè)備上。在這種情況中,服務(wù)器通過在客戶端連接和斷開連接時開始和停止服務(wù)來控制應(yīng)用/進程的壽命周期,因而管理服務(wù)。圖4B圖示“非托管服務(wù)”117,其中服務(wù)被部署在與集成的遠程訪問和應(yīng)用服務(wù)器不同的系統(tǒng)節(jié)點的服務(wù)器上,應(yīng)用/進程壽命周期不再被遠程訪問服務(wù)器管理。
[0051]在圖4A和圖4B兩圖中,服務(wù)器遠程訪問程序可提供連接編組和應(yīng)用進程管理。此夕卜,托管服務(wù)115和非托管服務(wù)117都可實施圖2的客戶端流量控制和/或圖3的可靠消息傳遞。例如,在實施圖4B的環(huán)境中,如果通信連接126經(jīng)歷會在非托管服務(wù)117與遠程訪問服務(wù)器104之間致使通信問題的情況,可由非托管服務(wù)117使用圖2的流量控制機制的SSI和CSI值跟蹤,以關(guān)閉通信,直到情況更有利為止。
[0052]如圖4A中所示,客戶端102具有客戶端層112,其可與包括服務(wù)器層114和服務(wù)層116的遠程訪問和應(yīng)用服務(wù)器103通信??蛻舳?02可通過通信網(wǎng)絡(luò)125連接到遠程訪問和應(yīng)用服務(wù)器103。遠程訪問和應(yīng)用服務(wù)器103可包括在服務(wù)器層114中執(zhí)行的服務(wù)器遠程訪問程序。服務(wù)器遠程訪問程序用于將客戶端102連接到在服務(wù)層116中執(zhí)行的托管服務(wù)115(例如,應(yīng)用)。在遠程訪問和應(yīng)用服務(wù)器103內(nèi),服務(wù)器層114中的服務(wù)器遠程訪問程序可使用TCP套接字連接以及例如通過遠程訪問和應(yīng)用服務(wù)器103的系統(tǒng)總線連接到服務(wù)層116中的服務(wù)。因此,服務(wù)器遠程訪問程序與服務(wù)之間的帶寬非常高。圖5示出客戶端102和遠程訪問和應(yīng)用服務(wù)器103的示例。
[0053]現(xiàn)在參考圖4B,圖示了非托管服務(wù)部署的示例。在這種環(huán)境中,遠程訪問服務(wù)器104包括執(zhí)行服務(wù)器遠程訪問程序的服務(wù)器層114。應(yīng)用服務(wù)器106包括在其中執(zhí)行服務(wù)或應(yīng)用的服務(wù)層116。在圖4B的環(huán)境中,服務(wù)(以非托管服務(wù)117示出)提供在除了執(zhí)行服務(wù)器遠程訪問程序的計算設(shè)備之外的計算設(shè)備上,且通過通信連接126與遠程訪問服務(wù)器104通信。因此,所述服務(wù)處在與服務(wù)器不同的節(jié)點上。圖5示出了遠程訪問服務(wù)器104和應(yīng)用服務(wù)器106的示例。
[0054]在圖4B中,客戶端102通過通信連接125連接到遠程訪問服務(wù)器104。應(yīng)用服務(wù)器106可以預(yù)定因特網(wǎng)協(xié)議(IP)地址和/或套接字連接到遠程訪問服務(wù)器104,或使用與遠程訪問服務(wù)器104關(guān)聯(lián)的統(tǒng)一資源定位符(URL),以在服務(wù)器遠程訪問程序在遠程訪問服務(wù)器104上執(zhí)行時注冊服務(wù)或應(yīng)用。外部實體(終端用戶,或另一進程或應(yīng)用)在遠程訪問服務(wù)器104外部啟動非托管服務(wù)117。非托管服務(wù)117在啟動時使用服務(wù)器-服務(wù)套接字連接來連接到遠程訪問服務(wù)器104,且將會話建立成排隊且非托管應(yīng)用,客戶端可連接到所述應(yīng)用。
[0055]圖5示出示例性計算環(huán)境,其中可實施示例實施方案和方面。所述計算系統(tǒng)環(huán)境僅是合適的計算環(huán)境的一個示例,且并非意在暗示對用途或功能范圍具有任何限制。
[0056]可使用許多其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置。熟知的可能適于使用的計算系統(tǒng)、環(huán)境和/或配置示例包括但不限于個人計算機、服務(wù)器、手持或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、網(wǎng)絡(luò)個人計算機(PC)、微型計算機、大型計算機、埋置式系統(tǒng)、包括任何上述系統(tǒng)或設(shè)備的分布式計算環(huán)境,和類似物。
[0057]可使用計算機可執(zhí)行的指令,諸如由計算機執(zhí)行的程序模塊。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)嵤┨囟ǔ橄髷?shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。在任務(wù)由通過通信網(wǎng)絡(luò)或其它數(shù)據(jù)傳輸介質(zhì)鏈接的遠程處理設(shè)備執(zhí)行的情況下,可使用分布式計算環(huán)境。在分布式計算環(huán)境中,程序模塊和其它數(shù)據(jù)可位于本地和遠程計算機存儲介質(zhì)中,包括存儲器存儲設(shè)備。
[0058]參考圖5,用于實施本文描述的方面的示例性系統(tǒng)包括計算設(shè)備,諸如計算設(shè)備500。在其最基礎(chǔ)配置中,計算設(shè)備500通常包括至少一個處理單元502和存儲器504。根據(jù)計算設(shè)備的確切配置和類型,存儲器504可為易失性(諸如隨機存取存儲器(RAM))、非易失性(諸如只讀存儲器(R0M)、閃存等等)或兩者的某個組合。這種最基礎(chǔ)配置在圖5中以虛線506圖示。
[0059]計算設(shè)備500可具有額外特征/功能。例如,計算設(shè)備500可包括額外存儲裝置(可移除和/或不可移除),包括但不限于磁盤或光盤或磁帶。這些額外存儲裝置在圖5中以可移除存儲裝置508和不可移除存儲裝置510圖示。
[0060]計算設(shè)備500通常包括各種有形計算機可讀介質(zhì)。計算機可讀介質(zhì)可為可被設(shè)備500訪問的任何可用的有形介質(zhì),且包括易失性介質(zhì)和非易失性介質(zhì)、可移除介質(zhì)和不可移除介質(zhì)。
[0061 ]有形計算機存儲介質(zhì)包括易失性和非易失性介質(zhì),和可移除及不可移除介質(zhì),它們以任何方法或技術(shù)實施,用于存儲信息,諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)。存儲器504、可移除存儲裝置508和不可移除存儲裝置510都是計算機存儲介質(zhì)的示例。有形計算機存儲介質(zhì)包括但不限于RAM、ROM、電可擦除程序只讀存儲器(EEPROM)、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光學存儲裝置、磁帶盒、磁帶、磁盤存儲裝置或其它磁性存儲設(shè)備或可用于存儲所需信息且可由計算設(shè)備500訪問的任何其它介質(zhì)。任何這種計算機存儲介質(zhì)都可為計算設(shè)備500的部分。
[0062]計算設(shè)備500可包含允許設(shè)備與其它設(shè)備通信的通信連接512。計算設(shè)備500還可具有輸入設(shè)備514,諸如鍵盤、鼠標、筆、語音輸入設(shè)備、觸摸輸入設(shè)備等等。還可以包括輸出設(shè)備516,諸如顯示器、揚聲器、打印機等等。所有這些設(shè)備都是本領(lǐng)域熟知的,且不需要在此詳細討論。
[0063]應(yīng)理解,本文描述的各種技術(shù)可結(jié)合硬件或軟件,或在適當之處結(jié)合兩者來實施。因此,當前公開主題的方法和裝置,或其某些方面或部分可采用埋置在有形介質(zhì)中的程序代碼(即,指令)的形式,所述有形介質(zhì)諸如軟盤、CD-ROM、硬盤驅(qū)動器或任何其它機器可讀存儲介質(zhì),其中在程序代碼被載入且被機器(諸如計算機)執(zhí)行時,所述機器成為用于實踐本文公開的主題的裝置。在程序代碼在可編程計算機上執(zhí)行的情況中,所述計算設(shè)備一般包括處理器、所述處理器可讀的存儲介質(zhì)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備和至少一個輸出設(shè)備。一個或多個程序例如可通過使用應(yīng)用編程接口(API)、可重用控件或類似物來實施或利用結(jié)合本文所公開主題描述的過程。這種程序可以高級程序或面向?qū)ο蟮木幊陶Z言實施,以與計算機系統(tǒng)通信。然而如果需要,程序可以匯編或機器語言實施。在任何情況下,所述語言都可以是編譯的或解譯的語言,且其可與硬件實施方式結(jié)合。
[0064]雖然以對結(jié)構(gòu)特征和/或方法動作特定的語言描述了主題,但是應(yīng)理解,隨附權(quán)利要求中定義的主題不一定受限于上文描述的特定特征或動作。相反,上文描述的特定特征和動作被公開作為實施權(quán)利要求的示例形式。
【主權(quán)項】
1.一種在遠程訪問系統(tǒng)中提供客戶端流量控制的方法,其包括: 將消息從服務(wù)傳送到客戶端,所述服務(wù)被所述客戶端遠程訪問,并且所述消息包括服務(wù)序列ID(SSI); 響應(yīng)于所述客戶端完成處理具有與所述消息關(guān)聯(lián)的特定SSI的消息,在所述服務(wù)處接收來自所述客戶端的客戶端序列ID(CSI); 在所述服務(wù)處確定傳送到所述客戶端的當前SSI與從所述客戶端接收的當前CS I之間的差;和 如果所述差大于預(yù)定的停止窗口值,關(guān)閉從所述服務(wù)到所述客戶端的通信。2.根據(jù)權(quán)利要求1所述的方法,其還包括: 隨后在所述服務(wù)處確定所述當前SSI與從所述客戶端接收的后續(xù)CSI之間的差;和 如果所述差小于預(yù)定開始窗口值,開啟從所述服務(wù)到所述客戶端的通信。3.根據(jù)權(quán)利要求2所述的方法,其中所述預(yù)定開始窗口值小于所述預(yù)定停止窗口值。4.根據(jù)權(quán)利要求2-3中任一項所述的方法,其還包括根據(jù)網(wǎng)絡(luò)情況和所述客戶端的處理能力之一動態(tài)調(diào)節(jié)所述開始窗口值或所述停止窗口值。5.根據(jù)權(quán)利要求1-4中任一項所述的方法,其還包括在所述服務(wù)處維持所述當前SSI和CS I值以執(zhí)行所述確定。6.根據(jù)權(quán)利要求1-5中任一項所述的方法,其還包括: 在所述客戶端處提供客戶端層; 提供與所述服務(wù)關(guān)聯(lián)的服務(wù)層,所述服務(wù)層具有從所述客戶端接收的消息的服務(wù)接收隊列,和要發(fā)往所述客戶端的消息的服務(wù)發(fā)送隊列;和 提供服務(wù)器層,其作為在所述客戶端與所述服務(wù)之間發(fā)送的消息的通信代理,所述服務(wù)器層包含要發(fā)往所述客戶端的消息的出站客戶端隊列。7.根據(jù)權(quán)利要求6所述的方法,其還包括當從所述服務(wù)到所述客戶端的所述通信關(guān)斷時使消息在所述服務(wù)發(fā)送隊列中排隊。8.根據(jù)權(quán)利要求6-7中任一項所述的方法,其還包括在所述服務(wù)層中提供的服務(wù)層SDK中執(zhí)行所述確定。9.根據(jù)權(quán)利要求6-8中任一項所述的方法,其還包括: 通過確定具有特定SSI的消息未被所述客戶端確認而檢測所述客戶端與所述服務(wù)之間的通信故障;和 在檢測到所述故障時,重新發(fā)送具有所述特定SSI的所述消息。10.根據(jù)權(quán)利要求6-9中任一項所述的方法,其還包括從所述服務(wù)發(fā)送隊列重新發(fā)送所述消息。11.根據(jù)權(quán)利要求1-10中任一項所述的方法,其還包括: 使用所述SSI檢測所述客戶端與所述服務(wù)之間的通信故障;和 在檢測到所述故障時,重新發(fā)送具有確定未被所述客戶端確認的特定SSI的消息。12.根據(jù)權(quán)利要求1-11中任一項所述的方法,其還包括: 將所述服務(wù)作為在應(yīng)用服務(wù)器上執(zhí)行的非托管服務(wù)提供; 提供在遠程訪問服務(wù)器上執(zhí)行的服務(wù)器遠程訪問程序,所述遠程訪問服務(wù)器通過第一通信連接與所述服務(wù)通信,且通過第二通信連接與所述客戶端通信; 在所述遠程訪問服務(wù)器上通過所述第二通信連接接收來自所述客戶端的連接;和 根據(jù)所述確定來將消息從所述服務(wù)傳送到所述客戶端。13.根據(jù)權(quán)利要求12所述的方法,其還包括將所述應(yīng)用服務(wù)器和所述遠程訪問服務(wù)器作為不同節(jié)點提供。14.一種提供客戶端流量控制的方法,其包括: 將消息從服務(wù)傳送到客戶端,所述消息包括被所述服務(wù)遞增以表示所述消息在從所述服務(wù)傳送到所述客戶端的多個消息內(nèi)的相對位置的跟蹤機制; 根據(jù)所述跟蹤機制,在所述服務(wù)處接收來自所述客戶端的指示完成消息處理的響應(yīng);在所述服務(wù)處從所述響應(yīng)確定所述客戶端處的所述消息處理是否滯后超過第一預(yù)定值,并且 如果所述客戶端滯后超過所述預(yù)定值,關(guān)閉從所述服務(wù)到所述客戶端的通信。15.根據(jù)權(quán)利要求14所述的方法,其還包括: 在所述服務(wù)處接收后續(xù)響應(yīng);和 在所述服務(wù)處從所述后續(xù)響應(yīng)確定所述客戶端處的所述消息處理是否不再滯后超過第二預(yù)定值;和 開啟從所述服務(wù)到所述客戶端的通信。16.根據(jù)權(quán)利要求15所述的方法,其中所述第二預(yù)定值小于所述第一預(yù)定值。17.根據(jù)權(quán)利要求15-16中任一項所述的方法,其還包括根據(jù)網(wǎng)絡(luò)情況和所述客戶端的處理能力之一動態(tài)調(diào)節(jié)所述第一預(yù)定值或所述第二預(yù)定值。18.一種對從服務(wù)到客戶端的消息傳送提供客戶端流量控制的裝置,其包括: 遠程訪問服務(wù)器,其具有用作在所述客戶端與所述服務(wù)之間發(fā)送的消息的通信代理的服務(wù)器層,所述服務(wù)器層包含要發(fā)往所述客戶端的消息的出站客戶端隊列; 第二服務(wù)器,其執(zhí)行與所述服務(wù)關(guān)聯(lián)的服務(wù)層,所述服務(wù)層具有從所述客戶端接收的消息的服務(wù)接收隊列和要發(fā)往所述客戶端的消息的服務(wù)發(fā)送隊列, 其中要發(fā)往所述客戶端的所述消息包括服務(wù)序列ID(SSI),并且從所述客戶端接收的所述消息包括客戶端序列ID(CSI),其指示所述客戶端完成處理具有與所述消息關(guān)聯(lián)的特定SSI的消息,并且 其中所述服務(wù)確定當前SSI與從所述客戶端接收的所述CSI之間的差是否大于預(yù)定停止窗口值來將從所述服務(wù)到所述客戶端的通信關(guān)閉。19.根據(jù)權(quán)利要求18所述的裝置,其中所述服務(wù)還確定所述當前SSI與所述CSI之間的差是否小于預(yù)定開始窗口值,以開啟從所述服務(wù)到所述客戶端的通信。20.根據(jù)權(quán)利要求18-19中任一項所述的裝置,其中所述預(yù)定開始窗口值小于所述預(yù)定停止窗口值。21.根據(jù)權(quán)利要求19-20中任一項所述的裝置,其中根據(jù)網(wǎng)絡(luò)情況和所述客戶端的處理能力之一動態(tài)調(diào)節(jié)所述開始窗口值或所述停止窗口值。22.根據(jù)權(quán)利要求18所述的裝置,其中當從所述服務(wù)到所述客戶端的通信關(guān)斷時消息在服務(wù)發(fā)送隊列中排隊。
【文檔編號】H04L12/825GK106063205SQ201480064881
【公開日】2016年10月26日
【申請日】2014年11月6日
【發(fā)明人】山姆·安東尼·利奇, 凱文·格蘭·羅賓遜
【申請人】卡爾加里科技股份有限公司