專利名稱:模塊化對(duì)象串行化體系結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對(duì)象串行化,尤其涉及以自定義串行化格式串行化自定義用戶界面對(duì)象的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。
(2)背景技術(shù)從廣義上來(lái)說(shuō),串行化是將對(duì)象從一種表示或格式向另一種的轉(zhuǎn)換。串行化一般意味著雙向過(guò)程將對(duì)象從初始表示轉(zhuǎn)換為其它表示,然后將其它表示轉(zhuǎn)換回初始表示。盡管有時(shí)候向初始表示的轉(zhuǎn)換被稱為反串行化,然而串行化是包含對(duì)初始表示的初始轉(zhuǎn)換和向初始表示的隨后的反向轉(zhuǎn)換的一般術(shù)語(yǔ)。
例如,存儲(chǔ)器內(nèi)(in-memory)或活(live)對(duì)象可以串行化為適合于耐久存儲(chǔ)或通過(guò)網(wǎng)絡(luò)發(fā)送的永久或瞬時(shí)對(duì)象。當(dāng)前,通常使用可擴(kuò)展標(biāo)記語(yǔ)言(XML)作為用于存儲(chǔ)和數(shù)據(jù)發(fā)送的串行化格式。一旦儲(chǔ)存或發(fā)送之后,對(duì)象的XML表示可以從XML表示串行化(或反串行化)回存儲(chǔ)器內(nèi)或活對(duì)象。執(zhí)行串行化的軟件通常稱為串行化器。
代碼生成是串行化的另一示例。圖1示出了具有存儲(chǔ)器內(nèi)或活用戶界面對(duì)象110的示例可視用戶界面設(shè)計(jì)器100。可視用戶界面設(shè)計(jì)器100允許用戶定義用戶界面對(duì)象的可視外觀,并生成能夠在程序中編譯并納入其中的用戶界面對(duì)象的源代碼表示。在該示例中,用戶界面對(duì)象110是一個(gè)簡(jiǎn)單的About(“關(guān)于”)框,具有將該對(duì)象標(biāo)識(shí)為About框的標(biāo)題112、用于將About框最小化、最大化及關(guān)閉的窗口控制114以及用于解散About框的OK按鈕118。典型的可視化用戶界面設(shè)計(jì)器生成與表I所示的偽代碼類似的代碼。
表I
表I中的偽代碼說(shuō)明了可視化用戶界面設(shè)計(jì)器中的常規(guī)串行化的幾個(gè)問(wèn)題。首先,可視化用戶界面設(shè)計(jì)器中的常規(guī)串行化通常限于單個(gè)串行化格式,如代碼生成。盡管代碼生成無(wú)疑是可視用戶界面設(shè)計(jì)器的重要目的,然而可能期望其它類型的串行化。例如,可能需要About框的XML表示,或許是作為一種通用格式,使得在某一個(gè)可視用戶界面設(shè)計(jì)器中創(chuàng)建的用戶界面對(duì)象可以導(dǎo)入到另一可視用戶界面設(shè)計(jì)器。然而,可視用戶界面設(shè)計(jì)器中的常規(guī)串行化被嚴(yán)格地同單一格式相聯(lián)系,并且不允許用于不同的串行化格式。
表I的偽代碼說(shuō)明的第二個(gè)問(wèn)題是可視用戶界面設(shè)計(jì)器的常規(guī)串行化通常生成新的類,如表I所示的新的About類。對(duì)于代碼生成,這一般是所期望的行為,因?yàn)樗试S在新的類中與成員對(duì)象的直接交互。然而,對(duì)于許多操作,在串行化時(shí)創(chuàng)建新類將導(dǎo)致效率降低。例如,在大多數(shù)的設(shè)計(jì)時(shí)間里,僅僅對(duì)象的可視表示是相關(guān)或最相關(guān)的-源代碼僅在可視表示儲(chǔ)盤時(shí)才需要。表II給出了表I所示的偽代碼的等效表示。差別在于表I創(chuàng)建了新的類型,而表II配置現(xiàn)有類型。該第二表示作為完成的源代碼可能無(wú)用,但是可以在可視設(shè)計(jì)器中使用,作為保持活對(duì)象狀態(tài)的一般方法,用于諸如撤銷或復(fù)制和粘貼等特征。
表II
第三個(gè)問(wèn)題是可視用戶界面設(shè)計(jì)器中的常規(guī)串行化一般在如何對(duì)串行化器進(jìn)行擴(kuò)充來(lái)用于新的類型和/或新的串行化格式方面有所局限。盡管能夠?yàn)榱诵骂愋突蚋袷蕉{(diào)用串行化提供器時(shí),但常規(guī)串行化需要把元數(shù)據(jù)屬性編譯進(jìn)類型中以使串行化提供器可知。因此,為提供新的串行化格式并串行化那些對(duì)象開(kāi)發(fā)者原來(lái)未曾預(yù)想到的新對(duì)象類型,就需要重新編譯。除不方便以外,重新編譯在某些情況下可能是無(wú)法進(jìn)行的,如當(dāng)串行化第三方對(duì)象時(shí)。
當(dāng)然,應(yīng)當(dāng)注意到,可視用戶界面設(shè)計(jì)器僅為生成對(duì)象圖形的代碼的軟件的一個(gè)例子。在許多情況下,代碼生成可能是重新創(chuàng)建對(duì)象圖形的最快且最有效的方式。然而,如上所述,常規(guī)的串行化-尤其是涉及到代碼生成時(shí)-會(huì)有各種缺點(diǎn)而使其有用性受到限制。
(3)發(fā)明內(nèi)容本發(fā)明涉及將具有自定義對(duì)象類型和串行化格式的對(duì)象串行化的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。依照本發(fā)明的示例實(shí)施例,串行化管理器協(xié)調(diào)標(biāo)準(zhǔn)串行化提供器來(lái)標(biāo)識(shí)用于標(biāo)準(zhǔn)對(duì)象類型或串行化格式的標(biāo)準(zhǔn)串行化器。如需要者,可以通過(guò)加載自定義串行化提供器來(lái)標(biāo)識(shí)用于標(biāo)準(zhǔn)串行化提供器未覆蓋的自定義對(duì)象類型或串行化格式的自定義串行化器,以對(duì)串行化管理器進(jìn)行擴(kuò)充。從可用串行化提供器中,串行化管理器標(biāo)識(shí)用于特定串行化格式和對(duì)象圖形的串行化器。一旦標(biāo)識(shí)了合適的串行化器,使用該串行化器串行化對(duì)象圖形。
對(duì)象圖形可能包含多個(gè)相關(guān)對(duì)象,可能是自定義或標(biāo)準(zhǔn)對(duì)象類型,并且串行化格式可能是標(biāo)準(zhǔn)或自定義格式。示例串行化格式包括活表示或存儲(chǔ)器內(nèi)表示、源代碼表示、可擴(kuò)展標(biāo)記語(yǔ)言(XML)表示等等。某些串行化格式可能生成對(duì)象圖形的代碼片斷,而不生成該對(duì)象圖形的類表示。這些代碼片斷對(duì)可視化用戶界面設(shè)計(jì)器中的剪切/復(fù)制/粘貼和撤銷/重復(fù)操作來(lái)說(shuō)尤其有用。在一些實(shí)現(xiàn)中,來(lái)自自定義串行化提供器的串行化器可以用來(lái)替代標(biāo)準(zhǔn)串行化器。為在串行化器及其提供器之中幫助協(xié)調(diào)并增強(qiáng)模塊性,串行化管理器可維護(hù)并共享上下文信息。
下文將描述本發(fā)明的其它特點(diǎn)和優(yōu)點(diǎn),從描述中可以部分清楚這些特點(diǎn)和優(yōu)點(diǎn),或者能夠通過(guò)對(duì)本發(fā)明的實(shí)踐學(xué)到。本發(fā)明的特點(diǎn)和優(yōu)點(diǎn)可以通過(guò)所附權(quán)利要求書中特別指明的儀器及組合來(lái)實(shí)現(xiàn)與獲得。從以下描述以及所附權(quán)利要求書中可以完全明白本發(fā)明的這些及其它特點(diǎn),或者能夠從后文陳述的本發(fā)明的實(shí)踐中學(xué)到。
(4)
為描述獲得本發(fā)明的上述和其它優(yōu)點(diǎn)及特點(diǎn)的方式,參考附圖中說(shuō)明的特定實(shí)施例來(lái)反映上文簡(jiǎn)要描述的本發(fā)明的更詳細(xì)描述。應(yīng)當(dāng)理解,這些附圖僅描述了本發(fā)明的典型實(shí)施例,因此不應(yīng)認(rèn)為是對(duì)其范圍的限制,通過(guò)使用附圖描述并解釋本發(fā)明的另外的特征和細(xì)節(jié)。附圖中圖1說(shuō)明了具有可依照本發(fā)明來(lái)串行化的示例用戶界面對(duì)象的示例可視化用戶界面設(shè)計(jì)器;圖2說(shuō)明了依照本發(fā)明的示例串行化管理器;圖3示出了依照本發(fā)明串行化用戶界面對(duì)象的方法的示例行動(dòng)和步驟;圖4說(shuō)明了為本發(fā)明提供合適操作環(huán)境的示例性系統(tǒng)。
(5)具體實(shí)施方式
本發(fā)明延及用于串行化具有自定義對(duì)象類型和串行化格式的用戶界面對(duì)象的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。本發(fā)明的實(shí)施例可包括一個(gè)或多個(gè)專用和/或一個(gè)或多個(gè)通用計(jì)算機(jī),包括各類計(jì)算機(jī)硬件,如后文所詳細(xì)描述的。
圖2所示是依照本發(fā)明的示例串行化管理器200。串行化管理器200包括具有標(biāo)準(zhǔn)串行化器224的標(biāo)準(zhǔn)串行化提供器230以及具有自定義串行化器244的自定義串行化提供器240。串行化器,如標(biāo)準(zhǔn)串行化器224或自定義串行化器244,能夠?qū)⒁粋€(gè)特定的對(duì)象類型或某一范圍的對(duì)象類型串行化為特定的串行化格式的對(duì)象。一般而言,用不同的串行化器來(lái)將單個(gè)對(duì)象類型串行化為不同的串行化格式,在一些實(shí)現(xiàn)中,串行化提供器中存在獨(dú)立的基類,提供不同的串行化格式。例如,如后文所詳述的,XmlSerializer基類可以被用來(lái)將對(duì)象轉(zhuǎn)換為可擴(kuò)展標(biāo)記語(yǔ)言(XML)。也可以用不同的串行化器和串行化提供器來(lái)將不同的對(duì)象類型串行化為單個(gè)串行化格式。
串行化提供器,如標(biāo)準(zhǔn)串行化提供器220和自定義串行化提供器240,標(biāo)識(shí)用于特定對(duì)象類型和串行化格式的個(gè)別串行化器。例如,標(biāo)準(zhǔn)串行化提供器220可以標(biāo)識(shí)標(biāo)準(zhǔn)串行化器224來(lái)將標(biāo)準(zhǔn)對(duì)象串行化為標(biāo)準(zhǔn)串行化格式。其它串行化器226可以用來(lái)將不同的對(duì)象格式串行化為同一標(biāo)準(zhǔn)串行化格式,或用來(lái)將標(biāo)準(zhǔn)對(duì)象串行化為不同的標(biāo)準(zhǔn)串行化格式。類似地,自定義串行化提供器240標(biāo)識(shí)自定義串行化器244來(lái)將自定義對(duì)象串行化為自定義串行化格式,其它自定義串行化器246可以用來(lái)將不同的對(duì)象類型串行化為同一自定義串行化格式,或用來(lái)將同一自定義對(duì)象串行化為不同的自定義串行化格式。當(dāng)然,串行化管理器200可以包含其它標(biāo)準(zhǔn)串行化提供器230以及其它自定義串行化提供器250。
串行化管理器200也提供串行化上下文信息210的信息存儲(chǔ),以供各種串行化器在串行化對(duì)象圖形時(shí)使用。例如,具有多個(gè)對(duì)象的對(duì)象圖形可能需要多個(gè)串行化器,每一串行化器生成其自己的輸出。串行化管理器200根據(jù)需要為些串行化器之間的通信提供方便。
在串行化管理器200內(nèi),可能使用元數(shù)據(jù)屬性來(lái)將個(gè)別對(duì)象類型與特定串行化器相聯(lián)系。例如,如后文詳細(xì)描述的,對(duì)于不具有串行化器的對(duì)象類型或者為了替代現(xiàn)有的串行化器,可使用缺省串行化提供器屬性來(lái)加載或安裝串行化提供器。在串行化提供器內(nèi),如標(biāo)準(zhǔn)串行化提供器220或自定義串行化提供器240內(nèi),也可使用元數(shù)據(jù)屬性來(lái)標(biāo)識(shí)用于給定對(duì)象類型和串行化格式的合適的串行化器。
作為示例,考慮表III所示的XML格式。
表III
使用表IV所示的偽代碼類XmlSerializer來(lái)串行化這一XML格式。
表IV
XmlSerializer是從更小的片斷建立串的模塊化類。例如,當(dāng)傳遞具有整數(shù)值5的Int32數(shù)據(jù)類型時(shí),XmlSerializer返回“5”。
表III中的XML格式建議兩種基本的對(duì)象類型來(lái)串行化具有特性的對(duì)象和能夠轉(zhuǎn)換為文本的對(duì)象。在大多數(shù)情況下,使用知道如何將該類轉(zhuǎn)換成文本或XML標(biāo)簽的自定義串行化器來(lái)修飾每一個(gè)類消耗太多精力,并且當(dāng)引入新的串行化格式時(shí)會(huì)導(dǎo)致維護(hù)問(wèn)題。(為將現(xiàn)有的類串行化為新的串行化格式,在類中引入新屬性,需要對(duì)該現(xiàn)有類的重編譯。)串行化提供器通過(guò)一種回叫機(jī)制解決了這一問(wèn)題,在回叫機(jī)制中,給予提供器機(jī)會(huì)來(lái)為給定類型提供串行化器。
對(duì)于當(dāng)前的示例,對(duì)一組可用的類型作如下的限定1.如果該類型可以通過(guò)現(xiàn)有IConvertible接口轉(zhuǎn)換為串,則標(biāo)識(shí)StringXmlSerializer。
2.如果該類型無(wú)法轉(zhuǎn)換為串,但是為公有類,并且具有空構(gòu)造函數(shù),則標(biāo)識(shí)ObjectXmlSerializer。
3.如果不符合上述兩條,則串行化提供器返回空,指示沒(méi)有用于該對(duì)象的串行化器。(這一錯(cuò)誤如何處理取決于進(jìn)行調(diào)用的串行化器。)以下表V中示出了實(shí)現(xiàn)上述標(biāo)準(zhǔn)的偽代碼。
表V
定義了串行化提供器之后,可以將其投入使用。盡管可以通過(guò)明確的添加方法將該串行化提供器給予串行化管理器200,然而這一方法需要有人來(lái)作出這一明確的調(diào)用。可選地,可以通過(guò)向串行化器基類添加Default Serialization ProviderAttribute來(lái)自動(dòng)將串行化提供器添加到串行化管理器200。對(duì)于這一示例,該屬性需要串行化提供器具有公有、空構(gòu)造函數(shù)。因此,表IV的偽代碼變?yōu)橐韵卤鞻I所示。
表VI
現(xiàn)在,不論何時(shí)向串行化管理器200尋求任一類型的XmlSerializer,如果缺省串行化提供器先前并未被添加,則它將被自動(dòng)添加到串行化管理器。注意,這一屬性是與串行化器而不是對(duì)象相關(guān)聯(lián),使得可以添加新的串行化格式而不需要重編譯該類來(lái)使用該新的屬性。
如上所述,示例XmlSerializer具有兩個(gè)具體的串行化器類StringXmlSerializer和ObjectXmlSerializer。表VII示出了StringXmlSerializer的偽代碼實(shí)現(xiàn)。
表VII
表VIII示出了ObjectXmlSerializer的偽代碼實(shí)現(xiàn),巡視了它所串行化的對(duì)象的公有特性。
表VIII
注意,ObjectXmlSerializer對(duì)每一特性值調(diào)用其它串行化器。這至少具有兩個(gè)優(yōu)點(diǎn)。首先,它令ObjectXmlSerializer變得十分簡(jiǎn)單。其次,它對(duì)第三方類型提供了可擴(kuò)充點(diǎn)。如果出現(xiàn)無(wú)法由這些串行化器的任一個(gè)寫出的類型,則可以向該類型提供自定義串行化器。
表IX示出了上述串行化器對(duì)System.Drasing.Rectangle對(duì)象的示例使用,該對(duì)象具有空構(gòu)造函數(shù)以及支持用于串轉(zhuǎn)換的IConvertible的四個(gè)特性。在表IX中,創(chuàng)建了IDesignerSerializationManager的一個(gè)實(shí)例,即串行化管理器,并用來(lái)標(biāo)識(shí)串行化器。然后所標(biāo)識(shí)的串行化器串行化該對(duì)象。
表IX
表IX所示的示例生成表X所示的XML。
表X
注意,該示例未包括任何XML縮進(jìn)。然而,可以通過(guò)使用串行化管理器200的串行化上下文信息210簡(jiǎn)單地實(shí)現(xiàn)該縮進(jìn)。每一串行化器層可以向包含當(dāng)前縮進(jìn)層的上下文棧添加對(duì)象,并且每一串行化器然后在棧內(nèi)搜索該層上下文對(duì)象并使用它來(lái)提供合適的縮進(jìn)。
串行化管理器200能夠?qū)?duì)象串行化為不同的串行化格式。與上述XML串行化形成對(duì)比,下文的示例與代碼生成格式有關(guān)。注意,依照本發(fā)明的示例實(shí)現(xiàn),生成XML的串行化提供器和生成源代碼的串行化提供器可能在串行化管理器200中共存。如參照?qǐng)Dl所指示的,有多種方法來(lái)將對(duì)象串行化為源代碼。例如,考慮具有單個(gè)OK按鈕的窗體的情況。定義這一窗體的一個(gè)標(biāo)準(zhǔn)方法如下表XI所示。
表XI
表XI的偽代碼定義了“Forml”對(duì)象類型的新類。然而,讓對(duì)象圖形的根定義新類是任意的選擇。該代碼也可如表XII所示。
表XII
在兩種情況下,所得是具有一個(gè)按鈕的窗體。然而,對(duì)表XII中說(shuō)明的代碼片斷,一般所有對(duì)象比對(duì)象圖形的“根”更需要它,并且它對(duì)可視化設(shè)計(jì)器中的剪切/復(fù)制/粘貼以及撤銷/重復(fù)操作更有用。對(duì)于這些操作,新對(duì)象的創(chuàng)建,至少最初的創(chuàng)建,可能是不必要且不合需要的,并因此需要一些額外的工作來(lái)避免它。在許多情況下,窗體可以僅以表XII所示的格式來(lái)簡(jiǎn)單表示。因此,在示例實(shí)現(xiàn)中,串行化管理器200具有兩個(gè)不同的基本串行化類CodeDomSerializer,僅創(chuàng)建并配置給定的對(duì)象;以及TypeCodeDomSerializer,定義新類。兩個(gè)串行化器可以在串行化管理器200中共同存在。
以下表XIII示出了示例CodeDomSerializere類。
表XIII
Serialize方法串行化給定的對(duì)象。其返回值取決于所需要的串行化類型,并可以是以下的任一種CodeExpression如果對(duì)象可以串行化為簡(jiǎn)單的表達(dá)式,則返回CodeExpression。落入這一分類的原語(yǔ)如do類型可以在其構(gòu)造函數(shù)中被創(chuàng)建及配置。
CodeStatementCollection如果對(duì)象可以串行化為狀態(tài)的集合,則返回CodeStatementCollection。需要構(gòu)造且其一個(gè)或多個(gè)屬性需要設(shè)定的復(fù)雜對(duì)象落入這一分類。
SerializeProperty方法串行化給定對(duì)象上的屬性。使用這一串行化類型的一個(gè)模型如下1.向串行化管理器要求用于給定屬性類型的串行化器。
2.在返回的串行化器上調(diào)用SerializeProperty。
3.將結(jié)果整合進(jìn)自己的串行化數(shù)據(jù)中。
SerializeProperty的返回值取決于需要的串行化類型,并且可以是以下的任一種CodeStatement如果屬性可以串行化為單一狀態(tài),則返回CodeStatement。大多數(shù)屬性落入這一分類。
CodeStatementCollection如果屬性能夠串行化為狀態(tài)的集合,則返回CodeStatementCollection。復(fù)雜的屬性,如集合落入這一分類。
Deserilaize方法返回從給定的串行化數(shù)據(jù)配置的活對(duì)象。傳入的作為“狀態(tài)”的對(duì)象應(yīng)當(dāng)是與從先前的Serialize調(diào)用返回的對(duì)象的同一類型。
TypeCodeDomSerializer類執(zhí)行與CodeDomSerializer相同的任務(wù),但是通過(guò)這一個(gè)類來(lái)串行化對(duì)象定義了一個(gè)新類型。以下表XIV示出了TypeCodeDomSerializer類的一個(gè)示例。
表XIV
Serialize方法串行化給定根對(duì)象以及成員的可選集合來(lái)創(chuàng)建新類的定義。成員集合可以為零或空。如果它包含值,則這些值將被定義為該類型的成員變量。為方便起見(jiàn),成員集合可以包含根對(duì)象。在這一情況下,根對(duì)象將不再被作為成員添加。Deserialize方法反串行化先前串行化的代碼類型聲明。它創(chuàng)建該類型聲明的基本類型的實(shí)例,并通過(guò)設(shè)定屬性與執(zhí)行方法來(lái)對(duì)其進(jìn)行配置。
本發(fā)明也可以按照包括功能性步驟和/或非功能性行動(dòng)的方法來(lái)描述。以下是對(duì)可以在本發(fā)明的實(shí)踐中執(zhí)行的行動(dòng)和步驟的描述。通常,功能性步驟按照所獲得的結(jié)果來(lái)描述發(fā)明,而非功能性行動(dòng)描述用于獲得特定結(jié)果的更具體的行動(dòng)。盡管功能性步驟和非功能性行動(dòng)可能是以特定的順序出現(xiàn)在說(shuō)明書或權(quán)利要求書中的,然而本發(fā)明并不必局限于行動(dòng)和/或步驟的任一特定順序或組合。
圖3示出了用于依照本發(fā)明來(lái)串行化用戶界面對(duì)象的方法的示例行動(dòng)和步驟。用于協(xié)調(diào)(310)一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器的步驟以及如所需要用于加載(310)一個(gè)或多個(gè)自定義串行化提供器的步驟可包括提供(312)串行化管理器的行動(dòng),其中,每一標(biāo)準(zhǔn)串行化提供器標(biāo)識(shí)一個(gè)或多個(gè)用于標(biāo)準(zhǔn)對(duì)象類型或串行化格式的標(biāo)準(zhǔn)串行化器,每一自定義串行化提供器標(biāo)識(shí)一個(gè)或多個(gè)用于可能未被所述一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器所覆蓋的一個(gè)或多個(gè)自定義對(duì)象類型或串行化格式的自定義串行化器。
用于標(biāo)識(shí)(320)用于特定串行化格式和包含特定對(duì)象類型的對(duì)象的對(duì)象圖形的串行化器的步驟可包括向串行化管理器請(qǐng)求(322)串行化器的行動(dòng)。用于串行化(330)的步驟可包括調(diào)用(332)串行化管理器返回的串行化器來(lái)串行化對(duì)象圖形的行動(dòng)。用于維護(hù)(未示出)上下文信息的步驟可包括在串行化管理器端儲(chǔ)存上下文信息的行動(dòng)(未示出)。用于以自定義串行化器替代(未示出)標(biāo)準(zhǔn)串行化器的步驟可包括提供(312)串行化管理器來(lái)加載一個(gè)或多個(gè)自定義串行化提供器的行動(dòng),其中,每一自定義串行化提供器標(biāo)識(shí)一個(gè)或多個(gè)自定義串行化器。
自定義串行化器和串行化提供器可以被加載作為對(duì)請(qǐng)求串行化器的響應(yīng)。要串行化的對(duì)象圖形可包括多個(gè)相關(guān)對(duì)象。串行化器可生成對(duì)象圖形的代碼片斷而不是類表示,作為剪切/復(fù)制/粘貼或撤銷/重復(fù)操作的一部分。串行化器可串行化或反串行化對(duì)象圖形,并可生成對(duì)象的活表示或存儲(chǔ)器內(nèi)表示、XML表示、源代碼表示或其它表示。
本發(fā)明的范圍內(nèi)的實(shí)施例也包括用于含有或在其上儲(chǔ)存計(jì)算機(jī)指令或數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀媒質(zhì)。這類計(jì)算機(jī)可讀媒質(zhì)可以是任一可由通用或?qū)S糜?jì)算機(jī)訪問(wèn)的可用媒質(zhì)。作為示例而非局限,這類計(jì)算機(jī)可讀媒質(zhì)可包括RAM、ROM、EEPROM、CD-ROM或其它光盤存儲(chǔ)、磁盤存儲(chǔ)或其它磁存儲(chǔ)設(shè)備、或其它可用來(lái)以計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的形式攜帶或儲(chǔ)存所期望的的程序代碼方法并可由通用或?qū)S糜?jì)算機(jī)訪問(wèn)的任一媒質(zhì)。當(dāng)通過(guò)網(wǎng)絡(luò)或另一通信連接(或者硬布線、或者無(wú)線、或硬布線和無(wú)線的組合)向計(jì)算機(jī)傳輸或提供信息時(shí),計(jì)算機(jī)適當(dāng)?shù)貙⒃撨B接視為計(jì)算機(jī)可讀媒質(zhì)。由此,任一這類連接適當(dāng)?shù)胤Q為計(jì)算機(jī)可讀媒質(zhì)。上述的組合也應(yīng)當(dāng)包括在計(jì)算機(jī)可讀媒質(zhì)的范圍內(nèi)。計(jì)算機(jī)可執(zhí)行指令包括,如,引發(fā)通用計(jì)算機(jī)、專用計(jì)算機(jī)或?qū)S锰幚碓O(shè)備執(zhí)行特定功能或功能組的指令和數(shù)據(jù)。
圖4及以下討論提供了對(duì)適于在其中實(shí)現(xiàn)本發(fā)明的計(jì)算環(huán)境的簡(jiǎn)要概括描述。盡管不需要,但本發(fā)明將在計(jì)算機(jī)可執(zhí)行指令的一般語(yǔ)境下描述,計(jì)算機(jī)可執(zhí)行指令如程序模塊,由網(wǎng)絡(luò)環(huán)境中的計(jì)算機(jī)執(zhí)行。一般而言,程序模塊包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等,執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。計(jì)算機(jī)可執(zhí)行指令、相關(guān)的數(shù)據(jù)結(jié)構(gòu)以及程序模塊表示了用于執(zhí)行這里公開(kāi)的方法的步驟的程序代碼方法的示例。這一可執(zhí)行指令或相關(guān)數(shù)據(jù)結(jié)構(gòu)的特定順序表示了用于實(shí)現(xiàn)在這類步驟中所描述的功能的相應(yīng)行動(dòng)的示例。
本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明可以在具有多種類型計(jì)算機(jī)系統(tǒng)構(gòu)造的網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)踐,包括個(gè)人計(jì)算機(jī)、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費(fèi)者電子設(shè)備、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)等等。本發(fā)明也可以在分布式計(jì)算環(huán)境中實(shí)踐,其中,任務(wù)由通過(guò)通信網(wǎng)絡(luò)連接(或者通過(guò)硬布線鏈路、或者通過(guò)無(wú)線鏈路、或通過(guò)硬布線或無(wú)線鏈路的組合)的本地和遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。
參考圖4,用于實(shí)現(xiàn)本發(fā)明的示例系統(tǒng)包括以常規(guī)計(jì)算機(jī)形式420的通用計(jì)算裝置,包括處理單元421、系統(tǒng)存儲(chǔ)器422以及將各類系統(tǒng)組件包括系統(tǒng)存儲(chǔ)器422耦合至處理單元421的系統(tǒng)總線423。系統(tǒng)總線423可以是若干種總線結(jié)構(gòu)類型的任一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線以及使用各類總線結(jié)構(gòu)的本地總線。系統(tǒng)存儲(chǔ)器包括只讀存儲(chǔ)器(ROM)424和隨機(jī)存取存儲(chǔ)器(RAM)425。基本輸X/輸出系統(tǒng)(BIOS)426,包含如在啟動(dòng)時(shí)協(xié)助在計(jì)算機(jī)420內(nèi)的元件之間傳輸信息的基本例程,可儲(chǔ)存在ROM424中。
計(jì)算機(jī)420也可包括用于對(duì)磁硬盤439進(jìn)行讀寫的磁硬盤驅(qū)動(dòng)器427、用于對(duì)可移動(dòng)磁盤429進(jìn)行讀寫的磁盤驅(qū)動(dòng)器428以及用于對(duì)可移動(dòng)光盤431如CD-ROM或其它光媒質(zhì)進(jìn)行讀寫的光盤驅(qū)動(dòng)器430。磁硬盤驅(qū)動(dòng)器427、磁盤驅(qū)動(dòng)器428以及光盤驅(qū)動(dòng)器430分別通過(guò)硬盤驅(qū)動(dòng)器接口432、磁盤驅(qū)動(dòng)器接口433和光盤驅(qū)動(dòng)器接口434連接至系統(tǒng)總線423。驅(qū)動(dòng)器及其相關(guān)的計(jì)算機(jī)可讀媒質(zhì)為計(jì)算機(jī)420提供了計(jì)算機(jī)可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的非易失存儲(chǔ)。盡管這里描述的示例環(huán)境采用了磁硬盤439、可移動(dòng)磁盤429以及可移動(dòng)光盤431,然而也可以使用用于儲(chǔ)存數(shù)據(jù)的其它類型的計(jì)算機(jī)可讀媒質(zhì),包括盒式磁帶、閃存卡、數(shù)字多功能盤、Bernoulli盒式磁盤、RAM、ROM等等。
包括一個(gè)或多個(gè)程序模塊的程序代碼方法可儲(chǔ)存在硬盤439、磁盤429、光盤431、ROM 424或RAM 425中,包括操作系統(tǒng)435、一個(gè)或多個(gè)應(yīng)用程序436、其它程序模塊437以及程序數(shù)據(jù)438。用戶可以通過(guò)鍵盤440、指向設(shè)備442或其它輸入設(shè)備(未示出),如麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等向計(jì)算機(jī)420輸入命令和信息。這些和其它輸入設(shè)備通常通過(guò)耦合至系統(tǒng)總線423的串行端口接口446連接到處理單元421。可選地,輸入設(shè)備也可以通過(guò)其它接口連接,如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器447或另一顯示設(shè)備也通過(guò)接口,如視頻適配器448連接到系統(tǒng)總線423。除監(jiān)視器之外,個(gè)人計(jì)算機(jī)通常包括其它外圍輸出設(shè)備(未示出),如揚(yáng)聲器和打印機(jī)。
計(jì)算機(jī)420可以在使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)449a和449b的邏輯連接的網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)449a和449b的每一個(gè)可以是另一個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它公用網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括許多或所有上述與計(jì)算機(jī)420相關(guān)的元件,盡管在圖4中僅說(shuō)明了存儲(chǔ)器存儲(chǔ)設(shè)備450a和450b及其關(guān)聯(lián)的應(yīng)用程序436a和436b。圖4描述的邏輯連接包括局域網(wǎng)(LAN)451和廣域網(wǎng)(WAN)452,這里示出作為示例而非局限。這類網(wǎng)絡(luò)環(huán)境常見(jiàn)于辦公室范圍或企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)以及因特網(wǎng)。
當(dāng)在局域網(wǎng)網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)420通過(guò)網(wǎng)絡(luò)接口或適配器453連接至局域網(wǎng)451。當(dāng)在廣域網(wǎng)網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)420可包括調(diào)制解調(diào)器454、無(wú)線鏈路或其它裝置,用于通過(guò)廣域網(wǎng)452,如因特網(wǎng)建立通信。調(diào)制解調(diào)器454可以是內(nèi)置或外置的,通過(guò)串行端口接口446連接至系統(tǒng)總線423。在網(wǎng)絡(luò)化環(huán)境中,描述的與計(jì)算機(jī)420相關(guān)的程序模塊或其部分可儲(chǔ)存在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中??梢岳斫猓境龅木W(wǎng)絡(luò)連接是示例性的,也可以使用通過(guò)廣域網(wǎng)452建立通信的其它裝置。
本發(fā)明可以在不脫離其精神或本質(zhì)特征的情況下以其它特定形式來(lái)實(shí)施。描述的實(shí)施例在各個(gè)方面僅為說(shuō)明性的而非限制。因此,本發(fā)明的范圍由所附權(quán)利要求書來(lái)指明,而非之前的描述。所有處于權(quán)利要求的等效權(quán)利要求的范圍和意思之內(nèi)的變化都包含在其范圍之內(nèi)。
權(quán)利要求
1.在支持能夠?yàn)閷?duì)象生成源代碼的串行化引擎的計(jì)算機(jī)系統(tǒng)中,一種將一個(gè)或多個(gè)標(biāo)準(zhǔn)對(duì)象類型和串行化格式的一個(gè)或多個(gè)對(duì)象從初始表示串行化為一個(gè)或多個(gè)隨后表示中的任一個(gè),并且可以被擴(kuò)充來(lái)覆蓋一個(gè)或多個(gè)自定義對(duì)象類型和串行化格式的方法,其特征在于,所述方法包括以下行動(dòng)提供串行化管理器,以(i)協(xié)調(diào)一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器,所述串行化提供器的每一個(gè)標(biāo)識(shí)用于標(biāo)準(zhǔn)對(duì)象類型或串行化格式的一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化器,以及(ii)如所需要,加載一個(gè)或多個(gè)自定義串行化提供器,所述串行化提供器的每一個(gè)標(biāo)識(shí)用于所述一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器未覆蓋的一個(gè)或多個(gè)自定義對(duì)象類型或串行化格式的一個(gè)或多個(gè)自定義串行化器;向所述串行化管理器請(qǐng)求用于包括特定對(duì)象類型的對(duì)象的對(duì)象圖形并用于特定串行化格式的串行化器;以及調(diào)用所述串行化器來(lái)串行化所述對(duì)象圖形。
2.如權(quán)利要求1所述的方法,其特征在于,所述串行化器是自定義串行化器。
3.如權(quán)利要求2所述的方法,其特征在于,所述串行化管理器響應(yīng)所述請(qǐng)求,自動(dòng)加載所述一個(gè)或多個(gè)自定義串行化提供器。
4.如權(quán)利要求1所述的方法,其特征在于,所述計(jì)算機(jī)系統(tǒng)也支持可視化用戶界面設(shè)計(jì)器,并且所述串行化引擎能夠?yàn)樵谒隹梢暬脩艚缑嬖O(shè)計(jì)器中創(chuàng)建的一個(gè)或多個(gè)用戶界面對(duì)象生成源代碼,所述對(duì)象圖形包括所述一個(gè)或多個(gè)用戶界面對(duì)象。
5.如權(quán)利要求1所述的方法,其特征在于,所述串行化管理器維護(hù)可在所述一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器和由所述串行化管理器加載的任一自定義串行化提供器之間共享的上下文信息。
6.如權(quán)利要求1所述的方法,其特征在于,所述初始表示包括用來(lái)保持所述一個(gè)或多個(gè)用戶界面對(duì)象的表示,并且其中,所述一個(gè)或多個(gè)隨后表示包括用來(lái)表示所述可視化用戶界面設(shè)計(jì)器內(nèi)的所述一個(gè)或多個(gè)用戶界面對(duì)象的表示。
7.如權(quán)利要求1所述的方法,其特征在于,所述對(duì)象圖形包括多個(gè)相關(guān)對(duì)象。
8.如權(quán)利要求1所述的方法,其特征在于,所述請(qǐng)求串行化器的行動(dòng)是撤銷或重復(fù)操作的一部分,并且其中,所述串行化器生成足夠用來(lái)撤銷或重復(fù)在可視化用戶界面設(shè)計(jì)器中對(duì)對(duì)象圖形作出的變化的代碼片斷,而不生成所述對(duì)象圖形的類表示。
9.如權(quán)利要求1所述的方法,其特征在于,所述一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器能夠標(biāo)識(shí)多個(gè)串行化器,并且其中,所述多個(gè)串行化器的至少兩個(gè)用來(lái)對(duì)不同串行化格式的對(duì)象圖形進(jìn)行串行化。
10.如權(quán)利要求1所述的方法,其特征在于,所述串行化器生成所述對(duì)象圖形的可擴(kuò)展標(biāo)記語(yǔ)言表示。
11.對(duì)于支持可視化用戶界面設(shè)計(jì)器和能夠?yàn)樵谒隹梢暬脩艚缑嬖O(shè)計(jì)器內(nèi)創(chuàng)建的用戶界面對(duì)象生成源代碼的串行化引擎的計(jì)算機(jī)系統(tǒng),一種包括一個(gè)或多個(gè)含有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀媒質(zhì)的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)可執(zhí)行指令實(shí)現(xiàn)對(duì)一個(gè)或多個(gè)標(biāo)準(zhǔn)對(duì)象類型和串行化格式,將一個(gè)或多個(gè)用戶界面對(duì)象從初始表示串行化為一個(gè)或多個(gè)隨后表示中的任一個(gè),并且可被擴(kuò)充來(lái)覆蓋一個(gè)或多個(gè)自定義對(duì)象類型和串行化格式的方法,其特征在于,所述方法包括提供串行化管理器以(i)協(xié)調(diào)一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器,所述標(biāo)準(zhǔn)串行化提供器的每一個(gè)標(biāo)識(shí)用于標(biāo)準(zhǔn)對(duì)象類型或串行化格式的一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化器,以及(ii)如所需要,加載一個(gè)或多個(gè)自定義串行化提供器,所述自定義串行化提供器的每一個(gè)標(biāo)識(shí)用于一個(gè)或多個(gè)自定義對(duì)象類型或串行化格式的一個(gè)或多個(gè)自定義串行化器;向所述串行化管理器請(qǐng)求用于包含特定對(duì)象類型的對(duì)象的對(duì)象圖形,并用于特定串行化格式的串行化器;以及調(diào)用所述串行化器來(lái)串行化所述對(duì)象圖形。
12.如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述一個(gè)或多個(gè)自定義對(duì)象類型或串行化格式未被所述一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器覆蓋。
13.如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述串行化器是自定義串行化器。
14.如權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述串行化管理器響應(yīng)所述請(qǐng)求,加載所述自定義串行化器。
15.如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述串行化管理器維護(hù)可以在所述一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器和由所述串行化管理器加載的任一所述自定義串行化提供器之間共享的上下文信息。
16.如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述初始表示包括用來(lái)表示所述可視化用戶界面設(shè)計(jì)器內(nèi)的所述一個(gè)或多個(gè)用戶界面對(duì)象的活表示,并且其中,所述一個(gè)或多個(gè)隨后表示包括用來(lái)保持所述一個(gè)或多個(gè)用戶界面對(duì)象的目標(biāo)表示。
17.如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述請(qǐng)求串行化器的行動(dòng)是剪切、復(fù)制或粘貼操作的一部分,并且其中,所述串行化器生成足夠用來(lái)撤銷或重復(fù)在可視化用戶界面設(shè)計(jì)器內(nèi)對(duì)對(duì)象圖形作出的變化的代碼片斷,而不生成對(duì)象圖形的類表示。
18.如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述一個(gè)或多個(gè)自定義串行化提供器能夠標(biāo)識(shí)多個(gè)串行化器,并且其中,所述多個(gè)串行化器的至少兩個(gè)用來(lái)對(duì)不同串行化格式的對(duì)象圖形進(jìn)行串行化。
19.如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述串行化器生成所述對(duì)象圖形的源代碼表示。
20.在支持可視化用戶界面設(shè)計(jì)器和能夠?yàn)樗隹梢暬脩艚缑嬖O(shè)計(jì)器中創(chuàng)建的用戶界面對(duì)象生成源代碼的串行化引擎的計(jì)算機(jī)系統(tǒng)中,一種將一個(gè)或多個(gè)用戶界面對(duì)象從初始表示串行化為一個(gè)或多個(gè)可擴(kuò)充隨后表示中的任一個(gè),并可被擴(kuò)充來(lái)覆蓋一個(gè)或多個(gè)自定義對(duì)象類型和串行化格式的方法,其特征在于,所述方法包括步驟協(xié)調(diào)一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器,所述標(biāo)準(zhǔn)串行化提供器的每一個(gè)標(biāo)識(shí)用于標(biāo)準(zhǔn)對(duì)象類型或串行化格式的一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化器;如所需要,加載一個(gè)或多個(gè)自定義串行化提供器,所述自定義串行化提供器的每一個(gè)標(biāo)識(shí)用于所述一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器未覆蓋的一個(gè)或多個(gè)自定義對(duì)象類型或串行化格式的一個(gè)或多個(gè)自定義串行化器;標(biāo)識(shí)用于特定串行化格式和用于包括特定對(duì)象類型的對(duì)象的對(duì)象圖形的串行化器;以及使用所標(biāo)識(shí)的串行化器串行化所述對(duì)象圖形。
21.如權(quán)利要求20所述的方法,其特征在于,所述特定對(duì)象類型包括自定義對(duì)象類型。
22.如權(quán)利要求20所述的方法,其特征在于,所述特定串行化格式是自定義串行化格式。
23.如權(quán)利要求20所述的方法,其特征在于,它還包括用于維護(hù)在所述一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器和由所述串行化管理器加載的任一所述自定義串行化提供器之間共享的上下文信息的步驟。
24.如權(quán)利要求20所述的方法,其特征在于,所述初始表示包括用來(lái)表示所述可視化用戶界面設(shè)計(jì)器內(nèi)所述一個(gè)或多個(gè)用戶界面對(duì)象的活表示,并且其中,所述一個(gè)或多個(gè)隨后表示包括用來(lái)保持所述一個(gè)或多個(gè)用戶界面對(duì)象的目標(biāo)表示。
25.如權(quán)利要求20所述的方法,其特征在于,它還包括以下步驟用來(lái)自在標(biāo)識(shí)用于對(duì)象圖形的串行化器時(shí)所加載的自定義串行化提供器的自定義串行化器替代標(biāo)準(zhǔn)串行化器。
26.如權(quán)利要求20所述的方法,其特征在于,所述對(duì)象圖形包括多個(gè)相關(guān)對(duì)象。
27.如權(quán)利要求20所述的方法,其特征在于,用于標(biāo)識(shí)串行化器的步驟是剪切、復(fù)制或粘貼操作的一部分,并且其中,所述串行化器生成用于對(duì)象圖形的代碼片斷,而不生成所述對(duì)象圖形的類表示。
28.如權(quán)利要求20所述的方法,其特征在于,所述串行化器生成對(duì)象圖形的源代碼表示或可擴(kuò)展標(biāo)記語(yǔ)言表示。
29.對(duì)于支持可視化用戶界面設(shè)計(jì)器和能夠?yàn)樗隹梢暬脩艚缑嬖O(shè)計(jì)器內(nèi)創(chuàng)建的用戶界面對(duì)象生成源代碼的串行化引擎的計(jì)算機(jī)系統(tǒng),一種包括含有計(jì)算機(jī)可執(zhí)行指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀媒質(zhì)的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)可執(zhí)行指令實(shí)現(xiàn)一種將一個(gè)或多個(gè)用戶界面對(duì)象從初始表示串行化為一個(gè)或多個(gè)可擴(kuò)充隨后表示中的任一個(gè),并可被擴(kuò)充來(lái)覆蓋一個(gè)或多個(gè)自定義對(duì)象類型和串行化格式的方法,其特征在于,所述方法包括協(xié)調(diào)一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器,所述標(biāo)準(zhǔn)串行化提供器的每一個(gè)標(biāo)識(shí)用于標(biāo)準(zhǔn)對(duì)象類型或串行化格式的一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化器;如所需要,加載一個(gè)或多個(gè)自定義串行化提供器,所述自定義串行化提供器的每一個(gè)標(biāo)識(shí)用于所述一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器未覆蓋的一個(gè)或多個(gè)自定義對(duì)象類型或串行化格式的一個(gè)或多個(gè)自定義串行化器;標(biāo)識(shí)用于特定串行化格式和用于包括特定對(duì)象類型的對(duì)象的對(duì)象圖形的串行化器;以及使用所標(biāo)識(shí)的串行化器來(lái)串行化所述對(duì)象圖形。
30.如權(quán)利要求29所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,在標(biāo)識(shí)用于所述對(duì)象圖形的所述串行化器時(shí)加載一個(gè)或多個(gè)自定義串行化提供器。
31.如權(quán)利要求29所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述方法還包括用于維護(hù)在所述一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器和由所述串行化管理器加載的任一所述自定義串行化提供器之間共享的上下文信息的步驟。
32.如權(quán)利要求29所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述初始表示包括用來(lái)保持所述一個(gè)或多個(gè)用戶界面對(duì)象的表示,并且其中,所述一個(gè)或多個(gè)隨后表示包括用來(lái)表示所述可視化用戶界面設(shè)計(jì)器內(nèi)的所述一個(gè)或多個(gè)用戶界面對(duì)象的表示。
33.如權(quán)利要求29所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述方法還包括用于以來(lái)自在標(biāo)識(shí)用于所述對(duì)象圖形的所述串行化器時(shí)所加載的自定義串行化提供器的自定義串行化器替代標(biāo)準(zhǔn)串行化器的步驟。
34.如權(quán)利要求29所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述用于標(biāo)識(shí)串行化器的步驟是撤銷或重復(fù)操作的一部分,并且其中,所述串行化器為所述對(duì)象圖形生成代碼片斷而不生成所述對(duì)象圖形的類表示。
35.如權(quán)利要求29所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述串行化器生成所述對(duì)象圖形的源代碼表示或可擴(kuò)展標(biāo)記語(yǔ)言表示。
36.對(duì)于支持可視化用戶界面設(shè)計(jì)器和能夠?yàn)樗隹梢暬脩艚缑嬖O(shè)計(jì)器內(nèi)創(chuàng)建的用戶界面對(duì)象生成源代碼的串行化引擎的計(jì)算機(jī)系統(tǒng),一種包括一個(gè)或多個(gè)含有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀媒質(zhì)的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)可執(zhí)行指令實(shí)現(xiàn)一種當(dāng)執(zhí)行所述一個(gè)或多個(gè)用戶界面對(duì)象的操作時(shí)更有效地串行化一個(gè)或多個(gè)用戶界面對(duì)象的方法,其特征在于,所述方法包括步驟加載一個(gè)或多個(gè)串行化提供器,所述串行化提供器的的每一個(gè)標(biāo)識(shí)用于給定對(duì)象類型和串行化格式的一個(gè)或多個(gè)串行化器;從所述一個(gè)或多個(gè)串行化提供器,標(biāo)識(shí)能夠以與將要對(duì)用戶界面對(duì)象執(zhí)行的請(qǐng)求的可視化操作相應(yīng)的串行化格式來(lái)串行化所述用戶界面對(duì)象的串行化器;以及使用所標(biāo)識(shí)的串行化器串行化所述用戶界面對(duì)象以生成所述用戶界面對(duì)象的代碼片斷而不生成類表示,以便更有效地執(zhí)行所請(qǐng)求的操作。
37.如權(quán)利要求36所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,它還包括用于協(xié)調(diào)所述一個(gè)或多個(gè)串行化提供器的步驟。
38.如權(quán)利要求36所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述一個(gè)或多個(gè)串行化提供器包括一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器,所述標(biāo)準(zhǔn)串行化提供器的每一個(gè)標(biāo)識(shí)用于標(biāo)準(zhǔn)對(duì)象類型和串行化格式的一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化器。
39.如權(quán)利要求38所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述一個(gè)或多個(gè)串行化提供器包括一個(gè)或多個(gè)自定義串行化提供器,所述自定義串行化提供器的每一個(gè)標(biāo)識(shí)用于所述一個(gè)或多個(gè)標(biāo)準(zhǔn)串行化提供器未覆蓋的一個(gè)或多個(gè)自定義對(duì)象類型或串行化格式的一個(gè)或多個(gè)自定義串行化器。
40.如權(quán)利要求39所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,在標(biāo)識(shí)所述串行化器時(shí)加載一個(gè)或多個(gè)自定義串行化提供器。
41.如權(quán)利要求36所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述串行化器是自定義串行化器。
42.如權(quán)利要求36所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述方法還包括用于維護(hù)在所述一個(gè)或多個(gè)串行化提供器之間共享的上下文信息的步驟。
43.如權(quán)利要求36所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所請(qǐng)求的可視化操作包括撤銷或重復(fù)操作。
44.如權(quán)利要求36所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所請(qǐng)求的可視化操作包括剪切、復(fù)制或粘貼操作。
45.如權(quán)利要求36所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述方法還包括步驟從所述一個(gè)或多個(gè)串行化提供器,標(biāo)識(shí)能夠以與用戶界面對(duì)象的源代碼表示相應(yīng)的串行化格式串行化所述用戶界面對(duì)象的代碼串行化器;以及使用所標(biāo)識(shí)的代碼串行化器標(biāo)識(shí)所述用戶界面對(duì)象以生成所述用戶界面對(duì)象的類表示。
46.如權(quán)利要求36所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述方法還包括步驟從所述一個(gè)或多個(gè)串行化提供器,標(biāo)識(shí)能夠以與用戶界面對(duì)象的可擴(kuò)展標(biāo)記語(yǔ)言(XML)表示相應(yīng)的串行化格式串行化所述用戶界面對(duì)象的XML串行化器;以及使用所標(biāo)識(shí)的XML串行化器串行化所述用戶界面對(duì)象以生成所述用戶界面對(duì)象的XML表示。
全文摘要
串行化具有自定義對(duì)象類型和串行化格式的用戶界面對(duì)象的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。串行化管理器可以協(xié)調(diào)標(biāo)準(zhǔn)串行化提供器來(lái)標(biāo)識(shí)用于標(biāo)準(zhǔn)對(duì)象類型或串行化格式的標(biāo)準(zhǔn)串行化器,并且如需要,可通過(guò)加載自定義串行化提供器來(lái)標(biāo)識(shí)用于標(biāo)準(zhǔn)串行化提供器未覆蓋的自定義對(duì)象類型或串行化格式的自定義串行化提供器,以對(duì)其進(jìn)行擴(kuò)充。從可用串行化提供器,串行化管理器標(biāo)識(shí)用于特定串行化格式和對(duì)象類型的串行化器。使用所標(biāo)識(shí)的串行化器來(lái)將自定義或標(biāo)準(zhǔn)對(duì)象串行化為自定義或標(biāo)準(zhǔn)格式,包括源代碼表示、XML表示等等。特定的串行化格式生成對(duì)象的代碼片斷而不生成類表示。為幫助在串行化器及其提供器之中協(xié)調(diào)并增強(qiáng)模塊性,串行化管理器可以維護(hù)并共享內(nèi)容信息。
文檔編號(hào)G06F9/44GK1609789SQ20041006281
公開(kāi)日2005年4月27日 申請(qǐng)日期2004年6月18日 優(yōu)先權(quán)日2003年6月19日
發(fā)明者B·K·佩平, S·P·伯克 申請(qǐng)人:微軟公司