亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

數(shù)據(jù)視圖展示機制的制作方法

文檔序號:11851394閱讀:401來源:國知局
數(shù)據(jù)視圖展示機制的制作方法與工藝

計算設(shè)備經(jīng)常顯示多個用戶界面元素以便向用戶提供豐富的用戶體驗。在一個常見的呈現(xiàn)范式中,用視圖(view)模型來填充每個用戶界面元素。視圖模型是一種顯示邏輯組件,其將輸入數(shù)據(jù)轉(zhuǎn)換為適于供顯示該用戶界面元素的用戶界面控件消費的形式。在此范式中,輸入數(shù)據(jù)來自提供底層數(shù)據(jù)集上的視圖的數(shù)據(jù)視圖組件。為了提供該視圖,數(shù)據(jù)視圖組件使用引用(reference)來綁定至底層數(shù)據(jù)集。

底層數(shù)據(jù)集可以是在本地數(shù)據(jù)高速緩存中的數(shù)據(jù)集。本地數(shù)據(jù)高速緩存跟蹤引用計數(shù)。當數(shù)據(jù)集被首次引用時,數(shù)據(jù)高速緩存統(tǒng)一性地開始引用計數(shù)。每當對該數(shù)據(jù)集做出新引用時,該數(shù)據(jù)集的引用計數(shù)遞增。每當對該數(shù)據(jù)集的舊引用被移除時,該數(shù)據(jù)集的引用計數(shù)遞減。如果引用計數(shù)遞減到0,則數(shù)據(jù)高速緩存具有從數(shù)據(jù)高速緩存驅(qū)逐或移除該數(shù)據(jù)集的選項。

本文要求保護的主題不限于解決任何缺點或僅在諸如上述環(huán)境這樣的環(huán)境中操作的各實施例。相反,提供該背景僅用于例示其中可實現(xiàn)所述一些實施例的一個示例性技術(shù)領(lǐng)域。

簡要概述

本文描述的至少一些實施例涉及使用數(shù)據(jù)視圖組件來將數(shù)據(jù)展示給用戶界面元素顯示邏輯組件。該數(shù)據(jù)視圖組件所展示的數(shù)據(jù)來自數(shù)據(jù)高速緩存內(nèi)的數(shù)據(jù)集。數(shù)據(jù)視圖組件由于與數(shù)據(jù)集的綁定而能夠展示該數(shù)據(jù)。

根據(jù)本文描述的第一方面,數(shù)據(jù)視圖組件接收來自用戶界面顯示邏輯組件的訪問數(shù)據(jù)集的至少一部分的請求。作為響應(yīng),數(shù)據(jù)視圖組件請求來自數(shù)據(jù)高速緩存的該數(shù)據(jù)集。在等待來自數(shù)據(jù)高速緩存的被請求數(shù)據(jù)集時,數(shù)據(jù)視圖組件展示默認數(shù)據(jù)集(其可包括空數(shù)據(jù)集)的至少一部分給用戶界面元素顯示邏輯。默認數(shù)據(jù)集將不太可能包含用戶界面顯示邏輯組件感興趣的數(shù)據(jù),但是其將允許用戶界面顯示邏輯組件在等待被請求數(shù)據(jù)的填充的同時使得默認數(shù)據(jù)被顯示。一旦數(shù)據(jù)視圖組件不綁定至被請求數(shù)據(jù)集,被請求數(shù)據(jù)則被展示給用戶界面顯示邏輯組件。

根據(jù)本文描述的第二方面,數(shù)據(jù)視圖組件接收來自用戶界面顯示邏輯組件的訪問不同數(shù)據(jù)集的多個請求。作為對第一請求的響應(yīng),數(shù)據(jù)視圖組件請求來自數(shù)據(jù)高速緩存的第一數(shù)據(jù)集。而且,作為對第二請求的響應(yīng),數(shù)據(jù)視圖組件請求來自數(shù)據(jù)高速緩存的第二數(shù)據(jù)集。響應(yīng)于第二請求,數(shù)據(jù)視圖組件忽略來自第一請求的任何結(jié)果,并且轉(zhuǎn)而在該第二數(shù)據(jù)集在數(shù)據(jù)高速緩存中可用于綁定時綁定至第二數(shù)據(jù)集。

根據(jù)本文描述的第三方面,數(shù)據(jù)視圖組件可響應(yīng)于來自用戶界面元素顯示邏輯組件的請求而改變到數(shù)據(jù)集的綁定。當從用戶界面元素顯示邏輯組件接收到第一請求時,數(shù)據(jù)視圖被綁定至第一數(shù)據(jù)集。然而,當從用戶界面元素顯示邏輯組件接收到第二請求時,數(shù)據(jù)視圖改變綁定至第二數(shù)據(jù)集。

根據(jù)本文描述的第四方面,數(shù)據(jù)視圖組件跟蹤用戶界面元素顯示邏輯組件的生命期。特別而言,當數(shù)據(jù)視圖組件接收到來自用戶界面元素顯示邏輯組件的請求時,數(shù)據(jù)視圖組件還接收來自用戶界面元素顯示邏輯組件的生命期引用對象。響應(yīng)于該請求,數(shù)據(jù)視圖組件綁定至該數(shù)據(jù)集。然而,當用戶界面元素顯示邏輯組件不再存在時,數(shù)據(jù)視圖組件利用擁有生命期引用對象的數(shù)據(jù)視圖組件來接收對此的通知。相應(yīng)地,數(shù)據(jù)視圖組件可適當?shù)蒯尫诺綌?shù)據(jù)集的綁定。

提供本概述以便以簡化的形式介紹將在以下的詳細描述中進一步描述的一些概念。本概述并非旨在標識出要求保護的主題的關(guān)鍵特征或必要特征,亦非旨在用作輔助確定要求保護的主題的范圍。

附圖簡述

為了描述可獲得本發(fā)明的上述和其它優(yōu)點和特征的方式,將通過參考附圖中示出的本發(fā)明的具體實施例來呈現(xiàn)以上簡要描述的本發(fā)明的更具體描述??梢岳斫?,這些附圖只描繪了本發(fā)明的各典型實施例,并且因此不被認為是對其范圍的限制,將通過使用附圖并利用附加特征和細節(jié)來描述和解釋本發(fā)明,在附圖中:

圖1示出了其中可采用本文描述的原理的示例計算系統(tǒng);

圖2示出包括根據(jù)本文描述的原理使用數(shù)據(jù)高速緩存來填充用戶界面元素的數(shù)據(jù)信道的環(huán)境;

圖3示出數(shù)據(jù)視圖組件在等待被請求數(shù)據(jù)時向用戶界面元素顯示邏輯組件展示默認數(shù)據(jù)的方法的流程圖;

圖4示出當存在多個請求時數(shù)據(jù)視圖組件僅展示最晚的被請求數(shù)據(jù)集的方法的流程圖;

圖5示出數(shù)據(jù)視圖組件將綁定從一個數(shù)據(jù)集切換到另一個數(shù)據(jù)集的方法的流程圖;

圖6示出一旦用戶界面元素顯示邏輯組件不再存在時數(shù)據(jù)視圖組件安全地釋放綁定的方法的流程圖;以及

圖7示出作為圖2的具體示例的環(huán)境,但是現(xiàn)在示出由數(shù)據(jù)高速緩存服務(wù)的三個數(shù)據(jù)信道,并且示出多個可用數(shù)據(jù)高速緩存。

詳細描述

本文描述的至少一些實施例涉及使用數(shù)據(jù)視圖組件來將數(shù)據(jù)展示給用戶界面元素顯示邏輯組件。該數(shù)據(jù)視圖組件所展示的數(shù)據(jù)來自數(shù)據(jù)高速緩存內(nèi)的數(shù)據(jù)集。數(shù)據(jù)視圖組件由于與數(shù)據(jù)集的綁定而能夠該數(shù)據(jù)。

根據(jù)本文描述的第一方面,數(shù)據(jù)視圖組件接收來自用戶界面顯示邏輯組件的訪問數(shù)據(jù)集的至少一部分的請求。作為響應(yīng),數(shù)據(jù)視圖組件請求來自數(shù)據(jù)高速緩存的該數(shù)據(jù)集。在等待來自數(shù)據(jù)高速緩存的被請求數(shù)據(jù)集時,數(shù)據(jù)視圖組件展示默認數(shù)據(jù)集(其可以是空數(shù)據(jù)集)的至少一部分給用戶界面元素顯示邏輯。默認數(shù)據(jù)集將不太可能包含用戶界面顯示邏輯組件感興趣的數(shù)據(jù),但是其將允許用戶界面顯示邏輯組件在等待被請求數(shù)據(jù)的填充的同時使得默認數(shù)據(jù)被顯示。一旦數(shù)據(jù)視圖組件不綁定至被請求數(shù)據(jù)集,被請求數(shù)據(jù)則被展示給用戶界面顯示邏輯組件。

根據(jù)本文描述的第二方面,數(shù)據(jù)視圖組件接收來自用戶界面顯示邏輯組件的訪問不同數(shù)據(jù)集的多個請求。作為對第一請求的響應(yīng),數(shù)據(jù)視圖組件請求來自數(shù)據(jù)高速緩存的第一數(shù)據(jù)集。而且,作為對第二請求的響應(yīng),數(shù)據(jù)視圖組件請求來自數(shù)據(jù)高速緩存的第二數(shù)據(jù)集。響應(yīng)于第二請求,數(shù)據(jù)視圖組件忽略來自第一請求的任何結(jié)果,并且轉(zhuǎn)而在該數(shù)據(jù)集在數(shù)據(jù)高速緩存中可用于綁定時綁定至第二數(shù)據(jù)集。

根據(jù)本文描述的第三方面,數(shù)據(jù)視圖組件可響應(yīng)于來自用戶界面元素顯示邏輯組件的請求而改變到數(shù)據(jù)集的綁定。當從用戶界面元素顯示邏輯組件接收到第一請求時,數(shù)據(jù)視圖被綁定至第一數(shù)據(jù)集。然而,當從用戶界面元素顯示邏輯組件接收到第二請求時,數(shù)據(jù)視圖改變綁定至第二數(shù)據(jù)集。

根據(jù)本文描述的第四方面,數(shù)據(jù)視圖組件跟蹤用戶界面元素顯示邏輯組件的生命期。特別而言,當數(shù)據(jù)視圖組件接收到來自用戶界面元素顯示邏輯組件的請求時,數(shù)據(jù)視圖組件還接收來自用戶界面元素顯示邏輯組件的生命期引用對象。響應(yīng)于該請求,數(shù)據(jù)視圖組件綁定至該數(shù)據(jù)集。然而,當用戶界面元素顯示邏輯組件不再存在時,數(shù)據(jù)視圖組件利用擁有生命期引用對象的數(shù)據(jù)視圖組件來接收對此的通知。相應(yīng)地,數(shù)據(jù)視圖組件可適當?shù)蒯尫诺綌?shù)據(jù)集的綁定。

從而,通過展示數(shù)據(jù)集直到被請求數(shù)據(jù)集可用,通過在存在多個請求時僅展示最晚的被請求數(shù)據(jù)集,通過將綁定從一個數(shù)據(jù)集快速切換到另一數(shù)據(jù)集,和/或通過一旦用戶界面元素顯示邏輯組件停止存在則安全釋放綁定,數(shù)據(jù)視圖組件可改善用戶體驗。

將參考圖1描述對計算系統(tǒng)的一些介紹性討論。然后,將參考后續(xù)附圖來描述其他實施例。

計算系統(tǒng)現(xiàn)在越來越多地采取多種多樣的形式。例如,計算系統(tǒng)可以是手持式設(shè)備、電器、膝上型計算機、臺式計算機、大型機、分布式計算系統(tǒng)或甚至常規(guī)上不被認為是計算系統(tǒng)的設(shè)備。在本說明書以及權(quán)利要求書中,術(shù)語“計算系統(tǒng)”被廣義地定義為包括任何設(shè)備或系統(tǒng)(或其組合),該設(shè)備或系統(tǒng)包含至少一個物理且有形的處理器以及其上能具有可由處理器執(zhí)行的計算機可執(zhí)行指令的物理且有形的存儲器。存儲器可以采取任何形式,并可以取決于計算系統(tǒng)的性質(zhì)和形式。計算系統(tǒng)可以分布在網(wǎng)絡(luò)環(huán)境中,并可包括多個組分計算系統(tǒng)。

如圖1所例示,在其最基本的配置中,計算系統(tǒng)100通常包括至少一個處理單元102和存儲器104。存儲器104可以是物理系統(tǒng)存儲器,該物理系統(tǒng)存儲器可以是易失性的、非易失性的、或兩者的某種組合。術(shù)語“存儲器”也可在此用來指示諸如物理存儲介質(zhì)這樣的非易失性大容量存儲器。如果計算系統(tǒng)是分布式的,則處理、存儲器和/或存儲能力也可以是分布式的。如本文中所使用的,術(shù)語“可執(zhí)行模塊”或“可執(zhí)行組件”可指可在計算系統(tǒng)上執(zhí)行的軟件對象、例程或方法。此處所描述的不同組件、模塊、引擎以及服務(wù)可以實現(xiàn)為在計算系統(tǒng)上執(zhí)行的對象或進程(例如,作為分開的線程)。

在隨后的描述中,參考由一個或多個計算系統(tǒng)執(zhí)行的動作描述了各實施例。如果這樣的動作是以軟件實現(xiàn)的,則執(zhí)行動作的相關(guān)聯(lián)計算系統(tǒng)的一個或多個處理器響應(yīng)于已經(jīng)執(zhí)行了計算機可執(zhí)行指令來引導計算系統(tǒng)的操作。例如,這樣的計算機可執(zhí)行指令可以在形成計算機程序產(chǎn)品的一個或多個計算機可讀介質(zhì)上實現(xiàn)。這樣的操作的示例涉及對數(shù)據(jù)的操縱。計算機可執(zhí)行指令(以及被操縱的數(shù)據(jù))可以存儲在計算系統(tǒng)100的存儲器104中。計算系統(tǒng)100還可包含允許計算系統(tǒng)100例如通過網(wǎng)絡(luò)110與其他消息處理器通信的通信信道108。計算系統(tǒng)100還可包括可用于顯示諸如本文所描述的用戶界面之類的各用戶界面的顯示器112。

本文中描述的各實施例可包括或利用專用或通用計算機,該專用或通用計算機包括諸如例如一個或多個處理器和系統(tǒng)存儲器等計算機硬件,如以下更詳細討論的。本文中描述的各實施例還包括用于承載或存儲計算機可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理和其他計算機可讀介質(zhì)。這樣的計算機可讀介質(zhì)可以是可由通用或?qū)S糜嬎銠C系統(tǒng)訪問的任何可用介質(zhì)。存儲計算機可執(zhí)行指令的計算機可讀介質(zhì)是物理存儲介質(zhì)。承載計算機可執(zhí)行指令的計算機可讀介質(zhì)是傳輸介質(zhì)。由此,作為示例而非限制,本發(fā)明的各實施例可包括至少兩種顯著不同的計算機可讀介質(zhì):計算機存儲介質(zhì)和傳輸介質(zhì)。

計算機存儲介質(zhì)包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲、磁盤存儲或其他磁存儲設(shè)備、或者可用于存儲以計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的形式的期望程序代碼手段且可由通用或?qū)S糜嬎銠C訪問的任何其他有形介質(zhì)。

“網(wǎng)絡(luò)”被定義為使得電子數(shù)據(jù)能夠在計算機系統(tǒng)和/或模塊和/或其它電子設(shè)備之間傳輸?shù)囊粋€或多個數(shù)據(jù)鏈路。當信息通過網(wǎng)絡(luò)或另一個通信連接(硬連線、無線、或者硬連線或無線的組合)傳輸或提供給計算機時,該計算機將該連接適當?shù)匾暈閭鬏斀橘|(zhì)。傳輸介質(zhì)可以包括可用于攜帶計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的期望程序代碼裝置并可被通用或?qū)S糜嬎銠C訪問的網(wǎng)絡(luò)和/或數(shù)據(jù)鏈路。上述的組合應(yīng)當也被包括在計算機可讀介質(zhì)的范圍內(nèi)。

此外,在到達各種計算機系統(tǒng)組件之后,計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的程序代碼資料可從傳輸介質(zhì)自動傳輸?shù)接嬎銠C存儲介質(zhì)(或反之亦然)。例如,通過網(wǎng)絡(luò)或數(shù)據(jù)鏈路接收到的計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)可以在網(wǎng)絡(luò)接口模塊(例如,“NIC”)內(nèi)的RAM中被緩沖,然后最終被傳輸至計算機系統(tǒng)RAM和/或計算機系統(tǒng)處的較不易失性的計算機存儲介質(zhì)。因而,應(yīng)當理解,計算機存儲介質(zhì)可被包括在還利用(或甚至主要利用)傳輸介質(zhì)的計算機系統(tǒng)組件中。

計算機可執(zhí)行指令例如包括,當在處理器處執(zhí)行時使通用計算機、專用計算機、或?qū)S锰幚碓O(shè)備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。計算機可執(zhí)行指令可以是例如二進制代碼、諸如匯編語言之類的中間格式指令、或甚至源代碼。盡管用結(jié)構(gòu)特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述特征或動作。相反,上述特征和動作是作為實現(xiàn)權(quán)利要求的示例形式而公開的。

本領(lǐng)域的技術(shù)人員將理解,本發(fā)明可以在具有許多類型的計算機系統(tǒng)配置的網(wǎng)絡(luò)計算環(huán)境中實踐,這些計算機系統(tǒng)配置包括個人計算機、臺式計算機、膝上型計算機、消息處理器、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程消費電子設(shè)備、網(wǎng)絡(luò)PC、小型計算機、大型計算機、移動電話、PDA、尋呼機、路由器、交換機等等。本發(fā)明也可在其中通過網(wǎng)絡(luò)鏈接(或者通過硬連線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路,或者通過硬連線和無線數(shù)據(jù)鏈路的組合)的本地和遠程計算機系統(tǒng)兩者都執(zhí)行任務(wù)的分布式系統(tǒng)環(huán)境中實施。在分布式系統(tǒng)環(huán)境中,程序模塊可以位于本地和遠程存儲器存儲設(shè)備二者中。

圖2示出了包括數(shù)據(jù)驅(qū)動的用戶界面控件210的環(huán)境200。用戶界面控件210按照數(shù)據(jù)驅(qū)動的方式使用控制輸入數(shù)據(jù)201呈現(xiàn)用戶界面元素。例如,環(huán)境200可以在圖1的計算系統(tǒng)100內(nèi),在該情況下,引起該用戶界面元素被顯示在例如顯示器112上。例如,用戶界面控件210可以是如在模型視圖視圖模型(MVVM)呈現(xiàn)范式中的術(shù)語“視圖”,或作為如在模型-視圖-控制器(MVC)模式中使用的術(shù)語“控制器”。

用戶界面控件210接收來自用戶界面元素顯示邏輯組件211(在后文中也被稱為“顯示邏輯組件”)的控制輸入數(shù)據(jù)201。顯示邏輯組件211接收輸入數(shù)據(jù)202并處理輸入數(shù)據(jù)202來由此生成控制輸入數(shù)據(jù)201。從而,顯示邏輯組件212使用輸入數(shù)據(jù)202來生成控制輸入數(shù)據(jù)201,該控制輸入數(shù)據(jù)具有用于由用戶界面控件210消費的正確形式。業(yè)務(wù)邏輯組件212所執(zhí)行的處理可以如不做改變地把輸入數(shù)據(jù)的全部或部分輸出到其輸出這樣簡單,或者可以非常復雜,或者可以在二者之間某處。顯示邏輯組件211可以是如在MVVM呈現(xiàn)范式中所使用的術(shù)語“視圖模型(viewmodel)”或“視圖模型(view model)”,或者可以是如在MVC模式中使用的術(shù)語“視圖”。

業(yè)務(wù)邏輯組件212執(zhí)行業(yè)務(wù)邏輯并將所得到的業(yè)務(wù)邏輯輸出數(shù)據(jù)(包括輸入數(shù)據(jù)202)饋送到顯示邏輯組件211。出于此描述的目的,由數(shù)據(jù)視圖組件213提供的輸入數(shù)據(jù)202與本文描述的原理最相關(guān)。業(yè)務(wù)邏輯組件212可以是如在MVVM呈現(xiàn)范式中所使用的術(shù)語“模型”或如在MVC模式中所使用的術(shù)語“模型”。

數(shù)據(jù)視圖組件213在業(yè)務(wù)邏輯組件212內(nèi)操作并用于通過向相應(yīng)的顯示邏輯處理組件211向上(例如,以輸入數(shù)據(jù)202的形式)展示該視圖來提供相應(yīng)數(shù)據(jù)集的視圖。數(shù)據(jù)視圖組件213具有到數(shù)據(jù)高速緩存240中的相應(yīng)數(shù)據(jù)集251的引用203。

數(shù)據(jù)高速緩存240保持可被其它對象(諸如數(shù)據(jù)視圖組件)引用的數(shù)據(jù)集集合240。起初,數(shù)據(jù)集集合250可以為空。當被請求的數(shù)據(jù)集當前不在數(shù)據(jù)高速緩存240中時,數(shù)據(jù)加載器260照顧通過網(wǎng)絡(luò)270到適當數(shù)據(jù)源280的通信。

數(shù)據(jù)高速緩存240還維持數(shù)據(jù)集集合250中的每個數(shù)據(jù)集的引用計數(shù),并可能做出關(guān)于數(shù)據(jù)集的驅(qū)逐的決定。例如,數(shù)據(jù)高速緩存240在可能通過網(wǎng)絡(luò)270向存儲設(shè)備(諸如可能是圖2的數(shù)據(jù)源280)提供該數(shù)據(jù)集的最新近的副本之后在不存在對該數(shù)據(jù)集的引用時可能從高速緩存移除數(shù)據(jù)。。

在一個實施例中,用戶界面控件210、顯示邏輯處理組件211和業(yè)務(wù)邏輯組件212可在同一計算系統(tǒng)(并且可能是同一機器)上運行,諸如圖1的計算系統(tǒng)100。而且,數(shù)據(jù)高速緩存240也可存在于該同一計算系統(tǒng)上。

根據(jù)本文描述的各實施例,通過展示默認數(shù)據(jù)集(諸如空數(shù)據(jù)集)直到被請求數(shù)據(jù)集可用,通過在存在多個請求時僅展示最晚的被請求數(shù)據(jù)集,通過將綁定從一個數(shù)據(jù)集快速切換到另一數(shù)據(jù)集,和/或通過一旦用戶界面元素顯示邏輯組件停止存在則安全釋放綁定,數(shù)據(jù)視圖組件可改善用戶體驗。而且,這可在不需要代表應(yīng)用或擴展的創(chuàng)作使用數(shù)據(jù)高速緩存系統(tǒng)的應(yīng)用或應(yīng)用擴展的開發(fā)者進行額外編碼的情況下執(zhí)行。

例如,以下代碼可被應(yīng)用或擴展開發(fā)者用來創(chuàng)建數(shù)據(jù)高速緩存240(為了清楚添加了行號):

此處,在行1中,“EntityCache(實體高速緩存)”為數(shù)據(jù)高速緩存240。

而且,以下表示用于表示視圖模型類的代碼,其表示顯示邏輯組件211可從其實例化的類的示例(為了清楚添加了行號)。

第11行是其中視圖模型(顯示邏輯組件211的示例)需要數(shù)據(jù)視圖(DataView)(數(shù)據(jù)視圖213的示例)的情況。注意,視圖模型傳遞“容器”,容器是要與包圍的視圖模型共享相同生命期的數(shù)據(jù)視圖的指示符。下面將描述關(guān)于此容器的更多內(nèi)容。

第12行是其中視圖模型綁定來自該數(shù)據(jù)視圖的值的情形。這在構(gòu)造器中完成,并且從而對該視圖模型的生命期執(zhí)行單次。

“獲取”命令(例如,在第18行中)是其中視圖模型被綁定或重新綁定到輸入的情形。此“獲取”調(diào)用導致數(shù)據(jù)高速緩存240發(fā)出用于填充數(shù)據(jù)高速緩存240中的所需數(shù)據(jù)集的web請求(假定該數(shù)據(jù)集不是已經(jīng)在數(shù)據(jù)高速緩存中存在)。例如,在圖2中,數(shù)據(jù)加載器260將通過網(wǎng)絡(luò)270向數(shù)據(jù)源280發(fā)出請求(例如,或許是ajax請求)。而且,引用203可以響應(yīng)于該獲取調(diào)用被創(chuàng)建。如果獲取調(diào)用需要被數(shù)據(jù)視圖引用的一不同數(shù)據(jù)集,則引用203也可改變到一不同數(shù)據(jù)集。如下面將進一步描述的,數(shù)據(jù)視圖(例如,數(shù)據(jù)視圖組件213)僅通知最新近發(fā)出的網(wǎng)絡(luò)(例如ajax)請求何時完成。在該示例中,此通知經(jīng)由由第17行中的數(shù)據(jù)視圖返回的“Thenable(可以then的)”引用進行。

圖3示出數(shù)據(jù)視圖組件展示默認數(shù)據(jù)集直到所請求的數(shù)據(jù)集可用時為止的方法300的流程圖。該數(shù)據(jù)視圖組件接收訪問數(shù)據(jù)集的至少一部分的請求(動作301)。例如,在圖2中,數(shù)據(jù)視圖組件213接收來自顯示邏輯組件211的對數(shù)據(jù)集的至少一部分的請求。

數(shù)據(jù)視圖組件隨后請求(動作302)來自數(shù)據(jù)高速緩存的數(shù)據(jù)集。例如,在圖2中,數(shù)據(jù)視圖組件213可請求綁定至來自數(shù)據(jù)高速緩存240的數(shù)據(jù)集251。如果數(shù)據(jù)集251尚不在數(shù)據(jù)高速緩存240內(nèi),則數(shù)據(jù)加載器260可通過網(wǎng)絡(luò)270向數(shù)據(jù)源280提交web請求。

在等待來自數(shù)據(jù)高速緩存的被請求數(shù)據(jù)集時,數(shù)據(jù)視圖組件展示(動作303)默認數(shù)據(jù)集的至少一部分給用戶界面元素顯示邏輯組件。參考圖2,默認數(shù)據(jù)集可由數(shù)據(jù)視圖組件213保持以用于在感興趣的真實數(shù)據(jù)集正被索取時用戶界面控件的臨時填充。作為示例,默認數(shù)據(jù)集可以是空數(shù)據(jù)集(諸如空數(shù)組或在單一對象被請求的情況下是空值)。

數(shù)據(jù)視圖組件隨后接收(動作304)來自數(shù)據(jù)高速緩存的被請求的數(shù)據(jù)集可用于綁定的指示。作為響應(yīng),數(shù)據(jù)視圖組件綁定(動作305)至被請求的數(shù)據(jù)集。例如,在圖2中,數(shù)據(jù)視圖組件213制定到被請求的數(shù)據(jù)集251的引用203。這將引起被請求的數(shù)據(jù)被展示給顯示邏輯組件211。

相應(yīng)地,用戶界面控件210可被快速制定并用臨時數(shù)據(jù)填充,即使在感興趣的真實數(shù)據(jù)正被索取時。默認數(shù)據(jù)集的被展示部分可與被請求數(shù)據(jù)集的最終展示部分具有相同的類型。從而,用戶界面控件可容易地填充用戶界面元素。

圖4示出當存在多個請求時數(shù)據(jù)視圖組件僅展示最晚的被請求數(shù)據(jù)集的方法400的流程圖。該數(shù)據(jù)視圖組件接收訪問數(shù)據(jù)集的至少一部分的請求(動作401)。例如,在圖2中,數(shù)據(jù)視圖組件213接收來自顯示邏輯組件211的對數(shù)據(jù)集251的至少一部分的請求。

數(shù)據(jù)視圖組件隨后請求(動作402)來自數(shù)據(jù)高速緩存的數(shù)據(jù)集。例如,在圖2中,數(shù)據(jù)視圖組件213可請求綁定來自數(shù)據(jù)高速緩存240的數(shù)據(jù)集251。如果數(shù)據(jù)集251尚不在數(shù)據(jù)高速緩存240內(nèi),則數(shù)據(jù)加載器260可通過網(wǎng)絡(luò)270向數(shù)據(jù)源280提交web請求。

數(shù)據(jù)視圖組件還抑制尊重對先前數(shù)據(jù)視圖請求的任何響應(yīng)(動作403)。例如,參考圖2,假定數(shù)據(jù)視圖組件213先前接收了來自顯示邏輯組件211的請求,從而導致數(shù)據(jù)視圖組件213提交對來自數(shù)據(jù)高速緩存的數(shù)據(jù)集252的請求。如果數(shù)據(jù)視圖組件213隨后接收到導致數(shù)據(jù)視圖組件213提交對數(shù)據(jù)集251的訪問的響應(yīng),則設(shè)立競賽條件。數(shù)據(jù)視圖組件通過抑制對第一響應(yīng)做出反應(yīng)來處理此情況。相應(yīng)地,如果數(shù)據(jù)高速緩存240用該數(shù)據(jù)集252準備好綁定的指示返回,則數(shù)據(jù)視圖組件213將忽略該響應(yīng)并且簡單地等待較晚的被請求數(shù)據(jù)集251準備好綁定的指示。

一旦數(shù)據(jù)視圖組件接收到來自數(shù)據(jù)高速緩存的較晚的被請求數(shù)據(jù)準備好綁定的指示(動作404),數(shù)據(jù)視圖組件就綁定(405)到該被請求的數(shù)據(jù)集。例如,在圖2中,數(shù)據(jù)視圖組件213制定到被請求的數(shù)據(jù)集251的引用203。這將引起被請求的數(shù)據(jù)被展示給顯示邏輯組件211。

當數(shù)據(jù)高速緩存240用各數(shù)據(jù)集按照與作為數(shù)據(jù)視圖組件請求那些數(shù)據(jù)集的次序不同的次序準備好綁定的指示進行響應(yīng)時,方法400可特別有用。如果例如先前的被請求數(shù)據(jù)集必須被從數(shù)據(jù)源280檢索,且第二被請求數(shù)據(jù)集已經(jīng)存在于數(shù)據(jù)高速緩存240中時,則這可能發(fā)生。如果兩個數(shù)據(jù)集均必須被從數(shù)據(jù)源280索取時這也可能發(fā)生,但是較晚的被請求的數(shù)據(jù)源恰好被首先返回。

圖5示出數(shù)據(jù)視圖組件將綁定從一個數(shù)據(jù)集切換到另一個數(shù)據(jù)集的方法500的流程圖。該數(shù)據(jù)視圖組件接收訪問數(shù)據(jù)集的至少一部分的請求(動作501)。例如,在圖2中,數(shù)據(jù)視圖組件213接收來自顯示邏輯組件211的對數(shù)據(jù)集251的至少一部分的請求。

初始地,數(shù)據(jù)視圖組件213尚未被綁定到數(shù)據(jù)集(在決定框502中為“否”),并且從而數(shù)據(jù)視圖組件構(gòu)造引用并使該引用指向該數(shù)據(jù)集(動作503)。例如,在圖2中,數(shù)據(jù)視圖組件213制定到數(shù)據(jù)集251的引用203。這完成方法500的此情形。

然而,隨后,該數(shù)據(jù)視圖組件可接收訪問數(shù)據(jù)集的至少一部分的另一請求(動作501)。例如,在圖2中,數(shù)據(jù)視圖組件213接收來自顯示邏輯組件211的對數(shù)據(jù)集252的至少一部分的請求。

現(xiàn)在,數(shù)據(jù)視圖組件213被綁定到數(shù)據(jù)集(在決定框502中為“是”),并且從而數(shù)據(jù)視圖組件將該引用切換為引用新數(shù)據(jù)集(動作504)。例如,在圖2中,數(shù)據(jù)視圖組件213制定到新數(shù)據(jù)集522的引用(未示出),并移除到舊數(shù)據(jù)集521的引用203。這完成方法500的此第二情形。

從而,方法500可重復任意次數(shù)來改變數(shù)據(jù)視圖組件213所保持的引用指向的數(shù)據(jù)集。這全部在無需重新構(gòu)造數(shù)據(jù)視圖組件的情況下被執(zhí)行。

圖6示出一旦用戶界面元素顯示邏輯組件不再存在時數(shù)據(jù)視圖組件安全地釋放綁定的方法600的流程圖。該數(shù)據(jù)視圖組件接收訪問數(shù)據(jù)集的至少一部分的請求(動作601)。例如,在圖2中,數(shù)據(jù)視圖組件213接收來自顯示邏輯組件211的對數(shù)據(jù)集251的至少一部分的請求。

而且,數(shù)據(jù)視圖組件接收(動作602)生命期引用對象。例如,生命期引用對象可已作為請求中的參數(shù)被傳遞(在動作601中)。然而,生命期引用對象也可以其它方式作為該請求的結(jié)果被接收并可從現(xiàn)實邏輯組件被接收。在一個實施例中,生命期引用對象緊接在現(xiàn)實邏輯組件不再存在之后期滿。

響應(yīng)于(動作601的)該請求,數(shù)據(jù)視圖組件隨后綁定(動作603)至該數(shù)據(jù)集。例如,在圖2中,數(shù)據(jù)視圖組件213引用數(shù)據(jù)集251,并且從而向顯示邏輯組件211向上展示數(shù)據(jù)集251的至少一部分。

如果與生命期引用對象相對應(yīng)的顯示邏輯組件要永遠停止存在,則數(shù)據(jù)視圖組件將借助該數(shù)據(jù)視圖組件擁有生命期引用對象而接收(動作604)該顯示邏輯組件不再存在的通知。例如,在圖2中,如果顯示邏輯組件211將停止存在(例如,由于用戶關(guān)閉被創(chuàng)建并被用戶界面控件2310填充的用戶界面元素),則數(shù)據(jù)視圖組件213將接收顯示邏輯組件211已停止存在的通知。例如,生命期引用對象本身可期滿或停止存在。

相應(yīng)地,數(shù)據(jù)視圖組件可釋放(動作605)到數(shù)據(jù)集的綁定。例如,在圖2中,數(shù)據(jù)視圖組件213可釋放到數(shù)據(jù)集251的引用203。盡管未示出,然而如果不存在對數(shù)據(jù)集251的進一步引用,則數(shù)據(jù)集251作為整體可被釋放(例如,導致立即驅(qū)逐或在特定不使用時間后驅(qū)逐)。

圖7示出環(huán)境700,其是圖2的環(huán)境200的具體示例。然而,此處,視圖710被示出為圖2的用戶界面控件210的示例。而且,視圖模型711被示出為圖2的顯示邏輯組件211的示例。模型712被示出為圖2的業(yè)務(wù)邏輯組件212的示例。最后,數(shù)據(jù)視圖713被示出為圖2的數(shù)據(jù)視圖213的示例。

而且,在圖2中,僅存在由用戶界面控件210、顯示邏輯組件211、業(yè)務(wù)邏輯組件212和數(shù)據(jù)視圖組件213的集合構(gòu)成的一個數(shù)據(jù)信道。然而,圖7示出了可以存在與單一數(shù)據(jù)高速緩存相關(guān)聯(lián)的多個這樣的數(shù)據(jù)信道。例如,視圖710、視圖模型711、模型712和數(shù)據(jù)視圖713是使用數(shù)據(jù)高速緩存740以便在視圖710的控制下填充用戶界面元素的單一數(shù)據(jù)信道。圖7示出了兩個附加的數(shù)據(jù)信道。作為第一附加數(shù)據(jù)信道,視圖720、視圖模型721、模型722和數(shù)據(jù)視圖713使用數(shù)據(jù)高速緩存740以便在視圖720的控制下填充用戶界面元素。作為第二附加數(shù)據(jù)信道,視圖730、視圖模型731、模型732和數(shù)據(jù)視圖733使用數(shù)據(jù)高速緩存740以便在視圖730的控制下填充用戶界面元素。每個數(shù)據(jù)信道可針對由圖2的用戶界面控件210、顯示邏輯組件211、業(yè)務(wù)邏輯組件212和數(shù)據(jù)視圖組件213構(gòu)成的原始數(shù)據(jù)信道與上面描述的相同地工作。

圖7還示出第二數(shù)據(jù)高速緩存741,其可類似地通過網(wǎng)絡(luò)770訪問數(shù)據(jù)源780。數(shù)據(jù)高速緩存741可類似地使用相應(yīng)的數(shù)據(jù)加載器向相應(yīng)的數(shù)據(jù)信道(未示出)提供數(shù)據(jù)集。從而,環(huán)境700可包括任何數(shù)量的數(shù)據(jù)高速緩存,每個數(shù)據(jù)高速緩存服務(wù)0個或更多個數(shù)據(jù)信道。在一個實施例中,每個應(yīng)用或應(yīng)用擴展可創(chuàng)建專用于該應(yīng)用或應(yīng)用擴展的一個或多個數(shù)據(jù)高速緩存。

從而,本文所述的原理提供一種數(shù)據(jù)視圖組件,通過展示數(shù)據(jù)集直到被請求數(shù)據(jù)集可用,通過在存在多個請求時僅展示最晚的被請求數(shù)據(jù)集,通過將綁定從一個數(shù)據(jù)集快速切換到另一數(shù)據(jù)集,和/或通過一旦用戶界面元素顯示邏輯組件停止存在則安全釋放綁定,該數(shù)據(jù)視圖組件可改善用戶體驗。

本發(fā)明可具體化為其它具體形式而不背離其精神或本質(zhì)特征。所描述的實施例在所有方面都應(yīng)被認為僅是說明性而非限制性的。從而,本發(fā)明的范圍由所附權(quán)利要求書而非前述描述指示。落入權(quán)利要求書的等效方案的含義和范圍內(nèi)的所有改變應(yīng)被權(quán)利要求書的范圍所涵蓋。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1