專利名稱:帶有后臺(tái)應(yīng)用邏輯的響應(yīng)式用戶界面的制作方法
帶有后臺(tái)應(yīng)用邏輯的響應(yīng)式用戶界面
背景技術(shù):
終端用戶期望在即使同時(shí)有多個(gè)任務(wù)處于活動(dòng)時(shí)現(xiàn)代的聯(lián)網(wǎng)應(yīng)用仍然是響應(yīng)式的。為解決這種期望,某些開發(fā)人員學(xué)習(xí)和實(shí)現(xiàn)異步模式和架構(gòu),異步模式和架構(gòu)可允許用戶界面在應(yīng)用邏輯運(yùn)行的同時(shí)被解除阻塞。一般開發(fā)人員習(xí)慣于其中以串行的方式來(lái)執(zhí)行所有任務(wù)的同步模式和架構(gòu)。異步模式和架構(gòu)對(duì)于這些開發(fā)人員而言可能是難以理解和正確實(shí)現(xiàn)的。
發(fā)明內(nèi)容
無(wú)論先前的用戶界面以及應(yīng)用邏輯工具和技術(shù)的優(yōu)點(diǎn)是什么,它們都無(wú)法識(shí)別出用于本文所述和所要求保護(hù)的帶有后臺(tái)應(yīng)用邏輯的響應(yīng)式 用戶界面的工具和技術(shù),也無(wú)法實(shí)現(xiàn)這些工具和技術(shù)所產(chǎn)生的優(yōu)點(diǎn)。在一實(shí)施例中,所述工具和技術(shù)可包括在后臺(tái)線程上運(yùn)行同步應(yīng)用邏輯的同時(shí)在用戶界面線程上將用戶界面維護(hù)在響應(yīng)式狀態(tài)中。應(yīng)用邏輯可在后臺(tái)線程上訪問對(duì)象,并且用戶界面可在用戶界面線程上訪問同一對(duì)象。如此處所使用的,當(dāng)用戶界面能夠?qū)τ脩糨斎牒透伦鞒鲰憫?yīng)時(shí),用戶界面被認(rèn)為處于響應(yīng)式狀態(tài)中。同步應(yīng)用邏輯是這樣的一種應(yīng)用邏輯如果按照邏輯中規(guī)定的順序來(lái)執(zhí)行任務(wù),則該邏輯就能夠正確地操作。如此處所使用的,對(duì)象是一實(shí)體,諸如值、變量、函數(shù)或數(shù)據(jù)結(jié)構(gòu),該實(shí)體可由計(jì)算環(huán)境中的一個(gè)或多個(gè)線程操縱,諸如運(yùn)行用戶界面的線程和/或運(yùn)行應(yīng)用邏輯的線程。在所述工具和技術(shù)的另一實(shí)施例中,可接收對(duì)要在對(duì)象上完成的工作的請(qǐng)求。工作在廣義上用來(lái)指代對(duì)對(duì)象的任何類型的操縱,諸如修改對(duì)象、加載來(lái)自對(duì)象的信息等??梢源_定該工作是要被分派到運(yùn)行應(yīng)用邏輯的至少一個(gè)后臺(tái)線程還是要被分派到運(yùn)行一個(gè)或多個(gè)用戶界面元素的至少一個(gè)用戶界面線程。如果請(qǐng)求要被分派到至少一個(gè)后臺(tái)線程,則該工作可被分派到所述至少一個(gè)后臺(tái)線程而不必阻塞所述至少一個(gè)用戶界面線程。然而,如果請(qǐng)求要被分派到至少一個(gè)用戶界面線程,則該工作可被分派到所述至少一個(gè)用戶界面線程,并且所述至少一個(gè)后臺(tái)線程可被阻塞。在所述工具和技術(shù)的又一實(shí)施例中,一個(gè)或多個(gè)用戶界面元素可在用戶界面線程上運(yùn)行。用戶界面元素可表示業(yè)務(wù)對(duì)象的至少一部分。業(yè)務(wù)邏輯可被應(yīng)用于后臺(tái)線程上的業(yè)務(wù)對(duì)象,并且業(yè)務(wù)對(duì)象可在用戶界面線程上被修改。在對(duì)象在用戶界面線程上被修改的同時(shí),后臺(tái)線程可被阻塞。如此處所使用的,業(yè)務(wù)對(duì)象是表示一個(gè)或多個(gè)業(yè)務(wù)項(xiàng)目的對(duì)象,諸如人(顧客、廠商、雇員等)、發(fā)票、會(huì)議室、大樓等。業(yè)務(wù)邏輯是被應(yīng)用于一個(gè)或多個(gè)業(yè)務(wù)對(duì)象的應(yīng)用邏輯,諸如被應(yīng)用以使得對(duì)象如對(duì)于該對(duì)象所表示的業(yè)務(wù)項(xiàng)目的類型所預(yù)期般地操作的邏輯、或者被應(yīng)用以使得對(duì)象配置以符合特定業(yè)務(wù)實(shí)體的規(guī)則(用戶對(duì)象可訪問特定類型的發(fā)票的規(guī)則等等)的邏輯。提供本發(fā)明內(nèi)容是為了以簡(jiǎn)化的形式介紹一些概念。這些概念將在以下具體實(shí)施方式
中進(jìn)一步描述。本發(fā)明內(nèi)容并不旨在標(biāo)識(shí)所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)主題的范圍。類似地,本發(fā)明不限于解決在背景技術(shù)具體實(shí)施方式
、或附圖中討論的特定技術(shù)、工具、環(huán)境、缺點(diǎn)、或優(yōu)點(diǎn)的實(shí)現(xiàn)。
圖I是其中可實(shí)現(xiàn)所描述的各實(shí)施例中的一個(gè)或多個(gè)實(shí)施例的合適的計(jì)算環(huán)境的框圖。圖2是結(jié)合使用其可實(shí)現(xiàn)所描述的各實(shí)施例中的一個(gè)或多個(gè)實(shí)施例的計(jì)算環(huán)境的框圖。圖3是示出用于執(zhí)行從對(duì)象的信息的雙線程數(shù)據(jù)讀取的技術(shù)的一示例的示意圖。圖4是示出用于執(zhí)行至對(duì)象的信息的雙線程數(shù)據(jù)寫入的技術(shù)的一示例的示意圖。、
圖5是用于帶有后臺(tái)應(yīng)用邏輯的響應(yīng)式用戶界面的技術(shù)的流程圖。圖6是用于帶有后臺(tái)應(yīng)用邏輯的響應(yīng)式用戶界面的另一技術(shù)的流程圖。圖7是用于帶有后臺(tái)應(yīng)用邏輯的響應(yīng)式用戶界面的又一技術(shù)的流程圖。圖8是用于帶有后臺(tái)應(yīng)用邏輯的響應(yīng)式用戶界面的又一技術(shù)的流程圖。
具體實(shí)施例方式此處描述的各實(shí)施例涉及用于在應(yīng)用邏輯在后臺(tái)中運(yùn)行的同時(shí)允許用戶界面保持響應(yīng)式的改進(jìn)的技術(shù)和工具。這可以在應(yīng)用邏輯開發(fā)人員不必理解異步開發(fā)技術(shù)的情況下實(shí)現(xiàn)。這種改進(jìn)和/或其他改進(jìn)可源于分開或組合地使用各種技術(shù)和工具。這些技術(shù)和工具可包括具有能夠被用戶界面線程和后臺(tái)線程訪問的對(duì)象。同步應(yīng)用邏輯可在后臺(tái)線程上運(yùn)行。因此,該應(yīng)用邏輯的開發(fā)人員可以不實(shí)現(xiàn)或甚至不理解異步模式和編碼技術(shù)。在應(yīng)用邏輯在后臺(tái)線程上運(yùn)行的同時(shí),用戶界面可在用戶界面線程上被維持在響應(yīng)式狀態(tài)中。即使在后臺(tái)線程正在運(yùn)行與對(duì)象有關(guān)的應(yīng)用邏輯時(shí),用戶界面線程也可以處于運(yùn)行中。當(dāng)用戶界面線程接收到請(qǐng)求操縱該對(duì)象的用戶輸入時(shí),用戶界面線程可通過將該用戶輸入轉(zhuǎn)發(fā)至后臺(tái)線程并且隨后在無(wú)需同步地等待操縱代碼完成的情況下繼續(xù)來(lái)異步地履行所述請(qǐng)求。轉(zhuǎn)發(fā)和/或發(fā)送諸如請(qǐng)求、用戶輸入等的通信可包括將通信轉(zhuǎn)換成不同的形式、將通信與其他的通信進(jìn)行組合、將通信分成各個(gè)部分等等。后臺(tái)線程可使用應(yīng)用邏輯來(lái)處理該用戶輸入。如果對(duì)象要被操縱,則后臺(tái)線程可直接訪問該對(duì)象并操縱該對(duì)象。然而,在某些情形中,可能需要在用戶界面線程上通知用戶界面元素該對(duì)象已經(jīng)被操縱。如果是這樣,則工作請(qǐng)求可被發(fā)送至用戶界面線程以供用戶界面線程本身執(zhí)行操縱,以使得可在用戶界面線程上如預(yù)期地提出變更通知。在這種情況下,后臺(tái)線程可同步地等待用戶界面線程完成操縱。用戶界面和后臺(tái)線程之間的通信可通過對(duì)象來(lái)進(jìn)行。由此,后臺(tái)和用戶界面線程可如它們與應(yīng)用對(duì)象正常交互得那樣各自與對(duì)象交互。然而,該對(duì)象可包括與兩個(gè)線程交互的功能,以及在兩個(gè)線程之間傳遞任務(wù)和通信的功能。由此,從此處描述的工具和技術(shù)中可以實(shí)現(xiàn)一個(gè)或多個(gè)實(shí)質(zhì)的益處。例如,開發(fā)人員可開發(fā)用于在后臺(tái)線程上運(yùn)行的同步應(yīng)用邏輯。例如,對(duì)象與多個(gè)線程進(jìn)行交互的功能可被內(nèi)置到軟件開發(fā)系統(tǒng)中,諸如Microsoft’ s Visual Studio 幵發(fā)系統(tǒng)中。開發(fā)人員可使用該開發(fā)系統(tǒng)來(lái)開發(fā)具有開發(fā)人員和/或開發(fā)系統(tǒng)所提供的應(yīng)用邏輯的應(yīng)用,諸如在Visual studio 開發(fā)系統(tǒng)中開發(fā)的用于在Microsoft’ s Silverlight 瀏覽器插件上運(yùn)行的應(yīng)用。然而,也可使用其他類型的應(yīng)用和/或其他類型的軟件開發(fā)系統(tǒng)。無(wú)論具體的開發(fā)系統(tǒng)和/或應(yīng)用類型是什么,開發(fā)人員都可以同步地構(gòu)造應(yīng)用邏輯。然而,如上所述,此處描述的工具和技術(shù)可允許用戶界面將請(qǐng)求對(duì)象操縱的用戶輸入轉(zhuǎn)發(fā)至后臺(tái)線程,并且在不必同步地等待操縱代碼完成所請(qǐng)求的操縱的情況下就繼續(xù)。由此,即使在應(yīng)用邏輯在后臺(tái)線程中運(yùn)行的同時(shí),用戶界面線程以及在該用戶界面線程上運(yùn)行的用戶界面元素也可以是響應(yīng)式的。所附權(quán)利要求中定義的主題不必限于本文描述的益處。本發(fā)明的特定實(shí)現(xiàn)可提供本文描述的益處的全部、一些、或未提供本文描述的益處。盡管本文出于呈現(xiàn)的目的以特定的順序次序描述了用于各種技術(shù)的操作,但應(yīng)理解除非要求特定的排序,否則這種描述方式涵蓋了操作順序上的重新安排。例如,在某些情況下,可以重新安排或并發(fā)執(zhí)行順序地描述的操作。本文參照流程圖描述的技術(shù)可被用于本文描述的一個(gè)或多個(gè)系統(tǒng)和/或用于一個(gè)或多個(gè)其他系統(tǒng)。例如,此處描述的各種工具和技術(shù)可用硬件或軟件、或兩者的組合來(lái)實(shí)現(xiàn)。此外,為了簡(jiǎn)單起見,流程圖可能未示出可結(jié)合其他技術(shù)來(lái)使用特定技術(shù)的各種方式。I.示例性計(jì)算環(huán)境 圖I示出其中可實(shí)現(xiàn)所描述的各實(shí)施例中的一個(gè)或多個(gè)實(shí)施例的合適的計(jì)算環(huán)境(100)的一般化示例。例如,一個(gè)或多個(gè)這樣的計(jì)算環(huán)境可用作用于帶有后臺(tái)應(yīng)用邏輯的響應(yīng)式用戶界面的環(huán)境。一般而言,可使用各種不同的通用或?qū)S糜?jì)算系統(tǒng)配置。適用于此處所描述的工具和技術(shù)的公知計(jì)算系統(tǒng)配置的示例包括,但不限于,服務(wù)器場(chǎng)和服務(wù)器群集、個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持式或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)PC、小型機(jī)、大型計(jì)算機(jī)、包括上述系統(tǒng)或設(shè)備中的任一個(gè)的分布式計(jì)算環(huán)境等。計(jì)算環(huán)境(100)不旨在對(duì)本發(fā)明的使用范圍或功能提出任何限制,因?yàn)楸景l(fā)明可以在完全不同的通用或?qū)S糜?jì)算環(huán)境中實(shí)現(xiàn)。參考圖1,計(jì)算環(huán)境(100)包括至少一個(gè)處理單元(110)和存儲(chǔ)器(120)。在圖I中,這一最基本的配置(130)被包括在虛線內(nèi)。處理單元(110)執(zhí)行計(jì)算機(jī)可執(zhí)行指令,并且可以是真實(shí)或虛擬處理器。在多處理系統(tǒng)中,多個(gè)處理單元執(zhí)行計(jì)算機(jī)可執(zhí)行指令以提高處理能力。存儲(chǔ)器(120)可以是易失性存儲(chǔ)器(例如,寄存器、高速緩存、RAM)、非易失性存儲(chǔ)器(例如,如1^£ 1 011、閃存)、或兩者的某種組合。存儲(chǔ)器(120)存儲(chǔ)使用帶有后臺(tái)應(yīng)用邏輯(諸如同步后臺(tái)應(yīng)用邏輯)的響應(yīng)式用戶界面的軟件(180)。盡管為了清楚起見用線條示出了圖I的各框,但是,實(shí)際上,描繪各組件并不是那樣清楚,并且用比喻方法,圖I以及下文討論的其他附圖的線條更精確地將是灰色的和模糊的。例如,可以將諸如顯示設(shè)備等呈現(xiàn)組件認(rèn)為是I/O組件。而且,處理器具有存儲(chǔ)器。發(fā)明人關(guān)于此點(diǎn)認(rèn)識(shí)到,這是本領(lǐng)域的特性,并且重申,圖I的圖示只是例示可結(jié)合本發(fā)明的一個(gè)或多個(gè)實(shí)施例來(lái)使用的示例性計(jì)算設(shè)備。諸如“工作站”、“服務(wù)器”、“膝上型計(jì)算機(jī)”、“手持式設(shè)備”等分類之間沒有區(qū)別,它們?nèi)慷急徽J(rèn)為是在圖I的范圍之內(nèi)的并且被稱為“計(jì)算機(jī)”、“計(jì)算環(huán)境”、或“計(jì)算設(shè)備”。計(jì)算環(huán)境(100)可具有附加特征。在圖I中,計(jì)算環(huán)境(100)包括存儲(chǔ)(140)、一個(gè)或多個(gè)輸入設(shè)備(150)、一個(gè)或多個(gè)輸出設(shè)備(160)以及一個(gè)或多個(gè)通信連接(170)。諸如總線、控制器或網(wǎng)絡(luò)等互連機(jī)制(未示出)將計(jì)算環(huán)境(100)的各組件互連。通常,操作系統(tǒng)軟件(未示出)為在計(jì)算環(huán)境(100)中執(zhí)行的其它軟件提供操作環(huán)境,并協(xié)調(diào)計(jì)算環(huán)境(100)的各組件的活動(dòng)。存儲(chǔ)(140)可以是可移動(dòng)或不可移動(dòng)的,并可包括諸如磁盤、磁帶或磁帶盒、CD-ROM、CD-RW、DVD之類的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),或者可用于儲(chǔ)存信息并可在計(jì)算環(huán)境(100)內(nèi)訪問的任何其它介質(zhì)。存儲(chǔ)(140)儲(chǔ)存用于軟件(180)的指令。輸入設(shè)備(150)可以是諸如鍵盤、鼠標(biāo)、筆或跟蹤球等觸摸輸入設(shè)備;語(yǔ)音輸入設(shè)備;掃描設(shè)備;網(wǎng)絡(luò)適配器KD/DVD讀取器;或可向計(jì)算環(huán)境(100)提供輸入的另一設(shè)備。輸出設(shè)備(160)可以是顯示器、打印機(jī)、揚(yáng)聲器、⑶/DVD刻錄機(jī)、網(wǎng)絡(luò)適配器、或從計(jì)算環(huán)境(100)提供輸出的另一設(shè)備。
通信連接(170)允許通過通信介質(zhì)與另一計(jì)算實(shí)體進(jìn)行通信。因此,計(jì)算環(huán)境
(100)可使用通往諸如個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或另一常見網(wǎng)絡(luò)節(jié)點(diǎn)等一個(gè)或多個(gè)遠(yuǎn)程計(jì)算設(shè)備的邏輯連接而工作在聯(lián)網(wǎng)環(huán)境中。通信介質(zhì)以已調(diào)制數(shù)據(jù)信號(hào)的形式傳達(dá)諸如數(shù)據(jù)或計(jì)算機(jī)可執(zhí)行指令或請(qǐng)求等信息。已調(diào)制數(shù)據(jù)信號(hào)是其一個(gè)或多個(gè)特征以在信號(hào)中編碼信息的方式設(shè)置或改變的信號(hào)。作為示例而非局限,通信介質(zhì)包括以電、光、RF、紅外、聲學(xué)或其他載波實(shí)現(xiàn)的有線或無(wú)線技術(shù)。各種工具和技術(shù)可以在計(jì)算機(jī)可讀介質(zhì)的一般上下文中描述。計(jì)算機(jī)可讀介質(zhì)可以是可在計(jì)算環(huán)境內(nèi)訪問的任何可用介質(zhì)。作為示例而非局限,對(duì)于計(jì)算環(huán)境(100),計(jì)算機(jī)可讀介質(zhì)包括存儲(chǔ)器(120)、存儲(chǔ)(140)、和以上的組合。這些工具和技術(shù)可在諸如程序模塊中所包括的在目標(biāo)真實(shí)或虛擬處理器上的計(jì)算環(huán)境中執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、庫(kù)、對(duì)象、類、組件、數(shù)據(jù)結(jié)構(gòu)等。程序模塊的功能可以如各實(shí)施例中所需的組合或在程序模塊之間分離。用于程序模塊的計(jì)算機(jī)可執(zhí)行指令可以在本地或分布式計(jì)算環(huán)境中執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。出于演示的目的,詳細(xì)描述使用了如“確定”、“選擇”、“調(diào)整”、“發(fā)送”和“操作”等術(shù)語(yǔ)來(lái)描述計(jì)算環(huán)境中的計(jì)算機(jī)操作。這些以及其他類似術(shù)語(yǔ)是對(duì)計(jì)算機(jī)執(zhí)行的操作的高層抽象,并且不應(yīng)混淆于人類執(zhí)行的動(dòng)作,除非明確指出人類(諸如“用戶”)的動(dòng)作執(zhí)行。對(duì)應(yīng)于這些術(shù)語(yǔ)的實(shí)際的計(jì)算機(jī)操作取決于實(shí)現(xiàn)而不同。II.用于具有應(yīng)用邏輯的響應(yīng)式用戶界面的系統(tǒng)和環(huán)境圖2是結(jié)合其可諸如通過在運(yùn)行后臺(tái)應(yīng)用邏輯的同時(shí)將用戶界面維持在響應(yīng)式狀態(tài)中來(lái)實(shí)現(xiàn)此處描述的各實(shí)施例中的一個(gè)或多個(gè)實(shí)施例的計(jì)算環(huán)境(200)的框圖。計(jì)算環(huán)境(200)可包括諸如業(yè)務(wù)對(duì)象的應(yīng)用對(duì)象(210)。對(duì)象(210)可包括可操作用于調(diào)度多個(gè)線程上的任務(wù)的調(diào)度程序(212),如下文更詳細(xì)地描述的。另選地,調(diào)度程序可在對(duì)象(210)外部。A.用戶界面組件用戶界面(220)可包括一個(gè)或多個(gè)用戶界面元素,它們可表示對(duì)象(210)的至少一部分。例如,用戶界面可包括表示對(duì)象(210)中的一個(gè)或多個(gè)數(shù)據(jù)域的一個(gè)或多個(gè)標(biāo)準(zhǔn)用戶界面元素(列表、復(fù)選框、文本框、按鈕、圖、圖片等)。用戶界面可在用戶界面線程(222)上運(yùn)行,或可能地在諸如線程池之類的多個(gè)用戶界面線程(未示出)上運(yùn)行。用戶界面線程(222)可專用于用戶界面(220),或者它可為諸如其他用戶界面共享。用戶界面線程(222)可根據(jù)標(biāo)準(zhǔn)排隊(duì)實(shí)踐(先進(jìn)先出排序等)來(lái)從用戶界面任務(wù)隊(duì)列(224)接收任務(wù)。用戶界面分派器(226)可從對(duì)象(210)中的調(diào)度程序(212)接收任務(wù),并且可將任務(wù)輸入到用戶界面任務(wù)隊(duì)列(224)中以供在用戶界面線程(222)上執(zhí)行。同樣,用戶界面線程(222)可訪問對(duì)象(210 ),諸如以將修改或訪問請(qǐng)求傳遞給對(duì)象(210)。在操縱對(duì)象(210 )時(shí)還可諸如通過使來(lái)自對(duì)象的信息被加載或通過修改對(duì)象(210)在用戶界面線程(222)上發(fā)出針對(duì)一個(gè)或多個(gè)監(jiān)聽者(諸如用戶界面(220)) 通知。B.邏輯和后臺(tái)組件諸如業(yè)務(wù)邏輯之類的應(yīng)用邏輯(230)可在后臺(tái)線程(232)上運(yùn)行并且可被應(yīng)用于對(duì)象(210)。例如,應(yīng)用邏輯(230)可包括控制對(duì)對(duì)象(210)的修改和訪問的標(biāo)準(zhǔn)邏輯。應(yīng)用邏輯(230)可在后臺(tái)線程(232)上運(yùn)行。事實(shí)上,應(yīng)用邏輯(230)可在諸如線程池配置中的多個(gè)后臺(tái)線程(232)上運(yùn)行,并且線程可專用于或可以不專用于運(yùn)行應(yīng)用邏輯(230)。后臺(tái)任務(wù)隊(duì)列(234)可根據(jù)標(biāo)準(zhǔn)排隊(duì)實(shí)踐(先進(jìn)先出排序等)來(lái)將任務(wù)提供給后臺(tái)線程(232)。后臺(tái)分派器(236)可從對(duì)象(210)中的調(diào)度程序(212)接收任務(wù),并且可將任務(wù)輸入到后臺(tái)任務(wù)隊(duì)列(234)中以供在后臺(tái)線程(232)上執(zhí)行。同樣,后臺(tái)線程(232)可訪問對(duì)象(210),諸如以將修改或訪問請(qǐng)求傳遞給對(duì)象(210)。在操縱對(duì)象(210)時(shí)還可在后臺(tái)線程(232)上發(fā)出針對(duì)一個(gè)或多個(gè)監(jiān)聽者(諸如來(lái)自應(yīng)用邏輯(220)的監(jiān)聽者)的通知。C.與用戶界面和后臺(tái)線程的對(duì)象交互對(duì)于對(duì)象(210)的操作以及它的調(diào)度程序(212)與用戶界面分派器(226)以及后臺(tái)分派器(236)之間的交互可允許同步應(yīng)用邏輯(230)以異步的方式(即,應(yīng)用邏輯(230)可在后臺(tái)線程(232)上運(yùn)行,同時(shí)用戶界面(220)保持解除阻塞并且在用戶界面線程(222)上是響應(yīng)式的)在后臺(tái)線程(232)上運(yùn)行。當(dāng)工作由后臺(tái)線程(232)發(fā)起時(shí),工作可被分派到用戶界面分派器(226)從而以同步的方式來(lái)運(yùn)行(S卩,用戶界面線程(222)可執(zhí)行從后臺(tái)線程(232)分派的工作,同時(shí)后臺(tái)線程(232)被阻塞)。這可以允許避免線程(222和232)之間的沖突,因?yàn)樵谟脩艚缑婢€程(222)實(shí)際上操縱對(duì)象(210)的同時(shí)后臺(tái)線程(232)可被阻塞。此外,即使應(yīng)用邏輯(230)是同步的,在應(yīng)用邏輯(230)在運(yùn)行的同時(shí),用戶界面(220)也可保持響應(yīng)式的。調(diào)度程序(212)可隱式地知曉用于對(duì)象(210)的用戶界面分派器(226)和后臺(tái)分派器(236)。如下文中更詳細(xì)地討論的,對(duì)象(210)可能已經(jīng)定義了用于從用戶界面線程(222)或后臺(tái)線程(232)進(jìn)行訪問的行為,以使得用戶界面數(shù)據(jù)綁定和后臺(tái)應(yīng)用邏輯任務(wù)可并發(fā)地工作。因此,對(duì)象(210)可從線程(222或232)中的任一個(gè)的角度來(lái)管理共同的操作,并且組織用戶界面分派器(226)和后臺(tái)分派器(236)之間的工作,以使得每一線程(222和232)都可以看見業(yè)務(wù)對(duì)象(210)的一致的視圖而不會(huì)意識(shí)到有其他線程(222或232)。對(duì)象(210)可如此操作以使得用戶界面線程不被阻塞,即使在應(yīng)用邏輯(230)正在對(duì)象(210)上運(yùn)行的時(shí)候。應(yīng)用邏輯(230)可由后臺(tái)分派器(236)在后臺(tái)線程(232)上執(zhí)行。對(duì)應(yīng)用邏輯(230)的這種執(zhí)行可包括命令、數(shù)據(jù)確認(rèn)、屬性計(jì)算、數(shù)據(jù)訪問等。諸如數(shù)據(jù)綁定以及用戶界面元素的執(zhí)行的用戶界面(220)的任務(wù)可由用戶界面分派器(226)在用戶界面線程(222)上執(zhí)行。用戶界面線程(222)和后臺(tái)線程(232)可發(fā)起業(yè)務(wù)對(duì)象(210)的屬性獲取和設(shè)置以及命令調(diào)用。另外,用戶界面線程(222)和后臺(tái)線程(232)可監(jiān)聽對(duì)象(210)的變更事件,諸如屬性和列表變更事件??稍诒O(jiān)聽者自己的線程(222或232)上發(fā)出通知。另外,對(duì)象(210)和它的調(diào)度程序(212)可以在分派器(226和236)之間來(lái)回移動(dòng)工作,并且按需阻塞后臺(tái)線程。這種配置可允許用戶界面(220)和應(yīng)用邏輯(230)兩者都看見對(duì)象(210)的一致的視圖,并且即使在應(yīng)用邏輯(230)在對(duì)象(210)上運(yùn)行時(shí)也允許用戶界面(220)保持響應(yīng)式的。 有了計(jì)算環(huán)境(200 )的這些特征,可以實(shí)現(xiàn)一個(gè)或多個(gè)益處。例如,用戶界面線程(222)和后臺(tái)線程(232)兩者可看見業(yè)務(wù)對(duì)象(210)的一致的狀態(tài),而不存在線程之間的數(shù)據(jù)競(jìng)賽或高速緩存相干性問題。應(yīng)用邏輯(230)可被編寫成要在同步環(huán)境中運(yùn)行似的,盡管它可在用戶界面(220)是響應(yīng)式的同時(shí)運(yùn)行。因此,應(yīng)用邏輯(230)的開發(fā)人員可用同步的方式來(lái)編寫應(yīng)用邏輯,并且通??稍谡{(diào)試的同時(shí)與當(dāng)前的后臺(tái)線程(232)交互。此外,對(duì)于終端用戶,用戶界面(220)可保持響應(yīng)式的,并且很大程度上與對(duì)象(210)的真實(shí)狀態(tài)(如后臺(tái)線程(232)所表示的)保持一致。當(dāng)應(yīng)用邏輯(230)在運(yùn)行時(shí),運(yùn)行應(yīng)用邏輯(230)和用戶界面(220)的應(yīng)用可以運(yùn)行而無(wú)需掛起,并且用戶界面(220)可立即刷新以指示對(duì)業(yè)務(wù)對(duì)象(210)的當(dāng)前狀態(tài)的變更。盡管用戶界面(220)能夠保持很大程度的一致,但在由后臺(tái)線程(232)處理對(duì)信息的更新時(shí)在更新用戶界面(220)上的信息方面可能存在某些時(shí)間滯后。如果時(shí)間滯后太長(zhǎng),則用戶界面(220)可通知用戶后臺(tái)線程正在工作(諸如通過更新值)。這可以通過以下方式來(lái)實(shí)現(xiàn)用戶界面(220)詢問后臺(tái)分派器(236)它當(dāng)前是否正在處理,并且如果是,則通知用戶該值可能被改變。例如,用戶界面可呈現(xiàn)中間待處理狀態(tài)(如果存在待處理的工作)。應(yīng)用可與多個(gè)對(duì)象(210)交互。在一種配置中,每一個(gè)這樣的對(duì)象(210)可具有其自己專用的后臺(tái)分派器(236)。另選地,更復(fù)雜的后臺(tái)分派器(236)能夠與多個(gè)對(duì)象交互。這可能還涉及更復(fù)雜的對(duì)象(210),諸如包括更復(fù)雜的調(diào)度程序(212)的對(duì)象。應(yīng)用還可具有多個(gè)用戶界面(220),諸如在應(yīng)用具有多個(gè)屏幕并且每一個(gè)屏幕被認(rèn)為是單獨(dú)的用戶界面(220)的情況中。每一個(gè)這樣的用戶界面(220)可具有其自己的專用的用戶界面分派器(226),所述分派器將任務(wù)分派給一個(gè)或多個(gè)線程。然而,再一次,更復(fù)雜的用戶界面分派器(226)和/或更復(fù)雜的對(duì)象(210)可允許用戶界面分派器(226)在多個(gè)用戶界面(220)和/或多個(gè)用戶界面線程(222)之間共享。III.雙線程的數(shù)據(jù)讀取和寫入現(xiàn)在將參考圖3和圖4來(lái)討論用于對(duì)象的雙線程的數(shù)據(jù)讀取和寫入的技術(shù)。圖3和圖4被簡(jiǎn)化以忽略諸如用戶界面和后臺(tái)分派器以及對(duì)象調(diào)度程序的細(xì)節(jié)。然而,用戶界面和后臺(tái)分派器可用于將任務(wù)分派到各個(gè)線程,并且對(duì)象中的調(diào)度程序可為圖3-4的技術(shù)在不同的線程/分派器之間調(diào)度任務(wù),如上文參考圖2所討論的。A.對(duì)象的雙線程數(shù)據(jù)讀取現(xiàn)在參考圖3,將討論用于執(zhí)行從對(duì)象的信息的雙線程數(shù)據(jù)讀取的技術(shù)(300)的一示例。圖3在中心示出對(duì)象(310)。用戶界面(320)可表示對(duì)象(310)的至少一部分,并且可以在用戶界面線程(322 )上運(yùn)行,該線程在對(duì)象(310)的左邊示出。在對(duì)象(310 )的右邊,應(yīng)用邏輯(330)被示為在后臺(tái)線程(332)上運(yùn)行。在圖3中的附圖下半部分以及下文討論的圖4中示出稍后的動(dòng)作,盡管在實(shí)際操作中可對(duì)這些動(dòng)作進(jìn)行某種重新排序。用戶界面(320)可發(fā)起數(shù)據(jù)讀取。例如,這可以響應(yīng)于請(qǐng)求用戶界面元素來(lái)顯示來(lái)自對(duì)象(310)的信息的用戶輸入來(lái)完成。由此,用戶界面(320)可將請(qǐng)求(350)發(fā)送給對(duì)象(310)以獲得信息(諸如關(guān)于顧客的信息、關(guān)于發(fā)票的信息等)。例如,這可包括作出對(duì)于對(duì)象(310)的應(yīng)用編程接口(API)調(diào)用。對(duì)象(310)可識(shí)別出該調(diào)用來(lái)自用戶界面線程(322)而非后臺(tái)線程。由此,對(duì)象(310)可返回所請(qǐng)求的當(dāng)前信息而無(wú)需加載該信息。這可導(dǎo)致該對(duì)象將空信息返回(352)發(fā)送給用戶界面線程(322)上的用戶界面(320)。對(duì)象(310)還可通過 將獲得請(qǐng)求(350)排隊(duì)(354)至后臺(tái)線程(332)來(lái)將信息請(qǐng)求轉(zhuǎn)發(fā)至后臺(tái)線程(332)上的應(yīng)用邏輯(330)。響應(yīng)于排隊(duì)(354)至后臺(tái)線程(332)的獲得請(qǐng)求(350 ),應(yīng)用邏輯(330 )可被應(yīng)用(355 )于所述獲得請(qǐng)求(350 )。例如,應(yīng)用邏輯(330 )可被應(yīng)用(355)以確定在應(yīng)用邏輯(330)下用戶是否被授權(quán)訪問所請(qǐng)求的信息。如果所請(qǐng)求的對(duì)信息的讀取被授權(quán),則在后臺(tái)線程(332)上運(yùn)行的應(yīng)用邏輯(330)可發(fā)送獲得請(qǐng)求(356)(諸如通過發(fā)出對(duì)于對(duì)象(310)的API調(diào)用),從而向?qū)ο?310)請(qǐng)求信息。對(duì)象可識(shí)別出獲得請(qǐng)求(356 )是來(lái)自后臺(tái)線程(332 )的,并且可阻塞(358 )后臺(tái)線程(332),同時(shí)在用戶界面線程(322)上加載和設(shè)置對(duì)象(310)。例如,這可以通過以下方式來(lái)完成對(duì)象(310)將任務(wù)在用戶界面線程(322)上排隊(duì),這將導(dǎo)致用戶界面線程(322)發(fā)出要從對(duì)象(310)加載和設(shè)置所請(qǐng)求的信息的低級(jí)調(diào)用。對(duì)象(310)可識(shí)別出這一低級(jí)調(diào)用,并且可以在用戶界面線程(322)上加載和設(shè)置(370)所請(qǐng)求的信息而非將該低級(jí)調(diào)用轉(zhuǎn)發(fā)至后臺(tái)線程(332)。這可導(dǎo)致向用戶界面線程上的一個(gè)或多個(gè)監(jiān)聽者發(fā)出變更的通知(372)(加載和設(shè)置所請(qǐng)求的信息)。用戶界面(320)可接收該通知(372),并且可以通過讀取新加載的信息并更新用戶界面(320)中的任何對(duì)應(yīng)的元素來(lái)作出響應(yīng)。另外,對(duì)象(310)可對(duì)后臺(tái)線程解除阻塞(374)并且向后臺(tái)線程上的一個(gè)或多個(gè)監(jiān)聽者發(fā)出變更通知(376)。另外,響應(yīng)于所述獲得請(qǐng)求(356),所請(qǐng)求的信息可被返回(378)至后臺(tái)線程(332)中的應(yīng)用邏輯(330)。在這一技術(shù)中,應(yīng)用邏輯(330)可在后臺(tái)線程(332)中同步地應(yīng)用于獲得關(guān)于對(duì)象的信息的請(qǐng)求(350)。在這么做的同時(shí),用戶界面(320)可保持在用戶界面線程(322)上運(yùn)行而不被阻塞,以使得結(jié)果實(shí)際上是對(duì)后臺(tái)線程(332)和用戶界面線程(322)的并行操作。由此,用戶界面(320)可保持對(duì)用戶輸入是響應(yīng)式的,即使應(yīng)用邏輯(330)正被應(yīng)用于獲得請(qǐng)求(350 )。然而,在用戶界面線程(322 )加載和設(shè)置(370 )所請(qǐng)求的信息的同時(shí)后臺(tái)線程可被阻塞(358),以使得可以避免兩個(gè)線程(322和332)之間的沖突,諸如數(shù)據(jù)競(jìng)賽。這可以在允許應(yīng)用邏輯(330)以同步的方式被構(gòu)造、緩解應(yīng)用邏輯開發(fā)人員必須應(yīng)用復(fù)雜的異步編碼技術(shù)的負(fù)擔(dān)的同時(shí)來(lái)實(shí)現(xiàn)。如果并未預(yù)期要在用戶界面線程上完成所述獲得,則后臺(tái)線程還可直接在后臺(tái)線程上獲得數(shù)據(jù)而不涉及用戶界面線程。這可以在以下情況下完成通過高速緩存剛剛檢索到的值或者設(shè)置值而不使值變化(諸如在數(shù)據(jù)獲得請(qǐng)求是針對(duì)已經(jīng)被加載的值的情況下)。在從后臺(tái)線程接收要獲得數(shù)據(jù)的請(qǐng)求時(shí),對(duì)象可確定所述獲得是否可在后臺(tái)線程上完成、或者所述獲得是否要在用戶界面線程上完成。B.對(duì)于對(duì)象的雙線程的數(shù)據(jù)寫入現(xiàn)在參考圖4,將討論用于執(zhí)行至對(duì)象的信息的雙線程數(shù)據(jù)寫入的技術(shù)(400)的一示例。類似于圖3,圖4在中心示出對(duì)象(410)。用戶界面(420)表示對(duì)象(410)的至少一部分,并且在用戶界面線程(422)上運(yùn)行,該線程在對(duì)象(410)的左邊示出。在對(duì)象(410)的右邊,應(yīng)用邏輯(430)被示為在后臺(tái)線程(432)上運(yùn)行。用戶界面(420)可例如響應(yīng)于對(duì)與對(duì)象(410)中的信息相對(duì)應(yīng)的用戶界面元素作出變更的用戶輸入而發(fā)起數(shù)據(jù)寫入。由此,用戶界面(420)可將設(shè)置請(qǐng)求(450)發(fā)送至對(duì)象(410)以通過在對(duì)象(410)中設(shè)置新的信息來(lái)修改信息。例如,這可包括作出對(duì)于對(duì)象(410)的API調(diào)用。對(duì)象(410)可識(shí)別出該調(diào)用來(lái)自用戶界面線程(422)而非后臺(tái)線程。由此,對(duì)象(410)可將返回(452)發(fā)送至用戶界面(420)而無(wú)需實(shí)際地設(shè)置信息。對(duì)象(410)還可通過將設(shè)置請(qǐng)求(450)排隊(duì)(454)至后臺(tái)線程(432)來(lái)將信息請(qǐng)求轉(zhuǎn)發(fā)至后臺(tái)線程(432)上的應(yīng)用邏輯(430)。響應(yīng)于排隊(duì)至后臺(tái)線程(432)的設(shè)置請(qǐng)求(450),應(yīng)用邏輯(430)可被應(yīng)用于(455)所述請(qǐng)求。例如,應(yīng)用邏輯(430)可被應(yīng)用(455)以確定在該應(yīng)用邏輯下用戶是否被授權(quán)修改所請(qǐng)求的信息、或者確定是否要發(fā)起對(duì)所述對(duì)象(410)或一個(gè)或多個(gè)其他對(duì)象的相關(guān)修改。如果所請(qǐng)求的對(duì)信息的寫入被授權(quán),則在后臺(tái) 線程(432)上運(yùn)行的應(yīng)用邏輯(430)可發(fā)送設(shè)置請(qǐng)求(456)(諸如通過發(fā)出對(duì)于對(duì)象(410)的API調(diào)用),從而請(qǐng)求設(shè)置該信息。對(duì)象(410)可識(shí)別出設(shè)置請(qǐng)求(456)是來(lái)自后臺(tái)線程(432)的,并且可阻塞(458)后臺(tái)線程(432),同時(shí)在用戶界面線程(422)上修改對(duì)象(410)。例如,這可以通過以下方式來(lái)完成對(duì)象(410)將任務(wù)在用戶界面線程(422)上排隊(duì),這將導(dǎo)致用戶界面線程(422)發(fā)出要通過設(shè)置新的信息來(lái)修改對(duì)象(410)的低級(jí)調(diào)用。對(duì)象(410)可識(shí)別出這一低級(jí)調(diào)用,并且可以在用戶界面線程(422)上設(shè)置(470)所請(qǐng)求的信息而非將該低級(jí)調(diào)用轉(zhuǎn)發(fā)至后臺(tái)線程(432)。這可導(dǎo)致向用戶界面線程(422)上的一個(gè)或多個(gè)監(jiān)聽者發(fā)出變更的通知(472)(設(shè)置所請(qǐng)求的信息)。用戶界面(420 )可接收該通知(472 ),并且可以通過讀取新設(shè)置的信息并更新用戶界面(420)中的任何對(duì)應(yīng)的元素來(lái)作出響應(yīng)。另外,對(duì)象(410)可對(duì)后臺(tái)線程(432)解除阻塞(474)并且向后臺(tái)線程(432)上的一個(gè)或多個(gè)監(jiān)聽者發(fā)出變更通知(476)。另外,響應(yīng)于設(shè)置請(qǐng)求(456),返回(478)可被發(fā)送至后臺(tái)線程中的邏輯應(yīng)用(430),所述返回報(bào)告信息已被成功設(shè)置。類似于上述數(shù)據(jù)讀取技術(shù)(300),在這一數(shù)據(jù)寫入技術(shù)(400)中,應(yīng)用邏輯(430)可在后臺(tái)線程(432)中同步地應(yīng)用于設(shè)置關(guān)于對(duì)象(410)的信息的請(qǐng)求(450)。在這么做的同時(shí),用戶界面(420)可保持在用戶界面線程(422)上運(yùn)行而不被阻塞,以使得整個(gè)結(jié)果是異步操作。由此,用戶界面(420)可保持對(duì)用戶輸入是響應(yīng)式的,即使應(yīng)用邏輯(430)正被應(yīng)用于設(shè)置請(qǐng)求(450 )。然而,在用戶界面線程(422 )設(shè)置(470 )所請(qǐng)求的信息的同時(shí)后臺(tái)線程可被阻塞(458),以使得可以避免兩個(gè)線程(422和432)之間的沖突,諸如數(shù)據(jù)競(jìng)賽。這可以在允許應(yīng)用邏輯(430)以同步的方式被構(gòu)造、緩解應(yīng)用邏輯開發(fā)人員必須應(yīng)用復(fù)雜的異步編碼技術(shù)的負(fù)擔(dān)的同時(shí)來(lái)實(shí)現(xiàn)。如果正被設(shè)置的值對(duì)于其他值而言是獨(dú)立的,并且在用戶界面檢查對(duì)象期間不會(huì)造成潛在的不一致,則后臺(tái)線程還可直接在后臺(tái)線程上設(shè)置數(shù)據(jù)而不涉及用戶界面。在從后臺(tái)線程接收要設(shè)置數(shù)據(jù)的請(qǐng)求時(shí),對(duì)象可確定所述設(shè)置是否可在后臺(tái)線程上設(shè)置、或者所述設(shè)置是否要在用戶界面線程上設(shè)置。IV.用于帶有后臺(tái)應(yīng)用邏輯的響應(yīng)式用戶界面的技術(shù)
將參考圖5和圖6來(lái)討論用于帶有后臺(tái)應(yīng)用邏輯的響應(yīng)式用戶界面的技術(shù)。首先參考圖5,在該技術(shù)中,同步應(yīng)用邏輯可在至少一個(gè)后臺(tái)線程上運(yùn)行(510),并且應(yīng)用邏輯可訪問對(duì)象。對(duì)象可以是業(yè)務(wù)對(duì)象,而應(yīng)用邏輯可以是業(yè)務(wù)邏輯。在應(yīng)用邏輯運(yùn)行(510)的同時(shí),用戶界面可在至少一個(gè)用戶界面線程上被維持(520)處于響應(yīng)式狀態(tài),并且用戶界面可以訪問對(duì)象。維持(520)用戶界面處于響應(yīng)式狀態(tài)可包括不阻塞所述至少一個(gè)用戶界面線程,并且所述維持(520)還可包括在所述至少一個(gè)用戶界面線程上訪問對(duì)象。參考圖6,該技術(shù)還可包括將來(lái)自所述至少一個(gè)用戶界面線程的用戶輸入請(qǐng)求發(fā)送(610)至所述對(duì)象,并且將所述用戶輸入請(qǐng)求從所述對(duì)象轉(zhuǎn)發(fā)(620)至至少一個(gè)后臺(tái)線程的分派器。另外,該技術(shù)可包括,響應(yīng)于接收到用戶輸入請(qǐng)求,將所述用戶輸入請(qǐng)求分派(630)到至少一個(gè)后臺(tái)線程的工作線程,將應(yīng)用邏輯應(yīng)用(640)于所述工作線程上的用戶輸入請(qǐng)求,將所述工作請(qǐng)求從所述工作線程發(fā)送(650)至所述對(duì)象,以及將所述工作請(qǐng)求從所述對(duì)象轉(zhuǎn)發(fā)(660)至所述至少一個(gè)用戶界面線程的分派器。該技術(shù)還可包括,響應(yīng)于在所述至少一個(gè)用戶界面線程的分派器處接收到工作請(qǐng)求,在所述至少一個(gè)用戶界面線程上執(zhí)行(670)對(duì)象上的工作(設(shè)置對(duì)象中的信息、從對(duì)象加載信息等)。另外,在所述至少一個(gè)用 戶界面線程上執(zhí)行(670)所述工作的同時(shí),所述至少一個(gè)后臺(tái)線程可被阻塞(680)。例如,如果所述至少一個(gè)后臺(tái)線程是線程池,則所述阻塞可包括阻塞多個(gè)線程或者僅僅阻塞實(shí)際上處理所述工作的那個(gè)線程?,F(xiàn)在參考圖7,將討論用于帶有后臺(tái)應(yīng)用邏輯的響應(yīng)式用戶界面的另一技術(shù)。在該技術(shù)中,可接收(710 )要完成對(duì)象(諸如業(yè)務(wù)對(duì)象)上的工作的請(qǐng)求。例如,工作可包括從對(duì)象加載信息、設(shè)置對(duì)象中的信息等等。請(qǐng)求可在對(duì)象本身處被接收(710)??梢源_定(720)該工作是要被分派到運(yùn)行應(yīng)用邏輯(諸如業(yè)務(wù)邏輯)的至少一個(gè)后臺(tái)線程還是要被分派到運(yùn)行一個(gè)或多個(gè)用戶界面元素的至少一個(gè)用戶界面線程。例如,確定(720)所述工作是要被分派到至少一個(gè)后臺(tái)線程還是被分派到至少一個(gè)用戶界面線程可包括,確定所述請(qǐng)求是來(lái)自至少一個(gè)后臺(tái)線程的還是來(lái)自至少一個(gè)用戶界面線程的。如果請(qǐng)求來(lái)自至少一個(gè)用戶界面線程而沒有由至少一個(gè)后臺(tái)線程處理,則確定(720)所述工作是要被分派到至少一個(gè)后臺(tái)線程還是被分派到至少一個(gè)用戶界面線程可包括,確定所述工作要由至少一個(gè)后臺(tái)線程來(lái)完成。如果請(qǐng)求要被分派到至少一個(gè)后臺(tái)線程,則所述工作可被分派(730)到至少一個(gè)后臺(tái)線程而不必阻塞所述至少一個(gè)用戶界面線程。然而,如果請(qǐng)求要被分派到至少一個(gè)用戶界面線程,則所述工作可被分派(735)到所述至少一個(gè)用戶界面線程,并且所述至少一個(gè)后臺(tái)線程可被阻塞(750)。如果所述工作被分派(730)到至少一個(gè)后臺(tái)線程,則該技術(shù)該可包括將應(yīng)用邏輯應(yīng)用(740)于所述至少一個(gè)后臺(tái)線程上的請(qǐng)求?,F(xiàn)在參考圖8,將討論用于帶有后臺(tái)應(yīng)用邏輯的響應(yīng)式用戶界面的又一技術(shù)。該技術(shù)可包括在至少一個(gè)用戶界面線程上運(yùn)行(810)—個(gè)或多個(gè)用戶界面元素。該一個(gè)或多個(gè)用戶界面元素可表示業(yè)務(wù)對(duì)象的至少一部分。用戶輸入請(qǐng)求可從至少一個(gè)用戶界面線程被發(fā)送(815)至至少一個(gè)后臺(tái)線程。業(yè)務(wù)邏輯可被應(yīng)用(820)于至少一個(gè)后臺(tái)線程上的業(yè)務(wù)對(duì)象,并且該業(yè)務(wù)對(duì)象可在至少一個(gè)后臺(tái)線程上被訪問(840)而不必阻塞至少一個(gè)用戶界面線程。同樣,修改請(qǐng)求可從至少一個(gè)后臺(tái)線程被發(fā)送(850)至至少一個(gè)用戶界面線程。例如,修改請(qǐng)求可被發(fā)送至對(duì)象并從該對(duì)象被轉(zhuǎn)發(fā)至至少一個(gè)用戶界面線程。修改請(qǐng)求可響應(yīng)于發(fā)送自至少一個(gè)用戶界面線程的用戶輸入請(qǐng)求而被發(fā)送(850)至至少一個(gè)后臺(tái)線程。將用戶輸入請(qǐng)求從至少一個(gè)用戶界面線程發(fā)送至至少一個(gè)后臺(tái)線程可包括,將用戶輸入請(qǐng)求發(fā)送至對(duì)象并且將用戶輸入請(qǐng)求從該對(duì)象轉(zhuǎn)發(fā)至至少一個(gè)后臺(tái)線程。業(yè)務(wù)對(duì)象可在至少一個(gè)用戶界面線程上被修改(870),并且在至少一個(gè)用戶界面線程修改業(yè)務(wù)對(duì)象的同時(shí)至少一個(gè)后臺(tái)線程可被阻塞(880)。所述修改(870)可響應(yīng)于來(lái)自至少一個(gè)后臺(tái)線程的請(qǐng)求而完成。在業(yè)務(wù)對(duì)象被修改(870)之后,至少一個(gè)后臺(tái)線程可被解除阻塞(890)。盡管用結(jié)構(gòu)特征和/或方法動(dòng)作專用的語(yǔ)言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述具體特征或動(dòng)作。更確切而言,上述具體特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式公開的?!?br>
權(quán)利要求
1.一種計(jì)算機(jī)系統(tǒng),包括 至少ー個(gè)處理器;以及 包括存儲(chǔ)于其上的指令的存儲(chǔ)器,所述指令在由所述至少一個(gè)處理器執(zhí)行時(shí)致使所述至少ー個(gè)處理器執(zhí)行以下動(dòng)作 在至少ー個(gè)后臺(tái)線程上運(yùn)行同步應(yīng)用邏輯,所述應(yīng)用邏輯在所述至少一個(gè)后臺(tái)線程上訪問對(duì)象;以及 在所述至少ー個(gè)后臺(tái)線程上運(yùn)行所述同步應(yīng)用邏輯的同時(shí),在至少ー個(gè)用戶界面線程上維持用戶界面處于響應(yīng)式狀態(tài),所述用戶界面在所述至少一個(gè)用戶界面線程上訪問所述對(duì)象。
2.如權(quán)利要求I所述的計(jì)算機(jī)系統(tǒng),其特征在于,維持所述用戶界面處于響應(yīng)式狀態(tài)包括不阻塞所述至少一個(gè)用戶界面線程。
3.如權(quán)利要求I所述的計(jì)算機(jī)系統(tǒng),其特征在于,維持所述用戶界面處于響應(yīng)式狀態(tài)包括在所述至少一個(gè)用戶界面線程上訪問所述對(duì)象。
4.如權(quán)利要求I所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述對(duì)象是業(yè)務(wù)對(duì)象并且所述應(yīng)用邏輯是業(yè)務(wù)邏輯。
5.如權(quán)利要求I所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述動(dòng)作還包括 將用戶輸入請(qǐng)求從所述至少ー個(gè)用戶界面線程發(fā)送至所述對(duì)象;以及 將所述用戶輸入請(qǐng)求從所述對(duì)象轉(zhuǎn)發(fā)至所述至少一個(gè)后臺(tái)線程的分派器。
6.如權(quán)利要求5所述的計(jì)算機(jī)系統(tǒng),其特征在干,響應(yīng)于在所述至少一個(gè)后臺(tái)線程的分派器處接收到所述用戶輸入請(qǐng)求,所述動(dòng)作還包括 將所述用戶輸入請(qǐng)求分派到所述至少一個(gè)后臺(tái)線程的工作線程; 在所述工作線程上將所述應(yīng)用邏輯應(yīng)用于所述用戶輸入請(qǐng)求; 將工作請(qǐng)求從所述工作線程發(fā)送至所述對(duì)象;以及 將所述工作請(qǐng)求從所述對(duì)象轉(zhuǎn)發(fā)至所述至少一個(gè)用戶界面線程的分派器。
7.如權(quán)利要求6所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述動(dòng)作還包括,響應(yīng)于在所述至少一個(gè)用戶界面線程的分派器處接收到所述工作請(qǐng)求,在所述至少一個(gè)用戶界面線程上執(zhí)行所述對(duì)象上的工作。
8.如權(quán)利要求7所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述動(dòng)作還包括,在所述至少ー個(gè)用戶界面線程上執(zhí)行工作的同時(shí)阻塞所述至少ー個(gè)后臺(tái)線程。
9.一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括 接收對(duì)要在對(duì)象上完成的工作的請(qǐng)求; 確定所述工作是要被分派到運(yùn)行應(yīng)用邏輯的至少ー個(gè)后臺(tái)線程還是要被分派到運(yùn)行一個(gè)或多個(gè)用戶界面元素的至少ー個(gè)用戶界面線程; 如果所述請(qǐng)求要被分派到所述至少ー個(gè)后臺(tái)線程,則將所述工作分派到所述至少ー個(gè)后臺(tái)線程而不必阻塞所述至少一個(gè)用戶界面線程;以及 如果所述請(qǐng)求要被分派到所述至少一個(gè)用戶界面線程,則將所述工作分派到所述至少一個(gè)用戶界面線程并且阻塞所述至少ー個(gè)后臺(tái)線程。
10.如權(quán)利要求9所述的方法,其特征在于,確定所述工作是要被分派到至少ー個(gè)后臺(tái)線程還是被分派到至少ー個(gè)用戶界面線程包括,確定所述請(qǐng)求是來(lái)自所述至少ー個(gè)后臺(tái)線程的還是來(lái)自所述至少ー個(gè)用戶界面線程的。
11.如權(quán)利要求9所述的方法,其特征在于,如果所述請(qǐng)求來(lái)自所述至少ー個(gè)用戶界面線程而沒有由所述至少ー個(gè)后臺(tái)線程處理,則確定所述工作是要被分派到至少ー個(gè)后臺(tái)線程還是被分派到至少ー個(gè)用戶界面線程包括,確定所述工作要由所述至少一個(gè)后臺(tái)線程來(lái)完成。
12.如權(quán)利要求9所述的方法,其特征在于,所述對(duì)象是業(yè)務(wù)對(duì)象并且所述應(yīng)用邏輯是業(yè)務(wù)邏輯,并且所述方法還包括,如果所述工作被分派到所述至少ー個(gè)后臺(tái)線程,則在所述至少ー個(gè)后臺(tái)線程上將所述業(yè)務(wù)邏輯應(yīng)用于所述請(qǐng)求。
13.如權(quán)利要求9所述的方法,其特征在于,所述請(qǐng)求在所述對(duì)象處被接收。
全文摘要
在同步應(yīng)用邏輯在后臺(tái)線程上運(yùn)行的同時(shí),用戶界面可在用戶界面線程上被維持在響應(yīng)式狀態(tài)中。應(yīng)用邏輯可在后臺(tái)線程上訪問對(duì)象,并且用戶界面可在用戶界面線程上訪問同一對(duì)象。另外,可接收對(duì)要在對(duì)象上完成的工作的請(qǐng)求。如果請(qǐng)求要被分派到后臺(tái)線程,則該工作可被分派到后臺(tái)線程而不必阻塞用戶界面線程。然而,如果請(qǐng)求要被分派到至少一個(gè)用戶界面線程,則該工作可被分派到所述用戶界面線程,并且所述后臺(tái)線程可被阻塞。
文檔編號(hào)G06F3/048GK102667713SQ201080053016
公開日2012年9月12日 申請(qǐng)日期2010年10月29日 優(yōu)先權(quán)日2009年11月24日
發(fā)明者J·J·里瓦德, S·P·阿農(nóng)森, S·W·普羅文 申請(qǐng)人:微軟公司