本公開的方面涉及計算硬件和軟件技術(shù),并且特定而言涉及更新對服務(wù)的用戶界面。
背景技術(shù):
在計算硬件和軟件技術(shù)的領(lǐng)域中,用戶越來也多地常規(guī)性地訪問并參與多種在線服務(wù)。他們的訪問是至少部分地通過包括各種對象以及用戶可以與其交互的其它界面元素的用戶界面來提供的。在簡單的示例中,對電子郵件服務(wù)的用戶界面可以包括各種對象以及代表電子郵件、菜單項、以及其它界面元素的其它元素。
可以在合適的計算設(shè)備上渲染用戶界面,以使得用戶可以與該界面的界面元素進(jìn)行交互以作為對服務(wù)的用戶體驗的一部分。在一些實例中,用戶界面可以是由在瀏覽器應(yīng)用的上下文內(nèi)、或者在幫助響應(yīng)于用戶交互而驅(qū)動用戶界面的一些其它執(zhí)行環(huán)境內(nèi)運行的客戶端應(yīng)用渲染的。例如,可以在包括電子郵件的列表的用戶界面中呈現(xiàn)電子郵件收件箱。用戶可以標(biāo)記電子郵件中的一封電子郵件或者以其它方式對電子郵件中的一封電子郵件進(jìn)行修改,這接著在用戶界面中被可視化。
對用戶界面的更新可以頻繁地進(jìn)行,并且可以是本地起源的也可以是起源于服務(wù)的,所述服務(wù)有時可以被稱為云端。例如,用戶經(jīng)由設(shè)備上的用戶界面與服務(wù)進(jìn)行交互可以發(fā)起對對象的一個更新,而同一用戶或另一個用戶經(jīng)由不同的用戶界面與相同的服務(wù)進(jìn)行交互可以發(fā)起對同一對象的另一個更新。這樣的同時的更新可能導(dǎo)致不一致的用戶體驗,例如,當(dāng)可視化對于用戶不可知地進(jìn)行改變時。
對這些事件的各種解決方案包括:讓服務(wù)進(jìn)行控制以使得總是實現(xiàn)其更新、或者本地地執(zhí)行將本地更新和源于服務(wù)的更新兩者考慮在內(nèi)的合并。允許服務(wù)驅(qū)動的更新進(jìn)行控制可能導(dǎo)致用戶界面在狀態(tài)之間閃爍。作為示例,用戶可能在共享的電子郵件中鍵入段落,而當(dāng)另一個用戶改變該電子郵件的主題時,該電子郵件發(fā)生閃爍。如果云端版本的電子郵件不包括該段落,則該段落可能從其它版本中暫時消失。數(shù)據(jù)合并可以避免該情況,但是可能實現(xiàn)起來較復(fù)雜,尤其是跨不同平臺地實現(xiàn)。
另外,至少存在客戶端應(yīng)用處理對用戶界面的本地更新的兩種方式。一些應(yīng)用與云端同步數(shù)據(jù),而相反其它應(yīng)用可以向云端報告操作。當(dāng)對數(shù)據(jù)進(jìn)行同步時,客戶端應(yīng)用將反映用戶在用戶界面中采取的操作的新版本的文件或?qū)ο髠魉椭猎贫恕.?dāng)對操作進(jìn)行報告時,應(yīng)用將采取了什么動作報告至云端,但不傳送文件或?qū)ο?。在全部兩種情況中,云端可以返回更新,當(dāng)所述更新由客戶端應(yīng)用在用戶界面中實現(xiàn)時,在用戶界面中得出與用戶的操作不一致的可視化。
技術(shù)實現(xiàn)要素:
在本文中所提供的是用于至少部分基于服務(wù)驅(qū)動的更新是否考慮(account for)可以關(guān)于用戶界面發(fā)生的事件來實現(xiàn)對用戶界面的更新的系統(tǒng)、方法、和軟件。這可以通過改進(jìn)用戶界面中的可視化的一致性來增強用戶體驗。
在至少一個實現(xiàn)中,應(yīng)用渲染對服務(wù)的用戶界面,并且響應(yīng)于事件的發(fā)生而顯現(xiàn)(surface)初始的可視化。在顯現(xiàn)了初始的可視化之后,應(yīng)用從服務(wù)中接收包括所提議的可視化的更新,并且確定所提議的可視化是否考慮該事件。如果所提議的可視化考慮該事件,則顯現(xiàn)所提議的可視化來代替初始的可視化。如果所提議的可視化沒有考慮該事件,則可以將初始的可視化持續(xù)到識別出考慮事件的另一個可視化為止。
在一些實現(xiàn)中,服務(wù)可以從應(yīng)用中接收至少指示該事件(例如在用戶界面中進(jìn)行的用戶交互)的報告。所述報告還可以包括與在用戶界面中顯現(xiàn)的初始的可視化相關(guān)聯(lián)的初始的關(guān)聯(lián)標(biāo)識符。服務(wù)識別用于在用戶界面中顯現(xiàn)的所提議的可視化、至少部分地基于關(guān)聯(lián)標(biāo)識符來生成所提議的關(guān)聯(lián)標(biāo)識符、并且將所提議的關(guān)聯(lián)標(biāo)識符與所提議的可視化相關(guān)聯(lián)。接著,服務(wù)將包括所提議的可視化和所提議的關(guān)聯(lián)標(biāo)識符的對界面的更新傳送至應(yīng)用。
提供了該發(fā)明內(nèi)容以用簡化的形式介紹在下文的具體實施方式中所進(jìn)一步描述的概念的選擇。應(yīng)當(dāng)理解的是,該發(fā)明內(nèi)容不旨在標(biāo)識所要求保護的主題的關(guān)鍵特征或本質(zhì)特征,也不旨在用來限制所要求保護的主題的范圍。
附圖說明
通過參考以下附圖可以更好地理解本公開的許多方面。盡管許多實現(xiàn)是結(jié)合這些附圖來描述的,但本公開不限于在本文中所公開的實現(xiàn)。相反,本公開的目的是要覆蓋所有的變型、修改、和等價物。
圖1示出了代表性的服務(wù)架構(gòu)并且示出了實現(xiàn)中的操作場景。
圖2示出了實現(xiàn)中的更新過程。
圖3示出了實現(xiàn)中的更新過程。
圖4示出了實現(xiàn)中的服務(wù)架構(gòu)。
圖5示出了實現(xiàn)中的更新過程。
圖6A-6B每個都示出了實現(xiàn)中的操作序列。
圖7A-7B每個都示出了實現(xiàn)中的操作序列。
圖8示出了實現(xiàn)中的操作場景。
圖9示出了各種實現(xiàn)中的計算系統(tǒng)
具體實施方式
在本文中所公開的實現(xiàn)包括對針對服務(wù)的用戶界面的更新方式的增強。在各種實現(xiàn)中,客戶端應(yīng)用渲染對服務(wù)的用戶界面??梢栽谟脩艚缑嬷酗@現(xiàn)與事件的發(fā)生相關(guān)聯(lián)的初始的可視化。根據(jù)用于與服務(wù)進(jìn)行通信的基于操作的范例,客戶端應(yīng)用將事件報告至服務(wù),并且將初始的可視化持續(xù)到從服務(wù)中接收到考慮所報告的事件的所提議的可視化為止。通過該方式,改進(jìn)了用戶界面的一致性,并且避免了諸如在狀態(tài)間閃爍之類的不一致的行為或者至少將不一致的行為減輕到增強用戶體驗的程度。
應(yīng)當(dāng)理解的是,在本文中使用術(shù)語初始的是為了將由客戶端應(yīng)用所識別并且在用戶界面中所顯現(xiàn)的一種類型的可視化或修改與不是由該客戶端應(yīng)用所識別的其它的可視化進(jìn)行區(qū)分。術(shù)語初始的不旨在將特定的可視化或修改限于特定的可視化或修改的序列中的第一個。相反,初始的可視化或修改僅僅是在由服務(wù)所識別的所提議的可視化或所提議的修改之前的一個可視化或修改。
在簡單的示例中,客戶端應(yīng)用渲染包括各種界面對象的對服務(wù)的用戶界面。服務(wù)的示例包括但不限于:電子郵件服務(wù)、電子商務(wù)服務(wù)、社交網(wǎng)絡(luò)服務(wù)、辦公生產(chǎn)力服務(wù)、反病毒服務(wù)、游戲服務(wù)、以及微博客服務(wù)。事件可以發(fā)生,響應(yīng)于該事件的發(fā)生,應(yīng)用顯現(xiàn)與該事件相關(guān)聯(lián)的初始的可視化。例如,可以發(fā)生關(guān)于界面對象的用戶交互并且可以執(zhí)行后臺過程,這兩者都可以被認(rèn)為是驅(qū)動應(yīng)用來顯現(xiàn)初始的可視化的事件。其它事件是可能的,并且可以被認(rèn)為在本公開的范圍內(nèi)。
應(yīng)用與服務(wù)進(jìn)行通信以報告所發(fā)生的事件,從而允許服務(wù)確定用戶界面的合適的狀態(tài)。這樣的對事件的報告是根據(jù)基于操作的范例的,其中,客戶端將操作向上報告至服務(wù),并且作為回應(yīng),客戶端從服務(wù)中接收在用戶界面中所渲染的數(shù)據(jù)。在該示例中,所述數(shù)據(jù)是由服務(wù)所識別的所提議的可視化。
當(dāng)對所提議的可視化進(jìn)行識別時,除了所報告的事件之外,服務(wù)還可以考慮其它事件,例如,在用戶界面的其它實例中發(fā)生的事件。例如,當(dāng)移動電子郵件客戶端與臺式機電子郵件客戶端在相同的時間或者時間上接近地被使用時,用戶可以與針對服務(wù)的多個用戶界面進(jìn)行交互。在另一個示例中,多個用戶可以在協(xié)同場景中參與服務(wù),例如,當(dāng)多個用戶針對共享的文檔進(jìn)行工作時,或者當(dāng)多個用戶參與在線或多用戶游戲時。另一個示例是當(dāng)多個用戶與社交網(wǎng)絡(luò)服務(wù)進(jìn)行交互時,或者當(dāng)一個用戶經(jīng)由多個用戶界面與社交網(wǎng)絡(luò)服務(wù)進(jìn)行交互時。
客戶端應(yīng)用確定所提議的可視化是否考慮事件(初始的可視化是與該事件相關(guān)聯(lián)地顯現(xiàn)的),而不是總是顯現(xiàn)所提議的可視化。如果所提議的可視化實際上考慮事件,則應(yīng)用顯現(xiàn)所提議的可視化來代替初始的可視化。然而,如果所提議的可視化沒有考慮事件,則客戶端應(yīng)用在用戶界面中持續(xù)初始的可視化。
持續(xù)初始的可視化可以通過顯現(xiàn)并維持用戶基于他們與用戶界面交互的情況而預(yù)期的可視化,而不是顯現(xiàn)可能與用戶的期望不一致的由服務(wù)所傳送的可視化來改進(jìn)用戶界面的一致性。出于多種原因,由服務(wù)所提議的可視化可以與用戶的期望不一致,所述多種原因包括:更新和所報告的事件在傳輸中交叉、客戶端應(yīng)用在對事件進(jìn)行報告時延遲(例如,在受限訪問或沒有在線訪問的時段期間)、或者服務(wù)在處理所報告的事件時延遲。其它因素是可能的并且可以被認(rèn)為在本公開的范圍內(nèi)。
在一些場景中,將初始的可視化持續(xù)到接收到考慮事件的另一個所提議的可視化為止。然而,在其它場景中,初始的可視化最終由沒有考慮事件的所提議的可視化代替或者由另一個本地驅(qū)動的可視化代替。
可以以多種方式來確定所提議的可視化是否考慮事件。在至少一個實現(xiàn)中,客戶端應(yīng)用和服務(wù)采用關(guān)聯(lián)標(biāo)識符來確定所提議的可視化是否考慮事件。在這樣的實現(xiàn)中,客戶端應(yīng)用將初始的關(guān)聯(lián)標(biāo)識符與初始的可視化相關(guān)聯(lián),并且當(dāng)對事件進(jìn)行報告時將初始的關(guān)聯(lián)標(biāo)識符傳送至服務(wù)。其它客戶端應(yīng)用也可以隨著事件的發(fā)生而傳送也包括關(guān)聯(lián)標(biāo)識符的其它報告。每個關(guān)聯(lián)標(biāo)識符都與具體的可視化相關(guān)聯(lián)。
服務(wù)從客戶端應(yīng)用中接收事件報告,并且當(dāng)每個事件被報告時,服務(wù)識別針對該事件的所提議的可視化。另外,由服務(wù)生成待與每個所提議的可視化相關(guān)聯(lián)的所提議的關(guān)聯(lián)標(biāo)識符。所提議的關(guān)聯(lián)標(biāo)識符是基于與所提議的可視化相對應(yīng)的事件相關(guān)聯(lián)的那個關(guān)聯(lián)標(biāo)識符而生成的,或者是以其它方式從與所提議的可視化相對應(yīng)的事件相關(guān)聯(lián)的那個關(guān)聯(lián)標(biāo)識符得出的。作為結(jié)果,可以由客戶端應(yīng)用對由服務(wù)傳送至客戶端應(yīng)用的給定更新(其包括所提議的可視化以及相關(guān)聯(lián)的所提議的關(guān)聯(lián)標(biāo)識符兩者)進(jìn)行檢查,以確定由該客戶端所報告的事件是否是所提議的可視化的主題,或者該事件是否以其它方式由所提議的可視化所考慮。這可以通過對包括在更新中的所提議的關(guān)聯(lián)標(biāo)識符和與事件相關(guān)聯(lián)的初始的關(guān)聯(lián)標(biāo)識符進(jìn)行比較來確定。因此,當(dāng)用于生成與所提議的可視化相關(guān)聯(lián)的所提議的關(guān)聯(lián)標(biāo)識符的關(guān)聯(lián)標(biāo)識符是與事件相關(guān)聯(lián)的初始的關(guān)聯(lián)標(biāo)識符時,所述比較將指示所提議的可視化考慮事件。當(dāng)用于生成所提議的關(guān)聯(lián)標(biāo)識符的關(guān)聯(lián)標(biāo)識符不是與該事件相關(guān)聯(lián)的初始的關(guān)聯(lián)標(biāo)識符時,所述比較將指示所提議的可視化沒有考慮事件。
在各種實現(xiàn)中,用戶界面包括用戶可以與其進(jìn)行交互的界面對象。電子郵件對象是用戶可以與其進(jìn)行交互的界面對象的示例,例如游戲?qū)ο?、社交網(wǎng)絡(luò)對象、或者在服務(wù)的上下文中用戶可以與其進(jìn)行交互的任何其它類型的對象。事件的示例是經(jīng)由用戶界面的與界面對象的用戶交互、或者可能是一些其它觸發(fā)事件。初始的可視化的示例是對界面對象的初始修改,而所提議的可視化可以是對界面對象的所提議的修改。
在一些實現(xiàn)中,在用戶界面中所顯現(xiàn)的可視化是對對象的修改。例如,可以響應(yīng)于經(jīng)由用戶界面接收的用于改變由電子郵件對象所表示的電子郵件的狀態(tài)的命令,而將電子郵件對象從一個狀態(tài)修改至另一個狀態(tài)。在另一個示例中,可以將圖形、圖標(biāo)、或其它視覺元素從一個狀態(tài)修改至另一個狀態(tài)。由此,事件的發(fā)生可以觸發(fā)對電子郵件對象或者對用戶界面中的一些其它對象的初始修改。如果對電子郵件對象的所提議的修改考慮事件,則顯現(xiàn)該修改。
現(xiàn)在參考附圖,圖1示出了其中客戶端應(yīng)用與服務(wù)進(jìn)行通信以在針對服務(wù)的用戶界面中實現(xiàn)增強的更新的操作場景。圖2示出了客戶端應(yīng)用所采用的更新過程以及服務(wù)所采用的另一個更新過程。圖4示出了在涉及客戶端應(yīng)用和服務(wù)的另一個操作場景中的增強的用戶界面更新。圖5示出了客戶端應(yīng)用可以采用的更新過程。圖6、圖7A、以及圖7B示出了可以在對用戶界面進(jìn)行更新的上下文中進(jìn)行的各種操作序列。圖8示出了展示了在兩個用戶界面中的各種狀態(tài)改變的操作場景。圖9示出了適用于實現(xiàn)客戶端應(yīng)用或服務(wù)的計算系統(tǒng)。
轉(zhuǎn)到圖1,操作場景100涉及客戶端應(yīng)用102在其上運行的應(yīng)用平臺101。客戶端應(yīng)用102與在服務(wù)平臺111上運行的服務(wù)112進(jìn)行通信,以通過用戶界面103給用戶或多個用戶提供對服務(wù)112的訪問。用戶界面103包括用戶可以通過用戶輸入(例如,鼠標(biāo)點擊、觸摸、手勢、語音命令、或任何其它類型的用戶輸入)與其進(jìn)行交互的各種界面元素。用戶界面元素包括界面元素105、界面元素107、以及界面元素109。應(yīng)當(dāng)理解的是,在操作環(huán)境100中可以包括額外的應(yīng)用平臺和額外的客戶端應(yīng)用。
應(yīng)用平臺101代表能夠運行客戶端應(yīng)用102并實現(xiàn)更新過程200的任何物理的或虛擬的計算系統(tǒng)、設(shè)備、或其集合。應(yīng)用平臺101的示例包括但不限于:智能電話、膝上型計算機、平板計算機、臺式計算機、混合式計算機、電視機、游戲機、和虛擬機、及其任何變型或組合,它們由在圖9中所示出的計算系統(tǒng)900代表。
客戶端應(yīng)用102代表能夠?qū)崿F(xiàn)用于增強用戶界面103如何被更新的更新過程200的任何軟件應(yīng)用、模塊、組件、或其集合??蛻舳藨?yīng)用102的示例包括但不限于:電子郵件應(yīng)用、實時通信應(yīng)用、博客和微博客應(yīng)用、社交網(wǎng)絡(luò)應(yīng)用、電子商務(wù)應(yīng)用、反病毒應(yīng)用、和游戲應(yīng)用、以及能夠渲染用戶界面并采用更新過程200的任何其它類型的應(yīng)用。客戶端應(yīng)用102可以是在瀏覽器應(yīng)用的上下文中執(zhí)行的基于瀏覽器的應(yīng)用。在一些實現(xiàn)中,客戶端應(yīng)用102在網(wǎng)頁或網(wǎng)站的上下文中執(zhí)行或者與網(wǎng)頁或網(wǎng)站相關(guān)聯(lián)地執(zhí)行。然而,客戶端應(yīng)用102還可以是本地安裝并執(zhí)行的應(yīng)用、流式傳輸?shù)膽?yīng)用、移動應(yīng)用、或其任何組合或變型??蛻舳藨?yīng)用102可以被實現(xiàn)為獨立的應(yīng)用或者可以跨多個應(yīng)用分布。
服務(wù)平臺111代表能夠托管服務(wù)112的全部或一部分的任何物理的或虛擬的計算系統(tǒng)、設(shè)備、或其集合。服務(wù)平臺111的示例包括但不限于:服務(wù)器計算機、網(wǎng)絡(luò)服務(wù)器、應(yīng)用服務(wù)器、機架式服務(wù)器、刀片式服務(wù)器、虛擬機服務(wù)器、或者塔式服務(wù)器、以及任何其它類型的計算系統(tǒng),它們由在圖9中所示出的計算系統(tǒng)900代表。在一些場景中,可以在數(shù)據(jù)中心、虛擬數(shù)據(jù)中心、或一些其它合適的計算設(shè)施中實現(xiàn)服務(wù)112。
服務(wù)112代表能夠與客戶端應(yīng)用102接合并且實現(xiàn)更新過程300以促進(jìn)對用戶界面103的增強的更新的任何服務(wù)。服務(wù)112的示例包括但不限于:網(wǎng)絡(luò)服務(wù)、個人信息管理服務(wù)(包括電子郵件服務(wù)和日歷服務(wù))、實時通信服務(wù)、博客和微博客服務(wù)、社交網(wǎng)絡(luò)服務(wù)、電子商務(wù)服務(wù)、反病毒服務(wù)、和游戲服務(wù)、以及任何其它類型的服務(wù)、組合、或其變型。服務(wù)112有時可以被稱為云服務(wù)、在線服務(wù)、或互聯(lián)網(wǎng)服務(wù)、或者以一些其它方式來稱呼。應(yīng)當(dāng)理解的是,盡管在大多數(shù)實現(xiàn)中,將服務(wù)112和客戶端應(yīng)用102部署在不同的系統(tǒng)上并且它們相對遠(yuǎn)離彼此,但在至少一些實現(xiàn)中,可以將服務(wù)112與客戶端應(yīng)用102實現(xiàn)在相同的系統(tǒng)或系統(tǒng)的集合上。例如,服務(wù)112可以是關(guān)于客戶端應(yīng)用102而本地運行的服務(wù),例如是由操作系統(tǒng)所提供的服務(wù)、或者在瀏覽器環(huán)境內(nèi)運行的服務(wù)。
在操作中,當(dāng)在應(yīng)用平臺101上執(zhí)行時,客戶端應(yīng)用102渲染用戶界面103,用戶可以通過該用戶界面103參與服務(wù)。用戶可以瀏覽屏幕、菜單、或服務(wù)112的其它方面、消耗或組合內(nèi)容、參加游戲、瀏覽在線商品、參與通信、或者以一些其它方式來體驗服務(wù)112。為了促進(jìn)用戶體驗,用戶界面103包括表示各種圖標(biāo)、圖像、菜單、或者用戶可以與其進(jìn)行交互的其它對象的用戶界面元素105、107、和109。
在操作場景100中示出了一個特定的用戶交互131,該用戶交互131表示由用戶關(guān)于界面元素109而進(jìn)行的操作。例如,用戶可以已經(jīng)觸摸、選擇、點擊、或以其他方式與界面元素109交互(engage with)。響應(yīng)于這樣的事件,客戶端應(yīng)用102在用戶界面103中顯現(xiàn)與該事件相關(guān)聯(lián)的初始的可視化133。在該示例中,初始的可視化133由關(guān)于界面元素109的填充模式的改變來表示。例如,填充模式的改變可以代表界面元素109的狀態(tài)的改變。在電子郵件場景中,界面元素109可以表示電子郵件或一些其它電子郵件對象,并且狀態(tài)的改變可以是電子郵件的狀態(tài)從未讀到已讀的改變。在社交網(wǎng)絡(luò)場景中,界面元素109可以表示圖像,而狀態(tài)的改變可以是所接收到的關(guān)于圖像的“贊”的數(shù)量的增加。在電子商務(wù)的示例中,界面元素可以表示產(chǎn)品,而狀態(tài)的改變可以關(guān)于產(chǎn)品庫存的增加或減少。多種其它場景、界面元素、和狀態(tài)改變是可能的,并且可以被認(rèn)為在本公開的范圍內(nèi)。
響應(yīng)于用戶交互131的發(fā)生,客戶端應(yīng)用102還將用戶交互報告至服務(wù)112。對操作進(jìn)行報告是根據(jù)操作報告范例而發(fā)生的,其中,客戶端應(yīng)用向服務(wù)報告操作而不是向服務(wù)提供經(jīng)更新的版本的對象。接著,服務(wù)可以確定對對象而言合適的狀態(tài)是什么,并且用用于在用戶界面103中顯現(xiàn)的針對客戶端應(yīng)用102的所提議的可視化來進(jìn)行回復(fù)。
然而,客戶端應(yīng)用102不總是顯現(xiàn)所提議的可視化135。相反,客戶端應(yīng)用102確定所提議的可視化135是否考慮與初始的可視化133相關(guān)聯(lián)的事件,或者,即,所提議的可視化135是否考慮用戶交互131。如果當(dāng)服務(wù)112生成所提議的可視化時已經(jīng)考慮了事件,則所提議的可視化135可以考慮事件。如果對用戶交互131的報告在生成所提議的可視化135之前抵達(dá)服務(wù)112或者以其他方式由服務(wù)112進(jìn)行考慮,則可以是該情況。然而,如果當(dāng)生成所提議的可視化135時服務(wù)112還沒有考慮事件,則所提議的可視化135可以沒有考慮事件。例如,對用戶交互131的報告沒有在生成所提議的可視化135之前抵達(dá)服務(wù)112,或者出于一些其它原因而沒有由服務(wù)112進(jìn)行考慮,則可以是該情況。
如果所提議的可視化135實際上考慮了用戶交互131,則客戶端應(yīng)用102在用戶界面103中顯現(xiàn)所提議的可視化。所提議的可視化135是由界面元素109的填充模式的改變來表示的。如果所提議的可視化135沒有考慮用戶交互131,則客戶端應(yīng)用102在用戶界面103中持續(xù)初始的可視化133。可以在用戶界面103中持續(xù)初始的可視化133直到接收到考慮用戶交互131的另一個所提議的可視化為止,或者持續(xù)到識別出并顯現(xiàn)另一個初始的可視化為止。在一些場景中,即使所提議的可視化沒有考慮初始的可視化,也可以接受并顯現(xiàn)所提議的可視化。例如這種情況發(fā)生在自從接受了上一個所提議的可視化之后已經(jīng)過了一定量的時間時。換句話說,如果永遠(yuǎn)不被所提議的可視化代替,初始的可視化或者一系列的初始的可視化可以變得過時,因此被迫接受所提議的可視化。
出于示例性的目的,在操作場景100中,初始的可視化133和所提議的可視化135兩者都是關(guān)于界面元素109的。然而,應(yīng)當(dāng)理解的是,初始的可視化可以關(guān)于不是關(guān)于其進(jìn)行用戶交互的界面元素的另一個界面元素,或者可以除了關(guān)于其進(jìn)行用戶交互的界面元素之外還關(guān)于另一個界面元素。例如,盡管用戶交互131涉及(implicate)界面元素109,但可以已經(jīng)顯現(xiàn)了關(guān)于界面元素105或界面元素107的初始的可視化133。此外,不是用戶交互的事件可以觸發(fā)初始的可視化的顯現(xiàn)。例如,在客戶端應(yīng)用102中運行的后臺過程可以觸發(fā)可以作為初始的可視化來顯現(xiàn)的對用戶界面103的修改。
圖2示出了在操作場景100的上下文中由客戶端應(yīng)用102所采用的、但可以更加一般性地在其它場景的上下文中實現(xiàn)的更新過程200。在操作中,客戶端應(yīng)用102響應(yīng)于事件的發(fā)生而顯現(xiàn)初始的可視化(步驟201)。例如,事件可以是與用戶界面中的對象的用戶交互、由后臺過程所觸發(fā)的事件、或者響應(yīng)于其而可以顯現(xiàn)可視化的一些其它類型的事件。顯現(xiàn)初始的可視化可以包括修改對象的狀態(tài)以使得對象的外觀和其中表示的信息發(fā)生改變。其它類型的可視化是可能的,并且可以被認(rèn)為在本公開的范圍內(nèi)。
在顯現(xiàn)了初始的可視化之后,客戶端應(yīng)用102接收由服務(wù)112所傳送的、包括用于在用戶界面中顯現(xiàn)的所提議的可視化的對用戶界面的更新。在一些情況下,客戶端應(yīng)用102可以已經(jīng)將報告?zhèn)魉椭练?wù)112以通知服務(wù)112關(guān)于事件的發(fā)生。然而,并不總是這種情況,這是由于客戶端應(yīng)用102可能已經(jīng)離線了一段或者以其它方式不能夠報告事件。在其它情況下,客戶端應(yīng)用102可以已經(jīng)報告了事件但事件沒有成功被接收、或者出于一些其它原因延遲了由服務(wù)112對事件的處理。
由此,從服務(wù)112中接收到的更新可以考慮或可以沒有考慮事件。因此,客戶端應(yīng)用102檢查更新以確定所提議的可視化是否考慮事件(步驟203)。如果所提議的可視化考慮事件,則客戶端應(yīng)用102顯現(xiàn)所提議的可視化來代替初始的可視化(205)。但如果所提議的更新沒有考慮事件,則丟棄所提議的可視化,并且客戶端應(yīng)用102相反可以持續(xù)初始的可視化(步驟207)。
可以以多種方式來確定更新是否考慮事件。在至少一個實現(xiàn)中,客戶端應(yīng)用102將初始的標(biāo)識符與響應(yīng)于事件而在用戶界面中顯現(xiàn)的初始的可視化相關(guān)聯(lián)。接著,將初始的標(biāo)識符與發(fā)送至服務(wù)112的事件的任何報告一起傳送,以使得當(dāng)將與事件相關(guān)聯(lián)的所提議的可視化進(jìn)行傳送時,服務(wù)112可以使用初始的標(biāo)識符來生成所提議的標(biāo)識符。因此,客戶端應(yīng)用102可以通過將所提議的標(biāo)識符和與事件相關(guān)聯(lián)的初始的標(biāo)識符進(jìn)行比較,而知道所提議的可視化是否是與事件相關(guān)聯(lián)地生成的。
在另一個實現(xiàn)中,當(dāng)將更新傳送至客戶端應(yīng)用102時,可以由服務(wù)112來提供對與所提議的可視化有關(guān)的事件的描述。接著,客戶端應(yīng)用102可以將由服務(wù)112所提供的描述和對與初始的可視化相關(guān)聯(lián)的事件的描述進(jìn)行比較,來確定事件是否是相同的事件。如果是相同的事件,則可以認(rèn)為所提議的可視化考慮事件。
圖3示出了在操作場景100的上下文中由服務(wù)112所采用的、但更加一般性地可以在其它場景的上下文中實現(xiàn)的更新過程300。在操作中,服務(wù)112從客戶端應(yīng)用中接收指示用戶交互的報告和關(guān)聯(lián)標(biāo)識符(步驟301)??梢杂煽蛻舳藨?yīng)用與響應(yīng)于用戶交互而在用戶界面中顯現(xiàn)的初始的可視化相關(guān)聯(lián)地生成關(guān)聯(lián)標(biāo)識符。
接著,服務(wù)112識別用于響應(yīng)于用戶交互而顯現(xiàn)的針對至少一個或多個客戶端應(yīng)用的所提議的可視化(303)。服務(wù)112還生成用于與所提議的可視化相關(guān)聯(lián)的關(guān)聯(lián)標(biāo)識符。該關(guān)聯(lián)標(biāo)識符可以是基于與對用戶交互的報告一起接收的關(guān)聯(lián)標(biāo)識符而生成的。
接著,服務(wù)112將包括所提議的可視化及其相關(guān)聯(lián)的標(biāo)識符的更新傳送至一個或多個客戶端應(yīng)用(步驟305)。從接收更新的多個客戶端應(yīng)用中的任何特定的一個客戶端應(yīng)用的角度而言,所提議的可視化可以或可以沒有考慮由特定的客戶端應(yīng)用所報告的事件。如在上文中所討論的,可以基于對所提議的標(biāo)識符的分析來確定所提議的可視化是否考慮了事件。
總而言之,分別在客戶端應(yīng)用和服務(wù)上運行的更新過程200和更新過程300可以一同作用以將所提議的可視化與關(guān)于客戶端應(yīng)用而在本地發(fā)生的事件相關(guān)聯(lián)。將所提議的可視化與事件相關(guān)聯(lián)允許客戶端應(yīng)用將響應(yīng)于事件而初始地顯現(xiàn)的可視化持續(xù),而不是以可能與事件不相關(guān)聯(lián)的所提議的可視化來代替所述可視化。這增強了用戶界面的一致性,這是由于通過將初始的可視化持續(xù)而避免了或者至少減輕了用戶界面中的對象狀態(tài)間的轉(zhuǎn)變或閃爍。
圖4示出了實現(xiàn)中的另一個操作場景400。操作場景400涉及客戶端設(shè)備401、客戶端設(shè)備411、以及數(shù)據(jù)中心421??蛻舳藨?yīng)用402在客戶端設(shè)備401上運行、客戶端應(yīng)用412在客戶端設(shè)備411上運行、而服務(wù)422托管在數(shù)據(jù)中心421中。客戶端應(yīng)用402和客戶端應(yīng)用412通過通信網(wǎng)絡(luò)410與服務(wù)422進(jìn)行通信。
客戶設(shè)備401代表能夠執(zhí)行客戶端應(yīng)用402并通過通信網(wǎng)絡(luò)410進(jìn)行通信以允許客戶端應(yīng)用402與服務(wù)422進(jìn)行交互的任何物理的或虛擬的計算設(shè)備??蛻舳嗽O(shè)備401的示例包括但不限于:智能電話、平板計算機、膝上型計算機、臺式計算機、跨類別混合式計算機、和虛擬機、及其變型或組合。如在圖9中所示的,計算系統(tǒng)900代表一個這樣的計算設(shè)備。
客戶端應(yīng)用402代表能夠在客戶端設(shè)備401上運行并通過通信網(wǎng)絡(luò)410與服務(wù)422進(jìn)行通信的任何軟件應(yīng)用、模塊、組件、或其集合??蛻舳藨?yīng)用402還能夠?qū)崿F(xiàn)在圖5中所示出的更新過程500??蛻舳藨?yīng)用402的示例包括但不限于:電子郵件應(yīng)用、日歷應(yīng)用、統(tǒng)一通信應(yīng)用、社交網(wǎng)絡(luò)應(yīng)用、電子商務(wù)應(yīng)用、生產(chǎn)力應(yīng)用、反病毒應(yīng)用、和游戲應(yīng)用、以及任何其它類型的應(yīng)用??蛻舳藨?yīng)用402可以被集成在另一個應(yīng)用中或者可以在由另一個應(yīng)用(例如,瀏覽器應(yīng)用)所提供的執(zhí)行環(huán)境內(nèi)運行。然而,在一些場景中,客戶端應(yīng)用402還可以是本地安裝并執(zhí)行的獨立的應(yīng)用。
客戶端設(shè)備411代表能夠執(zhí)行客戶端應(yīng)用412并且能夠通過通信網(wǎng)絡(luò)410進(jìn)行通信以允許客戶端應(yīng)用412與服務(wù)422進(jìn)行交互的物理的或虛擬的計算設(shè)備??蛻舳嗽O(shè)備411的示例包括但不限于:智能電話、平板計算機、膝上型計算機、臺式計算機、跨類別混合式計算機、和虛擬機、及其變型或組合。如在圖9中所示出的計算系統(tǒng)900代表一個這樣的計算設(shè)備。
客戶端應(yīng)用412代表能夠在客戶端設(shè)備411上運行并通過通信網(wǎng)絡(luò)410與服務(wù)422進(jìn)行通信的任何軟件應(yīng)用、模塊、組件、或其集合??蛻舳藨?yīng)用412還能夠?qū)崿F(xiàn)在圖5中所示出的更新過程500??蛻舳藨?yīng)用412的示例包括但不限于:電子郵件應(yīng)用、日歷應(yīng)用、統(tǒng)一通信應(yīng)用、社交網(wǎng)絡(luò)應(yīng)用、電子商務(wù)應(yīng)用、生產(chǎn)力應(yīng)用、反病毒應(yīng)用、和游戲應(yīng)用、以及任何其它類型的應(yīng)用??蛻舳藨?yīng)用412可以被集成在另一個應(yīng)用中或者可以在由另一個應(yīng)用(例如,瀏覽器應(yīng)用)所提供的執(zhí)行環(huán)境內(nèi)運行。然而,在一些場景中,客戶端應(yīng)用412還可以是本地安裝并執(zhí)行的獨立的應(yīng)用。
數(shù)據(jù)中心421代表能夠托管服務(wù)422的計算設(shè)備的任何集合。數(shù)據(jù)中心421可以代表物理數(shù)據(jù)中心、虛擬數(shù)據(jù)中心、單個數(shù)據(jù)中心、多個數(shù)據(jù)中心、或其任何組合或變型。服務(wù)422代表在軟件中實現(xiàn)并且可以在數(shù)據(jù)中心421中托管的任何服務(wù)。服務(wù)422的示例包括但不限于:電子郵件服務(wù)、日歷服務(wù)、統(tǒng)一通信服務(wù)、社交網(wǎng)絡(luò)服務(wù)、電子商務(wù)服務(wù)、生產(chǎn)力服務(wù)、反病毒服務(wù)、和游戲服務(wù)、以及任何其它合適的服務(wù)。
在操作場景400中,客戶端應(yīng)用402和412兩者都根據(jù)操作報告范例而與服務(wù)422進(jìn)行交互。即,當(dāng)在由客戶端應(yīng)用402和412所渲染的用戶界面中發(fā)生用戶交互時,客戶端應(yīng)用402和412將用戶交互報告至服務(wù)422,而不傳送用戶交互所涉及的新的版本的對象。根據(jù)這樣的范例,服務(wù)422對報告進(jìn)行處理,以確定可以如何修改對象來反映用戶交互。服務(wù)422將用戶交互更新傳送至客戶端應(yīng)用402和412,利用所述更新,應(yīng)用可以刷新其用戶界面。然而,客戶端應(yīng)用402和412不是總接受并顯現(xiàn)由服務(wù)422所提供的對象修改或修正,這是因為一些更新可能與針對每個應(yīng)用的本地體驗不一致。相反,客戶端應(yīng)用402和412兩者都采用更新過程500來增強關(guān)于由服務(wù)422所提供的用戶界面更新的用戶體驗的一致性。
參考圖5,客戶端應(yīng)用(例如,客戶端應(yīng)用402或客戶端應(yīng)用412)響應(yīng)于用戶交互而顯現(xiàn)對用戶界面中的對象的初始修改(步驟510)。用戶交互可以直接地或間接地涉及對象。初始修改是由客戶端應(yīng)用在不咨詢服務(wù)422的情況下在本地確定的響應(yīng)??蛻舳藨?yīng)用生成用于與初始修改相關(guān)聯(lián)的初始的關(guān)聯(lián)標(biāo)識符,并且將用戶交互與初始的關(guān)聯(lián)標(biāo)識符相關(guān)聯(lián)地報告至服務(wù)422(步驟503)。
通常而言,服務(wù)422從各種客戶端應(yīng)用中接收報告,所述報告對關(guān)于多個用戶界面而發(fā)生的各種用戶交互進(jìn)行報告。如在上文中所提及的,當(dāng)接收到所述報告時,服務(wù)422對其進(jìn)行處理以確定如何最佳地渲染用戶界面來反映用戶交互。接著,服務(wù)422將更新傳送至客戶端應(yīng)用,客戶端應(yīng)用利用該更新來更新其相應(yīng)的用戶界面。
從而,客戶端應(yīng)用可以從服務(wù)422中接收更新(步驟505),所述更新包括對其用戶界面的所提議的修改,以及與所提議的修改相關(guān)聯(lián)地發(fā)送的所提議的關(guān)聯(lián)標(biāo)識符。然而,有可能所提議的修改不是響應(yīng)于由該具體的客戶端應(yīng)用所報告的任何用戶交互而由服務(wù)422所生成的。相反,可以已經(jīng)響應(yīng)于由一些其他客戶端所報告的一些其他用戶交互而識別出所提議的修改。
為了避免或減輕客戶端應(yīng)用顯現(xiàn)與本地用戶體驗不一致的所提議的修改的情況,客戶端應(yīng)用將在更新中所接收到的所提議的關(guān)聯(lián)標(biāo)識符和與在用戶界面中目前或者最近顯現(xiàn)的初始的可視化相關(guān)聯(lián)的初始的關(guān)聯(lián)標(biāo)識符進(jìn)行比較(步驟507)。接著,客戶端應(yīng)用確定所提議的修改是否考慮已經(jīng)報告了的用戶交互(步驟509),所述用戶交互可以是與目前顯現(xiàn)的初始修改相關(guān)聯(lián)的相同的用戶交互。至少部分地基于初始的關(guān)聯(lián)標(biāo)識符與所提議的關(guān)聯(lián)標(biāo)識符的比較來進(jìn)行這樣的確定。如果所提議的修改是響應(yīng)于與該初始的修改相關(guān)聯(lián)的用戶交互而進(jìn)行的,則所提議的關(guān)聯(lián)標(biāo)識符將關(guān)于該初始的關(guān)聯(lián)標(biāo)識符比較從優(yōu)。如果所提議的修改是響應(yīng)于一些其他用戶交互而進(jìn)行的,則所提議的修改將關(guān)于所述初始的關(guān)聯(lián)標(biāo)識符比較不從優(yōu)。
如果所提議的修改考慮用戶交互,則客戶端應(yīng)用顯現(xiàn)所提議的修改(步驟511)。如果所提議的修改沒有考慮用戶交互,則持續(xù)初始的修改(步驟513)。
圖6A示出了操作序列601,所述操作序列601代表在其中采用增強的更新的實現(xiàn)中可以出現(xiàn)的消息流。在圖6A、6B、7A、和7B、以及相關(guān)聯(lián)的討論中,各種消息是在服務(wù)422與客戶端應(yīng)用402和客戶端應(yīng)用412之間傳送的。盡管消息中的一些消息是在客戶端應(yīng)用402或客戶端應(yīng)用412中的僅一個與服務(wù)422之間傳送的,但應(yīng)當(dāng)理解的是,相同的消息可以被傳送至客戶端應(yīng)用402和客戶端應(yīng)用412兩者。例如,在修改是由服務(wù)422傳送至客戶端應(yīng)用402的情況下,相同的修改也可以被傳送至客戶端應(yīng)用412,反之亦然。
參考圖6A,在操作序列601中,操作是在由客戶端應(yīng)用412所渲染的用戶界面中發(fā)生的。例如,操作可以是與用戶界面中的對象的用戶交互??蛻舳藨?yīng)用412響應(yīng)于操作而修改對象。另外,客戶端應(yīng)用412將操作和與該操作相關(guān)聯(lián)的標(biāo)識符“x”一起報告至服務(wù)422。
服務(wù)422從客戶端應(yīng)用412接收操作,并且識別用于對操作所涉及的對象進(jìn)行的修改。服務(wù)422還生成標(biāo)識符“dx”,該標(biāo)識符dx是根據(jù)與操作一起從客戶端應(yīng)用412所接收的初始的標(biāo)識符而得出的。將修改和標(biāo)識符dx傳送至客戶端應(yīng)用402以便于客戶端應(yīng)用402在其自己的用戶界面中對相同的對象進(jìn)行相同的修改。
然而,在操作序列601中,已經(jīng)在由客戶端應(yīng)用402所渲染的用戶界面中發(fā)生了操作和對應(yīng)的修改。另外,在客戶端應(yīng)用402接收到修改和相關(guān)聯(lián)的標(biāo)識符dx之前,已經(jīng)由客戶端應(yīng)用402報告了該操作和修改對(其中該修改與標(biāo)識符“y”相關(guān)聯(lián))??蛻舳藨?yīng)用402處理來自服務(wù)422的更新以確定是否顯現(xiàn)與標(biāo)識符dx相關(guān)聯(lián)的修改。然而,標(biāo)識符y與標(biāo)識符dx的比較通知客戶端應(yīng)用402由服務(wù)422所提供的修改沒有考慮在本地發(fā)生的關(guān)于客戶端應(yīng)用402的并且被給予標(biāo)識符y的操作。
繼續(xù)序列,由客戶端應(yīng)用402接收與標(biāo)識符y相關(guān)聯(lián)地由服務(wù)422來報告的操作。服務(wù)422響應(yīng)于所報告的操作而識別修改,并且生成標(biāo)識符“dxdy”,該標(biāo)識符是從標(biāo)識符y得出的,但考慮到當(dāng)生成修改時也考慮到了由客戶端應(yīng)用412所報告的初始的操作,因此該標(biāo)識符也是從標(biāo)識符x得出的。將修改和相關(guān)聯(lián)的標(biāo)識符dxdy傳送至客戶端應(yīng)用402。
客戶端應(yīng)用402再一次接收修改和相關(guān)聯(lián)的標(biāo)識符dxdy,并且將標(biāo)識符dxdy與標(biāo)識符y進(jìn)行比較以確定是否顯現(xiàn)該修改。在該情況下,該比較得出對修改實際上考慮與標(biāo)識符y相關(guān)聯(lián)的操作的確定,并且從而客戶端應(yīng)用402顯現(xiàn)該修改。
在顯現(xiàn)了修改之后,關(guān)于客戶端應(yīng)用而在本地發(fā)生另一個操作??蛻舳藨?yīng)用412將該操作與另一個標(biāo)識符“z”相關(guān)聯(lián)地報告至服務(wù)422。服務(wù)422生成更新,所述更新包括新的修改以及表示考慮最近由客戶端應(yīng)用402和客戶端應(yīng)用412所報告的全部三個操作標(biāo)識符“dxdydz”。將修改和標(biāo)識符dxdydz傳送至客戶端應(yīng)用402,該客戶端應(yīng)用402顯現(xiàn)該修改,這是因為該修改考慮之前所報告的與標(biāo)識符y相關(guān)聯(lián)的操作。
圖6B示出了另一個操作序列603,所述操作序列603代表在在其中采用增強的更新的實現(xiàn)中可以出現(xiàn)的消息流。特別地,操作序列603展示了這樣增強的更新可以改進(jìn)用戶體驗,所述改進(jìn)是通過當(dāng)由服務(wù)提供的所提議的更新沒有考慮到可以在由客戶端將上一次本地更新報告至服務(wù)之后已經(jīng)發(fā)生的隨后的本地更新時,抑制該所提議的更新來實現(xiàn)的。
例如,即使服務(wù)可以提供具有考慮由客戶端對用戶界面進(jìn)行的初始修改的所提議的修改的更新,但同時可以已經(jīng)由相同的客戶端進(jìn)行了所提議的修改所沒有考慮到的另一個初始的修改。因此,即使由與實現(xiàn)第一初始修改的相同的客戶端顯現(xiàn)第二初始的修改,也可以抑制所提議的修改,正如該所提議的修改沒有考慮到第一初始的修改。例如當(dāng)客戶端先于服務(wù)很多而進(jìn)行操作并且服務(wù)還沒有趕上客戶端的狀態(tài)時,可以出現(xiàn)這樣的情況。
在操作序列603中,在由客戶端應(yīng)用402所渲染的用戶界面中發(fā)生操作。例如,操作可以是與用戶界面中的對象的用戶交互??蛻舳藨?yīng)用402響應(yīng)于操作而修改對象。另外,客戶端應(yīng)用402將操作和與操作相關(guān)聯(lián)的標(biāo)識符“x”一起報告至服務(wù)422。
服務(wù)422從客戶端應(yīng)用402中接收操作,并且識別用于對操作所涉及的對象進(jìn)行的修改。服務(wù)422還生成標(biāo)識符“dx”,其是根據(jù)與操作一起從客戶端應(yīng)用402所接收的初始的標(biāo)識符而得出的。將修改和標(biāo)識符dx傳送至客戶端應(yīng)用402以便于客戶端應(yīng)用402更新其用戶界面。應(yīng)當(dāng)理解的是,由服務(wù)422所提議的更新可以與已經(jīng)由客戶端應(yīng)用402所顯現(xiàn)的修改不同,這是因為服務(wù)422能夠考慮在用戶界面的其它實例中發(fā)生的其它操作,所述其它操作可以影響將如何顯示對服務(wù)422的用戶界面的給定對象或其它方面。
然而,在操作序列603中,已經(jīng)在由客戶端應(yīng)用402所渲染的用戶界面中發(fā)生了另一個操作和另一個對應(yīng)的修改。另外,在客戶端應(yīng)用402接收到修改和相關(guān)聯(lián)的標(biāo)識符dx之前,由客戶端應(yīng)用402報告了該操作和該修改對(其中該修改與標(biāo)識符“y”相關(guān)聯(lián))??蛻舳藨?yīng)用402處理來自服務(wù)422的更新以確定是否顯現(xiàn)與標(biāo)識符dx相關(guān)聯(lián)的修改。然而,標(biāo)識符y與標(biāo)識符dx的比較通知客戶端應(yīng)用402:由服務(wù)422所提供的修改沒有考慮在本地發(fā)生的關(guān)于客戶端應(yīng)用402的并且被給予標(biāo)識符y的操作。
繼續(xù)序列,由服務(wù)422接收由客戶端應(yīng)用402而與標(biāo)識符y相關(guān)聯(lián)地報告的操作。服務(wù)422響應(yīng)于所報告的操作而識別修改,并且生成標(biāo)識符“dxdy”,該標(biāo)識符“dxdy”是從標(biāo)識符y得出的,但考慮到當(dāng)生成修改時也考慮到了由客戶端應(yīng)用412所報告的初始的操作,因此該標(biāo)識符也是從標(biāo)識符x得出的。將修改和相關(guān)聯(lián)的標(biāo)識符dxdy傳送至客戶端應(yīng)用402。
客戶端應(yīng)用402再一次接收修改和相關(guān)聯(lián)的標(biāo)識符dxdy,并且將標(biāo)識符dxdy與標(biāo)識符y進(jìn)行比較以確定是否顯現(xiàn)該修改。在該情況下,該比較得出對修改實際上考慮與標(biāo)識符y相關(guān)聯(lián)的操作的確定,并且從而客戶端應(yīng)用402顯現(xiàn)修改。
圖8示出了操作場景800,該操作場景800展示了關(guān)于針對服務(wù)的兩個不同的用戶界面的增強的更新的實現(xiàn)。在操作中,客戶端應(yīng)用402渲染由用戶界面803所表示的針對服務(wù)422的用戶界面。在該示例中,用戶界面803代表針對社交網(wǎng)絡(luò)服務(wù)的用戶界面,并且包括照片805和允許用戶指示他們對照片805點贊的界面元素807。在該操作場景中,服務(wù)422代表社交網(wǎng)絡(luò)服務(wù)。操作場景800還涉及由客戶端應(yīng)用412所提供的針對服務(wù)422的用戶界面813。用戶界面813包括由照片815所表示的一版的相同的照片,以及允許用戶對照片815點贊的界面元素817。
在操作場景800中示出了用戶界面803和用戶界面813的各種狀態(tài)以展示如在本文中所描述的增強的更新可以如何有益于用戶體驗。在操作中,關(guān)于用戶界面803而發(fā)生用戶交互821。在該示例中,用戶交互821是觸摸、點擊、手勢、或者關(guān)于界面元素807進(jìn)行以指示用戶對照片805點贊的一些其它輸入。
除了在用戶界面803中發(fā)生的用戶交互821之外,關(guān)于由客戶端應(yīng)用412所渲染的用戶界面813還發(fā)生類似的用戶交互822。用戶交互822是觸摸、點擊、手勢、或者關(guān)于界面元素817進(jìn)行以指示用戶(可能和與用戶界面803進(jìn)行交互的用戶相同或不同)對照片815點贊的一些其它輸入。
應(yīng)當(dāng)理解的是,照片815和照片805僅僅是由服務(wù)422所托管的相同的基礎(chǔ)照片的本地版本。因此,兩個用戶交互可以使得被表示為對照片點贊的人數(shù)增加二。然而,如果采用經(jīng)典的界面,則可能關(guān)于用戶中的至少一個用戶而產(chǎn)生不一致的用戶體驗。例如,用戶交互821以及用戶交互822將被報告至服務(wù)422。在一個場景中,服務(wù)422會將贊的數(shù)量從“100”增加至“102”,并且會提供針對用戶界面803和813兩者的更新,該更新具有對界面元素807和817的修改以顯現(xiàn)數(shù)字“102”來代替數(shù)字“100。這樣的結(jié)果會提供不一致的用戶體驗,這是因為用戶中的至少一個會期望他們的用戶交互將計數(shù)增加至“101”。
為了避免或減輕這樣不一致的用戶體驗,可以采用增強的更新。從而,客戶端應(yīng)用412在由客戶端應(yīng)用402報告任何用戶交互821之前,將用戶交互822報告至服務(wù)422??蛻舳藨?yīng)用412將標(biāo)識符“x”與更新相關(guān)聯(lián)。同時,客戶端應(yīng)用402已經(jīng)對界面元素807進(jìn)行了初始修改,以將與照片805相關(guān)聯(lián)的計數(shù)從“100”增加至“101”??蛻舳藨?yīng)用412也已經(jīng)根據(jù)其用戶將會期望看到的而對界面元素817進(jìn)行了初始修改,以將贊的數(shù)量從“100”增加至“101”。
最終由服務(wù)422成功地接收到由客戶端應(yīng)用402和客戶端應(yīng)用412兩者所傳送的更新。一個更新反映用戶交互821和相關(guān)聯(lián)的標(biāo)識符“y”,而另一個更新反映用戶交互822和相關(guān)聯(lián)的標(biāo)識符x。在該場景中,出于示例性的目的而假設(shè)對用戶交互821的處理相對于對用戶交互822的處理而延遲。
響應(yīng)于用戶交互822,服務(wù)422響應(yīng)性地生成指示經(jīng)識別的所提議的修改的更新,并且將該更新與標(biāo)識符“dy”一起傳送至客戶端應(yīng)用402。客戶端應(yīng)用402接收該更新,并且基于標(biāo)識符dy與標(biāo)識符x之間的比較來確定是否顯現(xiàn)所提議的修改,所述標(biāo)識符x是與其本地驅(qū)動的對界面元素807的修改相關(guān)聯(lián)的標(biāo)識符??蛻舳藨?yīng)用402基于所述比較而確定修改沒有考慮用戶交互821,該用戶交互821具有沒有反映標(biāo)識符dy或者以其它方式包含在標(biāo)識符dy中的標(biāo)識符x。從而,將初始修改保留在用戶界面803中,并且丟棄所提議的修改。與照片805相關(guān)聯(lián)的“贊”的數(shù)量維持在“101”,這是與用戶界面803進(jìn)行交互的用戶所期望看到的。
最終由服務(wù)422來處理用戶交互821,并且識別所提議的修改。另外,與所提議的修改相關(guān)聯(lián)地生成標(biāo)識符“dxdy”,所述標(biāo)識符dxdy反映當(dāng)?shù)贸鏊嶙h的修改時,考慮到了用戶交互821和用戶交互822兩者。將包括所提議的修改和標(biāo)識符dxdy的新的更新傳送至客戶端應(yīng)用402和客戶端應(yīng)用412兩者。由客戶端應(yīng)用402和客戶端應(yīng)用412兩者接受反映針對照片的“贊”的數(shù)量增加至102的所提議的更新,這是因為其相關(guān)聯(lián)的標(biāo)識符dxdy反映在對修改進(jìn)行識別的過程中,對用戶交互821和用戶交互822兩者進(jìn)行考慮。因此,所提議的修改由客戶端應(yīng)用402在用戶界面803中顯現(xiàn),以及由客戶端應(yīng)用412在用戶界面813中顯現(xiàn)。在已經(jīng)被移動至“101”之后,與照片805相關(guān)聯(lián)的贊的數(shù)量也被表示為“102”,這與用戶的期望一致。
圖9示出了計算系統(tǒng)900的兩個實現(xiàn),其可以作為如關(guān)于在圖1和圖4中所示出的應(yīng)用平臺、服務(wù)平臺、客戶端設(shè)備、和數(shù)據(jù)中心所討論的客戶端應(yīng)用和服務(wù)中的任意一個或兩者而合適地被采用。在實現(xiàn)921中,計算系統(tǒng)900被配置有客戶端應(yīng)用910,并且代表應(yīng)用平臺101、客戶端設(shè)備401、以及客戶端設(shè)備411。客戶端應(yīng)用910代表客戶端應(yīng)用102、客戶端應(yīng)用402、客戶端應(yīng)用412。在實現(xiàn)922中,計算系統(tǒng)900被配置有服務(wù)911,并且代表服務(wù)平臺111以及適用于數(shù)據(jù)中心421的任何計算系統(tǒng)。服務(wù)911代表服務(wù)112和服務(wù)422。
計算系統(tǒng)900的示例包括但不限于:臺式計算機、膝上型計算機、平板計算機、筆記本計算機、移動計算設(shè)備、智能電話、蜂窩電話、媒體設(shè)備、電視機、和游戲設(shè)備、以及能夠?qū)崿F(xiàn)客戶端應(yīng)用910的任何其它類型的物理或虛擬計算機器。計算系統(tǒng)900的示例還包括:服務(wù)器計算機、機架式服務(wù)器、網(wǎng)絡(luò)服務(wù)器、云計算平臺、和數(shù)據(jù)中心設(shè)備、以及任何其他類型的物理或虛擬服務(wù)器機器、及其任何變型或組合。在一些實現(xiàn)中,可以采用多個計算系統(tǒng)的集合來實現(xiàn)服務(wù)911的全部或部分,所述服務(wù)911可以托管在一個或多個數(shù)據(jù)中心、虛擬數(shù)據(jù)中心、或任何其它合適的計算設(shè)施中。
計算系統(tǒng)900還可以被實現(xiàn)為單個裝置、系統(tǒng)、或設(shè)備,或者可以以分布式方式被實現(xiàn)為多個裝置、系統(tǒng)、或設(shè)備。計算系統(tǒng)900包括但不限于:處理系統(tǒng)901、存儲系統(tǒng)903、軟件905、通信接口系統(tǒng)907、以及用戶接口系統(tǒng)909。處理系統(tǒng)901可操作地與存儲系統(tǒng)903、通信接口系統(tǒng)907、以及用戶接口系統(tǒng)909相耦合。在一些實現(xiàn)中,用戶接口系統(tǒng)909是可選的。處理系統(tǒng)903裝載并執(zhí)行來自存儲系統(tǒng)903的軟件905。
在實現(xiàn)921中,當(dāng)由處理系統(tǒng)901執(zhí)行時,軟件905引導(dǎo)處理系統(tǒng)901如在本文中針對任何客戶端應(yīng)用所描述的那樣操作。在實現(xiàn)922中,當(dāng)由處理系統(tǒng)901執(zhí)行時,軟件905引導(dǎo)處理系統(tǒng)901如在本文中針對任何服務(wù)所描述的那樣操作。計算系統(tǒng)900可以可選地包括出于簡潔的目的而沒有被討論的額外的設(shè)備、特征、或功能。
仍然參考圖9,處理系統(tǒng)901可以包括取回并執(zhí)行來自存儲系統(tǒng)903的軟件905的微處理器以及其它電路。處理系統(tǒng)901可以被實現(xiàn)在單個處理設(shè)備內(nèi),但也可以跨多個處理設(shè)備或子系統(tǒng)而分布。處理系統(tǒng)901的示例包括通用中央處理單元、專用處理器、和邏輯設(shè)備、以及任何其他類型的處理設(shè)備、其組合或變型。
存儲系統(tǒng)903可以包括可以由處理系統(tǒng)901讀取并且能夠存儲軟件905的任何計算機可讀存儲介質(zhì)。存儲系統(tǒng)903可以包括以用于存儲信息(例如,計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其它數(shù)據(jù))的任何方法或技術(shù)實現(xiàn)的易失性的和非易失性的、可移動的和不可移動的介質(zhì)。存儲介質(zhì)的示例包括隨機存取存儲器、只讀存儲器、磁盤、光盤、閃速存儲器、虛擬存儲器和非虛擬存儲器、盒式磁帶、磁帶、磁盤存儲或其它磁存儲設(shè)備、或者任何其它合適的存儲介質(zhì)。在任何情況下,計算機可讀存儲介質(zhì)都不是傳播信號。
除了計算機可讀存儲介質(zhì)之外,在一些實現(xiàn)中,存儲系統(tǒng)903還可以包括通過其軟件905可以在內(nèi)部或向外部進(jìn)行通信的計算機可讀通信介質(zhì)。存儲系統(tǒng)903可以被實現(xiàn)為單個存儲設(shè)備,但可以跨位于同一位置或彼此相對地分布的多個存儲設(shè)備或子系統(tǒng)來實現(xiàn)。存儲系統(tǒng)903可以包括額外的元件,例如能夠與處理系統(tǒng)901或可能的其它系統(tǒng)進(jìn)行通信的控制器。
可以以程序指令以及其他方式來實現(xiàn)軟件905,并且當(dāng)所述軟件905由處理系統(tǒng)901執(zhí)行時,引導(dǎo)處理系統(tǒng)901如在本文中關(guān)于在本文中所公開的各種操作場景那樣操作。特別地,程序指令可以包括進(jìn)行協(xié)作或以其它方式進(jìn)行交互以實行在本文中所描述的各種處理和操作場景的各種組件或模塊。可以以經(jīng)編譯或經(jīng)解譯的指令或者以指令的一些其它變型或組合來實施各種組件或模塊。可以以同步或非同步的方式、順序地或并行地、在單線程的環(huán)境中或在多線程的環(huán)境中、或者根據(jù)任何其它合適的執(zhí)行范例、其變型或組合來執(zhí)行各種組件或模塊。軟件905可以包括額外的過程、程序、或組件,例如操作系統(tǒng)軟件或其它應(yīng)用軟件。軟件905也可以包括固件或者可以由處理系統(tǒng)901執(zhí)行的一些其他形式的機器可讀處理指令。
通常而言,當(dāng)被裝載到處理系統(tǒng)901中并被執(zhí)行時,軟件905可以將合適的裝置、系統(tǒng)、或設(shè)備(其由計算系統(tǒng)900所代表)全部從通用計算系統(tǒng)轉(zhuǎn)換成專用計算系統(tǒng),所述專用計算系統(tǒng)被定制以如在本文中針對每個實現(xiàn)所描述的促進(jìn)增強的用戶界面更新。事實上,將軟件905編碼在存儲系統(tǒng)903上可以轉(zhuǎn)換存儲系統(tǒng)903的物理結(jié)構(gòu)。物理結(jié)構(gòu)的具體的轉(zhuǎn)換可以取決于該說明書的不同的實現(xiàn)中的各種因素。這樣的因素的示例包括但不限于:用于實現(xiàn)存儲系統(tǒng)903的存儲介質(zhì)的技術(shù)和計算機存儲介質(zhì)被表征為主要存儲還是次要存儲,以及其它因素。
例如,如果計算機可讀存儲介質(zhì)被實現(xiàn)為基于半導(dǎo)體的存儲器,則當(dāng)程序指令被編碼在其中時,軟件905可以轉(zhuǎn)換半導(dǎo)體存儲器的物理狀態(tài),例如,通過轉(zhuǎn)換晶體管、電容器、或者構(gòu)成半導(dǎo)體存儲器的其它分立的電路元件的狀態(tài)??梢躁P(guān)于磁或光介質(zhì)而發(fā)生類似的轉(zhuǎn)換。在不脫離本說明的范圍的情況下,物理介質(zhì)的其它轉(zhuǎn)換是可能的,其中,僅僅為了促進(jìn)本討論而提供了前述的示例。
再一次作為示例而參考圖1,通過計算系統(tǒng)900所代表的計算系統(tǒng)或系統(tǒng)的操作,可以關(guān)于針對服務(wù)112的用戶界面103而執(zhí)行轉(zhuǎn)換。作為示例,初始的可視化是在用戶界面103中渲染的。響應(yīng)于更新,用所提議的可視化替代初始的可視化,從而將用戶界面103的狀態(tài)從第一狀態(tài)改變至第二、經(jīng)轉(zhuǎn)換的狀態(tài)。轉(zhuǎn)換的其它示例是可能的并且可以被認(rèn)為在本公開的范圍內(nèi)。
應(yīng)當(dāng)理解的是,計算系統(tǒng)900通常旨在表示其上可以部署并執(zhí)行軟件905以便實現(xiàn)增強的用戶界面更新的計算系統(tǒng)或多個計算系統(tǒng)。然而,計算系統(tǒng)900還可以適合作為可以在其上執(zhí)行軟件905并且可以從中分配、傳輸、下載、或以其它方式將軟件905提供至另一個計算系統(tǒng)以用于部署和執(zhí)行、或額外分配的任意計算系統(tǒng)。
通信接口系統(tǒng)907可以包括支持通過通信網(wǎng)絡(luò)或網(wǎng)絡(luò)的集合(未示出)與其它計算系統(tǒng)(未示出)進(jìn)行通信的通信連接和通信設(shè)備。共同支持系統(tǒng)間通信的連接的示例可以包括:網(wǎng)絡(luò)接口卡、天線、功率放大器、RF電路、收發(fā)機、以及其它通信電路。連接和設(shè)備可以通過通信介質(zhì)來進(jìn)行通信以與其它計算系統(tǒng)或系統(tǒng)的網(wǎng)絡(luò)交換通信,所述通信介質(zhì)例如金屬、玻璃、空氣、或任何合適的通信介質(zhì)。前述的介質(zhì)、連接、和設(shè)備是公知的并且不需要在這里詳細(xì)討論。
計算系統(tǒng)900和任何其它計算系統(tǒng)(未示出)之間的通信可以通過通信網(wǎng)絡(luò)或多個網(wǎng)絡(luò)并且根據(jù)各種通信協(xié)議、協(xié)議的組合、或其變型來進(jìn)行。通過其計算系統(tǒng)900可以與其它計算系統(tǒng)交換信息的通信網(wǎng)絡(luò)的示例包括:內(nèi)聯(lián)網(wǎng)、互聯(lián)網(wǎng)、局域網(wǎng)、廣域網(wǎng)、無線網(wǎng)絡(luò)、有線網(wǎng)絡(luò)、虛擬網(wǎng)絡(luò)、軟件定義的網(wǎng)絡(luò)、數(shù)據(jù)中心總線、計算背板、網(wǎng)絡(luò)、或其任何組合或變型。前述的通信網(wǎng)絡(luò)和協(xié)議是公知的并且不需要在這里詳細(xì)討論。然而,可以使用的一些通信協(xié)議包括但不限于:互聯(lián)網(wǎng)協(xié)議(IP、IPv4、IPv6等)、傳輸控制協(xié)議(TCP)、和用戶數(shù)據(jù)報協(xié)議(UDP)、以及任何其它合適的通信協(xié)議、其變型或組合。在交換信息的前述的示例中的任何一個中,可以根據(jù)多種協(xié)議中的任何一種協(xié)議來進(jìn)行信息的交換,所述多種協(xié)議包括FTP(文件傳輸協(xié)議)、HTTP(超文本傳輸協(xié)議)、REST(表述性狀態(tài)傳輸)、WebSocket、DOM(文檔對象模型)、HTML(超文本標(biāo)記語言)、CSS(層疊樣式表)、HTML5、XML(可擴展標(biāo)記語言)、JavaScript、JSON(JavaScript Object Notation)、和AJAX(非對稱JavaScript和XML)、以及任何其它合適的協(xié)議、變型、或其組合。
用戶接口系統(tǒng)909可以包括:鍵盤、鼠標(biāo)、語音輸入設(shè)備、用于從用戶接收觸摸手勢的觸摸輸入設(shè)備、用于檢測用戶的非觸摸手勢和其它運動的運動輸入設(shè)備、以及能夠從用戶接收用戶輸入的其它可比的輸入設(shè)備。在用戶接口系統(tǒng)909中還可以包括諸如顯示器、揚聲器、觸覺設(shè)備、和其它類型輸出設(shè)備之類的輸出設(shè)備。前述的用戶輸入設(shè)備和輸出設(shè)備是在本領(lǐng)域中公知的并且不需要在這里詳細(xì)討論。
用戶接口系統(tǒng)909還可以包括可以由處理系統(tǒng)901執(zhí)行的、支持在上文中所討論的各種用戶輸入和輸出設(shè)備的相關(guān)聯(lián)的用戶接口軟件。獨立地或彼此并且與硬件元件和軟件元件相結(jié)合地,用戶接口軟件和用戶接口設(shè)備可以支持圖形用戶界面、自然用戶界面、或任何其它類型的用戶界面。例如,可以通過用戶接口系統(tǒng)909來呈現(xiàn)用戶界面103、用戶界面803、或者用戶界面813。另外,可以經(jīng)由用戶界面系統(tǒng)909來輸入關(guān)于用戶界面所進(jìn)行的用戶輸入。
在附圖中所提供的功能塊圖、操作場景和序列、以及流程圖代表用于執(zhí)行本公開的新穎的方面的示例性系統(tǒng)、環(huán)境、和方法。盡管出于簡化說明的目的,在本文中所包括的方法可以是以功能圖、操作場景或序列、或流程圖的形式的,并且可以被描述為一系列操作,但應(yīng)當(dāng)理解和領(lǐng)會的是,所述方法不受操作的順序的限制,這是因為與此對應(yīng),一些操作可以是以與在本文中所示出和描述的其它操作不同的順序和/或同時進(jìn)行的。例如,本領(lǐng)域技術(shù)人員將理解并領(lǐng)會的是,可以可替代地將方法表示為一系列的相關(guān)的狀態(tài)或事件,例如在狀態(tài)圖中。此外,不是在方法中所示出的所有的操作都針對新穎的實現(xiàn)而被需要。
所包括的描述和圖描繪了具體的實現(xiàn)以教導(dǎo)本領(lǐng)域技術(shù)人員如何制作和使用最佳選項。出于教導(dǎo)發(fā)明性原理的目的,已經(jīng)簡化或省略了一些傳統(tǒng)的方面。本領(lǐng)域技術(shù)人員將從落在本發(fā)明的范圍內(nèi)的這些實現(xiàn)中理解變型。本領(lǐng)域技術(shù)人員還將理解的是,可以以各種方法對在上文中所描述的特征進(jìn)行組合以形成多個實現(xiàn)。作為結(jié)果,本發(fā)明不限于在上文中所描述的具體的實現(xiàn),而是僅由權(quán)利要求及其等價物來限制。