欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

請求和接收數(shù)據(jù)庫改變通知的系統(tǒng)和方法

文檔序號:6396132閱讀:206來源:國知局
專利名稱:請求和接收數(shù)據(jù)庫改變通知的系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)庫,更特別地,涉及注冊數(shù)據(jù)庫查詢來接收數(shù)據(jù)庫改變通知并發(fā)送指示已注冊的數(shù)據(jù)庫查詢結(jié)果已改變的數(shù)據(jù)庫改變消息的系統(tǒng)和方法。
背景技術(shù)
計算和網(wǎng)絡(luò)技術(shù)已改變了日常生活的很多重要方面。計算機(jī)已成為家用商品而非奢侈品,教育工具和/或娛樂中心,它還向用戶提供財務(wù)管理和預(yù)測、控制如加熱、制冷、照明和安全這樣的日常操作,并在持久可靠的媒體中存儲記錄和圖像的工具。
已有的商業(yè)實踐隨著計算和網(wǎng)絡(luò)技術(shù)而發(fā)展。例如,傳統(tǒng)的銀行交易包括收集如銀行賬號、存折和標(biāo)識這樣的信息、用專門時間到銀行去、乘坐交通工具、排隊等待并通過出納員完成銀行交易。今天,消費(fèi)者可以通過因特網(wǎng)訪問他/她的賬戶并通過點擊鼠標(biāo)按鈕執(zhí)行越來越多的可用交易,如查詢余額、基金轉(zhuǎn)賬和賬單支付。
隨著計算和網(wǎng)絡(luò)技術(shù)變得健壯、安全和可靠,更多的消費(fèi)者、批發(fā)商、零售商、企業(yè)、教育機(jī)構(gòu)、支持團(tuán)體及其類似正在改變其模式并使用因特網(wǎng)而非傳統(tǒng)方法來完成業(yè)務(wù)。例如,很多公司和消費(fèi)者提供網(wǎng)站和/或在線服務(wù)(如,用于購買食品和衣服、搜索信息、發(fā)送電子郵件和玩交互式游戲)。在另一個例子中,股票市場網(wǎng)站可以向用戶提供檢索股票報價和購買股票的工具。
通常,客戶應(yīng)用的用戶接口(如,網(wǎng)頁)用于和服務(wù)器交互,服務(wù)器在可由客戶程序訪問的數(shù)據(jù)庫中存儲信息。數(shù)據(jù)庫對可以在多個用戶和應(yīng)用之間共享的數(shù)據(jù)提供持續(xù)、持久的存儲??蛻魬?yīng)用通常通過查詢從數(shù)據(jù)庫中檢索數(shù)據(jù),查詢返回的結(jié)果包含應(yīng)用感興趣的數(shù)據(jù)的子集。然后應(yīng)用使用、顯示、變換、存儲或處理那些結(jié)果,并可以基于檢索到的結(jié)果提交改變。
一旦檢索到結(jié)果,可以對數(shù)據(jù)庫中使原先檢索到的結(jié)果中和數(shù)據(jù)庫中的狀態(tài)不一致的數(shù)據(jù)做出改變。這樣的改變通常對保存原先檢索到的結(jié)果的客戶是不可見的,除非該客戶向數(shù)據(jù)庫重新提交請求。

發(fā)明內(nèi)容
下面提供發(fā)明簡單的概要以提供對本發(fā)明一些方面的基本理解。此概要并不是本發(fā)明全面的總述。其目的并不是標(biāo)識本發(fā)明的關(guān)鍵/重要元件或限定本發(fā)明的范圍。此概要唯一的目的是以簡化的形式提供本發(fā)明的一些概念,作為后面更加詳細(xì)的說明的先導(dǎo)。
本發(fā)明涉及注冊數(shù)據(jù)庫查詢以在使注冊時的查詢結(jié)果和數(shù)據(jù)庫的當(dāng)前狀態(tài)不一致的數(shù)據(jù)庫改變發(fā)生時接收通知的系統(tǒng)和方法。
通常,用戶請求可以初始化數(shù)據(jù)庫查詢以從數(shù)據(jù)庫中檢索滿足該請求的數(shù)據(jù)。在很多情況下,數(shù)據(jù)庫可以成為資源爭用的源。例如,不止一個用戶可以發(fā)送請求同時查詢數(shù)據(jù)庫得到類似的結(jié)果。然后數(shù)據(jù)庫表示在用戶之間共享的狀態(tài)。共享狀態(tài)爭用會限制系統(tǒng)和/或架構(gòu)的可伸縮性。在其他情況下,用戶可以對數(shù)據(jù)庫頻繁執(zhí)行類似的請求。例如,用戶可以重復(fù)點擊鼠標(biāo)來對數(shù)據(jù)庫發(fā)起類似的請求以定期刷新由應(yīng)用和/或網(wǎng)頁顯示的數(shù)據(jù)并且/或者應(yīng)用可以對數(shù)據(jù)庫定期提交查詢以確定數(shù)據(jù)庫的狀態(tài)是否已改變。例如,重復(fù)的數(shù)據(jù)庫查詢很耗時、降低帶寬、降低性能并消耗很多資源。
現(xiàn)有的用于減少查詢數(shù)量(如通過一個或多個用戶)的技術(shù)包括在數(shù)據(jù)庫外部保存經(jīng)常使用的數(shù)據(jù)。然后用戶可以使用保存的數(shù)據(jù)而不是重復(fù)執(zhí)行查詢。然而保存的數(shù)據(jù)的一致性和準(zhǔn)確性被破壞,因為隨后的數(shù)據(jù)庫改變會使得保存的數(shù)據(jù)與(在已改變的數(shù)據(jù)庫中的)當(dāng)前數(shù)據(jù)不一致,而這為用戶所不知。
根據(jù)本發(fā)明的一個方面,本發(fā)明的系統(tǒng)和方法減輕數(shù)據(jù)庫負(fù)載(如減少查詢)、增加可伸縮性并確保數(shù)據(jù)一致性。例如,一個或多個用戶可以提交數(shù)據(jù)庫查詢并注冊該數(shù)據(jù)庫查詢以在數(shù)據(jù)庫改變更改了或會更改)已注冊的數(shù)據(jù)庫查詢的結(jié)果時接收通知。
在實踐中,查詢的結(jié)果可以被保存在數(shù)據(jù)庫之外(如在web服務(wù)器上的高速緩存中)并由用戶使用,其中用戶可以多次使用保存的結(jié)果,而非另外進(jìn)行返回類似結(jié)果的查詢。當(dāng)發(fā)生的數(shù)據(jù)庫改變會使隨后的查詢的結(jié)果和保存的結(jié)果不一致時,向用戶發(fā)送通知,指示保存的結(jié)果已變得不一致。然后用戶可以例如使用通知來使保存的數(shù)據(jù)變得無效、執(zhí)行查詢來刷新保存的數(shù)據(jù),和/或忽略通知。
本發(fā)明包括注冊數(shù)據(jù)庫查詢、維護(hù)查詢注冊信息、檢測影響已注冊的數(shù)據(jù)庫查詢的數(shù)據(jù)庫改變、提供指示已注冊的數(shù)據(jù)庫查詢已受到影響的消息的系統(tǒng)和方法。例如,注冊接收數(shù)據(jù)庫改變通知通常包括組裝數(shù)據(jù)庫查詢注冊信息并將其提供給服務(wù)器。當(dāng)發(fā)生的數(shù)據(jù)庫改變使數(shù)據(jù)庫狀態(tài)和原先的結(jié)果不一致時,關(guān)聯(lián)的數(shù)據(jù)庫查詢注冊信息變得可由消息發(fā)送服務(wù)訪問。發(fā)送服務(wù)使用數(shù)據(jù)庫查詢注冊信息來構(gòu)建和發(fā)送改變消息。改變消息被用于幫助發(fā)送改變通知到和已注冊的查詢的結(jié)果關(guān)聯(lián)的組件以通知所述組件原先的結(jié)果已變得無效。
所述系統(tǒng)和方法可用于各種環(huán)境,包括客戶機(jī)/服務(wù)器環(huán)境(如,基于SQL的)和web環(huán)境。因此,本發(fā)明提供監(jiān)控數(shù)據(jù)庫查詢的改變的方法并在已注冊的查詢的結(jié)果改變時得到通知。若用戶使用已保存的從數(shù)據(jù)庫檢索到的數(shù)據(jù)并希望在保存的數(shù)據(jù)變得不一致、需要刷新向用戶顯示的數(shù)據(jù)、和/或需要基于改變的結(jié)果采取動作時得到通知,上述系統(tǒng)和方法是有利的。另外,本發(fā)明可以用于現(xiàn)有的架構(gòu)以發(fā)揮安全性、可靠性及可伸縮性,并提供熟悉的編程環(huán)境。
對上述和相關(guān)目標(biāo)的實現(xiàn),本發(fā)明包括隨后詳細(xì)說明并由權(quán)利要求特別指出的特性。下述說明和附圖詳細(xì)闡述本發(fā)明展示性的特定方面和實現(xiàn)。然而這些只是實現(xiàn)本發(fā)明原理的各種方法中的一部分。通過下面對本發(fā)明的詳細(xì)說明和附圖,本發(fā)明的其他目標(biāo)、優(yōu)點和新特性將變得顯而易見。


圖1根據(jù)本發(fā)明的一個方面展示典型的數(shù)據(jù)庫改變消息發(fā)送系統(tǒng);圖2根據(jù)本發(fā)明的一個方面展示典型的服務(wù)器;圖3根據(jù)本發(fā)明的一個方面展示典型的數(shù)據(jù)鑒定系統(tǒng);圖4根據(jù)本發(fā)明的一個方面展示典型的注冊系統(tǒng);圖5根據(jù)本發(fā)明的一個方面展示典型的通知系統(tǒng);圖6根據(jù)本發(fā)明的一個方面展示典型的客戶機(jī)/服務(wù)器系統(tǒng);圖7根據(jù)本發(fā)明的一個方面展示另一個典型的客戶機(jī)/服務(wù)器系統(tǒng);圖8根據(jù)本發(fā)明的一個方面展示典型的安全技術(shù);圖9根據(jù)本發(fā)明的一個方面展示典型的客戶機(jī)/服務(wù)器系統(tǒng);
圖10根據(jù)本發(fā)明的一個方面展示注冊和發(fā)送方法;圖11根據(jù)本發(fā)明的一個方面展示第一個注冊、發(fā)送和通知方法;圖12根據(jù)本發(fā)明的一個方面是圖10的延續(xù);及圖13根據(jù)本發(fā)明的一個方面展示典型的操作系統(tǒng)。
具體實施例方式
現(xiàn)參考附圖對本發(fā)明進(jìn)行說明,其中類似的編號在全文中被用于參考類似的元件。在下面的說明中,為了說明起見,闡明了很多特定的細(xì)節(jié)以提供對本發(fā)明的完整理解。然而,很顯然,可以不用這些特定的細(xì)節(jié)來實現(xiàn)本發(fā)明。在其他情況下,以方框圖的形式展示眾所周知的結(jié)構(gòu)和設(shè)備以幫助說明本發(fā)明。
如在此申請中所用,術(shù)語“組件”指計算機(jī)相關(guān)的實體,或者為硬件、硬件和軟件的組合、軟件,或正在執(zhí)行的軟件。例如,組件可以為,但不僅限于,在處理器上運(yùn)行的進(jìn)程、處理器、對象、可執(zhí)行文件、執(zhí)行的線程、程序和/或計算機(jī)。作為說明,運(yùn)行在服務(wù)器上的應(yīng)用和服務(wù)器都可以視為計算機(jī)組件。一個或更多組件可以駐留在進(jìn)程和/或執(zhí)行的線程內(nèi)且組件可以位于一個計算機(jī)上和/或分布在兩個或更多計算機(jī)上?!熬€程”是進(jìn)程內(nèi)由操作系統(tǒng)內(nèi)核調(diào)度執(zhí)行的實體。如在技術(shù)中所知,每個線程有關(guān)聯(lián)的“上下文”,所述上下文是和線程的執(zhí)行關(guān)聯(lián)的易變的數(shù)據(jù)。線程的上下文包括系統(tǒng)寄存器的內(nèi)容及線程所在進(jìn)程的虛擬地址。因此,包括線程上下文的實際數(shù)據(jù)隨者執(zhí)行而不同。
本發(fā)明涉及在數(shù)據(jù)庫改變會影響已注冊的數(shù)據(jù)庫查詢的結(jié)果時提供通知的系統(tǒng)和方法。所述系統(tǒng)和方法通常使用幫助傳送數(shù)據(jù)庫查詢注冊信息和發(fā)送數(shù)據(jù)庫改變消息的服務(wù)代理、存儲來自服務(wù)代理的數(shù)據(jù)庫查詢注冊信息的隊列以及發(fā)送數(shù)據(jù)庫改變消息的通知發(fā)送服務(wù)。系統(tǒng)和方法可選地使用各種機(jī)制來接收注冊請求、組裝注冊消息、發(fā)送注冊消息、檢測數(shù)據(jù)庫改變、接收數(shù)據(jù)庫改變消息并提供數(shù)據(jù)庫改變通知。
參考圖1,根據(jù)本發(fā)明的一個方面展示典型的數(shù)據(jù)庫改變消息發(fā)送系統(tǒng)100(簡稱系統(tǒng)100)。系統(tǒng)100包括幫助傳輸數(shù)據(jù)庫查詢注冊信息的服務(wù)代理、存儲向服務(wù)代理110提供的數(shù)據(jù)庫查詢注冊信息的第一個隊列1201到第N個隊列120N(N為大于等于1的整數(shù))和至少部分基于數(shù)據(jù)庫查詢注冊信息發(fā)送改變消息的通知發(fā)送服務(wù)130。第一個隊列1201到第N個隊列120N可以整體稱為隊列120。
通常,組件(如,客戶機(jī)、用戶和應(yīng)用)可以用使用系統(tǒng)100的系統(tǒng)注冊(如訂閱)數(shù)據(jù)庫隊列。查詢注冊通常包括連接和/或獨立于查詢結(jié)果的請求提供數(shù)據(jù)庫查詢注冊信息。數(shù)據(jù)庫查詢注冊信息可以包括,例如,唯一的標(biāo)識符、發(fā)送地址、隊列名稱、超時期間和各種通訊及安全選項??梢允褂貌樵冏砸栽谝炎缘牟樵冸S后的執(zhí)行會返回不同的結(jié)果時接收改變消息(如鑒定消息)。會產(chǎn)生改變消息的典型的數(shù)據(jù)庫改變的例子包括插入、更新和刪除,以及大綱的改變。應(yīng)理解,可以附加使用過期期間(如,象包含在注冊信息中的超時期間那樣的超時期間)和/或其他準(zhǔn)則。例如,數(shù)據(jù)庫查詢的注冊可以包括提供過期期間,以使得將在注冊的“X”秒后產(chǎn)生改變消息。
當(dāng)其中隨后的使用已注冊的查詢的請求會返回不同的結(jié)果的數(shù)據(jù)庫改變發(fā)生時,向服務(wù)代理110提供數(shù)據(jù)庫查詢注冊信息。另外,可以順序和/或同時提供其他信息,如說明通知原因的信息給服務(wù)代理110。服務(wù)代理110順序和/或同時向隊列120中的一個提供數(shù)據(jù)庫查詢注冊信息的至少部分,且服務(wù)代理110和/或隊列120調(diào)用通知發(fā)送服務(wù)130。調(diào)用通知發(fā)送服務(wù)130包括激活通知發(fā)送服務(wù)130,如果它還沒有被激活。已激活的通知發(fā)送服務(wù)130可以訪問隊列120并使用存儲在其上的數(shù)據(jù)庫查詢注冊信息來構(gòu)建并發(fā)送改變消息到注冊數(shù)據(jù)庫查詢的組件。如上所述,改變消息通常指示隨后的查詢會返回不一致的結(jié)果。
應(yīng)理解,一個或多個組件可以注冊一個或多個數(shù)據(jù)庫查詢,且所述一個或多個數(shù)據(jù)庫查詢可以返回類似的結(jié)果,如下所述。進(jìn)一步來說,應(yīng)理解,隊列120中的任何一個都可以對一個或多個組件和/或一個或多個查詢存儲數(shù)據(jù)庫查詢注冊信息。上述系統(tǒng)在隊列120間提供同類的存儲。例如,在本發(fā)明的一個方面,可以在類似的隊列中存儲返回類似結(jié)果的查詢的數(shù)據(jù)庫查詢注冊信息。因此,已注冊接收和返回類似結(jié)果的查詢關(guān)聯(lián)的改變消息的組件的數(shù)據(jù)庫查詢注冊信息可以由隊列來分組。在本發(fā)明的另一個方面,和類似組件關(guān)聯(lián)的數(shù)據(jù)庫查詢注冊信息(如,一個或多個查詢的)可以被存儲在類似的隊列中。因此,數(shù)據(jù)庫查詢注冊信息也可以通過組件來分組。然而,應(yīng)理解,也可以使用不同類的存儲。另外,用于存儲數(shù)據(jù)庫查詢注冊信息的隊列可以是缺省的,例如基于數(shù)據(jù)庫查詢注冊信息和/或通過其他技術(shù)來選擇。
再者,應(yīng)理解可以激活不止一個通知發(fā)送服務(wù)。例如,在本發(fā)明的一個方面,可以激活多個通知發(fā)送服務(wù)來訪問類似的隊列來減輕隊列中數(shù)據(jù)庫查詢注冊信息的增加。在本發(fā)明的另一個方面,通知發(fā)送服務(wù)130可以訪問不止一個隊列120,并可以發(fā)送改變消息到一個或多個組件。在本發(fā)明的又一個方面,可以激活多個通知發(fā)送服務(wù)來訪問多個隊列120。
雖然圖1為展示數(shù)據(jù)庫改變消息發(fā)送系統(tǒng)100的組件的方框圖,應(yīng)理解,服務(wù)代理110、第一個隊列1201到第N個隊列120N和通知發(fā)送服務(wù)130可以作為一個或多個計算機(jī)組件實現(xiàn),如計算機(jī)組件這個術(shù)語在此的定義。因此,應(yīng)理解,根據(jù)本發(fā)明,用于實現(xiàn)數(shù)據(jù)庫改變消息發(fā)送系統(tǒng)100、服務(wù)代理110、第一個隊列1201到第N個隊列120N和/或通知發(fā)送服務(wù)130的計算機(jī)可執(zhí)行組件可以被存儲在計算機(jī)可讀媒體上,計算機(jī)可讀媒體包括但不僅限于,ASIC(特定用途集成電路)、CD(光盤)、DVD(數(shù)字視頻盤)、ROM(只讀存儲器)、軟盤、硬盤、EEPROM(電子可擦除只讀存儲器)和存儲器棒。
下面請見圖2,根據(jù)本發(fā)明的一個方面展示典型服務(wù)器200。服務(wù)器200包括幫助存儲和傳輸數(shù)據(jù)庫查詢注冊信息的服務(wù)代理210、存儲數(shù)據(jù)庫查詢注冊信息的隊列220和發(fā)送指示已注冊的數(shù)據(jù)庫查詢結(jié)果已改變的改變消息的通知發(fā)送服務(wù)230。
服務(wù)器代理210幫助存儲和發(fā)送數(shù)據(jù)庫查詢注冊信息。如上所述,數(shù)據(jù)庫注冊信息在注冊或訂閱數(shù)據(jù)庫查詢的請求之后組裝。然后數(shù)據(jù)庫查詢注冊信息可以例如作為消息被發(fā)送到服務(wù)器200。典型的數(shù)據(jù)庫注冊消息是作為基于XML的文件(如“cookie”)來構(gòu)建的,并通常包括位移的標(biāo)識符、發(fā)送地址、隊列名稱和超時期間中的至少一個。
在服務(wù)器200通過已注冊的數(shù)據(jù)庫查詢接收會改變隨后的查詢結(jié)果的數(shù)據(jù)庫改變請求之后,向服務(wù)代理210提供數(shù)據(jù)庫查詢注冊信息。應(yīng)理解,可以使用各種技術(shù)來確定是否發(fā)生了數(shù)據(jù)庫改變及改變是否將影響已注冊的數(shù)據(jù)庫查詢的結(jié)果。
服務(wù)代理210在隊列220中存儲數(shù)據(jù)庫查詢注冊信息的至少部分(如發(fā)送地址和唯一的標(biāo)識符)并調(diào)用通知發(fā)送服務(wù)230。通常通過從數(shù)據(jù)庫查詢注冊信息中抽取隊列名稱來確定所用的隊列220。
在實踐中,使用缺省的隊列名稱或最優(yōu)選擇的隊列(如,部分基于概率、統(tǒng)計、學(xué)習(xí)模型(如,神經(jīng)網(wǎng)絡(luò))和/或自適應(yīng)技術(shù))。如果查詢注冊信息并不包括合法的隊列名稱和/或隊列不可訪問(如,不存在),那么關(guān)聯(lián)的查詢可能會失敗、隨后對關(guān)聯(lián)數(shù)據(jù)的更新可能會失敗,且/或可能返回指示查詢注冊失敗的警告(和結(jié)果一起,如果查詢注冊信息和查詢同時提交)。
調(diào)用通知發(fā)送服務(wù)230包括激活通知發(fā)送服務(wù)230,如果它還沒有被激活。提供激活機(jī)制減少與在會影響已注冊的查詢的結(jié)果的數(shù)據(jù)庫改變之前配置和/或手動地初始化通知發(fā)送服務(wù)230關(guān)聯(lián)的開銷。然而,如果需要,可以預(yù)先配置通知發(fā)送服務(wù)230和隊列。另外,激活機(jī)制提供“握手”來校驗通訊以減少發(fā)送如果通知發(fā)送服務(wù)未被激活時可能丟失的信息。應(yīng)理解通知發(fā)送服務(wù)230可以另外通過外部的刺激和/或用戶由其他組件激活,例如在系統(tǒng)啟動(如冷啟動和熱啟動)時。
激活的通知發(fā)送服務(wù)230可以訪問隊列220。激活期間通常由參數(shù)確定,例如通過數(shù)據(jù)庫查詢注冊信息、當(dāng)通知發(fā)送服務(wù)230已被激活和/或作為缺省的時候在通知發(fā)送服務(wù)230的設(shè)置(如配置)期間數(shù)據(jù)庫查詢注冊信息之前、同時和/或之后動態(tài)地發(fā)送的附加信息來提供所述參數(shù)。所述參數(shù)可以指定例如絕對時間長度(如,在激活后的“X”秒)、服務(wù)一定數(shù)量的隊列項(如,隊列220中的“Y”個項),和/或停止期間(如,在指定的時間期間內(nèi)沒有新的數(shù)據(jù)庫查詢注冊信息被發(fā)送到隊列220)。在激活期間過期后,停止通知發(fā)送服務(wù)130使其進(jìn)入停止?fàn)顟B(tài)。
另外可以使用激活期間作為優(yōu)化技術(shù)。例如,激活期間可以用來在已注冊的數(shù)據(jù)庫經(jīng)常改變時維護(hù)通知發(fā)送服務(wù)230和隊列220之間的連接。維護(hù)該連接降低頻繁激活通知發(fā)送服務(wù)230的成本。進(jìn)一步來說,激活期間可以設(shè)置為“一直為開”來保持通訊。再者,可以使用缺省激活期間和/或部分基于啟發(fā)式方法的激活期間。
一旦被激活,通知發(fā)送服務(wù)230訪問存儲在隊列220中的數(shù)據(jù)庫查詢注冊信息。數(shù)據(jù)庫查詢注冊信息被用來構(gòu)建并發(fā)送指示已注冊的查詢隨后的執(zhí)行會返回不同結(jié)果的改變消息。數(shù)據(jù)庫查詢注冊信息通常包括指示發(fā)送改變消息到何處的發(fā)送地址。發(fā)送地址可以被抽取用于發(fā)送改變消息。另外,數(shù)據(jù)庫查詢注冊信息通常包括唯一的標(biāo)識符,該標(biāo)識符可以被用在改變消息中幫助通知運(yùn)行時間服務(wù)(如下所述)發(fā)送鑒定通知(如,觸發(fā)事件并設(shè)置標(biāo)志)到注冊為接收通知的組件。
可以確認(rèn)和/或收回上述的數(shù)據(jù)庫改變請求。在一個實例中,使用異步模型,其中數(shù)據(jù)庫確認(rèn)改變,無論通知發(fā)送服務(wù)230是否處理了隊列220中的數(shù)據(jù)庫查詢注冊信息。異步模型的優(yōu)點是通知發(fā)送服務(wù)230可以在稍后的時間訪問數(shù)據(jù)庫查詢注冊信息,并且異步模型通過允許隊列220中有一個以上的項來提供可伸縮性,其中一個或多個通知發(fā)送服務(wù)可以順序和/或同時訪問隊列220。
在另一實例中,使用同步模型,其中阻塞數(shù)據(jù)庫改變,直到關(guān)聯(lián)的數(shù)據(jù)庫查詢注冊信息由通知發(fā)送服務(wù)230訪問和/或改變消息被發(fā)送和/或接收(如由下面所述的通知運(yùn)行時間服務(wù))。同步模型通過確保改變消息在發(fā)送數(shù)據(jù)庫改變之前被發(fā)送和/或接收來提供可靠性和健壯或一致的數(shù)據(jù)。
可以使用各種技術(shù)來確定數(shù)據(jù)庫改變消息是否已被發(fā)送和/或接收。第一種技術(shù)包括來自接收設(shè)備的確認(rèn)(如,ACK)。ACK可以指示成功(如未損壞的)發(fā)送改變消息并可以調(diào)用數(shù)據(jù)庫改變的確認(rèn)。第二種技術(shù)包括接收來自接收設(shè)備的否定確認(rèn)(NAK)和/或無確認(rèn)以指示發(fā)送不成功,其中數(shù)據(jù)庫改變被收回、延期和/或推遲,直到改變消息被成功地發(fā)送到它預(yù)定的接收器和/或接收者。在第三種技術(shù)中,可以使用因特網(wǎng)包探索者(Ping)來確定通知發(fā)送服務(wù)230和接收設(shè)備之間是否存在通訊。通知發(fā)送服務(wù)230可以發(fā)送數(shù)據(jù)包到接收設(shè)備(如,通知運(yùn)行時間服務(wù))并等待回復(fù)??梢栽诟淖兿⒅?、同時或在其后發(fā)送數(shù)據(jù)包。來自接收設(shè)備的回復(fù)可以校驗存在通訊。
應(yīng)理解,雖然在服務(wù)器200內(nèi)展示服務(wù)代理210,服務(wù)代理210可以位于客戶機(jī)或在其他服務(wù)器上。另外,服務(wù)代理210可以為數(shù)據(jù)庫(如,基于SQL的),并可以包括一個以上的隊列220和/或通知發(fā)送服務(wù)230。進(jìn)一步來說,應(yīng)理解,如上所述可以使用多個通知發(fā)送服務(wù)。例如,多個通知發(fā)送服務(wù)可以訪問隊列220。另外,多個通知發(fā)送服務(wù)可以順序和/或同時訪問多個隊列(如,隊列120),包括本質(zhì)上類似的隊列(如,隊列220)。
再者,應(yīng)理解在從隊列220發(fā)送數(shù)據(jù)庫查詢注冊信息到通知發(fā)送服務(wù)230的過程中可以使用中間組件(未標(biāo)出)。例如,數(shù)據(jù)庫查詢注冊信息在由通知發(fā)送服務(wù)230訪問之前可以被存儲在另一個媒體上。在本發(fā)明的一個方面,數(shù)據(jù)庫查詢注冊信息可以被保存到日志文件。隨后,通知發(fā)送服務(wù)230使用來自日志文件中的數(shù)據(jù)庫查詢注冊信息。在本發(fā)明的另一個方面,可以使用緩沖來加快發(fā)送數(shù)據(jù)庫查詢注冊信息到通知發(fā)送服務(wù)230。在本發(fā)明的又一個方面,數(shù)據(jù)庫查詢注冊信息可以被卸載到中間組件及其類似來釋放與數(shù)據(jù)庫和/或服務(wù)代理210關(guān)聯(lián)的資源以提高性能。應(yīng)理解提供中間組件提高了系統(tǒng)的靈活性。
現(xiàn)參考圖3,根據(jù)本發(fā)明展示典型數(shù)據(jù)鑒定系統(tǒng)300。數(shù)據(jù)鑒定系統(tǒng)300包括客戶機(jī)310、服務(wù)器320、存儲器330、服務(wù)代理340、隊列350及通知發(fā)送服務(wù)350。
如在此所述,客戶機(jī)310可以包括對服務(wù)器320注冊數(shù)據(jù)庫查詢并從通知發(fā)送服務(wù)接收關(guān)聯(lián)的改變消息的機(jī)制(未標(biāo)出)。注冊通常包括構(gòu)建數(shù)據(jù)庫注冊消息,數(shù)據(jù)庫注冊消息包括例如數(shù)據(jù)庫查詢注冊信息、發(fā)送地址、唯一的標(biāo)識符(如全局唯一標(biāo)識符,或GUID)、隊列名稱、超時期間和可選的附加信息,如通訊(如協(xié)議和端口)和安全(如加密和驗證)選項。然后可以發(fā)送數(shù)據(jù)庫注冊消息到服務(wù)器320。應(yīng)理解,根據(jù)本發(fā)明的一個方面,多個客戶機(jī)(如,多個客戶機(jī)310)和/或其他組件可以順序和/或同時注冊多個數(shù)據(jù)庫查詢。進(jìn)一步來說,多個客戶機(jī)可以注冊返回本質(zhì)上類似的結(jié)果的查詢。
在本發(fā)明的一個方面,可以用查詢(如和包括在數(shù)據(jù)庫注冊消息中的數(shù)據(jù)庫查詢注冊信息關(guān)聯(lián)的查詢)發(fā)送數(shù)據(jù)庫注冊消息到服務(wù)器320。查詢結(jié)果可以被存儲在存儲器330和/或其他存儲設(shè)備中,包括web服務(wù)器上的存儲。在存儲器330中存儲結(jié)果向客戶機(jī)310和其他客戶機(jī)提供在隨后的查詢會返回本質(zhì)上類似的結(jié)果時使用存儲的結(jié)果而非執(zhí)行隨后的查詢的能力。在本發(fā)明的其他方面,數(shù)據(jù)庫注冊消息可以被發(fā)送到服務(wù)器320而不帶請求結(jié)果。例如,客戶機(jī)可以注冊本質(zhì)上類似于原先執(zhí)行的查詢的查詢,其中原先執(zhí)行的查詢的結(jié)果被存儲到存儲器330并可以由客戶機(jī)使用。在另一個例子中,客戶機(jī)可以注冊影響和改客戶機(jī)關(guān)聯(lián)的不同查詢的結(jié)果的查詢。在另一個例子中,如果需要,客戶機(jī)可以注冊接收對數(shù)據(jù)庫的任何改變的鑒定通知。
應(yīng)理解,存儲的查詢結(jié)果可以包括例如原始數(shù)據(jù)、變換后的數(shù)據(jù)和/或可查詢的數(shù)據(jù)。原始數(shù)據(jù)是靈活的,并且可以使用各種變換技術(shù)來提供原始數(shù)據(jù)的其他表示。例如,原始數(shù)據(jù)可以表示為字母數(shù)字文本、符號、圖像、表格和圖表,并使用其他已知的形式和/或格式。存儲變換的數(shù)據(jù)或?qū)ο蠊?jié)省變換時間并可以發(fā)揮現(xiàn)有的支持(如,響應(yīng)高速緩存)。可以通過隨后的使用可查詢的數(shù)據(jù)集或其子集的請求來使用可查詢的數(shù)據(jù)。例如,可查詢的數(shù)據(jù)集可以包括多個分類,且隨后的請求可以對多個分類和/或多個分類的子集查詢數(shù)據(jù)集。
在服務(wù)器320接收數(shù)據(jù)庫改變請求之后,向服務(wù)代理340提供數(shù)據(jù)庫注冊消息中的數(shù)據(jù)庫查詢注冊信息。服務(wù)代理340至少放置數(shù)據(jù)庫查詢注冊信息的部分在隊列350中,并激活通知發(fā)送服務(wù)360。如上所述,數(shù)據(jù)庫改變請求可以異步或同步進(jìn)行確認(rèn)。
然后通知發(fā)送服務(wù)360使用數(shù)據(jù)庫查詢注冊信息來構(gòu)建并發(fā)送改變消息到客戶機(jī)310。例如,通知發(fā)送服務(wù)360可以從數(shù)據(jù)庫查詢注冊信息中抽取并使用發(fā)送地址和唯一標(biāo)識符(如,DUID)。唯一標(biāo)識符通常包括在改變消息內(nèi),且改變消息通常被發(fā)送到發(fā)送地址(如,和客戶機(jī)310關(guān)聯(lián)的通知運(yùn)行時間服務(wù))。
在接收改變消息之后,可以抽取唯一標(biāo)識符并用它來通知客戶機(jī)310。然后,客戶機(jī)310可以確定隨后的動作。例如,在本發(fā)明的一個方面,客戶機(jī)310可以執(zhí)行另一個查詢來刷新和顯示和/或存儲刷新的結(jié)果。在本發(fā)明的另一個方面,客戶機(jī)310可以確定繼續(xù)顯示或使用存儲器330中的結(jié)果,即使該結(jié)果和隨后的查詢返回的結(jié)果不一致。在本發(fā)明的另一個方面,客戶機(jī)310可以再次注冊數(shù)據(jù)庫查詢并/或使用自動重新注冊以在另一個改變(如會變更查詢結(jié)果的改變)發(fā)生時接收通知。在本發(fā)明的另一個方面,改變通知會觸發(fā)其他處理,如記錄改變信息和/或基于改變的數(shù)據(jù)采取行動。
圖4根據(jù)本發(fā)明的一個方面展示典型注冊系統(tǒng)400。注冊系統(tǒng)400用于幫助數(shù)據(jù)庫查詢的注銷(如對服務(wù)器200和320和任何基于SQL的服務(wù)器)。注冊系統(tǒng)400包括消息裝配器410、名字提供者420、時間提供者430、ID提供者440和地址提供者450。
消息裝配器410接受數(shù)據(jù)庫查詢注冊請求(如,訂閱)、協(xié)調(diào)打包數(shù)據(jù)庫查詢注冊信息并發(fā)送可以由象系統(tǒng)100-300那樣的系統(tǒng)使用的數(shù)據(jù)庫查詢注冊信息。如上所述,數(shù)據(jù)庫查詢注冊信息通常包括隊列名稱、超時期間、唯一標(biāo)識符和發(fā)送地址。然而,應(yīng)理解上述數(shù)據(jù)庫查詢注冊信息并不是對本發(fā)明的限制。可以根據(jù)本發(fā)明使用其他適合的信息。進(jìn)一步來說,可以根據(jù)本發(fā)明的一個方面使用數(shù)據(jù)庫查詢注冊信息的各種次序。
消息裝配器410可以從一個或多個提供者420-450和/或其他組件(如,通知運(yùn)行時間服務(wù)和/或通用監(jiān)聽程序,如在此所述)獲取數(shù)據(jù)庫查詢注冊信息。可以使用名字提供者420來提供隊列的名稱(如,隊列120的一個的名稱),所述隊列在會使數(shù)據(jù)庫的狀態(tài)和原先返回的結(jié)果不一致的數(shù)據(jù)庫改變發(fā)生之后存儲和已注冊的數(shù)據(jù)庫查詢關(guān)聯(lián)的數(shù)據(jù)庫查詢注冊信息。例如,名字提供者420可以從一個或多個可用的隊列中隨機(jī)選取隊列名稱,向用戶提供定義的隊列名稱,并/或提供缺省的隊列名稱。在本發(fā)明的另一個方面,可以在數(shù)據(jù)庫查詢注冊請求中包括隊列名稱,從而不使用名字提供者420。
時間提供者430對已注冊的數(shù)據(jù)庫查詢提供超時期間。超時期間可以指定時間長度或過期期間,其中當(dāng)超時期間過去時,數(shù)據(jù)庫查詢注冊信息調(diào)用改變消息消息,即使未發(fā)生數(shù)據(jù)庫改變,來指示超時期間已經(jīng)過去。這可以通知用戶任何對應(yīng)于已注冊的數(shù)據(jù)庫查詢的存儲的結(jié)果不再可靠和/或準(zhǔn)確,而服務(wù)器不必在很長的時間段內(nèi)保留用戶不再感興趣的數(shù)據(jù)庫查詢的注冊信息。
使用ID提供者440來分配唯一標(biāo)識符(如,全局唯一標(biāo)識符,或GUID)用于訂閱。通常,唯一標(biāo)識符提供關(guān)聯(lián)正被注冊的數(shù)據(jù)庫查詢與請求訂閱的組件(如客戶機(jī)、對象實例和相關(guān)性)的機(jī)制。例如,可以和命令、視圖、表和/或資源關(guān)聯(lián)。唯一標(biāo)識符可以被用來發(fā)送鑒定通知到請求組件。
使用地址提供者450來提供發(fā)送地址。發(fā)送地址在發(fā)送改變消息來響應(yīng)會影響已注冊的查詢的結(jié)果的數(shù)據(jù)庫改變時由通知發(fā)送服務(wù)使用。發(fā)送地址指示改變消息的目標(biāo)地址。例如,發(fā)送地址和對訂閱注冊的通知運(yùn)行時間服務(wù)和/或通用監(jiān)聽程序(如,HTTP.sys)關(guān)聯(lián)。應(yīng)理解可以使用其他組件和系統(tǒng)來獲取發(fā)送地址。例如,可以使用通知運(yùn)行時間服務(wù)和/或通用監(jiān)聽程序來通過地址提供者450和/或通過其他技術(shù),例如沒有任何中間組件,提供發(fā)送地址。
在獲取數(shù)據(jù)庫查詢注冊信息之后,消息裝配器410構(gòu)建數(shù)據(jù)庫查詢注冊消息。通常,數(shù)據(jù)庫查詢注冊消息包括唯一標(biāo)識符、發(fā)送地址、隊列名稱和超時期間。應(yīng)理解,數(shù)據(jù)庫查詢注冊信息可以在消息內(nèi)不同地進(jìn)行定位和格式化。例如,在本發(fā)明的一個方面,數(shù)據(jù)庫查詢注冊信息是可以解析的經(jīng)分隔的字符串。在本發(fā)明的另一個方面,使用數(shù)據(jù)庫查詢注冊信息的二進(jìn)制表示。在本發(fā)明的又一個方面,使用數(shù)據(jù)庫查詢注冊信息的至少部分來構(gòu)成“cookie”。例如,發(fā)送地址和唯一標(biāo)識符可以作為“cookie”和/或基于標(biāo)記語言(如XML)的消息來提供。
然后消息裝配器410發(fā)送數(shù)據(jù)庫查詢注冊消息。應(yīng)理解可以在查詢之前、同時和/或之后發(fā)送該消息。另外,可以在命令(如可執(zhí)行命令)中和/或用存儲過程發(fā)送該消息。當(dāng)改變已注冊的數(shù)據(jù)庫查詢的結(jié)果的數(shù)據(jù)庫改變發(fā)生時,可以使用數(shù)據(jù)庫查詢注冊信息來幫助發(fā)送鑒定通知到注冊接收通知的組件。
應(yīng)理解注冊系統(tǒng)400、消息裝配器410、名字提供者420、時間提供者430、ID提供者430和地址提供者440可以為如在此定義的計算機(jī)組件。
圖5根據(jù)本發(fā)明的一個方面展示典型的通知系統(tǒng)500。通知系統(tǒng)500包括地址分配器510、輸出組件520、消息接收器530和ID抽取器540。
通知系統(tǒng)500通常在接收到數(shù)據(jù)庫查詢注冊請求之后被激活。例如,在接收到數(shù)據(jù)庫查詢注冊請求之后,注冊組件(如,注冊系統(tǒng)400)可以激活通知系統(tǒng)500。
在激活后,通知系統(tǒng)500可以被用來獲取數(shù)據(jù)庫查詢注冊消息的發(fā)送地址和/或用于提供鑒定通知。地址分配器510可以被用來獲取發(fā)送地址。在地址分配器510接收發(fā)送地址請求(如,通過對通知運(yùn)行時間服務(wù)和/或通用監(jiān)聽程序注冊,如下所述)之后,獲取到發(fā)送地址并將其提供給輸出組件520。然后發(fā)送地址被發(fā)送到請求組件(如注冊系統(tǒng)400)。
另外通知系統(tǒng)500可以接受改變消息。例如,通知發(fā)送服務(wù)(如在此所述)可以被用來發(fā)送改變消息到通知系統(tǒng)500。消息接收器530接受改變消息。消息接收器530可以使用各種安全和鑒定技術(shù)來減少轉(zhuǎn)發(fā)出錯的改變消息。例如,根據(jù)本發(fā)明的一個方面,可以使用驗證證書和/或唯一標(biāo)識符校驗。然后消息接收器530向ID抽取器540提供改變消息。ID抽取器540從數(shù)據(jù)庫注冊消息內(nèi)獲取唯一標(biāo)識符。
然后由輸出設(shè)備520使用唯一標(biāo)識符來發(fā)送鑒定通知到注冊接收通知的組件。例如,在本發(fā)明的一個方面,和向唯一標(biāo)識符分配的注冊實例關(guān)聯(lián)的任何客戶機(jī)都有通知(如,事件)。在本發(fā)明的另一個方面,使用標(biāo)志和/或其他描述符來通知試圖使用原先返回的查詢結(jié)果的的任何客戶該查詢已變得無效。
圖6根據(jù)本發(fā)明的一個方面展示典型的客戶機(jī)/服務(wù)器系統(tǒng)600。應(yīng)理解客戶機(jī)/服務(wù)器系統(tǒng)600可以為基于SQL的客戶機(jī)/服務(wù)器。應(yīng)理解客戶機(jī)/服務(wù)器系統(tǒng)600包括包含相關(guān)性實例610、可選的相關(guān)性交換機(jī)620、通知運(yùn)行時間服務(wù)630和相關(guān)性關(guān)聯(lián)640的客戶機(jī)605,及包含檢測單元650、數(shù)據(jù)庫660、服務(wù)代理670、隊列680和通知發(fā)送服務(wù)690的服務(wù)器645。
客戶機(jī)605通過數(shù)據(jù)庫查詢注冊請求發(fā)起注冊。通常,數(shù)據(jù)庫查詢注冊請求包括隊列名稱和/或超時期間。然而,應(yīng)理解對上述和其他選項可以使用缺省值。創(chuàng)建相關(guān)性實例610來表示注冊請求并提供一個或多個已注冊的查詢和要通知的客戶機(jī)605之間的關(guān)聯(lián)。在創(chuàng)建時,相關(guān)性組件610獲取請求的唯一標(biāo)識符。應(yīng)理解,單個相關(guān)性實例610可以和一個或多個已注冊的查詢關(guān)聯(lián),其中會影響任何一個查詢的結(jié)果的改變將產(chǎn)生通知(如,如果對任何查詢的結(jié)果都發(fā)生改變,從幾個數(shù)據(jù)庫查詢產(chǎn)生的結(jié)果都被確定無效)。標(biāo)識符的唯一性可以對應(yīng)于已注冊的查詢的分組,其中一個或多個查詢可以在數(shù)據(jù)庫改變時使聚合的結(jié)果無效。例如,可以對由不同的一組已注冊的查詢影響的結(jié)果獲取不同的唯一標(biāo)識符。
使用唯一標(biāo)識符通過可選相關(guān)性交換機(jī)620對通知運(yùn)行時間服務(wù)注冊,其中相關(guān)性實例610提供唯一標(biāo)識符并對相關(guān)性交換機(jī)620注冊,然后相關(guān)性交換機(jī)620提供唯一標(biāo)識符并對通知運(yùn)行時間服務(wù)630注冊。如果相關(guān)性交換機(jī)和/或通知運(yùn)行時間服務(wù)630未被激活,那么在注冊之前啟動相關(guān)性交換機(jī)620和/或通知運(yùn)行時間服務(wù)630。在注冊后,通知運(yùn)行時間服務(wù)630向相關(guān)性實例610提供發(fā)送地址。應(yīng)理解可選相關(guān)性交換機(jī)620被用作優(yōu)化技術(shù),且當(dāng)不使用它時,相關(guān)性實例610可以對通知運(yùn)行時間服務(wù)630注冊而不需要對如可選相關(guān)性交換機(jī)620這樣的中間組件預(yù)先注冊。另外,使用的通知運(yùn)行時間服務(wù)可以從缺省值、客戶機(jī)能力、數(shù)據(jù)庫查詢注冊信息、配置、統(tǒng)計和/或自適應(yīng)技術(shù)中選取。
上述注冊技術(shù)可以通過向處理內(nèi)的一個或多個相關(guān)性實例(如相關(guān)性實例610)提供對處理內(nèi)的相關(guān)性交換機(jī)(如,相關(guān)性交換機(jī)620)注冊的方法來減少處理之間的交叉參考,其中相關(guān)性交換機(jī)和/或來自多個處理(如相關(guān)性交換機(jī)620及其類似)的其他相關(guān)性交換機(jī)可以對通知運(yùn)行時間服務(wù)630注冊跨處理參考。
然后向相關(guān)性關(guān)聯(lián)640提供發(fā)送地址、唯一標(biāo)識符、隊列名稱、超時期間和/或附加信息,并隨后將它們在注冊消息中發(fā)送到服務(wù)器645。應(yīng)理解,相關(guān)性實例610(及其他相關(guān)性實例)可以和一個或多個客戶機(jī)組件關(guān)聯(lián)并包括多個查詢注冊,其中對任何已注冊的查詢的結(jié)果的改變將導(dǎo)致本質(zhì)上類似的客戶機(jī)動作。如上所述,服務(wù)器645包括檢測單元650、數(shù)據(jù)庫660、服務(wù)代理670、隊列680和通知發(fā)送服務(wù)690。
檢測單元650可被用于維護(hù)數(shù)據(jù)庫查詢注冊信息并確定何時對已注冊的查詢調(diào)用鑒定。例如,當(dāng)接收到改變數(shù)據(jù)庫660的請求時,數(shù)據(jù)庫查詢注冊信息可以被用來確定已注冊的查詢是否和該改變關(guān)聯(lián)。如果,已注冊的查詢的結(jié)果會改變,那么至少可以向服務(wù)代理670提供數(shù)據(jù)庫查詢注冊信息。應(yīng)理解檢測單元650可以發(fā)送附加的信息,如鑒定原因(如,數(shù)據(jù)庫改變(如上所述)、超時期間過期、存儲器限制、查詢復(fù)雜度、服務(wù)器重啟和系統(tǒng)錯誤)和/或改變的內(nèi)容(如,原始值和/或當(dāng)前值)。
在發(fā)送數(shù)據(jù)庫查詢注冊信息到服務(wù)代理670之后,檢測單元650可以丟棄(如自動取消注冊)或保留數(shù)據(jù)庫查詢注冊信息。丟棄數(shù)據(jù)庫查詢注冊信息確保隨后的改變不會引起查詢的另一個鑒定(如當(dāng)注冊查詢的組件不再需要接收通知)。適合的丟棄數(shù)據(jù)庫查詢注冊信息的技術(shù)包括靜態(tài)丟棄(如,在調(diào)用鑒定后丟棄)、基于數(shù)據(jù)庫查詢注冊信息的至少部分(如,丟棄字段或參數(shù))丟棄、基于來自通知運(yùn)行時間服務(wù)的響應(yīng)的至少部分丟棄(如,保留數(shù)據(jù)庫查詢注冊信息如果仍然有關(guān)聯(lián)的組件監(jiān)聽鑒定,否則丟棄),及基于取代原先的注冊消息的隨后的注冊消息丟棄。保留數(shù)據(jù)庫查詢注冊信息提供接收和隨后的數(shù)據(jù)庫改變關(guān)聯(lián)的附加鑒定的能力。
在從檢測單元650接收數(shù)據(jù)庫查詢注冊信息之后,服務(wù)代理670幫助存儲并發(fā)送數(shù)據(jù)庫查詢注冊信息到通知發(fā)送服務(wù)。服務(wù)代理670放置數(shù)據(jù)庫查詢注冊信息在隊列680中,且服務(wù)代理670調(diào)用通知發(fā)送服務(wù)690,如果是這樣配置的。在激活時,通知發(fā)送服務(wù)690可以使用隊列680中的數(shù)據(jù)庫查詢注冊信息來構(gòu)建指示已注冊的查詢的結(jié)果因為數(shù)據(jù)庫改變已發(fā)生改變(如隨后的結(jié)果已變得無效和/或與原先檢索的結(jié)果不一致)的改變消息。應(yīng)理解檢測單元640也可以向通知發(fā)送服務(wù)690提供數(shù)據(jù)庫查詢注冊信息對已注冊的查詢調(diào)用改變消息。
通知發(fā)送服務(wù)690使用數(shù)據(jù)庫查詢注冊信息的至少部分來發(fā)送改變消息到客戶機(jī)605的通知運(yùn)行時間服務(wù)630。通知運(yùn)行時間服務(wù)630使用在改變消息內(nèi)的相關(guān)性唯一標(biāo)識符來發(fā)送通知到對應(yīng)的相關(guān)性實例610(可選地通過相關(guān)性交換機(jī)620)。然后相關(guān)性實例610向客戶機(jī)605通知該改變。例如,在相關(guān)性實例610接收通知后,觸發(fā)相關(guān)性事件且/或標(biāo)志設(shè)置在隨后嘗試對該相關(guān)性實例注冊時觸發(fā)事件。應(yīng)理解,多個客戶機(jī)可以注冊接收通知,且相關(guān)性實例610可以順序和/或同時通知客戶機(jī)605和位于類似的和/或不同的機(jī)器上的其他客戶機(jī)。進(jìn)一步來說,客戶機(jī)605(或?qū)嵗嚓P(guān)性實例610的其他客戶機(jī))在發(fā)生改變時不再存在。然而,如果有的話,注冊為接收通知的其他客戶可以由相關(guān)性實例610通知。
應(yīng)理解可以使用各種技術(shù)來減少由于通知運(yùn)行時間服務(wù)630和通知發(fā)送服務(wù)690之間的通訊丟失產(chǎn)生的不一致的查詢結(jié)果。例如,ACK/NAK通訊代碼可以被用來確認(rèn)無差錯的傳輸并指示損壞的傳輸和/或無傳輸。在本發(fā)明的另一個方面,通知運(yùn)行時間服務(wù)630可以輪詢通知發(fā)送服務(wù)690。如果成功,則通訊通過校驗。在另一個例子中,通知運(yùn)行時間服務(wù)630可以被“關(guān)閉”。通知運(yùn)行時間服務(wù)630可以在完成關(guān)閉之前提供通知(如,數(shù)據(jù)庫狀態(tài)未知)??梢杂妙愃频姆绞绞褂猛ㄖl(fā)送服務(wù)690。例如,通知發(fā)送服務(wù)690可以輪詢通知運(yùn)行時間服務(wù)640。如果成功,那么通訊經(jīng)過驗證。如果不成功,則收回數(shù)據(jù)庫改變,或不對它進(jìn)行確認(rèn),直到通知發(fā)送服務(wù)690能夠發(fā)送該改變消息。
圖7根據(jù)本發(fā)明的一個方面展示另一個典型的客戶機(jī)/服務(wù)器系統(tǒng)700。如客戶機(jī)/服務(wù)器系統(tǒng)600那樣,客戶機(jī)/服務(wù)器系統(tǒng)600包括包含相關(guān)性實例610、相關(guān)性關(guān)聯(lián)640的客戶機(jī)605,及包含檢測單元650、數(shù)據(jù)庫660、服務(wù)代理670、隊列680和通知發(fā)送服務(wù)690的服務(wù)器645。另外,客戶機(jī)605進(jìn)一步包括相關(guān)性監(jiān)聽程序710,且客戶機(jī)/服務(wù)器系統(tǒng)700進(jìn)一步包括用于客戶機(jī)605和服務(wù)器645的通用監(jiān)聽程序700。
如上所述,客戶機(jī)605通過數(shù)據(jù)庫查詢注冊請求發(fā)起注冊,這可以包括創(chuàng)建相關(guān)性實例610。創(chuàng)建相關(guān)性實例610產(chǎn)生唯一標(biāo)識符(如,GUID),唯一標(biāo)識符被用來對相關(guān)性監(jiān)聽程序710注冊。相關(guān)性監(jiān)聽程序710(及其他相關(guān)性監(jiān)聽程序)產(chǎn)生唯一的URI對通用監(jiān)聽程序720進(jìn)行注冊(如,HTTP.sys或發(fā)送HTTP請求到用戶模式的應(yīng)用的內(nèi)核模式的設(shè)備驅(qū)動器)。GUID和URI通過相關(guān)性實例610作為唯一標(biāo)識符和發(fā)送地址暴露并在查詢注冊消息中被發(fā)送到服務(wù)器645。應(yīng)理解唯一的URI的產(chǎn)生可以通過作為相對URI的部分的第二個唯一標(biāo)識符來實現(xiàn)。另外,所用的通用監(jiān)聽程序可以從缺省值、客戶機(jī)能力、數(shù)據(jù)庫查詢注冊信息、配置、統(tǒng)計和/或自適應(yīng)技術(shù)中選擇。
查詢注冊消息由檢測單元650接收和關(guān)聯(lián),檢測單元650檢測和已注冊的數(shù)據(jù)庫查詢關(guān)聯(lián)的數(shù)據(jù)庫改變并在數(shù)據(jù)庫改變發(fā)生,而其中已注冊的查詢隨后的執(zhí)行會返回不同的結(jié)果時向服務(wù)代理670提供數(shù)據(jù)庫查詢注冊信息。如上所述,檢測單元650可以發(fā)送其他信息,并可以維護(hù)隨后的數(shù)據(jù)庫改變的數(shù)據(jù)庫查詢注冊信息,或取消查詢注冊(如,取消注冊)。
服務(wù)代理670幫助存儲和發(fā)送數(shù)據(jù)庫查詢注冊信息到通知發(fā)送服務(wù)690。服務(wù)代理670放置數(shù)據(jù)庫查詢注冊信息在隊列680中,且服務(wù)代理670調(diào)用通知發(fā)送服務(wù)690。激活的通知發(fā)送服務(wù)690可以使用數(shù)據(jù)庫查詢注冊信息來構(gòu)建并發(fā)送改變消息。
通知發(fā)送服務(wù)690在改變消息中使用至少部分?jǐn)?shù)據(jù)庫查詢注冊信息,并將改變消息作為例如HTTP請求提供給通用監(jiān)聽程序720。通用監(jiān)聽程序720使用URI內(nèi)的相對路徑來發(fā)送請求到相關(guān)性監(jiān)聽程序710。相關(guān)性監(jiān)聽程序710可以使用數(shù)據(jù)庫查詢注冊信息(如,相關(guān)性唯一標(biāo)識符)來發(fā)送改變消息到相關(guān)性實例610來通知注冊接收鑒定通知的任何客戶機(jī),包括客戶機(jī)605。類似于客戶機(jī)/服務(wù)器系統(tǒng)600,可以使用各種技術(shù)(如,ACK/NAK、Ping和自動鑒定)來減少使用由于通用監(jiān)聽程序720和通知發(fā)送服務(wù)690之間的通訊丟失造成的不一致的查詢結(jié)果。
應(yīng)理解使用相關(guān)性監(jiān)聽程序710和通用監(jiān)聽程序720使得不需要安裝和激活(如,啟動)服務(wù),如客戶機(jī)605上的通知運(yùn)行時間服務(wù)。另外,由于可以使用80端口,能夠通過防火墻發(fā)送改變消息和/或鑒定通知。然而,應(yīng)理解可以配置該端口并且可以使用任何端口。
圖8根據(jù)本發(fā)明的一個方面展示典型的安全技術(shù)。系統(tǒng)800包括客戶機(jī)810、服務(wù)器820、注冊請求通道830和改變消息通道840。
如上所述,客戶機(jī)發(fā)起數(shù)據(jù)庫查詢注冊或訂閱。例如,客戶機(jī)810請求數(shù)據(jù)庫查詢訂閱,它可選地包括隊列名稱和超時期間。隨后,獲取另外的數(shù)據(jù)庫查詢注冊信息,且構(gòu)建數(shù)據(jù)庫查詢注冊消息。數(shù)據(jù)庫查詢注冊消息通常包括發(fā)送地址、唯一標(biāo)識符、隊列名稱和超時期間,但可以包括附加的和/或其他信息。一旦被裝配出,數(shù)據(jù)庫查詢注冊信息就通過注冊通道830被發(fā)送到服務(wù)器820。然后,在服務(wù)器820接收數(shù)據(jù)庫改變請求之后,使用服務(wù)器820上的檢測機(jī)制或其類似來確定數(shù)據(jù)庫改變何時會改變已注冊的查詢隨后的查許結(jié)果。然后,可以通過改變消息通道840發(fā)送改變消息到客戶機(jī)810。
包括在數(shù)據(jù)庫查詢注冊消息中的唯一標(biāo)識符(如,GUID)可以對數(shù)據(jù)庫查詢注冊消息提供安全機(jī)制。例如,在本發(fā)明的一個方面,在運(yùn)行時間當(dāng)接收到數(shù)據(jù)庫隊列RQ時創(chuàng)建GUID,從而減少“猜測”或假冒GUID的機(jī)會。然后通過服務(wù)器820傳播該唯一標(biāo)識符并將其包括在改變消息中。企圖插入模擬的數(shù)據(jù)庫改變消息到改變消息通道840中的惡意的來源試圖虛假地通知客戶機(jī)如果唯一標(biāo)識符并不表示合法注冊就忽略已注冊的數(shù)據(jù)庫改變。另外,根據(jù)本發(fā)明的一個方面,可以使用其他安全技術(shù)(如驗證證書)。
下面是圖9,根據(jù)本發(fā)明展示典型的客戶機(jī)/服務(wù)器系統(tǒng)900。客戶機(jī)/服務(wù)器900包括包含命令組件920、相關(guān)性930、通知運(yùn)行時間服務(wù)940和可選相關(guān)性交換機(jī)50的客戶機(jī)910,以及包含服務(wù)代理970、隊列980和通知發(fā)送服務(wù)990的服務(wù)器960。
通常,客戶機(jī)實例化產(chǎn)生唯一標(biāo)識符的相關(guān)性930(如,對象)??蛻魴C(jī)通常通過構(gòu)造函數(shù)和/或方法提供隊列名稱和超時期間。然而,可以使用缺省的和/或其他隊列名稱和超時期間。隨后,如果使用了相關(guān)性交換機(jī)950,相關(guān)性830就通過可選相關(guān)性交換機(jī)950對通知運(yùn)行時間服務(wù)940注冊。如果未使用可選相關(guān)性交換機(jī)950,那么注冊發(fā)生在相關(guān)性930和通知運(yùn)行時間服務(wù)940之間,而沒有任何中間組件。然后通知運(yùn)行時間服務(wù)940向相關(guān)性930提供發(fā)送地址。然后客戶機(jī)通常實例化命令組件920(如,衍生對象)并將其與相關(guān)性930關(guān)聯(lián)。隊列名稱、超時期間、發(fā)送地址和唯一標(biāo)識符被作為例如數(shù)據(jù)庫查詢注冊消息(如,標(biāo)記語言(如,XML)文件)發(fā)送。應(yīng)理解相關(guān)性930可以和多個命令組件920(及其他命令組件)關(guān)聯(lián),其中命令組件可以對本質(zhì)上類似的數(shù)據(jù)庫查詢注冊消息注冊類似的和/或不同的數(shù)據(jù)庫查詢。
如上所述,服務(wù)器機(jī)器960包括服務(wù)代理970、隊列980和通知發(fā)送服務(wù)990。服務(wù)器機(jī)器960可以使用各種技術(shù)來檢測數(shù)據(jù)庫改變。例如,當(dāng)接收到數(shù)據(jù)庫改變請求時,初始化搜索已注冊的查詢來確定隨后的查詢結(jié)果是否會改變??梢韵蚍?wù)代理970提供和改變的數(shù)據(jù)庫關(guān)聯(lián)的數(shù)據(jù)庫查詢注冊信息。服務(wù)代理970可以在隊列980中存儲數(shù)據(jù)庫查詢注冊信息并激活通知發(fā)送服務(wù)990。
通知發(fā)送服務(wù)990使用數(shù)據(jù)庫查詢注冊信息來構(gòu)建并發(fā)送改變消息到通知運(yùn)行時間服務(wù)940。隨后,通知運(yùn)行時間服務(wù)940抽取唯一標(biāo)識符,并使用該唯一標(biāo)識符來發(fā)送消息到對應(yīng)的關(guān)聯(lián)性930。然后關(guān)聯(lián)性930通知和已改變的數(shù)據(jù)庫關(guān)聯(lián)的客戶機(jī)。例如,關(guān)聯(lián)性可以對和改變的數(shù)據(jù)表關(guān)聯(lián)的應(yīng)用觸發(fā)事件并/或設(shè)置標(biāo)志以在應(yīng)用試圖關(guān)聯(lián)已改變的數(shù)據(jù)表時觸發(fā)事件。
應(yīng)理解,根據(jù)本發(fā)明的一個方面,類似于客戶機(jī)/服務(wù)器系統(tǒng)700,可以對客戶機(jī)/服務(wù)器系統(tǒng)900使用關(guān)聯(lián)性監(jiān)聽程序(未標(biāo)出)和通用監(jiān)聽程序(未標(biāo)出)。例如,關(guān)聯(lián)性監(jiān)聽程序可以對通用監(jiān)聽程序注冊唯一的URI并維護(hù)唯一標(biāo)識符和關(guān)聯(lián)性實例之間的對應(yīng)。唯一的標(biāo)識符和URI可以包括在發(fā)送到服務(wù)器的數(shù)據(jù)庫查詢注冊消息中。在會影響隨后的查詢結(jié)果的數(shù)據(jù)庫改變發(fā)生后,通知發(fā)送服務(wù)990可以構(gòu)建并發(fā)送例如HTTP請求來發(fā)送改變消息到通用監(jiān)聽程序。通用監(jiān)聽程序可以使用唯一的URI來發(fā)送請求到關(guān)聯(lián)性監(jiān)聽程序。關(guān)聯(lián)性監(jiān)聽程序可以使用改變消息內(nèi)的唯一標(biāo)識符以使得對應(yīng)的關(guān)聯(lián)性通知到已注冊接收鑒定通知的任何客戶機(jī)。
如上所述,使用關(guān)聯(lián)性監(jiān)聽程序和通用監(jiān)聽程序使得不需要安裝和激活客戶機(jī)上的服務(wù)(如,通知運(yùn)行時間服務(wù))。另外,可以配置端口,例如可以選擇端口80從而能夠通過防火墻進(jìn)行傳輸。
圖10-12展示符合本發(fā)明的方法。為便于說明,所述方法在此作為一系列的工作來說明。應(yīng)理解,所示的動作和/或動作的順序并不是對本發(fā)明的限制,例如,動作能夠以各種順序和/或同時發(fā)生,并且可以有其他未在此說明和展示的動作。進(jìn)一步來說,并不是所有展示的動作都是實現(xiàn)符合本發(fā)明的方法必須的。
另外,熟悉技術(shù)的人應(yīng)理解,方法可以另外表示為一系列互相關(guān)聯(lián)的狀態(tài)(如狀態(tài)圖)或事件。再者,在計算機(jī)可執(zhí)行指令的通用上下文中對本發(fā)明進(jìn)行說明,計算機(jī)可執(zhí)行指令如由一個或多個主鍵執(zhí)行的程序模塊。通常,程序模塊包括執(zhí)行特殊任務(wù)或?qū)崿F(xiàn)特殊抽象數(shù)據(jù)類型的例程、程序、對象、數(shù)據(jù)結(jié)構(gòu)等等。通常程序模塊的功能可以根據(jù)需要合并或分布在各個實施例中。
圖10根據(jù)本發(fā)明的一個方面展示注冊和發(fā)送方法1000。注冊和發(fā)送方法1000可以被用來在接收到其中改變會更改已注冊的查詢的結(jié)果的數(shù)據(jù)庫改變請求之后發(fā)送改變消息。開始于1010,組件(如,客戶機(jī)、代理、應(yīng)用和用戶)注冊數(shù)據(jù)庫查詢以在發(fā)生會影響以注冊的查詢的結(jié)果的數(shù)據(jù)庫改變時接收通知。注冊通常包括提供幫助發(fā)送改變通知的數(shù)據(jù)庫查詢注冊信息(如圖1-9所述)。
在1020,接收到數(shù)據(jù)庫改變請求。請求可以包括會改變已注冊的查詢的結(jié)果的改變。請求啟用機(jī)制來確定數(shù)據(jù)庫改變是否和已注冊的數(shù)據(jù)庫查詢關(guān)聯(lián)。如果已注冊的查詢的結(jié)果會受到影響,那么向服務(wù)代理提供數(shù)據(jù)庫查詢注冊信息的至少部分。
在1030,服務(wù)代理存儲注冊信息到隊列中并激活通知發(fā)送服務(wù)??梢宰屚ㄖl(fā)送服務(wù)訪問數(shù)據(jù)庫查詢注冊信息。應(yīng)理解,可以使用各種技術(shù)來提供數(shù)據(jù)庫查詢注冊信息。例如,數(shù)據(jù)庫注冊信息可以從隊列中“推出”和/或“拉出”到通知發(fā)送服務(wù)。進(jìn)一步來說,可以通過例如提供臨時的存儲位置使用中間存儲區(qū)域來幫助數(shù)據(jù)庫查詢注冊信息的傳輸。
使用數(shù)據(jù)庫查詢注冊信息來獲取用于構(gòu)建和發(fā)送改變消息的發(fā)送地址和唯一標(biāo)識符。在1040,通知發(fā)送服務(wù)發(fā)送數(shù)據(jù)庫改變消息。該消息至少包括部分注冊信息并通常包括所述唯一標(biāo)識符。例如,可以發(fā)送對象ID,其中對應(yīng)用對象實例觸發(fā)事件和/或設(shè)置標(biāo)志。應(yīng)理解通知發(fā)送服務(wù)可以發(fā)送改變消息到通用監(jiān)聽程序和/或通知運(yùn)行時間服務(wù),如上所述。
圖11-12根據(jù)本發(fā)明的一個方面展示注冊、發(fā)送和通知方法1100。下面是圖11,在編號1110處,接收到注冊數(shù)據(jù)庫查詢的請求??蛇x地,該請求可以包括隊列名稱和/或超時期間。
在1120,獲取唯一標(biāo)識符和發(fā)送地址(如,通過相關(guān)性監(jiān)聽程序和通用監(jiān)聽程序,和/或相關(guān)性交換機(jī)和/或通知運(yùn)行時間服務(wù),如上所述)。另外可以獲取其他信息,包括隊列名稱和/或超時期間。然后使用數(shù)據(jù)庫查詢注冊信息來構(gòu)建數(shù)據(jù)庫查詢注冊消息,并將其發(fā)送到服務(wù)器。
在1130,服務(wù)器接收并存儲包括在數(shù)據(jù)庫查詢注冊消息中的數(shù)據(jù)庫查詢注冊信息。在發(fā)送器接收數(shù)據(jù)庫改變請求之后,調(diào)用某種機(jī)制,來幫助檢測改變是否會更改已注冊的查詢隨后的結(jié)果。例如,如果已注冊的數(shù)據(jù)庫查詢未和該數(shù)據(jù)庫改變關(guān)聯(lián),那么方法1100可以轉(zhuǎn)換到空閑狀態(tài),并等待下一個數(shù)據(jù)庫改變。如果數(shù)據(jù)庫改變影響已注冊查詢的結(jié)果,那么可以向服務(wù)代理提供數(shù)據(jù)庫查詢注冊信息。服務(wù)代理在隊列中(如和包括在數(shù)據(jù)庫查詢注冊信息消息中的隊列名稱關(guān)聯(lián)的隊列)存儲數(shù)據(jù)庫查詢注冊信息。服務(wù)代理還可以激活通知發(fā)送服務(wù)。
下面請見圖12,更加本發(fā)明的一個方面展示圖11的延續(xù)。在參考編號1210,向通知發(fā)送服務(wù)提供存儲在隊列中的數(shù)據(jù)庫查詢注冊信息。通常唯一標(biāo)識符和發(fā)送地址都存儲在隊列中。
在1220,通知發(fā)送服務(wù)發(fā)送通常包括唯一標(biāo)識符的改變消息,并將其發(fā)送到發(fā)送地址(如通知運(yùn)行時間服務(wù)和/或通用監(jiān)聽程序的發(fā)送地址)。接收到改變消息,并且在1230,可以抽取改變消息中的唯一標(biāo)識符并將其用于通知已注冊的組件和隨后試圖對已注冊的查詢的改變注冊的組件。
為了提供本發(fā)明各方面的附加上下文。圖13和下面的說明旨在對適合的操作環(huán)境1310提供簡單的總體說明,在其中可以實現(xiàn)本發(fā)明的各方面。雖然本發(fā)明是在計算機(jī)可執(zhí)行指令的通用上下文中說明的,計算機(jī)可執(zhí)行指令如由一個或多個計算機(jī)或其他設(shè)備執(zhí)行的程序模塊,熟悉技術(shù)的人應(yīng)承認(rèn),本發(fā)明也可以組合其他程序模塊和/或作為硬件和軟件的組合來實現(xiàn)。然而,通常,程序模塊包括執(zhí)行特殊任務(wù)或?qū)崿F(xiàn)特殊數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。操作環(huán)境1310僅為適合的操作環(huán)境的一個例子且并不對本發(fā)明的使用或功能范圍進(jìn)行任何限制。適合于使用本發(fā)明的其他眾所周知的計算機(jī)系統(tǒng)、環(huán)境和/或配置包括但不僅限于,個人計算機(jī)、手持或膝上型設(shè)備、微處理器系統(tǒng)、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)、包括上述系統(tǒng)或設(shè)備的分布式計算環(huán)境,及其類似。
參考圖13,用于實現(xiàn)本發(fā)明的各方面的典型環(huán)境1310包括計算機(jī)1312。計算機(jī)1312包括處理單元1314、系統(tǒng)存儲器1316和系統(tǒng)總線1318。系統(tǒng)總線1318連接包括但不僅限于系統(tǒng)存儲器1316到處理單元1314的系統(tǒng)組件。處理單元1314可以為各種可用的處理器中的任何一種。也可以使用雙處理器和其他多處理器架構(gòu)作為處理單元1314。
系統(tǒng)總線1318可以為幾種類型的總線結(jié)構(gòu)中的任何一種,包括存儲器總線或存儲器控制器、外圍總線或外部總線和/或使用各種可用的總線架構(gòu)中的任何一種的本地總線,總線架構(gòu)包括,但不僅限于,8位總線、工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)、微通道結(jié)構(gòu)(MSA)、擴(kuò)展的工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(EISA)、智能設(shè)備電路(IDE)、VESA本地總線(VLB)、周邊元件互連(PCI)、通用串行總線(U服務(wù)代理)、高級圖形接口(AGP)、個人計算機(jī)存儲卡國際協(xié)會總線(P改變消息CIA),及小型計算機(jī)系統(tǒng)接口(SCSI)。
系統(tǒng)存儲器1316包括易失存儲器1320和非易失存儲器1322?;据斎?輸出系統(tǒng)(BIOS)存儲在非易失存儲器1322中,BIOS包括在計算機(jī)1312內(nèi)的元件之間傳輸信息,如啟動的期間,的基本例程。作為例子,而非限制,非易失存儲1322包括只讀存儲器(ROM)、可編程ROM(PROM)、電子可編程ROM(EPROM)、電子可擦ROM(EEPROM)或閃存。易失存儲器1320包括隨機(jī)訪問存儲器(RAM),它作為外部高速緩存存儲器工作。作為例子而非限制,RAM有多種形式,如同步RAM(SRAM)、動態(tài)RAM(DRAM)、同步DRAM(SDRAM)、雙倍數(shù)據(jù)速率SDRAM(DDR SDRAM)、增強(qiáng)型SDRAM(ESDRAM)、同步連接DRAM(SLDRAM)和直接Rambus RAM(DRRAM)。
計算機(jī)1312也包括可移動/不可移動、易失/非易失計算機(jī)存儲媒體。圖13展示了,例如,磁盤存儲1324。磁盤存儲1324包括,但不僅限于,設(shè)備如磁盤驅(qū)動器、軟盤驅(qū)動器、磁帶驅(qū)動器、Jaz驅(qū)動器、Zip驅(qū)動器、LS-100驅(qū)動器、閃存卡、或存儲器棒。另外,磁盤存儲1324可以包括和其他存儲媒體分離或合并的存儲媒體,其他存儲媒體包括但不僅限于,光盤驅(qū)動器,如光盤ROM驅(qū)動器(CD-ROM)、可寫光盤驅(qū)動器(CD-R驅(qū)動器)、可重寫光盤驅(qū)動器(CD-RW驅(qū)動器)或數(shù)字多用途盤ROM驅(qū)動器(DVD-ROM)。為了幫助連接磁盤存儲設(shè)備1324到系統(tǒng)總線1318,通常使用如接口1326這樣的可移動或不可移動接口。
應(yīng)理解圖13說明了作為用戶和適合的操作環(huán)境1310中的基本計算機(jī)資源之間的中介的軟件。這樣的軟件包括操作系統(tǒng)1328。操作系統(tǒng)1328可以被存儲在磁盤存儲1324上,用于控制和分配計算機(jī)系統(tǒng)1312的資源。系統(tǒng)應(yīng)用1330利用操作系統(tǒng)1328通過存儲在系統(tǒng)存儲器1316或磁盤存儲1324中的程序模塊1332和程序數(shù)據(jù)1334對資源的管理。應(yīng)理解,可以用各種操作系統(tǒng)或操作系統(tǒng)的組合實現(xiàn)本發(fā)明。
用戶通過輸入設(shè)備1336輸入命令或信息到計算機(jī)1312。輸入設(shè)備1336包括,但不僅限于,如鼠標(biāo)、軌跡球、觸針這樣的定點設(shè)備、觸摸墊、鍵盤、麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀、電視卡、數(shù)碼相機(jī)、數(shù)碼攝像機(jī)、攝像頭等等等。這些和其他輸入設(shè)備經(jīng)接口端口1338通過系統(tǒng)總線1318連接到處理單元1314。接口端口1338包括,例如,串行端口、并行端口、游戲端口和通用串行總線(U服務(wù)代理)。輸出設(shè)備1340使用一些和輸入設(shè)備1336所用端口類型相同的端口。因此,例如U服務(wù)代理端口可以用于向計算機(jī)1312提供輸入,并從計算機(jī)1312輸出信息到輸出設(shè)備1340。提供輸出適配器1342來展示在其他輸入設(shè)備1340中有一些需要特殊適配器的輸出設(shè)備,如顯示器、揚(yáng)聲器和打印機(jī)。輸出適配器1342包括,作為例子而非限制,視頻和音頻卡,它們提供在輸出設(shè)備1340和系統(tǒng)總線1318之間進(jìn)行連接的方法。應(yīng)注意,其他設(shè)備和/或設(shè)備的系統(tǒng)提供輸入和輸出能力兩者,如遠(yuǎn)程計算機(jī)1344。
計算機(jī)1312可以工作在使用到一個或多個如遠(yuǎn)程計算機(jī)1344這樣的遠(yuǎn)程計算機(jī)的邏輯連接的聯(lián)網(wǎng)環(huán)境中。遠(yuǎn)程計算機(jī)1344可以為個人計算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、工作站、基于微處理器的設(shè)備、對等設(shè)備或其他普通網(wǎng)絡(luò)節(jié)點及其類似,并通常包括很多或所有相對于計算機(jī)1312說明的元件。為簡單起見,對遠(yuǎn)程計算機(jī)1344只展示了存儲器存儲設(shè)備1346。遠(yuǎn)程計算機(jī)1344邏輯上通過網(wǎng)絡(luò)接口1348連接到計算機(jī)1312且物理上通過通訊連接1350連接。網(wǎng)絡(luò)接口1348包括通訊網(wǎng)絡(luò),如局域網(wǎng)(LAN)和廣域網(wǎng)(WAN)。LAN技術(shù)包括,光纖分布式數(shù)據(jù)接口(FDDI)、銅線分布式數(shù)據(jù)接口(CDDI)、以太網(wǎng)/IEEE 802.3、令牌環(huán)網(wǎng)/IEEE 802.5及其類似。WAN技術(shù)包括,但不以僅限于,點對點連接、回路交換網(wǎng)絡(luò),如集成服務(wù)數(shù)字網(wǎng)絡(luò)(ISDN)和其變體、分組交換網(wǎng)絡(luò)和數(shù)字用戶線(DSL)。
通訊連接1350指用于連接網(wǎng)絡(luò)接口1348到總線1318的硬件/軟件。雖然為便于說明所示的通訊連接1350在計算機(jī)1312內(nèi)部,它也可以在計算機(jī)1312外部。連接到網(wǎng)絡(luò)接口1348所需的硬件/軟件包括(僅作為例子)內(nèi)部的和外部的技術(shù),如包括常規(guī)電話升級調(diào)制解調(diào)器、有線調(diào)制解調(diào)器和DSL調(diào)制解調(diào)器的調(diào)制解調(diào)器、ISDN適配器和以太網(wǎng)卡。
上述已說明包括本發(fā)明的例子。當(dāng)然,為了說明本發(fā)明不可能說明組件或方法的每一個可能的組合,但熟悉技術(shù)的人應(yīng)承認(rèn),可以對本發(fā)明進(jìn)行很多進(jìn)一步的組合及變換。因此,本發(fā)明應(yīng)包括所有落在后附的權(quán)利要求的精神和范圍中的更改、修改和變體。進(jìn)一步來說,對在說明書和權(quán)利要求中的使用的術(shù)語“包括”的范圍,這樣的術(shù)語是包含性的,類似于術(shù)語“包括”,如“包括”當(dāng)在權(quán)利要求中作為常規(guī)的詞使用時對其解釋的方式。
權(quán)利要求
1.一種數(shù)據(jù)庫改變通知系統(tǒng),其特征在于,所述系統(tǒng)包括接收數(shù)據(jù)庫查詢注冊信息的服務(wù)代理;一個或多個存儲數(shù)據(jù)庫查詢注冊信息的至少部分的隊列;及一個或多個發(fā)送改變消息的通知發(fā)送服務(wù)。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,在SQL環(huán)境中使用。
3.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述服務(wù)代理位于客戶機(jī)和服務(wù)器中的一個上面。
4.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)庫注冊信息至少包括唯一標(biāo)識符、發(fā)送地址、隊列名稱、超時期間、通訊選項、協(xié)議、端口、驗證信息、安全選項和加密信息之一。
5.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述一個或多個隊列位于服務(wù)代理中。
6.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述服務(wù)代理為數(shù)據(jù)庫。
7.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述存儲在一個或多個隊列中的數(shù)據(jù)庫查詢注冊信息的至少部分包括唯一標(biāo)識符和發(fā)送地址。
8.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述通知發(fā)送服務(wù)由服務(wù)代理、系統(tǒng)啟動、檢測機(jī)制和用戶之一激活。
9.如權(quán)利要求4所述的系統(tǒng),其特征在于,所述超時期間被用于確定查詢注冊過期期間。
10.如權(quán)利要求4所述的系統(tǒng),其特征在于,基于缺省值、數(shù)據(jù)庫查詢注冊信息、概率、統(tǒng)計、神經(jīng)網(wǎng)絡(luò)和自適應(yīng)技術(shù)之一選擇所述存儲數(shù)據(jù)庫查詢注冊信息的至少部分的隊列。
11.如權(quán)利要求4所述的系統(tǒng),其特征在于,所述發(fā)送地址被用于確定改變消息的目的地。
12.如權(quán)利要求4所述的系統(tǒng),其特征在于,所述唯一標(biāo)識符被用于發(fā)送數(shù)據(jù)庫改變通知到關(guān)聯(lián)的客戶機(jī)組件。
13.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述所述數(shù)據(jù)庫改變通知至少包括事件和觸發(fā)事件的標(biāo)準(zhǔn)之一。
14.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述改變消息包括唯一標(biāo)識符。
15.如權(quán)利要求4所述的系統(tǒng),其特征在于,所述數(shù)據(jù)庫查詢注冊信息與原始的、變換的和可查詢的結(jié)果關(guān)聯(lián)。
16.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述一個或多個存儲數(shù)據(jù)庫查詢注冊信息的隊列與來自位于一個或多個目的地的一個或多個組件的一個或多個查詢關(guān)聯(lián)。
17.如權(quán)利要求1所述的系統(tǒng),其特征在于,通過在類似的隊列中存儲返回類似的結(jié)果的已注冊的查詢的數(shù)據(jù)庫查詢注冊信息,及在類似的隊列中存儲和類似的組件或目的地關(guān)聯(lián)的已注冊的查詢的數(shù)據(jù)庫查詢注冊信息兩者之一對同類的存儲使用所述一個或多個隊列。
18.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述一個或多個通知發(fā)送服務(wù)訪問類似的隊列。
19.如權(quán)利要求1所述的系統(tǒng),其特征在于,至少一個通知發(fā)送服務(wù)訪問一個或多個有來自多個客戶機(jī)的數(shù)據(jù)庫查詢注冊信息隊列,其中至少一個通知發(fā)送服務(wù)可以發(fā)送改變消息到多個客戶機(jī)。
20.一種數(shù)據(jù)庫查詢注冊和消息發(fā)送系統(tǒng),其特征在于,所述系統(tǒng)包括接收數(shù)據(jù)庫查詢注冊消息和數(shù)據(jù)庫改變請求的服務(wù)器;幫助使用數(shù)據(jù)庫查詢注冊信息的服務(wù)代理;存儲數(shù)據(jù)庫查詢注冊信息的至少部分的隊列;及對服務(wù)代理操作并且能夠訪問存儲在隊列中的數(shù)據(jù)庫查詢注冊信息的至少部分以構(gòu)建改變消息的通知發(fā)送服務(wù)。
21.如權(quán)利要求20所述的系統(tǒng),其特征在于,所述服務(wù)器為基于SQL的服務(wù)器。
22.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述一個或多個數(shù)據(jù)庫查詢注冊消息包括基于標(biāo)記語言的文件。
23.如權(quán)利要求20所述的系統(tǒng),其特征在于,所述數(shù)據(jù)庫查詢注冊信息至少包括唯一標(biāo)識符和發(fā)送地址。
24.如權(quán)利要求20所述的系統(tǒng),其特征在于,所述數(shù)據(jù)庫查詢注冊信息包括隊列名稱、超時期間、驗證信息、加密選項、發(fā)送服務(wù)保持激活的時間長度、一旦發(fā)生改變是否保留或去除注冊的選項,及同步還是異步發(fā)送改變的消息的選項中的一個或多個。
25.如權(quán)利要求20所述的系統(tǒng),其特征在于,進(jìn)一步包括數(shù)據(jù)庫改變檢測機(jī)制。
26.如權(quán)利要求20所述的系統(tǒng),其特征在于,通過使用從數(shù)據(jù)庫查詢注冊信息中抽取的隊列名稱、缺省的隊列名稱、用戶定義的隊列名稱和最優(yōu)選擇的隊列名稱之一來確定所述隊列。
27.如權(quán)利要求20所述的系統(tǒng),其特征在于,進(jìn)一步包括存儲來自隊列的數(shù)據(jù)庫查詢注冊信息的至少部分,并隨后向通知發(fā)送服務(wù)提供數(shù)據(jù)庫查詢注冊信息的至少部分的中間組件。
28.如權(quán)利要求27所述的系統(tǒng),其特征在于,所述中間組件包括日志文件和緩沖。
29.如權(quán)利要求20所述的系統(tǒng),其特征在于,進(jìn)一步包括服務(wù)器外部的對查詢結(jié)果的存儲。
30.如權(quán)利要求29所述的系統(tǒng),其特征在于,所述外部存儲包括高速緩存。
31.如權(quán)利要求20所述的系統(tǒng),其特征在于,進(jìn)一步包括和一個或多個已注冊的數(shù)據(jù)庫關(guān)聯(lián)并可以訪問一個或多個隊列的多個通知發(fā)送服務(wù)。
32.如權(quán)利要求20所述的系統(tǒng),其特征在于,所述通知發(fā)送服務(wù)可以在確認(rèn)數(shù)據(jù)庫改變請求之前、與確認(rèn)數(shù)據(jù)庫改變請求同時或在確認(rèn)數(shù)據(jù)庫改變請求之后發(fā)送改變消息,其中所選擇的發(fā)送技術(shù)基于缺省值、數(shù)據(jù)庫查詢注冊信息和使用信息之一。
33.如權(quán)利要求20所述的系統(tǒng),其特征在于,所述通知發(fā)送服務(wù)基于時間絕對長度、一些要服務(wù)的隊列項和一段停止的時間保持激活一段時間。
34.如權(quán)利要求33所述的系統(tǒng),其特征在于,所述一段時間基于缺省值、數(shù)據(jù)庫查詢注冊信息、服務(wù)器負(fù)載和自適應(yīng)技術(shù)之一。
35.一種數(shù)據(jù)庫查詢注冊和通知系統(tǒng),其特征在于,所述系統(tǒng)包括通過提供數(shù)據(jù)庫查詢注冊信息幫助數(shù)據(jù)庫查詢的注冊的注冊組件;及接收一個或多個改變消息并幫助發(fā)送數(shù)據(jù)庫改變通知的通知運(yùn)行時間服務(wù)。
36.如權(quán)利要求35所述的系統(tǒng),其特征在于,所述注冊組件使用數(shù)據(jù)庫查詢注冊信息來構(gòu)建基于XML的消息。
37.如權(quán)利要求35所述的系統(tǒng),其特征在于,所述通知運(yùn)行時間服務(wù)從改變消息中抽取唯一標(biāo)識符并使用該唯一標(biāo)識符來發(fā)送數(shù)據(jù)庫改變通知到關(guān)聯(lián)的組件。
38.如權(quán)利要求35所述的系統(tǒng),其特征在于,所述一個或多個數(shù)據(jù)庫改變通知至少包括事件和表面發(fā)生了改變的標(biāo)志之一。
39.一種數(shù)據(jù)庫查詢注冊、改變消息和通知系統(tǒng),其特征在于,所述系統(tǒng)包括幫助注冊數(shù)據(jù)庫查詢的相關(guān)性組件;發(fā)送數(shù)據(jù)庫查詢注冊信息的服務(wù)代理;存儲數(shù)據(jù)庫查詢注冊信息的部分的隊列;及在數(shù)據(jù)庫改變會影響隨后的查詢的結(jié)果時提供改變消息的通知發(fā)送服務(wù)。
40.如權(quán)利要求39所述的系統(tǒng),其特征在于,所述相關(guān)性組件進(jìn)一步提供注冊標(biāo)識符,所述注冊標(biāo)識符至少包括和一個已注冊的查詢關(guān)聯(lián)的全局唯一標(biāo)識符(GUID),其中關(guān)聯(lián)的鑒定結(jié)果導(dǎo)致本質(zhì)上類似的客戶機(jī)動作。
41.如權(quán)利要求39所述的系統(tǒng),其特征在于,進(jìn)一步包括向所述相關(guān)性組件提供發(fā)送地址的通知運(yùn)行時間服務(wù)。
42.如權(quán)利要求41所述的系統(tǒng),其特征在于,進(jìn)一步包括向所述相關(guān)性組件提供發(fā)送地址的通用監(jiān)聽程序。
43.如權(quán)利要求39所述的系統(tǒng),其特征在于,所述數(shù)據(jù)庫查詢注冊信息包括隊列名稱、發(fā)送地址、超時期間和唯一標(biāo)識符。
44.如權(quán)利要求42所述的系統(tǒng),其特征在于,所述選擇通用監(jiān)聽程序和通知運(yùn)行時間服務(wù)之一是部分基于缺省值、客戶機(jī)能力、數(shù)據(jù)庫查詢注冊信息、配置、統(tǒng)計和自適應(yīng)技術(shù)的。
45.如權(quán)利要求41所述的系統(tǒng),其特征在于,所述通知運(yùn)行時間服務(wù)在操作上通過通訊協(xié)議連接到通知發(fā)送服務(wù)。
46.如權(quán)利要求42所述的系統(tǒng),其特征在于,所述通用監(jiān)聽程序在操作上通過通訊協(xié)議連接到通知發(fā)送服務(wù)。
47.如權(quán)利要求39所述的系統(tǒng),其特征在于,進(jìn)一步包括使用驗證證書來提供安全消息發(fā)送。
48.如權(quán)利要求41所述的系統(tǒng),其特征在于,進(jìn)一步包括幫助相關(guān)性組件對通知運(yùn)行時間服務(wù)注冊的相關(guān)性交換機(jī)。
49.如權(quán)利要求42所述的系統(tǒng),其特征在于,進(jìn)一步包括幫助相關(guān)性組件對通用監(jiān)聽程序注冊的相關(guān)性監(jiān)聽程序。
50.如權(quán)利要求48所述的系統(tǒng),其特征在于,如果相關(guān)性交換機(jī)還未激活并且接收到注冊數(shù)據(jù)庫查詢的請求,則所述相關(guān)性組件啟動相關(guān)性交換機(jī)以對通知運(yùn)行時間服務(wù)注冊。
51.如權(quán)利要求39所述的系統(tǒng),其特征在于,使用包括異步和同步數(shù)據(jù)庫改變確認(rèn)和數(shù)據(jù)庫改變消息發(fā)送的技術(shù)來提高可伸縮性和數(shù)據(jù)一致性之一。
52.一種在數(shù)據(jù)庫改變時接收通知的方法,其特征在于,所述方法包括向服務(wù)器提供數(shù)據(jù)庫查詢注冊信息;在隊列中存儲數(shù)據(jù)庫查詢注冊信息的至少部分;及使用數(shù)據(jù)庫查詢注冊信息的至少部分來構(gòu)建并發(fā)送改變消息。
53.如權(quán)利要求52所述的方法,其特征在于,所述數(shù)據(jù)庫查詢注冊信息包括隊列名稱、發(fā)送地址、超時期間和唯一標(biāo)識符。
54.如權(quán)利要求52所述的方法,其特征在于,進(jìn)一步包括檢測將改變已注冊的查詢的結(jié)果的數(shù)據(jù)庫改變。
55.如權(quán)利要求52所述的方法,其特征在于,進(jìn)一步包括使用服務(wù)代理來幫助在隊列中存儲數(shù)據(jù)庫查詢注冊信息并激活通知發(fā)送組件來處理隊列中的消息。
56.如權(quán)利要求52所述的方法,其特征在于,進(jìn)一步包括使用通知發(fā)送服務(wù),所述通知發(fā)送服務(wù)在改變消息中使用數(shù)據(jù)庫查詢注冊信息的至少部分,并使用數(shù)據(jù)庫查詢注冊信息的至少部分來發(fā)送所述改變消息。
57.一種在兩個或多個計算機(jī)組件間傳送的數(shù)據(jù)包,便于數(shù)據(jù)庫查詢注冊、數(shù)據(jù)庫改變檢測及數(shù)據(jù)庫改變通知,包括數(shù)據(jù)庫查詢注冊信息,它與注冊的數(shù)據(jù)庫查詢關(guān)聯(lián)、存儲在隊列中、并用于構(gòu)建并傳送用于發(fā)送數(shù)據(jù)庫改變通知的改變信息。
58.一種計算機(jī)可讀媒體,存儲數(shù)據(jù)庫查詢注冊、檢測和通知系統(tǒng)的計算機(jī)可執(zhí)行組件,包括存儲數(shù)據(jù)庫查詢注冊信息的隊列;傳送用來通知已注冊接收通知用戶的改變信息的通知發(fā)送服務(wù);及連接到隊列和通知發(fā)送服務(wù)以向隊列提供數(shù)據(jù)庫查詢注冊信息并激活通知發(fā)送服務(wù)的服務(wù)代理器。
59.一種注冊數(shù)據(jù)庫查詢的系統(tǒng),其特征在于,包括注冊數(shù)據(jù)庫查詢的裝置;檢測改變已注冊查詢結(jié)果的數(shù)據(jù)庫改變的裝置;提供表示后次查詢結(jié)果可以與前次查詢結(jié)果不同的信息改變的裝置。
全文摘要
本發(fā)明涉及提供這樣的系統(tǒng)和方法,所述系統(tǒng)和方法在已注冊的數(shù)據(jù)庫查詢隨后的查詢結(jié)果由于數(shù)據(jù)庫改變而發(fā)生改變時進(jìn)行通知。所述系統(tǒng)和方法使用服務(wù)代理來幫助在隊列中存儲和已注冊的數(shù)據(jù)庫查詢關(guān)聯(lián)的數(shù)據(jù)庫查詢注冊信息并激活通知發(fā)送服務(wù)。在激活期間,通知發(fā)送服務(wù)可以訪問隊列來獲取數(shù)據(jù)庫查詢注冊信息。然后通知發(fā)送服務(wù)可以構(gòu)建并發(fā)送改變消息。改變消息可以被用來幫助通知已注冊為在查詢結(jié)果改變和/或已存儲的查詢結(jié)果變得無效時接收通知的組件。可以用各種數(shù)據(jù)庫注冊、數(shù)據(jù)庫改變檢測和數(shù)據(jù)庫改變消息接收機(jī)制來實現(xiàn)本發(fā)明。進(jìn)一步來說,本發(fā)明可以用在客戶機(jī)/服務(wù)器環(huán)境中,如基于SQL的環(huán)境。
文檔編號G06F12/00GK1534519SQ20041003224
公開日2004年10月6日 申請日期2004年3月26日 優(yōu)先權(quán)日2003年3月28日
發(fā)明者M·J·皮索, S·桑達(dá)雷杉, R·P·帕姆拉帕蒂, C·克萊納曼, P·卡斯特羅, M J 皮索, 固羋, 帕姆拉帕蒂, 襯陜, 錮咨 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
铁岭市| 铁力市| 铜陵市| 东乡县| 陵水| 汉阴县| 云龙县| 额敏县| 若羌县| 靖西县| 得荣县| 辉南县| 平罗县| 义乌市| 宜宾县| 格尔木市| 常州市| 庆云县| 汝阳县| 宝清县| 保德县| 曲沃县| 文安县| 安康市| 邵阳县| 桦甸市| 白朗县| 东辽县| 吉首市| 同仁县| 泸州市| 郧西县| 马关县| 石楼县| 突泉县| 通州市| 青铜峡市| 墨玉县| 顺昌县| 海晏县| 区。|