專利名稱:使用客戶端-服務(wù)器網(wǎng)橋管理對象的制作方法
技術(shù)領(lǐng)域:
本說明書涉及使用客戶端一服務(wù)器網(wǎng)橋管理對象。
背景技術(shù):
一些客戶端一服務(wù)器系統(tǒng)采用兩種操作方法之一。一些系統(tǒng)具有“瘦”客戶端,其呈現(xiàn)向用戶提供具有獨(dú)立于服務(wù)器執(zhí)行操作的非常小的能力的外觀(veneer)的界面(例如,HTML網(wǎng)頁)。一些系統(tǒng)具有“胖”客戶端,其利用客戶端硬件的資源提供能夠執(zhí)行復(fù)雜操作的界面(例如,基于微軟基礎(chǔ)類的用戶界面)。以相同或相似的編程語言將一些“胖”客戶端編制為服務(wù)器應(yīng)用程序,并且因此客戶端可以緊密地耦接到后端服務(wù)器(例如,Java RMI或微軟COM+技術(shù))。
發(fā)明內(nèi)容
在一個(gè)方面,總的而言,支持客戶端和服務(wù)器之間的通信的方法包括從客戶端接收第一消息。該方法還包括響應(yīng)于該第一消息而創(chuàng)建對象。該方法還包括將對該第一消息 的響應(yīng)發(fā)送到客戶端。該方法還包括從服務(wù)器接收對該對象的改變。該方法還包括存儲對該對象的改變。該方法還包括從該客戶端接收第二消息。該方法還包括利用對該第二消息的響應(yīng)而向客戶端發(fā)送所存儲的改變。各方面可以包括以下特征中的一個(gè)或多個(gè)。存儲改變可以包括創(chuàng)建改變的日志,向客戶端發(fā)送所存儲的改變可以包括發(fā)送改變的日志。存儲改變可以包括更新對象的當(dāng)前狀態(tài),向客戶端發(fā)送所存儲的改變可以包括發(fā)送對象的當(dāng)前狀態(tài)。從客戶端接收第一消息可以包括接收用于客戶端對象的臨時(shí)標(biāo)識符;創(chuàng)建對象包括獲得用于該對象的永久標(biāo)識符;以及發(fā)送對第一消息的響應(yīng)包括發(fā)送臨時(shí)標(biāo)識符和永久標(biāo)識符之間的映射。獲得永久標(biāo)識符可以包括向服務(wù)器發(fā)送服務(wù)器消息。發(fā)送服務(wù)器消息可以包括將該服務(wù)器消息與其它服務(wù)器消息進(jìn)行交織。方法還可以包括向服務(wù)器注冊對該對象的興趣。接收對該對象的改變可以包括接收與服務(wù)器生成的事件相關(guān)聯(lián)的、對該對象的改變。接收第一消息可以包括利用第一協(xié)議,并且接收改變包括利用與第一協(xié)議不同的第二協(xié)議。方法還可以包括存儲對于多個(gè)客戶端的多個(gè)對象的改變。對象可以對應(yīng)于數(shù)據(jù)流圖的一部分,其包括表示數(shù)據(jù)流圖的組件(components)的多個(gè)節(jié)點(diǎn)、以及表示各組件之間的數(shù)據(jù)流的節(jié)點(diǎn)間鏈接。從客戶端接收第一消息可以包括接收用于定義數(shù)據(jù)流圖的組件的至少一個(gè)特性的參數(shù)的值。方法可以包括提供以下界面,該界面接收用于定義數(shù)據(jù)流圖的組件的相應(yīng)特性的一個(gè)或多個(gè)參數(shù)。該界面可以顯示多個(gè)用戶界面元素,并且各用戶界面元素之間的關(guān)系基于數(shù)據(jù)流圖的各組件之間的依賴性??梢酝ㄟ^在服務(wù)器中存儲的規(guī)范來定義所述關(guān)系。接收第一消息可以包括接收對中間數(shù)據(jù)的請求,創(chuàng)建對象可以包括編譯數(shù)據(jù)流圖的一部分,并且通過運(yùn)行編譯后的數(shù)據(jù)流圖的該部分來產(chǎn)生輸出至輸出數(shù)據(jù)集。創(chuàng)建對象還可以包括確定生成中間數(shù)據(jù)所需的第一組件集合;禁止數(shù)據(jù)流圖中不在該第一組件集合中的組件;以及創(chuàng)建與數(shù)據(jù)流圖I禹接的中間數(shù)據(jù)宿(intermediate data sink)以存儲該輸出數(shù)據(jù)集。確定第一組件集合可以包括標(biāo)識不將數(shù)據(jù)源連接到中間數(shù)據(jù)宿的鏈接。創(chuàng)建中間數(shù)據(jù)宿可以包括確定至中間數(shù)據(jù)宿的鏈接呈現(xiàn)并行數(shù)據(jù)流;以及將并行數(shù)據(jù)宿創(chuàng)建為中間數(shù)據(jù)宿。在另一方面,總的而言,一種計(jì)算機(jī)可讀介質(zhì)存儲用于支持客戶端和服務(wù)器之間的通信的計(jì)算機(jī)程序。該計(jì)算機(jī)程序包括用于使計(jì)算機(jī)執(zhí)行以下操作的指令從客戶端接收第一消息;響應(yīng)于該第一消息而創(chuàng)建對象;將對該第一消息的響應(yīng)發(fā)送到客戶端;從服務(wù)器接收對該對象的改變;存儲對該對象的改變;從該客戶端接收第二消息;以及利用對該第二消息的響應(yīng)而向客戶端發(fā)送所存儲的改變。
在另一方面,總的而言,一種支持客戶端和服務(wù)器之間的通信的系統(tǒng)包括包括至少一個(gè)處理器的服務(wù)器;以及包括被配置來管理該系統(tǒng)中的對象至少一個(gè)處理器的網(wǎng)橋。所述管理包括從客戶端接收第一消息;響應(yīng)于該第一消息而創(chuàng)建對象;將對該第一消息的響應(yīng)發(fā)送到客戶端;從服務(wù)器接收對該對象的改變;存儲對該對象的改變;從該客戶端接收第二消息;以及利用對該第二消息的響應(yīng)而向客戶端發(fā)送所存儲的改變。在另一方面,總的而言,一種支持客戶端和服務(wù)器之間的通信的系統(tǒng)包括用于服務(wù)數(shù)據(jù)的部件;以及用于管理該系統(tǒng)中的對象的部件。所述管理包括從客戶端接收第一消息;響應(yīng)于該第一消息而創(chuàng)建對象;將對該第一消息的響應(yīng)發(fā)送到客戶端;從用于服務(wù)數(shù)據(jù)的部件接收對該對象的改變;存儲對該對象的改變;從該客戶端接收第二消息;以及利用對該第二消息的響應(yīng)而向客戶端發(fā)送所存儲的改變。各方面可以包括以下優(yōu)點(diǎn)中的一個(gè)或多個(gè)??梢院喕蛻舳撕头?wù)器之間的通信。為魯棒性的客戶端開發(fā)的服務(wù)器可以被適配為支持腳本客戶端。可以跟蹤對于對象的改變,并且可以在不必保持網(wǎng)橋和客戶端之間的連續(xù)連接的情況下更新客戶端。本發(fā)明的其它特征和優(yōu)點(diǎn)將從以下說明以及權(quán)利要求中變得明顯。
圖I是橋接的客戶端服務(wù)器系統(tǒng)的示意圖。圖2是客戶端、網(wǎng)橋、和服務(wù)器之間的示例通信模式的示意圖。圖3 — 5是該系統(tǒng)執(zhí)行的示例操作的流程圖。圖6A是示例的數(shù)據(jù)流圖的圖。圖6B和6C是用于定制數(shù)據(jù)流圖的界面的各部分的圖。圖7A表示界面中的示例結(jié)果顯示。圖7B是示例的數(shù)據(jù)流圖的圖。圖8是橋接的客戶端服務(wù)器系統(tǒng)的示意圖。
具體實(shí)施例方式與在典型的瘦客戶端上可用的功能相比,一些工具在利用瀏覽器的客戶端系統(tǒng)上使能更多功能。以與被用來創(chuàng)建服務(wù)器應(yīng)用的編程語言不同的編程語言來構(gòu)造這些工具中的一些。為了促進(jìn)使用不同技術(shù)構(gòu)建的客戶端和服務(wù)器之間的通信,在客戶端系統(tǒng)和服務(wù)器系統(tǒng)之間建立“網(wǎng)橋”通信層,如圖I所示??蛻舳?02a、102b、102c每個(gè)經(jīng)由網(wǎng)橋110與在服務(wù)器104上運(yùn)行的對應(yīng)的服務(wù)器會話116a、116b、116c進(jìn)行通信。從客戶端102a、102b、102c到網(wǎng)橋110的消息被發(fā)送到消息處理器108,其將客戶端102a、102b、102c的無狀態(tài)協(xié)議(例如,超文本傳輸協(xié)議HTTP)轉(zhuǎn)譯至服務(wù)器104所提供的協(xié)議集合。在一些布置中,可以使用代碼生成來使該轉(zhuǎn)換自動化。在一些布置中,客戶端、網(wǎng)橋110和服務(wù)器104每個(gè)都運(yùn)行在獨(dú)立的處理器或計(jì)算機(jī)系統(tǒng)上,并且通過網(wǎng)絡(luò)進(jìn)行通信??蛻舳?02a、102b、102c可以是依賴于網(wǎng)橋110與服務(wù)器104進(jìn)行通信的瘦客戶端,并且可以存在其它的能夠直接與服務(wù)器104進(jìn)行通信的胖客戶端(未示出)。通常,單個(gè)客戶端102a經(jīng)由網(wǎng)橋112與單個(gè)客戶端會話114a連接。網(wǎng)橋可以同時(shí)與多個(gè)客戶端交互。單個(gè)客戶端會話114a繼而連接到單個(gè)服務(wù)器會話116a。消息處理器 108創(chuàng)建響應(yīng)對象以便封裝被交換的信息,包括來自服務(wù)器的、對于來自客戶端的消息的響應(yīng),并且消息處理器108將該響應(yīng)對象發(fā)送到適當(dāng)?shù)目蛻舳?02a、102b、102c。然而,在一些實(shí)例中,可以使用其它配置。例如,可以通過負(fù)荷平衡器使得與網(wǎng)橋110的通信或者與服務(wù)器104的通信是負(fù)荷平衡的,以便提高性能。如箭頭120a、120b、120c所表示的,客戶端102a、102b、102c與網(wǎng)橋110之間的通信可以包括請求和響應(yīng)??蛻舳?02a、102b、102c可以向網(wǎng)橋110做出請求并且等待響應(yīng)。網(wǎng)橋110可以為客戶端102a、102b、102c創(chuàng)建客戶端會話114a、114b、114c,或者如果已經(jīng)存在,則可以使用現(xiàn)有的會話。網(wǎng)橋110將輸入消息轉(zhuǎn)譯至服務(wù)器104所理解的協(xié)議。可以在網(wǎng)橋110和服務(wù)器104之間、在消息流124a、124b、124c中傳送各種類型的消息,包括遠(yuǎn)程例程調(diào)用(RPC)、數(shù)據(jù)(例如“字節(jié)流”和“對象流”)、以及事件(例如,單向消息)。通常,RPC通過發(fā)送請求和接收響應(yīng)來進(jìn)行操作。該基本模式具有三個(gè)變型“單機(jī)” RPC,其特征在于,等待或輪詢響應(yīng)而沒有隱式的完成或失敗通知的處理線程;“同步”RPC,其特征在于,阻塞(blocking)直至接收到指示成功或失敗的響應(yīng)的處理線程;以及“異步”RPC,其特征在于,注冊在例程完成時(shí)將被觸發(fā)的回叫。在一些示例中,確保按照特定線程所作出的RPC以它們所調(diào)用的順序來運(yùn)行。網(wǎng)橋110和服務(wù)器104之間的通信使得包括RPC的消息流能夠被交織??梢酝瑫r(shí)操縱多個(gè)不同的RPC消息流,使得消息彼此重疊地到達(dá)網(wǎng)橋。網(wǎng)橋110獨(dú)立地接收并處理每個(gè)消息。網(wǎng)橋110還允許發(fā)送取消或放棄消息。在接收到放棄消息時(shí),網(wǎng)橋110終止當(dāng)前運(yùn)行的例程,或者通知服務(wù)器104終止當(dāng)前運(yùn)行的例程。網(wǎng)橋110和服務(wù)器104可以使用數(shù)據(jù)流進(jìn)行通信。數(shù)據(jù)流是邏輯字節(jié)流,其采用窗口協(xié)議來限制可以一次傳送的數(shù)據(jù)量。數(shù)據(jù)流可以作為RPC請求或響應(yīng)消息、明文消息(plain message)、或進(jìn)度消息的一部分而在網(wǎng)橋110和服務(wù)器104之間傳遞。一旦數(shù)據(jù)流被傳遞到網(wǎng)橋或服務(wù)器,就通過握手例程來建立數(shù)據(jù)流,該握手例程標(biāo)識用于已經(jīng)接收到流對象的連接側(cè)的流、以及流控制參數(shù)。可以基于由服務(wù)器104或網(wǎng)橋110建立的約束來限制在流上傳送的數(shù)據(jù)量。
參考圖2,在一些布置中,客戶端202可以保持在服務(wù)器104上可運(yùn)行并存儲的處理和信息的表示??梢允箍蛻舳?02意識到服務(wù)器104上的處理和信息發(fā)生的改變。如箭頭210、212所示,客戶端202可以與網(wǎng)橋110通信。在一些布置中,該通信可以源自與在客戶端202上存儲的數(shù)據(jù)的表示進(jìn)行的編程交互。網(wǎng)橋110接收請求,并且可以與服務(wù)器104通信,如由處理箭頭214、216表示的。如上面討論的,與客戶端202和網(wǎng)橋110之間的通信相比,網(wǎng)橋110和服務(wù)器104之間的通信可以利用一組更具魯棒性的協(xié)議。如箭頭224所示,服務(wù)器104在當(dāng)前沒有處理消息時(shí),可以向網(wǎng)橋110通知對底層對象(underlyingobject)的改變。例如,網(wǎng)橋110可以注冊對給定對象的興趣,并且服務(wù)器104可以向網(wǎng)橋110通知何時(shí)該對象被變更或訪問。在一些布置中,客戶端202和網(wǎng)橋110之間的通信的無狀態(tài)特性防止了網(wǎng)橋110將改變立即發(fā)送給客戶端202。在這些情況下,信息可以被存儲在網(wǎng)橋110中,并且可以作為對隨后的請求的響應(yīng)的一部分而被遞送給客戶端202。在其它布置中,可以在客戶端和服務(wù)器之間建立數(shù)據(jù)流以便允許持續(xù)更新。在一些布置中,客戶端202可以創(chuàng)建在服務(wù)器104上不存在的信息的表示,例如,創(chuàng)建新的客戶對象。該新創(chuàng)建的信息可以被提供有臨時(shí)標(biāo)識符。客戶端202可以隨后利用該新信息執(zhí)行若干動作。在一些布置中,客戶端202可以執(zhí)行利用該新信息和從服務(wù)器訪 問的現(xiàn)有信息兩者的操作,有時(shí)候使用臨時(shí)標(biāo)識符來更新現(xiàn)有信息??蛻舳?02可以在向服務(wù)器104進(jìn)行通知之前使用該信息執(zhí)行各種操作。最終,客戶端202可以向網(wǎng)橋110發(fā)送一個(gè)或多個(gè)請求,請求在服務(wù)器104上運(yùn)行操作。網(wǎng)橋110識別在服務(wù)器104上不存在的新信息。結(jié)果,網(wǎng)橋可以創(chuàng)建表示服務(wù)器上的信息的記錄,并且獲得永久標(biāo)識符。網(wǎng)橋110然后使得消息上提供的臨時(shí)標(biāo)識符與永久標(biāo)識符相一致(reconcile)。作為響應(yīng)的一部分,網(wǎng)橋110向客戶端202提供臨時(shí)標(biāo)識符到永久標(biāo)識符的映射。在網(wǎng)橋110上,消息處理器108所管理的消息服務(wù)接收輸入消息。在一些布置中,該消息可以指定使用多個(gè)對象可執(zhí)行的多個(gè)操作。一些對象可能已經(jīng)存在,而其它對象可能是新的。通常,將使用標(biāo)識符來標(biāo)識所有對象。將使用永久標(biāo)識符來標(biāo)識現(xiàn)有對象,而使用臨時(shí)標(biāo)識符來標(biāo)識新創(chuàng)建的對象。消息服務(wù)標(biāo)識需要執(zhí)行哪些操作。網(wǎng)橋110上的對象服務(wù)標(biāo)識哪些對象已經(jīng)存在于服務(wù)器104上并且將它們?nèi)』?。對于新信息,將?shù)據(jù)添加到服務(wù)器104并且分配永久標(biāo)識符,對象服務(wù)提供永久標(biāo)識符和臨時(shí)標(biāo)識符之間的映射。參考圖3,流程圖300表示網(wǎng)橋110所執(zhí)行的操作的示例布置。典型地,通過該網(wǎng)橋所駐留的計(jì)算機(jī)系統(tǒng)的一個(gè)或多個(gè)處理器來運(yùn)行操作。盡管典型地由單個(gè)電子設(shè)備運(yùn)行,但是在一些布置中,可以在兩個(gè)或多個(gè)電子設(shè)備(例如,計(jì)算機(jī)系統(tǒng))之間分布操作運(yùn)行。操作包括接收具有參考的消息302。例如,參考可以是指向存儲器中所存儲的對象的指針,或者參考可以是定位對象的標(biāo)識符。該消息可以參考多個(gè)對象。可以在分離的列表中提供參考,或者它們可以被嵌套在該消息內(nèi)部。操作還包括檢查以確定對象是否存在304。在一些情況下,網(wǎng)橋可以向服務(wù)器發(fā)送消息來詢問對象是否存在。在其它情況下,操作304可以與其它操作組合。例如,網(wǎng)橋可以執(zhí)行操作以試圖從服務(wù)器中取出對象306??梢允褂锰囟?biāo)識符來標(biāo)識新對象,例如,特定范圍的關(guān)鍵詞、特定關(guān)鍵詞如綴、或者消息上的另一字段可以指不該對象是新的。網(wǎng)橋可以將該操作執(zhí)行多次,對于該消息參考的每個(gè)對象執(zhí)行一次。
操作還包括取出對象306。在一些情況下,網(wǎng)橋可以從服務(wù)器中取出在消息中標(biāo)識的對象。在其它情況下,網(wǎng)橋可以在本地存儲裝置中高速緩存對象的本地副本。在向服務(wù)器發(fā)送消息之前,網(wǎng)橋可以在其本地存儲裝置中檢查該對象,并且如果找到,則直接將響應(yīng)返回客戶端。如上面所討論的,可以經(jīng)由反向信道通信與服務(wù)器上的副本同步地保存對象的本地副本。在一些實(shí)現(xiàn)方式中,網(wǎng)橋可以與若干服務(wù)器交互,并且可以使用路由表來確定該對象位于哪個(gè)服務(wù)器上。操作還包括檢查以確定任何更新是否被掛起(pending)308。在一些布置中,網(wǎng)橋可以高速緩存對所述對象的本地副本做出的改變。這些改變可以被存儲在特定的存儲器位置、表、或其它存儲設(shè)備中??梢曰趯ο箢愋秃椭麝P(guān)鍵詞來標(biāo)識所述改變,或者可以基于全局唯一標(biāo)識符來標(biāo)識所述對象。操作還包括將更新添加到結(jié)果310。一旦網(wǎng)橋標(biāo)識了對象的被掛起的更新,則網(wǎng)橋可以編譯那些更新的列表并且將它們附于要遞送給客戶端的響應(yīng)消息。操作還包括創(chuàng)建對象312。在一些情況下,如果對象不存在,則網(wǎng)橋創(chuàng)建新對象。 這通常通過向服務(wù)器發(fā)送消息而實(shí)現(xiàn)。新創(chuàng)建的對象將通常包括與客戶端使用的標(biāo)識符不同的新的標(biāo)識符。操作還包括創(chuàng)建映射314。例如,網(wǎng)橋創(chuàng)建用于將客戶端標(biāo)識符與在創(chuàng)建對象時(shí)提供的永久標(biāo)識符配對的映射。一旦客戶端意識到該映射,則客戶端不再使用其原始標(biāo)識符,而是對于所有的隨后通信,可以采用永久標(biāo)識符。操作還包括將映射添加到結(jié)果316。在一些布置中,為了將映射傳送給客戶端,網(wǎng)橋?qū)⒂成涮砑拥巾憫?yīng)消息上。操作還包括處理消息318。一旦網(wǎng)橋已經(jīng)標(biāo)識、取出、并且創(chuàng)建了所有必需對象,則網(wǎng)橋執(zhí)行所請求的操作。在一些實(shí)現(xiàn)方式中,該操作可以包括向服務(wù)器發(fā)送一個(gè)或多個(gè)消息。在一些實(shí)現(xiàn)方式中,網(wǎng)橋所支持的消息與服務(wù)器所執(zhí)行的消息相同。在此情況下,可以自動地生成用于支持客戶端和服務(wù)器之間的消息轉(zhuǎn)譯所需的編程。操作還包括向客戶端發(fā)送結(jié)果320。例如,一旦處理了消息,該消息的結(jié)果與任何更新和映射相組合并且被返回到客戶端。參考圖4,流程圖400表示網(wǎng)橋110所執(zhí)行的操作的另一示例操作。典型地,通過該網(wǎng)橋所駐留的計(jì)算機(jī)系統(tǒng)的一個(gè)或多個(gè)處理器來運(yùn)行操作。盡管典型地由單個(gè)電子設(shè)備運(yùn)行,但是在一些布置中,可以在兩個(gè)或更多個(gè)電子設(shè)備(例如,計(jì)算機(jī)系統(tǒng))之間分布操作運(yùn)行。操作包括從客戶端接收第一請求402。從客戶端接收的請求可以導(dǎo)致創(chuàng)建或者訪問來自服務(wù)器的一個(gè)或多個(gè)對象??梢栽诰W(wǎng)橋上高速緩存這些對象,以便提高稍后訪問的性能。操作還包括向客戶端發(fā)送結(jié)果404。在一些情況下,將對請求的響應(yīng)發(fā)送到客戶端。在處理該請求期間創(chuàng)建或訪問的對象可以在網(wǎng)橋上保存于本地?cái)?shù)據(jù)存儲裝置,例如存儲器或數(shù)據(jù)庫中。在一些布置中,可以對于期望訪問該對象的所有客戶端存儲該對象的一個(gè)公用副本。在其它布置中,可以將對象連同客戶端標(biāo)識符一起存儲,從而每個(gè)客戶端具有在網(wǎng)橋上存儲的各自副本。在其它布置中,在網(wǎng)橋上存儲公用副本,除非客戶端修改該對象,在此情況下,對于該客戶端保存帶有改變的對象的各自的版本。
操作還包括接收對該對象的更新406。例如,網(wǎng)橋可以從服務(wù)器接收對該對象的更新。可以通過數(shù)據(jù)流或基于事件的通信,從服務(wù)器發(fā)送更新。更新還包括存儲更新408。在一些布置中,對于該對象所接收的更新可以被存儲在特定位置中。在一些布置中,改變可以被存儲為審核跟蹤(audit trail),其列出了被改變的字段和值、以及改變發(fā)生的時(shí)間。在其它布置中,基于何時(shí)向網(wǎng)橋通知改變,可以跟蹤改變。在另一些布置中,即使僅改變了單個(gè)值,也可以更新整個(gè)對象。操作還可以包括從客戶端接收也被網(wǎng)橋操縱的任何數(shù)量的另外請求。在將那些請求的結(jié)果提供回客戶端時(shí),可以包括對于對象的更新。該示例包括從客戶端接收第二請求410,以及將更新添加到結(jié)果412。網(wǎng)橋可以將從服務(wù)器接收的、對在服務(wù)器上存儲的對象的改變添加到正在被發(fā)送到客戶端的響應(yīng)消息上。在一些情況下,網(wǎng)橋還可以將已經(jīng)發(fā)生的任何改變添加到對象,以作為處理客戶端消息的結(jié)果。操作還包括向客戶端發(fā)送結(jié)果414。參考圖5,流程圖500表示由與網(wǎng)橋110交互的客戶端(圖1,102a、102b、102c)執(zhí)行的操作的示例布置。典型地,通過該客戶端所駐留的計(jì)算機(jī)系統(tǒng)的一個(gè)或多個(gè)處理器來運(yùn)行操作。盡管典型地由單個(gè)電子設(shè)備運(yùn)行,但是在一些布置中,可以在兩個(gè)或更多個(gè)電子 設(shè)備(例如,計(jì)算機(jī)系統(tǒng))之間分布操作運(yùn)行。操作包括向網(wǎng)橋發(fā)送消息502。例如,客戶端可以向網(wǎng)橋發(fā)送消息,請求執(zhí)行與在服務(wù)器上存儲的對象相關(guān)的動作。操作還包括從網(wǎng)橋接收響應(yīng)504。例如,客戶端從網(wǎng)橋接收響應(yīng),包括執(zhí)行所請求的動作的結(jié)果。操作還包括檢查映射506。在一些情況下,在客戶端從網(wǎng)橋接收響應(yīng)時(shí),客戶端檢查是否存在被附于消息的任何更新的映射。如果存在更新的映射,則操作包括更新參考508。例如,客戶端更新其已經(jīng)創(chuàng)建的具有臨時(shí)標(biāo)識符的新對象,利用服務(wù)器所分配的永久標(biāo)識符來替代在對象創(chuàng)建時(shí)分配的臨時(shí)標(biāo)識符。操作還包括檢查對象更新510。例如,客戶端檢查響應(yīng)以查看是否在服務(wù)器處已經(jīng)更新了任何現(xiàn)有對象。如果是,則操作包括在客戶端處更新對象512。例如,客戶端可以將在消息中包括的改變應(yīng)用于當(dāng)前存儲在客戶端處的對象的任何本地副本。操作還包括處理結(jié)果514。例如,來自服務(wù)器的響應(yīng)消息可以將信息傳達(dá)到客戶端,使得客戶端能夠基于結(jié)果采取預(yù)定動作。該響應(yīng)消息可以指示所請求的操作是否成功或者該操作是否失敗。該響應(yīng)消息還可以包括與請求相關(guān)聯(lián)的對象和其它信息。例如,對于訪問特定的客戶對象的請求可以導(dǎo)致在響應(yīng)中返回該客戶對象。利用網(wǎng)橋的系統(tǒng)的一個(gè)示例是用于生成用戶界面以允許非技術(shù)用戶來配置參數(shù)化的數(shù)據(jù)流圖的系統(tǒng)。數(shù)據(jù)流圖是在數(shù)據(jù)流圖運(yùn)行環(huán)境下運(yùn)行的計(jì)算機(jī)程序,其處理來自一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)。根據(jù)數(shù)據(jù)流圖操縱并處理來自數(shù)據(jù)源的數(shù)據(jù),并且該數(shù)據(jù)被導(dǎo)出到一個(gè)或多個(gè)數(shù)據(jù)宿(data sink)。例如,數(shù)據(jù)源和數(shù)據(jù)宿可以包括文件、數(shù)據(jù)庫、數(shù)據(jù)流、或隊(duì)列。數(shù)據(jù)流圖被表示為有向圖(directed graph),該有向圖包括表示數(shù)據(jù)處理組件的節(jié)點(diǎn),每個(gè)包括用于處理來自至少一個(gè)數(shù)據(jù)輸入的數(shù)據(jù)并且將數(shù)據(jù)提供給至少一個(gè)數(shù)據(jù)輸出的代碼,該有向圖還包括表示用于訪問數(shù)據(jù)源和/或數(shù)據(jù)宿的數(shù)據(jù)集對象的節(jié)點(diǎn)。節(jié)點(diǎn)通過有向鏈路被連接起來,所述有向鏈路表示組件之間的數(shù)據(jù)流,源于數(shù)據(jù)源并終止于數(shù)據(jù)宿。上游組件的數(shù)據(jù)輸出端口連接到下游組件的數(shù)據(jù)輸入端口。對于由數(shù)據(jù)集對象所表示的不同的數(shù)據(jù)源和不同的數(shù)據(jù)宿,可以重用數(shù)據(jù)流圖。例如,用于實(shí)現(xiàn)數(shù)據(jù)流圖的數(shù)據(jù)結(jié)構(gòu)和程序代碼可以通過被參數(shù)化來支持多種不同的配置,以使得容易替換不同的源和宿。此外,在一些布置中,通過使用參數(shù)可以更改數(shù)據(jù)流圖的流程,使得可以旁路一個(gè)組件或者一系列組件。運(yùn)行環(huán)境可以宿主(host)于在合適的操作系統(tǒng)(諸如UNIX操作系統(tǒng))的控制下的一個(gè)或多個(gè)通用計(jì)算機(jī)。例如,運(yùn)行環(huán)境可以包括多節(jié)點(diǎn)并行計(jì)算環(huán)境,其包括使用多個(gè)中央處理單元(CPU)的計(jì)算機(jī)系統(tǒng)的配置本地的(例如,諸如SMP計(jì)算機(jī)之類的多處理器系統(tǒng))、或者本地分布的(例如,被耦接為簇的多個(gè)處理器或MPP)、或者遠(yuǎn)程的、或者遠(yuǎn)程分布的(例如,經(jīng)由局域網(wǎng)(LAN)和/或廣域網(wǎng)(WAN)耦接的多個(gè)處理器)、或者其任何組合。數(shù)據(jù)流圖的構(gòu)造在一些情況下本質(zhì)上可以是高度技術(shù)性的。在編寫以實(shí)現(xiàn)特定業(yè)務(wù)端時(shí),基于技術(shù)上的考慮來確定該圖的結(jié)構(gòu)和構(gòu)造。例如,可以選擇圖的組件以便使重用性最大化,或者支持并行處理。另一方面,如何使用圖以及在哪里使用圖,可能很大程度上是業(yè)務(wù)決定??梢允褂门c參數(shù)化的數(shù)據(jù)流圖相關(guān)聯(lián)的一些參數(shù),來使得業(yè)務(wù)用戶能夠定制
可以在客戶端機(jī)器上呈現(xiàn)用于標(biāo)識用以構(gòu)造數(shù)據(jù)流圖的參數(shù)值的界面。在一些實(shí)現(xiàn)方式中,客戶端可以使用客戶端上的提供了參數(shù)界面的網(wǎng)絡(luò)瀏覽器、以及使用提供了一些客戶端側(cè)處理能力的腳本語言,來訪問在服務(wù)器上運(yùn)行的開發(fā)環(huán)境。腳本語言可以與服務(wù)器進(jìn)行通信,以便更新參數(shù)并執(zhí)行其它必要操作。該通信可以經(jīng)由網(wǎng)橋機(jī)器進(jìn)行,該網(wǎng)橋機(jī)器通過運(yùn)行開發(fā)環(huán)境,來轉(zhuǎn)譯客戶端和服務(wù)器之間的通信,存儲對象和用于正在被構(gòu)造的圖的關(guān)聯(lián)參數(shù)值。例如,參考圖6A,數(shù)據(jù)流圖602可以包括數(shù)據(jù)源606a、606b,組件608a_c、610,以及數(shù)據(jù)宿612。源、組件、和宿每一個(gè)可以與一組參數(shù)604a-g相關(guān)聯(lián)。用于一個(gè)源、組件、或宿的參數(shù)可以被用來評估用于不同的源、組件、或宿的參數(shù)。源606a、606b與組件608a、608c的輸入端口連接。組件608a的輸出端口與組件608b的輸入端口連接。組件610的輸出端口與數(shù)據(jù)宿612連接。源、組件、以及宿之間的連接定義了數(shù)據(jù)流。一些數(shù)據(jù)源、組件或宿可能具有輸入?yún)?shù)604a_g,其可以定義該圖的一些行為。例如,參數(shù)可以定義數(shù)據(jù)源或宿在物理盤上的位置。參數(shù)還可以定義組件的行為,例如,參數(shù)可以定義揀選(sort)組件如何揀選輸入(例如,按照zip代碼來進(jìn)行揀選)。在一些布置中,一個(gè)參數(shù)的值可能依賴于另一參數(shù)的值。例如,源606a可以被存儲在特定目錄下的文件中。參數(shù)集604a可以包括被稱為“DIRECTORY”的參數(shù)和被稱為“FILENAME”的另一參數(shù)。在該情況下,F(xiàn)ILENAME參數(shù)將依賴于DIRECTORY參數(shù)(例如,DIRECTORY可以是“/usr/local/”,FILENAME可以是“/usr/local/input, dat”)。參數(shù)還可以依賴于用于其它組件的參數(shù)。例如,宿612的物理位置可能依賴于源606a的物理位置。在該示例中,宿612包括一組參數(shù)604g,其包括依賴于源606a的DIRECTORY參數(shù)的FILENAME參數(shù)(例如,組604g中的 FILENAME 參數(shù)可以是“/usr/local/output. dat”,其中值“/usr/local/” 是從集合 604a中的DIRECTORY參數(shù)獲得的。)。在客戶端上的用戶界面內(nèi),參數(shù)組604a_604g的參數(shù)可以被組合,并且被重新組織為不同的編組以與用戶進(jìn)行交互,其反映了商務(wù)上的考慮而不是技術(shù)上的考慮。以不必受限于服務(wù)器上的開發(fā)環(huán)境方面的靈活方式,基于用戶輸入用于接收參數(shù)值的用戶界面根據(jù)參數(shù)之間的關(guān)系,可以顯示不同的參數(shù)。例如,參考圖6B,可以呈現(xiàn)其中利用表示參數(shù)間的依賴性的關(guān)系來顯示圖標(biāo)的用戶界面。在該示例中,參數(shù)被劃分為第一參數(shù)編組,其由以下項(xiàng)來表示表示用于第一源數(shù)據(jù)集的參數(shù)的第一源圖標(biāo)624、表示用于第二源數(shù)據(jù)集的參數(shù)的第二源圖標(biāo)626、表示用于宿數(shù)據(jù)集的參數(shù)的宿圖標(biāo)630、以及表示用于正在被配置的數(shù)據(jù)流圖的一個(gè)或多個(gè)組件的參數(shù)的轉(zhuǎn)換圖標(biāo)628,示出了它們與源數(shù)據(jù)集和宿數(shù)據(jù)集的關(guān)系??梢曰谒鎯Φ囊?guī)范622做出該參數(shù)編組,所述規(guī)范622定義用戶將如何在客戶端的用戶界面內(nèi)與來自數(shù)據(jù)流圖的參數(shù)進(jìn)行交互、以及用戶界面元素(諸如圖標(biāo)624、626、628、630)將如何被彼此相關(guān)并且被布置為呈現(xiàn)在用戶界面中。在一些實(shí)現(xiàn)方式中,規(guī)范為XML文檔。該規(guī)范還可以標(biāo)識數(shù)據(jù)流圖組件,并且可以標(biāo)識在用戶正在配置該圖的同時(shí)可以執(zhí)行其某些功能的特定組件,諸如觀看樣本數(shù)據(jù),如下面更詳細(xì)描述的。在一些情況下,該規(guī)范可以包括對于將如何顯示參數(shù)的指令。例如,參考圖6B和6C,規(guī)范622可以指示響應(yīng)于與源數(shù)據(jù)集圖標(biāo)624的交互,應(yīng)將一個(gè)參數(shù)顯示為用戶可以填寫的文本框702,而另一個(gè)參數(shù)應(yīng)是具有預(yù)填充值的下拉列表704 (例如,在規(guī)范中提供 的值、或者在查找表中提供的值的列表),又一參數(shù)可以被顯示為單選按鈕706等等。因此,該規(guī)范在如何向用戶呈現(xiàn)參數(shù)以便可以為商務(wù)和/或非技術(shù)性用戶量身定制的方式定制數(shù)據(jù)流圖方面提供了靈活性。例如,可以基于對數(shù)據(jù)庫運(yùn)行的查詢(例如SQL查詢)的值或者來自位于文件系統(tǒng)上的文件的值來填充用戶界面。在一些情況下,該規(guī)范可以使得用戶能夠選擇應(yīng)用的數(shù)據(jù)源。例如,該規(guī)范可以允許用戶選擇數(shù)據(jù)庫、表、或文件。一個(gè)或多個(gè)參數(shù)可以成編組地一起顯示。例如,規(guī)范可以聲明參數(shù)將要一起呈現(xiàn)在用戶界面上的方框中。在一些實(shí)現(xiàn)方式中,用戶界面可以被劃分為列和行。規(guī)范可以基于用戶界面上要顯示參數(shù)的部分,來標(biāo)識參數(shù)的位置或參數(shù)的集合(collection)。在一些情況下,規(guī)范可以包括用戶選擇由組件處理的字段的能力。可以在用戶界面中顯示可用字段,并且用戶可以選擇一個(gè)或多個(gè)字段以便包括在參數(shù)集中。規(guī)范可以使得用戶能夠通過選擇用于特定字段的值而對數(shù)據(jù)集進(jìn)行過濾(例如,狀態(tài)為“FL”的字段)。在一些情況下,規(guī)范可以約束商務(wù)用戶填充參數(shù)值的順序。由虛線所表示的,與宿630相關(guān)聯(lián)的參數(shù)可能對于用戶不可見,直至用戶滿足了一些預(yù)先定義的條件。例如,在數(shù)據(jù)宿參數(shù)集出現(xiàn)之前,用戶可能必須提供特定參數(shù)值或填入?yún)?shù)集。還可以如所需要地定義參數(shù),指示必須向參數(shù)分配值。在一些情況下,規(guī)范可以基于用戶角色來呈現(xiàn)不同的參數(shù)。例如,模板可能隱藏或禁止一組文本輸入控件和鏈接,除非用戶具有“管理者”角色。在一些實(shí)現(xiàn)方式中,如由參數(shù)值所配置的,系統(tǒng)可以允許用戶從用戶界面內(nèi)發(fā)起在服務(wù)器上執(zhí)行圖而通過該圖運(yùn)行樣本數(shù)據(jù),并且允許在用戶界面中將樣本運(yùn)行的結(jié)果702顯示給用戶,如圖7A所示。依賴于在結(jié)果702中包括什么類型的數(shù)據(jù),可以在用戶界面的適當(dāng)瀏覽器或者編輯器中觀看結(jié)果702。在該示例中,結(jié)果702包括與樣本數(shù)據(jù)內(nèi)的記錄相對應(yīng)的行、以及與用于不同字段的記錄中的值相對應(yīng)的列??梢皂憫?yīng)于客戶端處的多種動作中的任一種,例如,響應(yīng)于用戶向參數(shù)提供值,來觸發(fā)使用測試數(shù)據(jù)在服務(wù)器上運(yùn)行該圖。參考圖7B,在一些實(shí)現(xiàn)方式中,系統(tǒng)通過添加觀察器(watcher),可以捕獲流過該系統(tǒng)的數(shù)據(jù)。例如,數(shù)據(jù)流圖710包括數(shù)據(jù)源712、726,組件714、720、728和730,以及數(shù)據(jù)宿732。用戶可以在數(shù)據(jù)流圖中的任何鏈接處添加觀察點(diǎn)。例如,用戶可以向組件720和組件730之間的鏈接添加觀察點(diǎn)722。系統(tǒng)檢測觀察點(diǎn)722,并且生成該圖的修改版本以便將數(shù)據(jù)流從組件720重定向到存儲觀察點(diǎn)的數(shù)據(jù)的中間數(shù)據(jù)宿724。在一些實(shí)現(xiàn)方式中,觀察點(diǎn)722被實(shí)現(xiàn)為允許數(shù)據(jù)流到中間數(shù)據(jù)宿724和數(shù)據(jù)組件730的復(fù)制器。在一些實(shí)現(xiàn)方式中,系統(tǒng)確定對于生成觀察點(diǎn)722的數(shù)據(jù)而言,不需要組件728、730,數(shù)據(jù)源726,以及數(shù)據(jù)宿732。系統(tǒng)可以選擇禁止這些不必要的組件以便節(jié)約系統(tǒng)資源。此外,禁止不必要的組件可以具有簡化開發(fā)的附加優(yōu)點(diǎn),這是因?yàn)槲词褂玫慕M件(例如,組件728)的下游組件(例如,組件730)可能尚未被完全實(shí)現(xiàn)或配置。在禁止這些組件時(shí),系統(tǒng)可以運(yùn)行該圖的一部分,而無需開發(fā)者完全配置整個(gè)圖。在一些實(shí)現(xiàn)方式中,系統(tǒng)標(biāo)識對于產(chǎn)生觀察點(diǎn)的數(shù)據(jù)而言不需要的鏈接。例如,系統(tǒng)可以標(biāo)識不將任何源(例如,數(shù)據(jù)源712)連接到中間數(shù)據(jù)宿724的鏈接。可以移除向這些鏈接提供數(shù)據(jù)的組件。
在一些實(shí)現(xiàn)方式中,系統(tǒng)可以利用來自前一觀察點(diǎn)的數(shù)據(jù)來確定隨后觀察點(diǎn)的數(shù)據(jù)。例如,在前一次運(yùn)行該圖時(shí),開發(fā)者將觀察點(diǎn)716添加到組件714和組件720之間的鏈接。觀察點(diǎn)716的數(shù)據(jù)被存儲在數(shù)據(jù)宿718中。如果在隨后運(yùn)行中,開發(fā)者在沒有改變或修改數(shù)據(jù)源712或數(shù)據(jù)組件714的情況下添加觀察點(diǎn)722,系統(tǒng)可以將數(shù)據(jù)宿718中的數(shù)據(jù)用作組件720的數(shù)據(jù)源,并且因此可以禁止數(shù)據(jù)源712和組件714。系統(tǒng)可以檢測數(shù)據(jù)流是正常流還是并行流。并行流是已經(jīng)被劃分的數(shù)據(jù)流。并行流上的觀察點(diǎn)對于每個(gè)數(shù)據(jù)流使用獨(dú)立的數(shù)據(jù)宿。例如,已經(jīng)被劃分為六個(gè)獨(dú)立部分的并行數(shù)據(jù)流將在六個(gè)獨(dú)立的數(shù)據(jù)宿中生成觀察數(shù)據(jù)。圖可以被劃分為階段。之前階段中的組件在之后階段的組件之前完成所有運(yùn)行。例如,如果組件730在組件728的之后階段,則將高速緩存來自組件728的數(shù)據(jù)流,直至組件728已經(jīng)完成對所有數(shù)據(jù)的處理。一旦組件728完成處理所有數(shù)據(jù),則組件730將開始處理數(shù)據(jù)。在一些情形下,數(shù)據(jù)流圖710包括未連接到其它組件(例如,查找表)的組件(諸如組件734)。如果組件在觀察點(diǎn)的之后階段,則從數(shù)據(jù)流圖中排除未連接的組件,而如果組件與觀察點(diǎn)在同一階段或者在觀察點(diǎn)的之前階段,則在數(shù)據(jù)流圖中包括未連接的組件。參考圖8,客戶端系統(tǒng)802可以向用戶顯示上述的用戶界面804。基于通過用戶界面804與用戶的交互而生成的參數(shù)集814可以存儲在服務(wù)器808上。因此,通過用戶界面804做出的改變經(jīng)由網(wǎng)橋806從客戶端802被發(fā)送到服務(wù)器808。如箭頭820所示,客戶端802以一種格式向網(wǎng)橋806發(fā)送消息,例如使用簡單對象訪問協(xié)議(SOAP)發(fā)送的消息。網(wǎng)橋806將該消息轉(zhuǎn)譯為新格式,并且如果需要,則與服務(wù)器808開始客戶端會話。如箭頭822所示,網(wǎng)橋806以服務(wù)器808所理解的格式向服務(wù)器808發(fā)送消息,例如COM+消息。服務(wù)器808接收該消息,并更新參數(shù)集。如箭頭824所示,服務(wù)器808向網(wǎng)橋806發(fā)送應(yīng)答,包含由于客戶端802所接收的輸入而對參數(shù)集發(fā)生的任何改變。網(wǎng)橋806解碼該消息并創(chuàng)建對客戶端802的應(yīng)答消息。如箭頭826所示,網(wǎng)橋806向客戶端802發(fā)送該應(yīng)答消息??蛻舳?02更新用戶界面804以反映改變,這包括顯示如上所述的由于先決條件未滿足之前被隱藏的任何組件。用戶還可以向客戶端802指示他希望運(yùn)行使用基于當(dāng)前的參數(shù)集(可能完整或者可能不完整)的樣本數(shù)據(jù)構(gòu)造的圖。如上,客戶端802經(jīng)由網(wǎng)橋806向服務(wù)器806發(fā)送消息。服務(wù)器808應(yīng)用對參數(shù)集的任何改變,并且在服務(wù)器上運(yùn)行的處理816編譯該數(shù)據(jù)流圖。服務(wù)器運(yùn)行編譯的數(shù)據(jù)流圖,其從樣本數(shù)據(jù)集810、812接收數(shù)據(jù)。運(yùn)行的數(shù)據(jù)流圖產(chǎn)生請求的輸出至輸出數(shù)據(jù)集818。數(shù)據(jù)流圖的輸出是客戶端802所請求的中間數(shù)據(jù),并且不一定是通過完全運(yùn)行數(shù)據(jù)流圖將產(chǎn)生的數(shù)據(jù)。在一些實(shí)現(xiàn)方式中,例如,如果未定義足夠參數(shù)來使能完整圖的編譯,或者如果客戶端802請求查看用于正在被客戶端802配置的數(shù)據(jù)流圖內(nèi)的特定鏈接的中間數(shù)據(jù),則月艮務(wù)器808可以編譯數(shù)據(jù)流圖的子集。為了確定要編譯并運(yùn)行的數(shù)據(jù)流圖的子集,服務(wù)器可以使用上面關(guān)于圖7B描述的處理,其中對于正在被配置的鏈接而不是對于觀察點(diǎn)添加中間數(shù)據(jù)宿。如上所述,作為結(jié)果的數(shù)據(jù)從服務(wù)器808經(jīng)由網(wǎng)橋806被發(fā)送到客戶端802??梢允褂糜?jì)算機(jī)上運(yùn)行的軟件來實(shí)現(xiàn)上述的對象管理方法。例如,軟件形成在一個(gè)或多個(gè)編程的或可編程的計(jì)算機(jī)系統(tǒng)(其可以是各種架構(gòu),諸如分布式的、客戶端/服務(wù) 器、或者網(wǎng)格)上運(yùn)行的一個(gè)或多個(gè)計(jì)算機(jī)程序中的例程,每個(gè)計(jì)算機(jī)系統(tǒng)包括至少一個(gè)處理器、至少一個(gè)數(shù)據(jù)存儲系統(tǒng)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個(gè)輸入設(shè)備或端口、以及至少一個(gè)輸出設(shè)備或端口。軟件可以形成更大程序的一個(gè)或多個(gè)模塊,例如,該更大程序提供與計(jì)算圖的設(shè)計(jì)和配置有關(guān)的其它服務(wù)。可以將該圖的節(jié)點(diǎn)和元件實(shí)現(xiàn)為在計(jì)算機(jī)可讀介質(zhì)中存儲的數(shù)據(jù)結(jié)構(gòu)、或者符合在數(shù)據(jù)儲存庫中存儲的數(shù)據(jù)模型的其它組織數(shù)據(jù)。軟件可以在通用或?qū)S每删幊逃?jì)算機(jī)可讀取的存儲介質(zhì)(諸如CD-ROM)上提供,或者可以通過網(wǎng)絡(luò)的通信介質(zhì)(在傳播信號中編碼的)遞送到執(zhí)行該軟件的計(jì)算機(jī)??梢栽趯S糜?jì)算機(jī)上、或者使用專用硬件(諸如協(xié)處理器)來執(zhí)行所有功能。軟件可以以分布式方式實(shí)現(xiàn),在分布式方式下,軟件所規(guī)定的不同計(jì)算部分由不同計(jì)算機(jī)執(zhí)行。每個(gè)這樣的計(jì)算機(jī)程序優(yōu)選地被存儲在或者被下載到通用或?qū)S每删幊逃?jì)算機(jī)可讀取的存儲介質(zhì)或設(shè)備(例如,固態(tài)存儲器或介質(zhì)、或者磁或光介質(zhì))上,在計(jì)算機(jī)系統(tǒng)讀取該存儲介質(zhì)或設(shè)備時(shí),所述計(jì)算機(jī)程序用于配置并操作計(jì)算機(jī)以便執(zhí)行這里描述的例程。還可以考慮將本發(fā)明的系統(tǒng)實(shí)現(xiàn)為配置有計(jì)算機(jī)程序的計(jì)算機(jī)可讀存儲介質(zhì),其中如此配置的存儲介質(zhì)使得計(jì)算機(jī)系統(tǒng)以特定的且預(yù)先定義的方式操作,以便執(zhí)行這里描述的功能。已經(jīng)描述了本發(fā)明的多個(gè)實(shí)施例。然而,將理解,在不偏離本發(fā)明的精神和范圍的情況下可以做出各種修改。例如,上述的一些步驟可以是與順序無關(guān)的,并且因此可以與上面描述的順序不同的順序來執(zhí)行。應(yīng)理解,前述說明意圖例示而非限制本發(fā)明的范圍,本發(fā)明的范圍由所附權(quán)利要求的范圍定義。例如,可以以不同順序執(zhí)行上述的多個(gè)功能步驟,而沒有在實(shí)質(zhì)上影響整體處理。其它實(shí)施例也在以下權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種支持客戶端和服務(wù)器之間的通信的方法,包括 從客戶端接收第一消息; 響應(yīng)于該第一消息而創(chuàng)建對象; 將對該第一消息的響應(yīng)發(fā)送到客戶端; 從服務(wù)器接收對該對象的改變; 存儲對該對象的改變; 從該客戶端接收第二消息;以及 利用對該第二消息的響應(yīng)而向客戶端發(fā)送所存儲的改變。
2.如權(quán)利要求I所述的方法,其中存儲改變包括創(chuàng)建改變的日志,并且其中向客戶端發(fā)送所存儲的改變包括發(fā)送改變的日志。
3.如權(quán)利要求I所述的方法,其中,存儲改變包括更新對象的當(dāng)前狀態(tài),并且向客戶端發(fā)送所存儲的改變包括發(fā)送對象的當(dāng)前狀態(tài)。
4.如權(quán)利要求I所述的方法,其中,從客戶端接收第一消息包括接收用于客戶端對象的臨時(shí)標(biāo)識符;創(chuàng)建對象包括獲得用于該對象的永久標(biāo)識符;以及發(fā)送對第一消息的響應(yīng)包括發(fā)送臨時(shí)標(biāo)識符和永久標(biāo)識符之間的映射。
5.如權(quán)利要求4所述的方法,其中,獲得永久標(biāo)識符包括向服務(wù)器發(fā)送服務(wù)器消息。
6.如權(quán)利要求5所述的方法,其中,發(fā)送服務(wù)器消息包括將該服務(wù)器消息與其它服務(wù)器消息進(jìn)行交織。
7.如權(quán)利要求I所述的方法,還包括向服務(wù)器注冊對該對象的興趣。
8.如權(quán)利要求7所述的方法,其中,接收對該對象的改變包括接收與服務(wù)器生成的事件相關(guān)聯(lián)的、對該對象的改變。
9.如權(quán)利要求I所述的方法,其中,接收第一消息包括利用第一協(xié)議,并且接收對該對象的改變包括利用與第一協(xié)議不同的第二協(xié)議。
10.如權(quán)利要求I所述的方法,還包括存儲對于多個(gè)客戶端的多個(gè)對象的改變。
11.如權(quán)利要求I所述的方法,其中,該對象對應(yīng)于數(shù)據(jù)流圖的一部分,其包括表示數(shù)據(jù)流圖的組件的多個(gè)節(jié)點(diǎn)、以及表示各組件之間的數(shù)據(jù)流的節(jié)點(diǎn)之間的鏈接。
12.如權(quán)利要求11所述的方法,其中,從客戶端接收第一消息包括接收用于定義數(shù)據(jù)流圖的組件的至少一個(gè)特性的參數(shù)的值。
13.如權(quán)利要求11所述的方法,還包括提供接收用于定義數(shù)據(jù)流圖的組件的相應(yīng)特性的一個(gè)或多個(gè)參數(shù)的界面。
14.如權(quán)利要求13所述的方法,其中,該界面顯示多個(gè)用戶界面元素,并且各用戶界面元素之間的關(guān)系基于數(shù)據(jù)流圖的各組件之間的依賴性。
15.如權(quán)利要求14所述的方法,其中,通過在服務(wù)器中存儲的規(guī)范來定義所述關(guān)系。
16.如權(quán)利要求11所述的方法,其中,接收第一消息包括接收對中間數(shù)據(jù)的請求,以及 創(chuàng)建對象包括 編譯數(shù)據(jù)流圖的該部分,并且 通過運(yùn)行編譯后的數(shù)據(jù)流圖的該部分來產(chǎn)生到輸出數(shù)據(jù)集的輸出。
17.如權(quán)利要求16所述的方法,其中,創(chuàng)建對象還包括 確定生成中間數(shù)據(jù)所需的第一組件集合;禁止數(shù)據(jù)流圖中不在該第一組件集合中的組件;以及 創(chuàng)建與數(shù)據(jù)流圖耦接的中間數(shù)據(jù)宿以存儲該輸出數(shù)據(jù)集。
18.如權(quán)利要求17所述的方法,其中,確定第一組件集合包括標(biāo)識不將數(shù)據(jù)源連接到中間數(shù)據(jù)宿的鏈接。
19.如權(quán)利要求17所述的方法,其中,創(chuàng)建中間數(shù)據(jù)宿包括 確定至中間數(shù)據(jù)宿的鏈接表示并行數(shù)據(jù)流;以及 將并行數(shù)據(jù)宿創(chuàng)建為中間數(shù)據(jù)宿。
20.一種存儲用于支持客戶端和服務(wù)器之間的通信的計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)程序包括用于使計(jì)算機(jī)執(zhí)行以下操作的指令 從客戶端接收第一消息; 響應(yīng)于該第一消息而創(chuàng)建對象; 將對該第一消息的響應(yīng)發(fā)送到客戶端; 從服務(wù)器接收對該對象的改變; 存儲對該對象的改變; 從該客戶端接收第二消息;以及 利用對該第二消息的響應(yīng)而向客戶端發(fā)送所存儲的改變。
21.一種支持客戶端和服務(wù)器之間的通信的系統(tǒng),該系統(tǒng)包括 包括至少一個(gè)處理器的服務(wù)器;以及 包括被配置用以管理該系統(tǒng)中的對象的至少一個(gè)處理器的網(wǎng)橋,其中,所述管理包括 從客戶端接收第一消息; 響應(yīng)于該第一消息而創(chuàng)建對象; 將對該第一消息的響應(yīng)發(fā)送到客戶端; 從服務(wù)器接收對該對象的改變; 存儲對該對象的改變; 從該客戶端接收第二消息;以及 利用對該第二消息的響應(yīng)而向客戶端發(fā)送所存儲的改變。
22.—種支持客戶端和服務(wù)器之間的通信的系統(tǒng),該系統(tǒng)包括 用于服務(wù)數(shù)據(jù)的部件;以及 用于管理該系統(tǒng)中的對象的部件,其中,所述管理包括 從客戶端接收第一消息; 響應(yīng)于該第一消息而創(chuàng)建對象; 將對該第一消息的響應(yīng)發(fā)送到客戶端; 從用于服務(wù)數(shù)據(jù)的部件接收對該對象的改變; 存儲對該對象的改變; 從該客戶端接收第二消息;以及 利用對該第二消息的響應(yīng)而向客戶端發(fā)送所存儲的改變。
全文摘要
一種支持客戶端和服務(wù)器之間的通信的方法,包括從客戶端(202)接收(302,210)第一消息。該方法還包括響應(yīng)于該第一消息而創(chuàng)建(312)對象。該方法還包括將對該第一消息的響應(yīng)發(fā)送到(320,212)客戶端。該方法還包括從服務(wù)器接收(224,406)對該對象的改變。該方法還包括存儲(408)對該對象的改變。該方法還包括從該客戶端接收(302,210,410)第二消息。該方法還包括利用對該第二消息的響應(yīng)而向客戶端發(fā)送(320,212,414)所存儲的改變。
文檔編號G06F9/46GK102754411SQ201080063818
公開日2012年10月24日 申請日期2010年12月14日 優(yōu)先權(quán)日2009年12月14日
發(fā)明者D.W.帕門特, I.謝克特, J.M.法弗, J.戈?duì)柕率├? T.韋克林 申請人:起元技術(shù)有限責(zé)任公司