專利名稱:共享對象表示的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對象表示,尤其涉及共享對象表示。
背景技術(shù):
在面向?qū)ο蟮木幊讨校愂且环N構(gòu)造,其用作藍(lán)圖(或模板)以創(chuàng)建那個類的實(shí)例,這些實(shí)例被稱為對象。類描述該類的對象共享的狀態(tài)和行為。類用屬性來描述對象的狀態(tài),屬性也被稱為成員變量或?qū)嵗兞?。類用可重用代碼調(diào)用的方法來描述對象的行為。因此,類可被描述為描述狀態(tài)和行為的元數(shù)據(jù)包。類具有描述該類和對象如何經(jīng)由方法來交互的接口、以及定義對象中的數(shù)據(jù)如何被劃分成屬性的結(jié)構(gòu)。類也可具有被稱為運(yùn)行時的元對象的表示,其為操縱類相關(guān)元數(shù)據(jù)提供支持。對象可在運(yùn)行時環(huán)境中被編組在一起,且可被隔離以免被其他軟件或運(yùn)行時環(huán)境訪問。雖然對象可被隔離以免被其他軟件訪問,但在一些實(shí)例中,可允許訪問這些對象。例如,可允許其他軟件經(jīng)由調(diào)用已被配置成允許由其他軟件調(diào)用的該對象的過程或函數(shù)來訪問這些對象。因此,這些對象能夠處理數(shù)據(jù)并支持來自其他對象的方法調(diào)用,但不能與其他運(yùn)行時環(huán)境共享。由于對象的獨(dú)立性,簡化了對象的管理以及對象使用的跟蹤。然而,在面向?qū)ο蟮木幊棠P椭?,代碼在運(yùn)行時環(huán)境之間的共享和再循環(huán)可能是困難的。具體地,由于與對象相對應(yīng)的數(shù)據(jù)可能是特定運(yùn)行時環(huán)境專用的,因此在運(yùn)行時環(huán)境之間共享這些對象可能是困難的或是不可能的。因此,面向?qū)ο蟮木幊棠P完P(guān)于管理和跟蹤提供了益處,但可能關(guān)于在軟件和/或運(yùn)行時環(huán)境之間再循環(huán)和共享對象提出了挑戰(zhàn)。本文所做出的本公開正是關(guān)于這些和其他考慮事項(xiàng)而提出的。
發(fā)明內(nèi)容
本文描述用于共享對象表示的概念和技術(shù)。根據(jù)本文公開的概念和技術(shù),存在或創(chuàng)建與一個運(yùn)行時環(huán)境相關(guān)聯(lián)的對象。還創(chuàng)建引用該對象的對象代理。定義對象代理的邏輯可標(biāo)識與該對象代理相關(guān)聯(lián)的對象、該對象所駐留的運(yùn)行時環(huán)境、以及用于訪問該對象的信息。類似地,定義對象的邏輯可標(biāo)識與該對象相關(guān)聯(lián)的一個或多個對象代理。因此,當(dāng)在運(yùn)行時環(huán)境中引用對象代理時,該對象引用可被路由至由定義該對象代理的邏輯所標(biāo)識的對象。從特定運(yùn)行時環(huán)境的角度而言,對象代理對于該運(yùn)行時環(huán)境而言是本地的,盡管與該對象代理相對應(yīng)的對象可能實(shí)際上駐留在不同的運(yùn)行時環(huán)境中。根據(jù)一方面,管道管理在兩個或多個運(yùn)行時環(huán)境之間共享對象表示。若運(yùn)行時環(huán)境引用對象代理,則該管道將該對象引用路由至另一運(yùn)行時環(huán)境中的對象,并基于該對象引用就像該對象直接被該運(yùn)行時環(huán)境引用那樣提供對象實(shí)現(xiàn)。在一些實(shí)現(xiàn)中,該管道存儲或訪問轉(zhuǎn)換數(shù)據(jù),該轉(zhuǎn)換數(shù)據(jù)定義對象與對象代理之間的關(guān)系和/或如何使得運(yùn)行時環(huán)境之間能夠通信。用于標(biāo)識對象和/或?qū)ο蟠淼霓D(zhuǎn)換數(shù)據(jù)可基于定義對象和/或?qū)ο蟠淼倪壿媮砩伞?br>
應(yīng)當(dāng)理解,上述主題可被實(shí)現(xiàn)為計算機(jī)控制的裝置、計算機(jī)進(jìn)程、計算系統(tǒng)或諸如計算機(jī)可讀存儲介質(zhì)等制品。通過閱讀下面的詳細(xì)描述并審閱相關(guān)聯(lián)的附圖,這些及各種其他特征將變得顯而易見。提供本發(fā)明內(nèi)容以便以簡化的形式介紹將在以下具體實(shí)施方式
中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在將本概述用來限制所要求保護(hù)的主題的范圍。此外,所要求保護(hù)的主題不限于解決在本公開的任一部分中所提及的任何或所有缺點(diǎn)的實(shí)現(xiàn)。
圖I是示出用于本文所公開的各實(shí)施例的示例性操作環(huán)境的系統(tǒng)圖。圖2是示出根據(jù)示例性實(shí)施例的用于共享對象表示的方法的各方面的流程圖。圖3是示出根據(jù)示例性實(shí)施例的用于共享對象表示的另一方法的各方面的流程圖。圖4是示出能夠?qū)崿F(xiàn)本文所提出的實(shí)施例的各方面的計算系統(tǒng)的示例性計算機(jī)硬件和軟件架構(gòu)的計算機(jī)架構(gòu)圖。
具體實(shí)施例方式以下詳細(xì)描述針對用于共享對象表示的概念和技術(shù)。根據(jù)本文描述的概念和技術(shù),存在或創(chuàng)建與一個或多個運(yùn)行時環(huán)境相關(guān)聯(lián)的對象和/或?qū)ο蟠?。定義對象代理的邏輯可標(biāo)識與該對象代理相關(guān)聯(lián)的對象、這些對象所駐留的運(yùn)行時環(huán)境、以及用于訪問這些對象的信息。類似地,定義對象的邏輯可標(biāo)識與這些對象相關(guān)聯(lián)的一個或多個對象代理、 這些對象代理所駐留的運(yùn)行時環(huán)境、以及用于訪問這些對象代理的信息。若運(yùn)行時環(huán)境中引用了對象代理,則該對象引用可被路由至由定義該對象代理的邏輯所標(biāo)識的對象。從運(yùn)行時環(huán)境的角度而言,對象代理是該運(yùn)行時環(huán)境本地的對象,盡管與對象代理相對應(yīng)的對象可能駐留在不同的運(yùn)行時環(huán)境中。因此,對象代理可用于允許運(yùn)行時環(huán)境在運(yùn)行時調(diào)用關(guān)于與其他運(yùn)行時環(huán)境相關(guān)聯(lián)的對象的方法以及將參數(shù)傳遞至與其他運(yùn)行時環(huán)境相關(guān)聯(lián)的對象。盡管在結(jié)合計算機(jī)系統(tǒng)上的操作系統(tǒng)和應(yīng)用程序的執(zhí)行而執(zhí)行的程序模塊的一般上下文中呈現(xiàn)了本文描述的主題,但是本領(lǐng)域技術(shù)人員將認(rèn)識到,其他實(shí)現(xiàn)可以結(jié)合其他類型的程序模塊來執(zhí)行。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)和其它類型的結(jié)構(gòu)。此外,本領(lǐng)域技術(shù)人員將明白,可以利用其他計算機(jī)系統(tǒng)配置來實(shí)施本文描述的主題,這些計算機(jī)系統(tǒng)配置包括手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程消費(fèi)電子產(chǎn)品、小型計算機(jī)、大型計算機(jī)等等。在以下詳細(xì)描述中,參考了構(gòu)成詳細(xì)描述的一部分并作為說明示出了各具體實(shí)施方式
或示例的附圖?,F(xiàn)在參考附圖(貫穿若干附圖中,相同的標(biāo)號表示相同的元素),將提出用于共享對象表示的計算系統(tǒng)、計算機(jī)可讀存儲介質(zhì)和計算機(jī)實(shí)現(xiàn)的方法的各方面。現(xiàn)在參考圖I,將描述用于本文所提出的各實(shí)施例的一個操作環(huán)境100的各方面。 操作環(huán)境100包括兩個運(yùn)行時環(huán)境102AU02B,其在下文被統(tǒng)稱為運(yùn)行時環(huán)境102。運(yùn)行時環(huán)境102包括用于執(zhí)行面向?qū)ο蟮某绦虻挠布蛙浖?,并且包括但不限于操作系統(tǒng)、應(yīng)用程序、虛擬機(jī)等等。在一個實(shí)施例中,運(yùn)行時環(huán)境102之一包括操作系統(tǒng),而運(yùn)行時環(huán)境102 中的另一個包括應(yīng)用程序。在另一實(shí)施例中,運(yùn)行時環(huán)境之一包括第一應(yīng)用程序,諸如來自美國華盛頓州雷德蒙德市的微軟公司的MICROSOFT DYNAMICS產(chǎn)品系列的成員,而運(yùn)行時環(huán)境中的另一個包括托管代碼環(huán)境,諸如.NET環(huán)境。應(yīng)當(dāng)理解,這些實(shí)施例是示例性的,而不應(yīng)被解釋為以任何方式構(gòu)成限制。根據(jù)各實(shí)施例,運(yùn)行時環(huán)境102被配置成與或經(jīng)由通信網(wǎng)絡(luò)104( “網(wǎng)絡(luò)”)通信。 根據(jù)各實(shí)施例,運(yùn)行時環(huán)境102被配置為面向?qū)ο蟮沫h(huán)境。因此,盡管未在圖I中示出,但是應(yīng)當(dāng)理解,運(yùn)行時環(huán)境102可包括用于管理對象106AU06B(下文統(tǒng)稱為對象106)的基礎(chǔ)結(jié)構(gòu)。用于管理對象106的基礎(chǔ)結(jié)構(gòu)可用于在對象壽命(從創(chuàng)建到回收)的任何部分期間管理對象106。對象106基本上類似于面向?qū)ο蟮木幊汰h(huán)境中在傳統(tǒng)上使用或表示的對象。因此,為簡明起見,本文不進(jìn)一步描述對象106。運(yùn)行時環(huán)境102還可包括用于管理對象代理108A、108B(下文統(tǒng)稱為對象代理 108)的基礎(chǔ)結(jié)構(gòu)。在運(yùn)行時環(huán)境102中創(chuàng)建對象代理108,并以與在運(yùn)行時環(huán)境102中訪問本地對象(諸如對象106)的方式類似的方式在運(yùn)行時環(huán)境102中訪問對象代理108。然而,對象代理108實(shí)際上引用其他運(yùn)行時環(huán)境102中的對象106。因此,當(dāng)在運(yùn)行時環(huán)境102 中訪問對象代理108時,對該對象代理108的引用或訪問被轉(zhuǎn)換至另一運(yùn)行時環(huán)境102中的對象106。根據(jù)各實(shí)施例,對象代理108經(jīng)由代碼被綁定到對象106。因此,一個運(yùn)行時環(huán)境 102中的對象106與另一運(yùn)行時環(huán)境102共享而無需實(shí)際上再產(chǎn)生對象106。對象代理108 無需包含其自己的任何狀態(tài)。在調(diào)用對象代理108時,依賴與對象代理108相關(guān)聯(lián)的對象 106的狀態(tài)。更具體地,在關(guān)于對象代理108調(diào)用方法時,該方法調(diào)用可被路由至該另一運(yùn)行時環(huán)境102中的相應(yīng)對象106??捎沙绦騿T或開發(fā)者和/或經(jīng)由其他手段來創(chuàng)建或編碼對象代理108。在一些實(shí)施例中,以與創(chuàng)建或編碼對象106的方式基本類似的方式來創(chuàng)建或編碼對象代理108。在其他實(shí)施例中,經(jīng)由配置成用于基于用戶或設(shè)備輸入來生成用于對象代理108的代碼的一個或多個用戶或設(shè)備接口生成對象代理108。根據(jù)各實(shí)施例,與對象代理108相對應(yīng)的代碼包括對其他運(yùn)行時環(huán)境102中的對象106的引用和/或指示如何轉(zhuǎn)換對對象代理108的訪問或引用以使得對相應(yīng)對象106能夠訪問或引用的邏輯。因此,與特定對象代理108相關(guān)聯(lián)的邏輯可指示可如何經(jīng)由訪問第二運(yùn)行時環(huán)境中的對象代理108來訪問第一運(yùn)行時環(huán)境102 中的對象106。在所示實(shí)施例中,例如,與運(yùn)行時環(huán)境102A中表示的對象代理108A相對應(yīng)的邏輯可包括對運(yùn)行時環(huán)境102B中表示的對象106B的一個或多個引用。類似地,與運(yùn)行時環(huán)境102B中的對象代理108B相對應(yīng)的邏輯可包括對運(yùn)行時環(huán)境102A中表示的對象106A 的一個或多個引用。雖然無需在圖I中示出,但是運(yùn)行時環(huán)境102可包括用于創(chuàng)建、管理、 使用、以及安排對象106和對象代理108的基礎(chǔ)結(jié)構(gòu),諸如硬件和/或軟件。運(yùn)行時環(huán)境102還可包括應(yīng)用編程接口(“API”) 110A、110B,其在下文統(tǒng)稱為API IlO0API 110包括用于允許運(yùn)行時環(huán)境102以及網(wǎng)絡(luò)、環(huán)境、設(shè)備、系統(tǒng)、和/或其他實(shí)體之間的通信的一個或多個接口。在一些實(shí)施例中,運(yùn)行時環(huán)境102A與運(yùn)行時環(huán)境102B之間的通信經(jīng)由各自相應(yīng)的API 110和網(wǎng)絡(luò)104發(fā)生。該實(shí)施例是示例性的,并且不應(yīng)當(dāng)被解釋為以任何方式構(gòu)成限制。
在一些實(shí)施例中,操作環(huán)境100還包括在網(wǎng)絡(luò)104上運(yùn)行或與網(wǎng)絡(luò)104通信的管道112。根據(jù)各實(shí)施例,管道112的功能由一個或多個個人計算機(jī)(“PC”)、服務(wù)器計算機(jī)、 和/或配置成執(zhí)行一個或多個應(yīng)用的硬件來提供。在所示實(shí)施例中,管道112的功能由配置成執(zhí)行操作系統(tǒng)(未示出)以及一個或多個應(yīng)用程序的服務(wù)器計算機(jī)來提供。應(yīng)該理解, 該實(shí)施例是示例性的,并且不應(yīng)被解釋為以任何方式構(gòu)成限制。雖然圖I中所示的操作環(huán)境100示出了分開實(shí)施的運(yùn)行時環(huán)境102和管道112,但是應(yīng)理解,運(yùn)行時環(huán)境102和管道112中的一個或多個或者全部可駐留在單個設(shè)備或設(shè)備組合中和/或由單個設(shè)備或設(shè)備組合來執(zhí)行。例如,在一個實(shí)施例中,運(yùn)行時環(huán)境102A是計算機(jī)的操作系統(tǒng),而運(yùn)行時環(huán)境102B包括用于提供.NET、JAVA、CGI或者其他代碼或腳本的虛擬機(jī)實(shí)現(xiàn)的環(huán)境,諸如軟件和/或硬件。同時,若期望,管道112的功能可由在相同設(shè)備上執(zhí)行的軟件應(yīng)用來提供。因此,應(yīng)該理解,所示實(shí)施例是示例性的,并且不應(yīng)被解釋為以任何方式構(gòu)成限制。操作系統(tǒng)是用于控制管道112的操作的計算機(jī)程序,且應(yīng)用程序在操作系統(tǒng)之上執(zhí)行以提供本文描述的用于共享對象表示的功能。應(yīng)用程序包括但不必限于通信模塊114 和轉(zhuǎn)換模塊116。盡管通信模塊114和轉(zhuǎn)換模塊116被示為管道112的組件,但是應(yīng)當(dāng)理解,這些組件中的每個或其組合可以實(shí)施為在網(wǎng)絡(luò)104和/或管道112上操作或者與網(wǎng)絡(luò) 104和/或管道112通信的獨(dú)立設(shè)備或其組件,或者實(shí)施在這些獨(dú)立設(shè)備或其組件中。因此,所示實(shí)施例是示例性的,并且不應(yīng)該被解釋為以任何方式構(gòu)成限制。通信模塊114由管道112執(zhí)行以使得運(yùn)行時環(huán)境102以及一個或多個網(wǎng)絡(luò)、設(shè)備、 應(yīng)用等等之間能夠通信,如本文中更詳細(xì)地描述的。更具體地,通信模塊114可由管道112 執(zhí)行以使管道112基于對對象106和/或?qū)ο蟠?08的訪問來確定和/或使得運(yùn)行時環(huán)境102之間能夠通信。通信模塊114被配置成識別哪些API 110是可用的和/或可用于允許訪問運(yùn)行時環(huán)境102中的對象106或?qū)ο蟠?08。因此,當(dāng)在運(yùn)行時環(huán)境102之一中訪問對象代理108時,通信模塊114被配置成描述可如何訪問與所訪問的對象代理108相對應(yīng)的對象106。此外,通信模塊114可經(jīng)由API 110和/或經(jīng)由其他手段來使得運(yùn)行時環(huán)境 102之間能夠通信。轉(zhuǎn)換模塊116由管道112執(zhí)行以將一個運(yùn)行時環(huán)境102中的對象引用映射到另一運(yùn)行時環(huán)境102。更具體地,當(dāng)在一個運(yùn)行時環(huán)境102中訪問或引用對象代理108時,管道 112被配置成執(zhí)行轉(zhuǎn)換模塊116以標(biāo)識另一運(yùn)行時環(huán)境102中的相應(yīng)對象106。將明白,轉(zhuǎn)換模塊116可將該標(biāo)識基于與對象代理108相對應(yīng)的邏輯,如本文中所解釋的。附加地或替換地,轉(zhuǎn)換模塊116由管道112執(zhí)行以標(biāo)識與經(jīng)更新的、所訪問的、所創(chuàng)建的、或回收的對象106相對應(yīng)的對象代理108以允許刪除不需要的對象代理108。根據(jù)各實(shí)施例,管道112 存儲或訪問轉(zhuǎn)換數(shù)據(jù)118。轉(zhuǎn)換數(shù)據(jù)118可由管道112使用或查詢,以標(biāo)識與已被訪問、引用、更新、創(chuàng)建或回收的對象106或?qū)ο蟠?08相對應(yīng)的對象106或?qū)ο蟠?08。將明白,管道112由此經(jīng)由執(zhí)行通信模塊114和轉(zhuǎn)換模塊116被配置成,識別一個運(yùn)行時環(huán)境102中與對象106或?qū)ο蟠?08相關(guān)聯(lián)的訪問或引用、標(biāo)識第二運(yùn)行時環(huán)境 102中的相應(yīng)對象106或?qū)ο蟠?08、以及使得這些運(yùn)行時環(huán)境102之間能夠通信。雖然轉(zhuǎn)換數(shù)據(jù)118被示為管道112的組件,但是應(yīng)理解,若期望,轉(zhuǎn)換數(shù)據(jù)118可被存儲在獨(dú)立設(shè)備中,諸如一個或多個數(shù)據(jù)庫、服務(wù)器計算機(jī)、臺式計算機(jī)、移動電話、膝上型計算機(jī)、存儲器設(shè)備、和/或其他數(shù)據(jù)存儲或計算設(shè)備。圖I示出了兩個運(yùn)行時環(huán)境102、一個網(wǎng)絡(luò)104以及一個管道112。然而,應(yīng)該理解,操作環(huán)境100的一些實(shí)現(xiàn)包括兩個以上運(yùn)行時環(huán)境102、多個網(wǎng)絡(luò)104、以及多個管道 112。因此,所示實(shí)施例應(yīng)該被理解為示例性的,并且不應(yīng)該被解釋為以任何方式構(gòu)成限制?,F(xiàn)在轉(zhuǎn)到圖2,將詳細(xì)描述用于共享對象表示的方法200的各方面。應(yīng)該理解,不一定按任何特定次序來呈現(xiàn)本文公開的方法的操作,并且以替換次序來執(zhí)行一些或全部操作是可能的且是構(gòu)想了的。為了易于描述和說明,按所示次序來呈現(xiàn)各操作。可以添加、省略和/或同時執(zhí)行操作,而不脫離所附權(quán)利要求書的范圍。還應(yīng)該理解,所示方法可以在任何時候結(jié)束并且不必完整地執(zhí)行。本文公開的方法的一些或全部操作和/或基本上等效的操作可以通過執(zhí)行計算機(jī)存儲介質(zhì)上所包括的計算機(jī)可讀指令來執(zhí)行,如上面定義的。如在說明書和權(quán)利要求書中使用的術(shù)語“計算機(jī)可讀指令”及其變型,在本文是用來廣泛地包括例程、應(yīng)用、應(yīng)用模塊、程序模塊、程序、組件、 數(shù)據(jù)結(jié)構(gòu)、算法等等。計算機(jī)可讀指令可以在各種系統(tǒng)配置上實(shí)現(xiàn),包括單處理器或多處理器系統(tǒng)、小型計算機(jī)、大型計算機(jī)、個人計算機(jī)、手持式計算設(shè)備、基于微處理器的可編程消費(fèi)電子廣品、其組合等等。因此,應(yīng)該理解,本文所述的邏輯操作被實(shí)現(xiàn)為⑴一系列計算機(jī)實(shí)現(xiàn)的動作或運(yùn)行于計算系統(tǒng)上的程序模塊;和/或(2)計算系統(tǒng)內(nèi)的互連的機(jī)器邏輯電路或電路模塊。 取決于計算系統(tǒng)的性能及其他要求,可以選擇不同的實(shí)現(xiàn)。因此,本文描述的邏輯操作被不同地稱為狀態(tài)、操作、結(jié)構(gòu)設(shè)備、動作或模塊。這些操作、結(jié)構(gòu)設(shè)備、動作和模塊可以用軟件、 固件、專用數(shù)字邏輯,以及其任何組合來實(shí)現(xiàn)。出于說明和描述本公開的概念的目的,本文公開的方法被描述為由管道112來執(zhí)行。應(yīng)該理解,這些實(shí)施例是示例性的,并且不應(yīng)被視為以任何方式構(gòu)成限制。方法200始于操作202,其中在運(yùn)行時環(huán)境102之一中創(chuàng)建對象106或?qū)ο蟠?08。根據(jù)一些實(shí)施例,在運(yùn)行時環(huán)境102之一中創(chuàng)建對象106。如上所述,對象106的創(chuàng)建可以與在面向?qū)ο蟮沫h(huán)境中創(chuàng)建對象的方式基本類似的方式來完成。因此,不再更詳細(xì)地描述對象106的創(chuàng)建。然而應(yīng)理解,若期望,對象106可包括用于標(biāo)識與對象106相關(guān)聯(lián)的一個或多個對象代理108的邏輯。根據(jù)其他實(shí)施例,操作202包括在運(yùn)行時環(huán)境102之一中創(chuàng)建對象代理108。若期望,可以與創(chuàng)建對象106的方式基本類似的方式來創(chuàng)建對象代理108。在一些實(shí)施例中, 用戶、設(shè)備、或其他實(shí)體經(jīng)由硬編碼在運(yùn)行時環(huán)境102中創(chuàng)建對象代理108。在其他實(shí)施例中,用戶、設(shè)備或其他實(shí)體經(jīng)由用戶接口或通過恰當(dāng)引用對象106自動地生成對象代理108 的其他手段來創(chuàng)建對象代理108。如上所述,對象代理108包括對另一運(yùn)行時環(huán)境102中的對象106的引用、對另一運(yùn)行時環(huán)境102中的對象106的一個或多個引用、指示如何訪問另一運(yùn)行時環(huán)境102中的對象106的信息、和/或其他信息。這些信息中沒有信息、這些信息中的一些信息,或這些信息中的所有信息可被存儲為以上描述的轉(zhuǎn)換數(shù)據(jù)118。方法200從操作202前進(jìn)至操作204,其中管道112確定操作202中創(chuàng)建的對象是對象106還是對象代理108。若管道112在操作204中確定操作202中創(chuàng)建的對象是對象代理108,則方法200前進(jìn)至操作206。在操作206中,管道112標(biāo)識與對象代理108相對應(yīng)的對象106,并生成以上描述的用于標(biāo)識與所創(chuàng)建的對象代理108相對應(yīng)的對象106的轉(zhuǎn)換數(shù)據(jù)118。如上所述,與對象代理108相對應(yīng)的邏輯可包括用于標(biāo)識對象106的信息以使得在運(yùn)行時將對對象代理108的引用能夠轉(zhuǎn)換成對對象106的引用。因此,管道112可被配置成提取該信息并將該信息存儲為轉(zhuǎn)換數(shù)據(jù)118。在其他實(shí)施例中,操作206包括管道112生成用于將與對象代理108相關(guān)聯(lián)的對象引用映射到相應(yīng)對象106的信息、以及用于使得運(yùn)行時環(huán)境102之間能夠通信的信息。管道112可將轉(zhuǎn)換數(shù)據(jù)118存儲在管道112上和/或存儲在管道112能訪問的數(shù)據(jù)存儲位置。若管道112在操作204中確定操作202中創(chuàng)建的對象是對象106,則方法200前進(jìn)至操作208,其中管道112標(biāo)識引用對象106的任何對象代理108(若有)。若期望,管道 112可標(biāo)識任何此類引用并將其存儲為轉(zhuǎn)換數(shù)據(jù)118。因此,如以上解釋的,對象106的任何改變可被傳播到相應(yīng)的對象代理108,以確保對象代理是對象106的準(zhǔn)確表示。方法200 從操作206和208前進(jìn)至操作210。方法200在操作210處結(jié)束?,F(xiàn)在轉(zhuǎn)到圖3,將詳細(xì)描述用于共享對象表示的另一方法300的各方面。方法300 始于操作302,其中管道112檢測對象引用。根據(jù)各實(shí)施例,由管道112檢測到的對象引用可對應(yīng)于與對象106或?qū)ο蟠?08相關(guān)聯(lián)的引用。此外,由管道112檢測到的引用可包括方法調(diào)用、參數(shù)的傳遞、對象106的創(chuàng)建、對象106或?qū)ο蟠?08的回收等等。如以上解釋的,對象代理108可被編碼成在被調(diào)用或引用時引起經(jīng)由管道112的通信。因此,管道 112可經(jīng)由監(jiān)視對象106和/或?qū)ο蟠?08、經(jīng)由管道112檢測到的通信等來知曉對象引用。方法300從操作302前進(jìn)至操作304,其中管道112確定被引用的對象是對象106 還是對象代理108。如上所述,管道112可基于監(jiān)視信息、檢測通信、和/或經(jīng)由其他手段來確定在操作302中檢測到何種類型的引用。若期望,管道112還可訪問或查詢轉(zhuǎn)換數(shù)據(jù) 118,以確定被引用的對象是對象106還是對象代理108。若管道112在操作304中確定被引用的對象是對象代理108,則方法300前進(jìn)至操作306,其中管道112將該對象引用轉(zhuǎn)換至與對象代理108相對應(yīng)的對象106。如上所述, 在一些實(shí)施例中,若期望,管道112可經(jīng)由訪問或查詢轉(zhuǎn)換數(shù)據(jù)118來標(biāo)識相應(yīng)的對象106。 附加地或替換地,管道112可檢查與對象代理108相對應(yīng)的邏輯以標(biāo)識相應(yīng)對象106。管道112,經(jīng)由轉(zhuǎn)換模塊116的執(zhí)行,基于對象代理邏輯108和/或轉(zhuǎn)換數(shù)據(jù)118將對象代理108轉(zhuǎn)換至或映射到對象106。根據(jù)各種實(shí)現(xiàn),管道112執(zhí)行通信模塊114以確定可如何完成運(yùn)行時環(huán)境102之間的通信、以及基于所確定的信息來使得運(yùn)行時環(huán)境102 之間能夠通信。在一些實(shí)施例中,例如,管道112確定可用于在運(yùn)行時環(huán)境102之間通信的任何API 110或其他接口或網(wǎng)絡(luò)。因此,管道112可將一個運(yùn)行時環(huán)境102中與對象代理 108相關(guān)聯(lián)的對象引用映射到另一運(yùn)行時環(huán)境102中的對象106,并確定可如何完成這些運(yùn)行時環(huán)境102之間的通信。方法300從操作306前進(jìn)至操作308,其中管道112通過使得這兩個運(yùn)行時環(huán)境 102之間能夠通信來提供對象實(shí)現(xiàn)。因此,管道112經(jīng)由訪問對象代理108來使得對對象 106能夠訪問。應(yīng)當(dāng)明白,根據(jù)本文公開的概念和技術(shù)的各種實(shí)現(xiàn),在一個運(yùn)行時環(huán)境102 中訪問的對象代理108可以就像該對象代理108是該運(yùn)行時環(huán)境102本地的對象那樣被該運(yùn)行時環(huán)境102訪問。此外,應(yīng)理解,運(yùn)行時環(huán)境102能夠經(jīng)由對象代理108、API 110和管道112無縫地訪問對象106,就像對象106駐留在對象代理108所駐留的運(yùn)行時環(huán)境102中一樣。方法300從操作308、以及若管道112確定被引用的對象不是代理則從操作304前進(jìn)至操作310。方法300在操作310處結(jié)束。雖然已參考對象代理108描述了方法300,但是應(yīng)理解,也可關(guān)于對對象106的引用使用方法300。因此,方法300可由管道112執(zhí)行以實(shí)現(xiàn)對象106和/或?qū)ο蟠?08。盡管未在圖3中示出,應(yīng)理解,若管道112在操作304 中確定對象106已被引用,則對象106的實(shí)現(xiàn)可以在對象106所駐留的運(yùn)行時環(huán)境102內(nèi)以基本正常的方式進(jìn)行。圖4示出了能夠執(zhí)行本文所描述的用于共享對象表示的軟件組件的設(shè)備的示例性計算機(jī)架構(gòu)400。因此,圖4中所示的計算機(jī)架構(gòu)400示出了用于服務(wù)器計算機(jī)、移動電話、PDA、智能電話、服務(wù)器計算機(jī)、臺式計算機(jī)、上網(wǎng)本計算機(jī)、平板計算機(jī)和/或膝上型計算機(jī)的架構(gòu)。計算機(jī)架構(gòu)400可用于執(zhí)行本文所呈現(xiàn)的軟件組件的任何方面。圖4所示的計算機(jī)架構(gòu)400包括中央處理單元402 ( “CPU” )、包括隨機(jī)存取存儲器406( “RAM”)和只讀存儲器(“ROM”)408在內(nèi)的系統(tǒng)存儲器404、以及將存儲器404耦合至CPU 402的系統(tǒng)總線410?;据斎?輸出系統(tǒng)被存儲在ROM 408中,該系統(tǒng)包含幫助諸如在啟動期間在計算機(jī)架構(gòu)400中的元件之間傳送信息的基本例程。計算機(jī)架構(gòu)400還包括用于存儲操作系統(tǒng)414、通信模塊114、轉(zhuǎn)換模塊116、以及轉(zhuǎn)換數(shù)據(jù)118的大容量存儲設(shè)備412。大容量存儲設(shè)備412通過連接至總線410的大容量存儲控制器(未示出)連接到 CPU 402。大容量存儲設(shè)備412及其相關(guān)聯(lián)的計算機(jī)可讀介質(zhì)為計算機(jī)架構(gòu)400提供非易失性存儲。雖然本文包含的對計算機(jī)可讀介質(zhì)的描述引用了諸如硬盤或CD-ROM驅(qū)動器之類的大容量存儲設(shè)備,但是本領(lǐng)域的技術(shù)人員應(yīng)該明白,計算機(jī)可讀介質(zhì)可以是可由計算機(jī)架構(gòu)400訪問的任何可用計算機(jī)存儲介質(zhì)或通信介質(zhì)。通信介質(zhì)包括諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號中的計算機(jī)可讀指令、 數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),且包含任何傳遞介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”指的是其一個或多個特征以在信號中編碼信息的方式被更改或設(shè)定的信號。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接之類的有線介質(zhì),以及諸如聲學(xué)、RF、紅外及其他無線介質(zhì)之類的無線介質(zhì)。上述的任意組合也應(yīng)包括在計算機(jī)可讀介質(zhì)的范圍之內(nèi)。作為示例而非限制,計算機(jī)存儲介質(zhì)可包括以用于存儲諸如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。例如,計算機(jī)介質(zhì)包括但不限于,RAM、R0M、EPR0M、EEPR0M、閃存或其他固態(tài)存儲器技術(shù)、⑶-ROM、數(shù)字多功能盤(“DVD”)、HD-DVD、藍(lán)光(BLU-RAY)或其他光學(xué)存儲、 磁帶盒、磁帶、磁盤存儲或其他磁性存儲設(shè)備、或能用于存儲所需信息且可以由計算機(jī)架構(gòu) 400訪問的任何其他介質(zhì)。為了權(quán)利要求書的目的,短語“計算機(jī)存儲介質(zhì)”及其變型不包括波、信號和/或其他瞬態(tài)和/或無形通信介質(zhì)本身。根據(jù)各實(shí)施例,計算機(jī)架構(gòu)400可以使用通過諸如網(wǎng)絡(luò)104之類的網(wǎng)絡(luò)到遠(yuǎn)程計算機(jī)的邏輯連接來在聯(lián)網(wǎng)環(huán)境中操作。計算機(jī)架構(gòu)400可以通過連接至總線410的網(wǎng)絡(luò)接口單元416來連接到網(wǎng)絡(luò)104。應(yīng)當(dāng)明白,網(wǎng)絡(luò)接口單元416還可以被用來連接到其它類型的網(wǎng)絡(luò)和遠(yuǎn)程計算機(jī)系統(tǒng),例如,客戶端設(shè)備118。計算機(jī)架構(gòu)400還可以包括用于接收和處理來自多個其他設(shè)備的輸入的輸入/輸出控制器418,這些設(shè)備包括鍵盤、鼠標(biāo)或者電子指示筆(未在圖4中示出)。類似地,輸入/輸出控制器418可以向顯示屏、打印機(jī)或其他類型的輸出設(shè)備(也未在圖4中示出)提供輸出。應(yīng)當(dāng)理解,本文所描述的軟件組件在被加載到CPU 402中并被執(zhí)行時可以將CPU 402和總體計算機(jī)架構(gòu)400從通用計算系統(tǒng)變換成為被定制為促進(jìn)本文提出的功能的專用計算系統(tǒng)。CPU 402可從任何數(shù)目的晶體管或其它分立電路元件中構(gòu)造,這些元件可以獨(dú)立地或集體地呈現(xiàn)任何數(shù)目的狀態(tài)。更具體而言,CPU 402可以響應(yīng)于包含在本文所公開的軟件模塊中的可執(zhí)行指令而作為有限狀態(tài)機(jī)來操作。這些計算機(jī)可執(zhí)行指令可以通過指定 CPU 402如何在各狀態(tài)之間轉(zhuǎn)移來變換CPU 402,由此變換了構(gòu)成CPU 402的晶體管或其它分立硬件元件。對本文所提出的軟件模塊的編碼也可變換本文所提出的計算機(jī)可讀介質(zhì)的物理結(jié)構(gòu)。在本說明書的不同實(shí)現(xiàn)中,物理結(jié)構(gòu)的具體變換可取決于各種因素。這樣的因素的示例可以包括,但不僅限于用于實(shí)現(xiàn)計算機(jī)可讀介質(zhì)的技術(shù)、計算機(jī)可讀介質(zhì)被表征為主存儲器還是輔存儲器等等。例如,如果計算機(jī)可讀介質(zhì)被實(shí)現(xiàn)為基于半導(dǎo)體的存儲器,則本文所公開的軟件可以通過變換半導(dǎo)體存儲器的物理狀態(tài)而編碼在計算機(jī)可讀介質(zhì)上。例如, 軟件可以變換構(gòu)成半導(dǎo)體存儲器的晶體管、電容器或其它分立電路元件的狀態(tài)。軟件還可變換這些組件的物理狀態(tài)以在其上存儲數(shù)據(jù)。作為另一示例,本文所公開的計算機(jī)可讀介質(zhì)可以使用磁或光技術(shù)來實(shí)現(xiàn)。在這些實(shí)現(xiàn)中,本文所提出的軟件可以在其中編碼了軟件時變換磁或光介質(zhì)的物理狀態(tài)。這些變換可以包括改變給定磁性介質(zhì)內(nèi)的特定位置的磁性。這些變換還可以包括改變給定光學(xué)介質(zhì)內(nèi)的特定位置的物理特征或特性,以改變這些位置的光學(xué)特性。在沒有偏離本說明書的范圍和精神的情況下,物理介質(zhì)的其他轉(zhuǎn)換也是可以的,前面提供的示例只是為了便于此討論。鑒于以上內(nèi)容,應(yīng)當(dāng)理解,在計算機(jī)架構(gòu)400中發(fā)生許多類型的物理變換以便存儲并執(zhí)行本文所提出的軟件組件。還應(yīng)當(dāng)理解,計算機(jī)架構(gòu)400可以包括其它類型的計算設(shè)備,包括手持式計算機(jī)、嵌入式計算機(jī)系統(tǒng)、個人數(shù)字助理、以及本領(lǐng)域技術(shù)人員已知的其它類型的計算設(shè)備。還可以構(gòu)想的是,計算機(jī)架構(gòu)400可以不包括圖4所示的全部組件, 可以包括未在圖4中明確示出的其它組件,或者可利用完全不同于圖4所示的架構(gòu)。基于上述內(nèi)容,應(yīng)當(dāng)明白,本文已經(jīng)公開了用于共享對象表示的技術(shù)。盡管用對計算機(jī)結(jié)構(gòu)特征、方法和變換動作、特定計算機(jī)器和計算機(jī)可讀介質(zhì)專用的語言描述了本文所提出的主題,但可以理解,所附權(quán)利要求書中定義的本發(fā)明不必限于本文所述的具體特征、動作或介質(zhì)。相反,這些具體特征、動作和介質(zhì)是作為實(shí)現(xiàn)權(quán)利要求的示例形式來公開的。上述主題僅作為說明提供,并且不應(yīng)被解釋為限制??蓪Ρ疚乃龅闹黝}作出各種修改和改變,而不必遵循所示和所述的示例實(shí)施例和應(yīng)用,且不背離所附權(quán)利要求書中所述的本發(fā)明的真正精神和范圍。
權(quán)利要求
1.一種計算機(jī)實(shí)現(xiàn)的用于共享對象表示的方法,所述計算機(jī)實(shí)現(xiàn)的方法包括執(zhí)行計算機(jī)實(shí)現(xiàn)的操作,用于在管道(112)處,檢測與第一運(yùn)行時環(huán)境(102)相關(guān)聯(lián)的對象引用;確定所述對象引用是與對象(106)還是與對象代理(108)相關(guān)聯(lián);響應(yīng)于確定所述對象引用與所述對象代理(108)相關(guān)聯(lián),標(biāo)識與所述對象代理(108) 相關(guān)聯(lián)的對象(106);以及將所述對象引用轉(zhuǎn)換至與所述對象代理(108)相關(guān)聯(lián)的所述對象(106)。
2.如權(quán)利要求I所述的方法,其特征在于,標(biāo)識與所述對象代理相關(guān)聯(lián)的對象包括訪問轉(zhuǎn)換數(shù)據(jù)以獲得標(biāo)識所述對象的信息。
3.如權(quán)利要求I所述的方法,其特征在于,關(guān)于所述對象代理調(diào)用的方法被路由至與所述對象代理相關(guān)聯(lián)的所述對象,所述對象與第二運(yùn)行時環(huán)境相關(guān)聯(lián)。
4.如權(quán)利要求I所述的方法,其特征在于,定義所述對象代理的邏輯包括標(biāo)識與所述對象代理相對應(yīng)的所述對象的數(shù)據(jù)。
5.如權(quán)利要求I所述的方法,其特征在于,將所述對象引用轉(zhuǎn)換至所述對象包括將所述對象引用從所述對象代理路由至所述對象。
6.如權(quán)利要求2所述的方法,其特征在于,所述轉(zhuǎn)換數(shù)據(jù)包括將所述對象與所述對象代理相關(guān)聯(lián)的信息。
7.如權(quán)利要求6所述的方法,其特征在于,對象引用包括方法調(diào)用,且其中提供所述對象實(shí)現(xiàn)包括將所述方法調(diào)用從所述對象代理路由至所述對象,所述對象與第二運(yùn)行時環(huán)境相關(guān)聯(lián)。
8.如權(quán)利要求I所述的方法,其特征在于,還包括響應(yīng)于確定所述對象引用與所述對象相關(guān)聯(lián),實(shí)現(xiàn)所述對象引用,其中定義所述對象的邏輯包括標(biāo)識與所述對象相關(guān)聯(lián)的一個或多個對象代理的數(shù)據(jù)。
9.如權(quán)利要求8所述的方法,其特征在于,還包括響應(yīng)于檢測所述對象的更新,訪問轉(zhuǎn)換數(shù)據(jù)以標(biāo)識所述對象代理;以及更新所述對象代理以反映所述對象的所述更新。
10.一種其上存儲有計算機(jī)可讀指令的計算機(jī)存儲介質(zhì),所述指令在由計算機(jī)執(zhí)行時使得所述計算機(jī)在管道(112)處,生成標(biāo)識第一運(yùn)行時環(huán)境(102A)中的對象代理(108A)與第二運(yùn)行時環(huán)境(102B)中的對象(106B)之間的關(guān)聯(lián)的轉(zhuǎn)換數(shù)據(jù)(118);在所述管道(112)處,檢測在所述第一運(yùn)行時環(huán)境(102A)中生成的方法調(diào)用;確定所述方法調(diào)用是與所述第一運(yùn)行時環(huán)境(102A)中的對象(106A)還是與所述對象代理(108A)相關(guān)聯(lián),所述對象代理(108A)與所述第二運(yùn)行時環(huán)境(102B)中的對象(106B) 相關(guān)聯(lián);響應(yīng)于確定所述方法調(diào)用與所述對象代理(108)相關(guān)聯(lián),標(biāo)識與所述對象代理(108A) 相關(guān)聯(lián)的所述對象(106B);將所述方法調(diào)用轉(zhuǎn)換至與所述對象代理(108A)相關(guān)聯(lián)的所述對象(106B);確定所述第一運(yùn)行時環(huán)境(102A)與所述第二運(yùn)行時環(huán)境(102B)之間的通信路徑,所述通信路徑包括一個或多個應(yīng)用編程接口(110);以及將所述方法調(diào)用從所述對象代理(108A)轉(zhuǎn)換至所述第二運(yùn)行時環(huán)境(102B)中的所述對象(106B)。
全文摘要
本發(fā)明涉及共享對象表示。本文描述了用于在一個或多個運(yùn)行時環(huán)境之間共享對象表示的概念和技術(shù)。根據(jù)本文公開的概念和技術(shù),定義對象的邏輯包括對一個或多個對象代理的引用。定義對象代理的邏輯可包括對與該對象代理相對應(yīng)的至少一個對象的引用。在生成與對象代理相關(guān)聯(lián)的對象引用時,該對象引用被路由至與該對象代理相對應(yīng)的對象。根據(jù)各種實(shí)現(xiàn),經(jīng)由訪問對象代理來訪問對象。因此,對象對于對象代理所駐留的運(yùn)行時環(huán)境可顯得是本地的。在一些實(shí)施例中,管道將對象引用從對象代理轉(zhuǎn)換至對象,并使得運(yùn)行時環(huán)境之間能夠通信。對象也可被一個以上對象代理引用。
文檔編號G06F9/46GK102591710SQ20111044423
公開日2012年7月18日 申請日期2011年12月15日 優(yōu)先權(quán)日2010年12月16日
發(fā)明者A·古普塔, M·考爾德倫, P·維拉森 申請人:微軟公司