專利名稱:異步數(shù)據(jù)綁定的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)綁定。
背景技術(shù):
計(jì)算機(jī)系統(tǒng)和相關(guān)技術(shù)影響社會(huì)的許多方面。的確,計(jì)算機(jī)系統(tǒng)處理信息的能力已轉(zhuǎn)變了人們生活和工作的方式。計(jì)算機(jī)系統(tǒng)現(xiàn)在通常執(zhí)行在計(jì)算機(jī)系統(tǒng)出現(xiàn)以前手動(dòng)執(zhí)行的許多任務(wù)(例如,文字處理、日程安排和會(huì)計(jì)等)。最近,計(jì)算機(jī)系統(tǒng)彼此耦合并耦合到其他電子設(shè)備以形成計(jì)算機(jī)系統(tǒng)和其他電子設(shè)備可以在其上傳輸電子數(shù)據(jù)的有線和無線計(jì)算機(jī)網(wǎng)絡(luò)。因此,許多計(jì)算任務(wù)的執(zhí)行分布在多個(gè)不同的計(jì)算機(jī)系統(tǒng)和/或多個(gè)不同的計(jì)算環(huán)境中。
用戶通過應(yīng)用,且更具體地,通過應(yīng)用的用戶界面,來與這些計(jì)算機(jī)系統(tǒng)交互。用戶對(duì)計(jì)算機(jī)系統(tǒng)上執(zhí)行的應(yīng)用的感知很大程度上基于應(yīng)用的用戶界面的可用性。大多數(shù)用戶期望應(yīng)用的用戶界面總是響應(yīng)的。如果應(yīng)用的用戶界面是不響應(yīng)的,則用戶通常將認(rèn)為該應(yīng)用為有缺陷。然而,在許多應(yīng)用中,用戶界面依賴于不是立即可用的數(shù)據(jù)。例如,數(shù)據(jù)可被遠(yuǎn)程存儲(chǔ),或可被本地存儲(chǔ),但是要求在數(shù)據(jù)準(zhǔn)備好被顯示之前進(jìn)行處理。因此,在這樣的應(yīng)用中,如果用戶要求查看不是立即可用的數(shù)據(jù),則應(yīng)用的用戶界面通常在要顯示的數(shù)據(jù)正被獲取時(shí)顯得無響應(yīng)。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例涉及將數(shù)據(jù)從綁定源異步綁定至綁定目標(biāo)的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。在一個(gè)實(shí)施例中,多線程的應(yīng)用經(jīng)由用戶界面線程顯示用戶界面。用戶界面線程判斷用戶界面的元素所綁定的數(shù)據(jù)要被更新。用戶界面線程訪問本地高速緩存來確定更新后的數(shù)據(jù)是否被存儲(chǔ)在本地高速緩存中。用戶界面線程請(qǐng)求單獨(dú)的線程來從用戶界面元素所綁定的數(shù)據(jù)源檢索更新后的數(shù)據(jù)。以此方式,用戶界面線程繼續(xù)執(zhí)行而不會(huì)阻塞,直到更新后的數(shù)據(jù)被獲取。單獨(dú)的線程然后向數(shù)據(jù)源請(qǐng)求更新后的數(shù)據(jù)。在接收更新后的數(shù)據(jù)之后,單獨(dú)的線程將更新后的數(shù)據(jù)存儲(chǔ)在本地高速緩存中。然后,單獨(dú)的線程通知用戶界面線程,更新后的數(shù)據(jù)已被存儲(chǔ)在本地高速緩存中。提供本發(fā)明內(nèi)容以便以簡(jiǎn)化的形式介紹將在以下的具體實(shí)施方式
中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并非旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。本發(fā)明的附加特征和優(yōu)點(diǎn)將在以下描述中敘述,且其一部分根據(jù)本描述將是顯而易見的,或可通過對(duì)本發(fā)明的實(shí)踐來獲知。本發(fā)明的特征和優(yōu)點(diǎn)可通過在所附權(quán)利要求書中特別指出的工具和組合來實(shí)現(xiàn)和獲得。本發(fā)明的這些和其他特征將通過以下描述和所附權(quán)利要求書變得更加顯而易見,或可通過對(duì)下文中所述的本發(fā)明的實(shí)踐來領(lǐng)會(huì)。
為了描述可獲得本發(fā)明的上述和其他優(yōu)點(diǎn)和特征的方式,將通過參考附圖中示出的本發(fā)明的具體實(shí)施例來呈現(xiàn)以上簡(jiǎn)要描述的本發(fā)明的更具體描述??梢岳斫猓@些附圖僅描述本發(fā)明的典型實(shí)施例,從而不被認(rèn)為是對(duì)其范圍的限制,本發(fā)明將通過使用附圖用附加特征和細(xì)節(jié)來描述和說明,在附圖中圖I示出了便于將數(shù)據(jù)從綁定源異步綁定至綁定目標(biāo)的示例計(jì)算機(jī)體系結(jié)構(gòu)。圖2示出了將數(shù)據(jù)從綁定源異步綁定至綁定目標(biāo)的示例方法的流程圖。
具體實(shí)施例方式本發(fā)明的實(shí)施例涉及將數(shù)據(jù)從綁定源異步綁定至綁定目標(biāo)的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。在一個(gè)實(shí)施例中,多線程的應(yīng)用經(jīng)由用戶界面線程顯示用戶界面。用戶界面線程判斷用戶界面的元素綁定的數(shù)據(jù)要被更新。用戶界面線程訪問本地高速緩存來確定更新后的數(shù)據(jù)是否被存儲(chǔ)在本地高速緩存中。用戶界面線程請(qǐng)求單獨(dú)的線程來從用戶界面元素 所綁定的數(shù)據(jù)源檢索更新后的數(shù)據(jù)。以此方式,用戶界面線程繼續(xù)執(zhí)行而不會(huì)阻塞,直到更新后的數(shù)據(jù)被獲取。單獨(dú)的線程然后向數(shù)據(jù)源請(qǐng)求更新后的數(shù)據(jù)。在接收更新后的數(shù)據(jù)之后,單獨(dú)的線程將更新后的數(shù)據(jù)存儲(chǔ)在本地高速緩存中。然后,單獨(dú)的線程通知用戶界面線程,更新后的數(shù)據(jù)已被存儲(chǔ)在本地高速緩存中。本發(fā)明的各實(shí)施例可包括或利用專用或通用計(jì)算機(jī),該專用或通用計(jì)算機(jī)包括諸如例如一個(gè)或多個(gè)處理器和系統(tǒng)存儲(chǔ)器等計(jì)算機(jī)硬件,如以下更詳細(xì)討論的。本發(fā)明范圍內(nèi)的各實(shí)施例還包括用于承載或存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理和其他計(jì)算機(jī)可讀介質(zhì)。這樣的計(jì)算機(jī)可讀介質(zhì)可以是可由通用或?qū)S糜?jì)算機(jī)系統(tǒng)訪問的任何可用介質(zhì)。存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是計(jì)算機(jī)存儲(chǔ)介質(zhì)(設(shè)備)。承載計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是傳輸介質(zhì)。由此,作為示例而非限制,本發(fā)明的各實(shí)施例可包括至少兩種顯著不同的計(jì)算機(jī)可讀介質(zhì)計(jì)算機(jī)存儲(chǔ)介質(zhì)(設(shè)備)和傳輸介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)(設(shè)備)包括RAM、ROM、EEPROM、CD-ROM、固態(tài)驅(qū)動(dòng)器(SSD)(如基于RAM)、閃存、相變存儲(chǔ)器(PCM)、其它類型的存儲(chǔ)器、其他光盤存儲(chǔ)、磁盤存儲(chǔ)或其他磁存儲(chǔ)設(shè)備、或可用于存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由通用或?qū)S糜?jì)算機(jī)訪問的任何其他介質(zhì)。“網(wǎng)絡(luò)”被定義為允許在計(jì)算機(jī)系統(tǒng)和/或模塊和/或其他電子設(shè)備之間傳輸電子數(shù)據(jù)的一個(gè)或多個(gè)數(shù)據(jù)鏈路。當(dāng)信息通過網(wǎng)絡(luò)或另一個(gè)通信連接(硬連線、無線、或者硬連線或無線的組合)傳輸或提供給計(jì)算機(jī)時(shí),該計(jì)算機(jī)將該連接適當(dāng)?shù)匾暈閭鬏斀橘|(zhì)。傳輸介質(zhì)可包括可用于攜帶計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置并可由通用或?qū)S糜?jì)算機(jī)訪問的網(wǎng)絡(luò)和/或數(shù)據(jù)鏈路。上述的組合也應(yīng)被包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。此外,在到達(dá)各種計(jì)算機(jī)系統(tǒng)組件之后,計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的程序代碼裝置可從傳輸介質(zhì)自動(dòng)傳輸?shù)接?jì)算機(jī)存儲(chǔ)介質(zhì)(設(shè)備)(或反之亦然)。例如,通過網(wǎng)絡(luò)或數(shù)據(jù)鏈接接收到的計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)可被緩存在網(wǎng)絡(luò)接口模塊(例如,“NIC”)內(nèi)的RAM中,然后最終被傳輸?shù)接?jì)算機(jī)系統(tǒng)RAM和/或計(jì)算機(jī)系統(tǒng)處的較不易失性的計(jì)算機(jī)存儲(chǔ)介質(zhì)(設(shè)備)。因而,應(yīng)當(dāng)理解,計(jì)算機(jī)存儲(chǔ)介質(zhì)(設(shè)備)可被包括在還利用(甚至主要利用)傳輸介質(zhì)的計(jì)算機(jī)系統(tǒng)組件中。
計(jì)算機(jī)可執(zhí)行指令例如包括,當(dāng)在處理器處執(zhí)行時(shí)使通用計(jì)算機(jī)、專用計(jì)算機(jī)、或?qū)S锰幚碓O(shè)備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。計(jì)算機(jī)可執(zhí)行指令可以是例如二進(jìn)制代碼、諸如匯編語言之類的中間格式指令、或甚至源代碼。盡管用結(jié)構(gòu)特征和/或方法動(dòng)作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述特征或動(dòng)作。相反,上述特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式而公開的。本領(lǐng)域的技術(shù)人員將理解,本發(fā)明可以在具有許多類型的計(jì)算機(jī)系統(tǒng)配置的網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)踐,這些計(jì)算機(jī)系統(tǒng)配置包括個(gè)人計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、消息處理器、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、移動(dòng)電話、PDA、尋呼機(jī)、路由器、交換機(jī)等等。本發(fā)明也可在其中通過網(wǎng)絡(luò)鏈接(或者通過硬連線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路,或者通過硬連線和無線數(shù)據(jù)鏈路的組合)的本地和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)兩者都執(zhí)行任務(wù)的分布式系統(tǒng)環(huán)境中實(shí)施。在分布式系統(tǒng)環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備二者中。
圖I示出了便于將數(shù)據(jù)從綁定源異步綁定至綁定目標(biāo)的示例計(jì)算機(jī)體系結(jié)構(gòu)100。參考圖1,計(jì)算機(jī)體系結(jié)構(gòu)100包括計(jì)算機(jī)系統(tǒng)101以及潛在的一個(gè)或多個(gè)其它計(jì)算機(jī)系統(tǒng),諸如計(jì)算機(jī)系統(tǒng)102a-102n。所描繪的計(jì)算機(jī)系統(tǒng)中的每一個(gè)通過諸如例如局域網(wǎng)(“LAN”)、廣域網(wǎng)(“WAN”)或甚至因特網(wǎng)等網(wǎng)絡(luò)(或作為網(wǎng)絡(luò)的一部分)彼此連接。因此,所描繪的計(jì)算機(jī)系統(tǒng)中的每一個(gè)以及任何其他連接的計(jì)算機(jī)系統(tǒng)及其組件都可以創(chuàng)建消息相關(guān)數(shù)據(jù)并通過網(wǎng)絡(luò)交換消息相關(guān)數(shù)據(jù)(例如,網(wǎng)際協(xié)議(“IP”)數(shù)據(jù)報(bào)和利用IP數(shù)據(jù)報(bào)的其他更高層協(xié)議,諸如傳輸控制協(xié)議(“TCP”)、超文本傳輸協(xié)議(“HTTP”)、簡(jiǎn)單郵件傳輸協(xié)議(“SMTP”)等)。現(xiàn)在轉(zhuǎn)向圖1,計(jì)算機(jī)系統(tǒng)101執(zhí)行多線程應(yīng)用103,該應(yīng)用包括用戶界面線程103a以及諸如線程103b的一個(gè)或多個(gè)其它線程。用戶界面線程103a管理多線程應(yīng)用103的用戶界面103d的顯示。用戶界面103d包括一個(gè)或多個(gè)用戶界面元素103dl-103dn。用戶界面元素103dl_103dn中的至少一些被綁定至來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)。這一個(gè)或多個(gè)數(shù)據(jù)源可位于計(jì)算機(jī)系統(tǒng)101上,或位于諸如計(jì)算機(jī)系統(tǒng)102a的一個(gè)或多個(gè)其它計(jì)算機(jī)系統(tǒng)中的任何一個(gè)上。例如,數(shù)據(jù)源105a位于計(jì)算機(jī)系統(tǒng)101上,而數(shù)據(jù)源105b位于計(jì)算機(jī)系統(tǒng)102a上。在一些實(shí)施例中,數(shù)據(jù)源105a可位于計(jì)算機(jī)系統(tǒng)的云內(nèi)。數(shù)據(jù)綁定允許用戶界面元素在用戶界面元素所綁定的數(shù)據(jù)要被更新時(shí)自動(dòng)更新。數(shù)據(jù)所綁定的用戶界面元素可以或可以不在用戶界面內(nèi)顯示該數(shù)據(jù)。例如,數(shù)據(jù)可包括顯示在諸如列表框的用戶界面元素內(nèi)的文本,或者數(shù)據(jù)可包括定義用戶界面元素的外觀的配置參數(shù)。用戶界面線程103a被配置成執(zhí)行數(shù)據(jù)從數(shù)據(jù)源到諸如用戶界面元素的數(shù)據(jù)目標(biāo)的異步綁定,以使得即使在更新后的數(shù)據(jù)不是一旦請(qǐng)求就立即可用的情況下用戶界面線程也能繼續(xù)執(zhí)行。例如,用戶界面線程103a在應(yīng)用103內(nèi)的主要角色(至少在一些實(shí)施例中)是更新用戶界面103d的顯示。當(dāng)用戶界面線程103a向用戶界面元素103dl_103dn中的一個(gè)或多個(gè)所綁定的數(shù)據(jù)源請(qǐng)求更新后的數(shù)據(jù)時(shí),用戶界面線程103a請(qǐng)求諸如線程103b的單獨(dú)的線程從數(shù)據(jù)源檢索更新后的數(shù)據(jù)。當(dāng)線程103b正在檢索更新后的數(shù)據(jù)時(shí),用戶界面線程103a繼續(xù)執(zhí)行而不會(huì)阻塞,直到更新后的數(shù)據(jù)可用。如此處所使用地,阻塞指的是暫停執(zhí)行,直到更新后的數(shù)據(jù)被返回,就像在數(shù)據(jù)被同步綁定時(shí)完成那樣。在一些實(shí)施例中,每當(dāng)定時(shí)器(諸如定時(shí)器107)期滿時(shí)用戶界面線程103a對(duì)更新后的數(shù)據(jù)進(jìn)行請(qǐng)求。另外,在一些實(shí)施例中,用戶界面線程103a還可諸如當(dāng)用戶(或另一應(yīng)用)向用戶界面提供輸入時(shí)響應(yīng)于對(duì)用戶界面的輸入對(duì)更新后的數(shù)據(jù)進(jìn)行請(qǐng)求。在用戶界面線程103a請(qǐng)求線程103b獲取更新后的數(shù)據(jù)之后并在用戶界面線程103繼續(xù)執(zhí)行的同時(shí),線程103b從數(shù)據(jù)源獲取更新后的數(shù)據(jù)(如果有的話)。如果數(shù)據(jù)源中的數(shù)據(jù)已被更新,則線程103b檢索數(shù)據(jù)并將其存儲(chǔ)在本地高速緩存106中。另外,線程103b例如經(jīng)由通知108向用戶界面線程103a告知更新后的數(shù)據(jù)已被存儲(chǔ)在本地高速緩存106中。在一些實(shí)施例中,通知108是應(yīng)用戶界面線程103激發(fā)的事件。另外,通知108可被添加到通知的隊(duì)列中。通知108不會(huì)使得用戶界面線程103a立即向本地高速緩存106檢索更新后的數(shù) 據(jù)。相反,用戶界面線程103a繼續(xù)執(zhí)行直到定時(shí)器107期滿,此時(shí)用戶界面線程103a可處理通知108。處理通知108可包括訪問本地高速緩存106來檢索更新后的數(shù)據(jù),以及將更新后的數(shù)據(jù)填充到相應(yīng)的用戶界面元素中。以此方式,用戶界面線程103不會(huì)試圖將更新后的數(shù)據(jù)填充到用戶界面中,直到更新后的數(shù)據(jù)在本地高速緩存106中立即可用。此處描述的實(shí)施例減少或消除用戶在與用戶界面103d交互時(shí)可能經(jīng)歷的凍結(jié)的數(shù)量,而不是在對(duì)更新后的請(qǐng)求上阻塞,因?yàn)橛脩艚缑婢€程103a在它請(qǐng)求更新后的數(shù)據(jù)時(shí)不會(huì)阻塞。將更新后的數(shù)據(jù)從數(shù)據(jù)源傳播到數(shù)據(jù)目標(biāo)的處理中的大多數(shù)由除用戶界面線程以外的單獨(dú)線程執(zhí)行,因此改進(jìn)了所感知的用戶界面103d的性能。在本發(fā)明的一些實(shí)施例中,定時(shí)器107可被配置成允許指定用戶界面線程103a請(qǐng)求和/或檢索更新后的數(shù)據(jù)的頻率。例如,應(yīng)用103的開發(fā)者可設(shè)置定時(shí)器頻率。在其它實(shí)施例中,應(yīng)用103的用戶可動(dòng)態(tài)設(shè)置定時(shí)器頻率。如上所述,當(dāng)定時(shí)器107期滿時(shí),用戶界面線程103a可執(zhí)行各種動(dòng)作。例如,用戶界面線程103a可處理它所接收的任何通知,諸如通知108。用戶界面線程103a還可經(jīng)由諸如線程103b的單獨(dú)線程發(fā)起對(duì)更新后的數(shù)據(jù)的請(qǐng)求。以此方式,對(duì)底層數(shù)據(jù)源中的數(shù)據(jù)的任何改變將被檢測(cè)并以定期間隔自動(dòng)傳播給數(shù)據(jù)目標(biāo)。諸如響應(yīng)于對(duì)用戶界面的輸入,用戶界面線程103a還可在任何時(shí)間發(fā)起對(duì)更新后的數(shù)據(jù)的請(qǐng)求。例如,用戶可向用戶界面提供請(qǐng)求用戶界面的一元素的更新后數(shù)據(jù)的輸入。響應(yīng)于該輸入,用戶界面線程103a可訪問本地高速緩存106來確定更新后的數(shù)據(jù)是否存在,且如果存在,則將更新后的數(shù)據(jù)填充到用戶界面元素中。然而,如果更新后的數(shù)據(jù)不存在(例如,如果本地高速緩存對(duì)數(shù)據(jù)存儲(chǔ)了空值),則用戶界面元素可請(qǐng)求單獨(dú)的線程從用戶界面元素所綁定的數(shù)據(jù)源獲取更新后的數(shù)據(jù)。在一些實(shí)施例中,用戶界面線程103a采用通知的隊(duì)列。每當(dāng)通知(例如,通過執(zhí)行從數(shù)據(jù)源檢索數(shù)據(jù)的一個(gè)或多個(gè)單獨(dú)的線程)被生成時(shí),通知可被添加到隊(duì)列中。例如,通知108可被添加到隊(duì)列中。隊(duì)列可以是用戶界面線程103a的一部分,或可以是應(yīng)用103內(nèi)的單獨(dú)組件。然后,在一些時(shí)間,諸如當(dāng)定時(shí)器107期滿時(shí),用戶界面線程103a可訪問該隊(duì)列以處理每一通知,包括檢索通知所表示的本地高速緩存106中的任何更新后的數(shù)據(jù)。在一些實(shí)施例中,每當(dāng)定時(shí)器107期滿時(shí)隊(duì)列中指定數(shù)量的通知可由用戶界面線程103a處理。通知的數(shù)量可以是用戶可配置的數(shù)量。例如,開發(fā)者(或用戶)可指定每當(dāng)定時(shí)器107期滿時(shí)五個(gè)通知要被處理。從而,每當(dāng)定時(shí)器107期滿,至多五個(gè)數(shù)據(jù)更新將被處理,即使隊(duì)列包含超過五個(gè)更新后數(shù)據(jù)的通知。此處所述的實(shí)施例還可包括當(dāng)更新后的數(shù)據(jù)被填充到用戶界面中時(shí)應(yīng)用效果。例如,當(dāng)其從本地高速緩存106獲取更新后的數(shù)據(jù)時(shí),用戶界面線程103a可使得更新后的數(shù)據(jù)以不同的方式出現(xiàn)在相應(yīng)的用戶界面元素中。在更新后的數(shù)據(jù)被填充到用戶界面元素時(shí)被應(yīng)用于更新后的數(shù)據(jù)的效果可以是開發(fā)者(或用戶)可自定義的選項(xiàng)。例如,遵循此處所述的綁定模型的應(yīng)用可提供各種不同的效果,用戶可(例如,通過選擇應(yīng)用的組件的屬性)指定效果以使得當(dāng)數(shù)據(jù)被填充到相關(guān)聯(lián)的用戶界面元素中時(shí)指定的效果被應(yīng)用。在一些實(shí)施例中,每一用戶界面元素可包括允許用戶為每一用戶界面元素獨(dú)立指定效果的屬性。可被應(yīng)用的示例效果包括淡入、滑動(dòng)進(jìn)入、成長(zhǎng)和收縮等。此處所述的實(shí)施例還可向應(yīng)用103的開發(fā)者(或用戶)提供指定對(duì)用戶界面的元素 的數(shù)據(jù)綁定是要同步還是要異步進(jìn)行的選項(xiàng)。當(dāng)開發(fā)者指定數(shù)據(jù)綁定應(yīng)同步進(jìn)行時(shí),用戶界面線程103在對(duì)更新后的數(shù)據(jù)的請(qǐng)求上阻塞。作為對(duì)比,當(dāng)開發(fā)者指定數(shù)據(jù)綁定應(yīng)異步進(jìn)行時(shí),用戶界面線程103a如上所述通過采用單獨(dú)的線程獲取更新后的數(shù)據(jù)來異步請(qǐng)求更新后的數(shù)據(jù)。在其它實(shí)施例中,數(shù)據(jù)綁定是同步還是異步進(jìn)行可由應(yīng)用103的用戶指定。圖2示出了將數(shù)據(jù)從綁定源異步綁定至綁定目標(biāo)的示例方法200的流程圖。方法200將參考計(jì)算機(jī)架構(gòu)100的組件和數(shù)據(jù)來描述。方法200包括由用戶界面線程判斷用戶界面的元素所綁定的數(shù)據(jù)要被更新的動(dòng)作201。例如,用戶界面線程103a可判斷用戶界面元素103dl所綁定的數(shù)據(jù)要被更新。用戶界面元素所綁定的數(shù)據(jù)要被更新的判斷可基于諸如定時(shí)器107的定時(shí)器的期滿,來自用戶的或者來自執(zhí)行在計(jì)算機(jī)系統(tǒng)上的另一進(jìn)程的對(duì)更新后的數(shù)據(jù)的特定請(qǐng)求,或者采用任何其它手段。方法200包括由用戶界面線程訪問本地高速緩存以確定更新后的數(shù)據(jù)是否被存儲(chǔ)在本地高速緩存中的動(dòng)作202。例如,用戶界面線程103a可訪問本地高速緩存106來確定本地高速緩存106是否存儲(chǔ)了對(duì)用戶界面元素103dl所綁定的數(shù)據(jù)的更新。如果本地高速緩存106存儲(chǔ)了更新后的數(shù)據(jù),用戶界面線程103a可將更新后的數(shù)據(jù)應(yīng)用于綁定于相應(yīng)的用戶界面元素的數(shù)據(jù)。例如,用戶界面元素是文本框,則綁定于文本框的數(shù)據(jù)是要在文本框內(nèi)顯示的文本,用戶界面線程103a可將文本填充到文本框中。方法200包括動(dòng)作203 :由用戶界面線程請(qǐng)求單獨(dú)的線程來從用戶界面的元素所綁定的數(shù)據(jù)源檢索更新后的數(shù)據(jù),以使得用戶界面線程繼續(xù)執(zhí)行而不會(huì)阻塞,直到更新后的數(shù)據(jù)被獲取。例如,用戶界面線程103a可請(qǐng)求線程103b從用戶界面元素所綁定的數(shù)據(jù)源檢索更新后的數(shù)據(jù)。在線程103b從數(shù)據(jù)源獲取更新后的數(shù)據(jù)之時(shí),用戶界面線程103a繼續(xù)執(zhí)行而不會(huì)阻塞,直到更新后的數(shù)據(jù)被獲取或返回。用戶界面線程103a可響應(yīng)于確定更新后的數(shù)據(jù)被存儲(chǔ)在本地高速緩存中來對(duì)更新后的數(shù)據(jù)進(jìn)行請(qǐng)求,或可當(dāng)在本地高速緩存中獲取了更新后的數(shù)據(jù)之后進(jìn)行請(qǐng)求(例如,使得較新的更新后數(shù)據(jù)在下一次用戶界面線程103a檢查本地高速緩存中的更新后的數(shù)據(jù)時(shí)被存儲(chǔ)在本地高速緩存中)。方法200包括由單獨(dú)的線程向數(shù)據(jù)源請(qǐng)求更新后的數(shù)據(jù)的動(dòng)作204。例如,線程103b可向諸如數(shù)據(jù)源105a的本地?cái)?shù)據(jù)源或諸如數(shù)據(jù)源105b的遠(yuǎn)程數(shù)據(jù)源請(qǐng)求數(shù)據(jù),或可按照其它方式訪問存儲(chǔ)在這些數(shù)據(jù)源內(nèi)的數(shù)據(jù)。數(shù)據(jù)源105a和105b可表示多種不同類型的數(shù)據(jù)源中的任一種。在一個(gè)特定示例中,綁定源組件被添加到數(shù)據(jù)源以允許數(shù)據(jù)源內(nèi)的數(shù)據(jù)被綁定。方法200包括在接收更新后的數(shù)據(jù)時(shí),由單獨(dú)的線程在本地高速緩存中存儲(chǔ)更新后的數(shù)據(jù)的動(dòng)作205。例如,線程103b可在本地高速緩存106中存儲(chǔ)更新后的數(shù)據(jù)。方法200包括由單獨(dú)的線程通知用戶界面線程更新后的數(shù)據(jù)已被存儲(chǔ)在本地高速緩存中的動(dòng)作206。例如,線程103b可發(fā)送通知108來通知用戶界面線程103a更新后的數(shù)據(jù)被存儲(chǔ)在本地高速緩存106中。通知108可包括諸如屬性改變事件等應(yīng)用戶界面線程103a激發(fā)的事件。線程103b還可通過向隊(duì)列添加通知108來通知用戶界面線程103a。隊(duì)列可存儲(chǔ)用戶界面線程103a在一段時(shí)間期間(諸如定時(shí)器期滿之間或?qū)Ω潞蟮臄?shù)據(jù)的請(qǐng)求之間)從用于向數(shù)據(jù)源檢索數(shù)據(jù)的任何數(shù)量的單獨(dú)線程接收到的更新后的數(shù)據(jù)的所有通知。當(dāng)用戶界面線程103a檢查待決通知時(shí),隊(duì)列中的每一通知可被處理以將 所有更新后的數(shù)據(jù)從本地高速緩存106填充到用戶界面103d的相應(yīng)元素中。以上描述描繪數(shù)據(jù)從數(shù)據(jù)源流向數(shù)據(jù)目標(biāo)(例如,用戶界面的元素)的一種方式。然而,用于將數(shù)據(jù)改變從源傳播到目標(biāo)的異步綁定技術(shù)還可用于將數(shù)據(jù)改變從目標(biāo)傳播到源。例如,如果用戶界面元素(數(shù)據(jù)目標(biāo))內(nèi)的數(shù)據(jù)被更新,則更新后的數(shù)據(jù)可被傳播回?cái)?shù)據(jù)源(例如,對(duì)象的屬性、列表中的項(xiàng)目、數(shù)據(jù)庫中的元素等)。當(dāng)將更新后的數(shù)據(jù)從數(shù)據(jù)目標(biāo)傳播到數(shù)據(jù)源時(shí),上述過程可大體上按照逆序執(zhí)行。例如,當(dāng)(例如響應(yīng)于用戶輸入)用戶界面元素的數(shù)據(jù)被更新時(shí),用戶界面線程103a可將更新后的數(shù)據(jù)存儲(chǔ)在本地高速緩存106中,并發(fā)起事件或使更新后的數(shù)據(jù)的通知在線程103b (或處理數(shù)據(jù)傳播的另一線程)上排隊(duì)。用戶界面線程103a然后可繼續(xù)執(zhí)行,同時(shí)線程103b將更新后的數(shù)據(jù)傳播回?cái)?shù)據(jù)源。當(dāng)用戶界面線程103a繼續(xù)執(zhí)行時(shí),線程103b從高速緩存106獲取更新后的數(shù)據(jù),并將更新后的數(shù)據(jù)傳播給相應(yīng)的數(shù)據(jù)源。在一些實(shí)施例中,一旦數(shù)據(jù)源用更新后的數(shù)據(jù)更新了,用戶界面線程103a就得到該更新的通知。本發(fā)明可具體化為其它具體形式而不背離其精神或本質(zhì)特征。所描述的實(shí)施例在所有方面都應(yīng)被認(rèn)為僅是說明性而非限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求書而非前述描述指示。落入權(quán)利要求書的等效方案的含義和范圍內(nèi)的所有改變被權(quán)利要求書的范圍所涵蓋。
權(quán)利要求
1.一種在包括處理器的計(jì)算機(jī)系統(tǒng)中將數(shù)據(jù)從綁定源異步綁定至綁定目標(biāo)的方法,所述計(jì)算機(jī)系統(tǒng)執(zhí)行經(jīng)由用戶界面線程顯示用戶界面的多線程應(yīng)用,所述方法包括 由所述用戶界面線程判斷所述用戶界面的元素所綁定的數(shù)據(jù)要被更新; 由所述用戶界面線程訪問本地高速緩存,來確定更新后的數(shù)據(jù)是否被存儲(chǔ)在所述本地高速緩存中; 由所述用戶界面線程請(qǐng)求單獨(dú)的線程,來從所述用戶界面的元素所綁定的數(shù)據(jù)源檢索更新后的數(shù)據(jù),以使得所述用戶界面線程繼續(xù)執(zhí)行而不會(huì)阻塞,直到更新后的數(shù)據(jù)被獲??; 由所述單獨(dú)的線程向所述數(shù)據(jù)源請(qǐng)求更新后的數(shù)據(jù); 在接收更新后的數(shù)據(jù)之后,由所述單獨(dú)的線程將所述更新后的數(shù)據(jù)存儲(chǔ)在所述本地高速緩存中;以及 由所述單獨(dú)的線程通知所述用戶界面線程,更新后的數(shù)據(jù)已被存儲(chǔ)在所述本地高速緩存中。
2.如權(quán)利要求I所述的方法,其特征在于,還包括 由所述用戶界面線程接收所述通知;以及 由所述用戶界面線程訪問所述本地高速緩存以檢索所述更新后的數(shù)據(jù)。
3.如權(quán)利要求2所述的方法,其特征在于,所述用戶界面線程響應(yīng)于定時(shí)器期滿來訪問所述本地高速緩存以檢索更新后的數(shù)據(jù),所述定時(shí)器表示自從所述用戶界面線程曾訪問所述本地高速緩存以檢索所述更新后的數(shù)據(jù)以來的持續(xù)時(shí)間。
4.如權(quán)利要求2所述的方法,其特征在于,還包括 將所述更新后的數(shù)據(jù)填充到所述用戶界面的元素中。
5.如權(quán)利要求4所述的方法,其特征在于,還包括 在所述更新后的數(shù)據(jù)被填充到所述用戶界面的元素中時(shí),將一個(gè)或多個(gè)用戶指定的效果應(yīng)用于所述更新后的數(shù)據(jù)。
6.如權(quán)利要求I所述的方法,其特征在于,由所述用戶界面線程判斷所述用戶界面的元素所綁定的數(shù)據(jù)要被更新包括在所述用戶界面處接收請(qǐng)求所述數(shù)據(jù)被更新的用戶輸入。
7.如權(quán)利要求I所述的方法,其特征在于,由用戶界面線程判斷所述用戶界面的元素所綁定的數(shù)據(jù)要被更新包括確定定時(shí)器期滿。
8.如權(quán)利要求I所述的方法,其特征在于,所述定時(shí)器的持續(xù)時(shí)間是用戶可配置的。
9.如權(quán)利要求I所述的方法,其特征在于,由所述用戶界面線程訪問本地高速緩存以確定更新后的數(shù)據(jù)是否被存儲(chǔ)在本地高速緩存中還包括 確定所述更新后的數(shù)據(jù)被本地存儲(chǔ);以及 更新所述用戶界面的元素所綁定的數(shù)據(jù)。
10.如權(quán)利要求I所述的方法,其特征在于,由所述用戶界面線程請(qǐng)求單獨(dú)的線程向所述用戶界面的元素所綁定的數(shù)據(jù)源請(qǐng)求更新后的數(shù)據(jù),是響應(yīng)于所述用戶界面線程確定所述本地高速緩存沒有存儲(chǔ)所述用戶界面元素的更新后的數(shù)據(jù)而執(zhí)行的。
11.如權(quán)利要求I所述的方法,其特征在于,由所述單獨(dú)的線程通知所述用戶界面線程所述更新后的數(shù)據(jù)已被存儲(chǔ)在所述本地高速緩存中包括所述單獨(dú)的線程在所述用戶界面線程上激發(fā)一事件。
12.如權(quán)利要求I所述的方法,其特征在于,由所述單獨(dú)的線程通知所述用戶界面線程所述更新后的數(shù)據(jù)已被存儲(chǔ)在所述本地高速緩存中包括所述單獨(dú)的線程將一事件添加到所述用戶界面線程上的隊(duì)列中,所述隊(duì)列包括指示所述用戶界面的一個(gè)或多個(gè)其它元素所綁定的數(shù)據(jù)已被更新并被存儲(chǔ)在所述本地高速緩存中的一個(gè)或多個(gè)其它事件。
13.如權(quán)利要求12所述的方法,其特征在于,還包括 在一定時(shí)器在所述用戶界面線程上期滿之后,由所述用戶界面線程處理所述隊(duì)列中的每一事件。
14.如權(quán)利要求13所述的方法,其特征在于,由所述用戶界面線程處理所述隊(duì)列中的每一事件包括 由所述用戶界面線程訪問所述本地高速緩存以檢索所述用戶界面元素的一個(gè)或多個(gè)其它元素中的每一個(gè)所綁定的更新后的數(shù)據(jù);以及 將所述更新后的數(shù)據(jù)填充到所述用戶界面的一個(gè)或多個(gè)其它元素中的每一個(gè)中。
15.在包括處理器的計(jì)算機(jī)系統(tǒng)中,所述計(jì)算機(jī)系統(tǒng)執(zhí)行經(jīng)由用戶界面線程顯示用戶界面的多線程應(yīng)用,一種存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀存儲(chǔ)設(shè)備,所述指令當(dāng)被處理器執(zhí)行時(shí),執(zhí)行一種將數(shù)據(jù)從綁定源異步綁定至綁定目標(biāo)的方法,所述方法包括 由所述用戶界面線程判斷所述用戶界面的元素所綁定的數(shù)據(jù)要被更新; 由所述用戶界面線程訪問本地高速緩存來確定更新后的數(shù)據(jù)是否被存儲(chǔ)在所述本地高速緩存中; 由所述用戶界面線程請(qǐng)求單獨(dú)的線程,來從所述用戶界面的元素所綁定的數(shù)據(jù)源檢索更新后的數(shù)據(jù),以使得所述用戶界面線程繼續(xù)執(zhí)行而不會(huì)阻塞,直到更新后的數(shù)據(jù)被獲??; 由所述單獨(dú)的線程向所述數(shù)據(jù)源請(qǐng)求更新后的數(shù)據(jù); 在接收更新后的數(shù)據(jù)之后,由所述單獨(dú)的線程將所述更新后的數(shù)據(jù)存儲(chǔ)在所述本地高速緩存中;以及 由所述單獨(dú)的線程通知所述用戶界面線程,更新后的數(shù)據(jù)已被存儲(chǔ)在所述本地高速緩存中。
全文摘要
本發(fā)明涉及異步數(shù)據(jù)綁定。本發(fā)明涉及將數(shù)據(jù)從數(shù)據(jù)源異步綁定至數(shù)據(jù)目標(biāo)的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。用戶界面線程和單獨(dú)的線程被用于允許用戶界面線程繼續(xù)執(zhí)行而非阻塞以獲取更新后的數(shù)據(jù),該更新后的數(shù)據(jù)為用戶界面線程正在管理的用戶界面的元素所綁定。單獨(dú)的線程從數(shù)據(jù)源獲取更新后的數(shù)據(jù),將更新后的數(shù)據(jù)存儲(chǔ)在本地高速緩存中,并通知用戶界面線程,更新后的數(shù)據(jù)存在于本地高速緩存中。用戶界面線程在檢測(cè)到通知之后,訪問本地高速緩存中的更新后的數(shù)據(jù),并將更新后的數(shù)據(jù)填充到用戶界面中。
文檔編號(hào)G06F9/44GK102937897SQ201210473640
公開日2013年2月20日 申請(qǐng)日期2012年11月20日 優(yōu)先權(quán)日2011年11月21日
發(fā)明者A·卡扎, S·P·伯克 申請(qǐng)人:微軟公司