專利名稱:外部序列化和去序列化的制作方法
技術領域:
本發(fā)明涉及外部序列化和去序列化。
背景技術:
序列化和去序列化便于數(shù)據(jù)存儲和傳輸。序列化是將對象或一組對象(也稱為 對象圖)轉(zhuǎn)換成有助于在計算機可讀介質(zhì)上存儲或在通信網(wǎng)絡上傳輸?shù)母袷?例如二進制、XML (可擴展標記語言)、JSON (JavaScript對象符號)......)的進程。去序列化是將序列化的對象或一組對象重構為相同或語義上等效的格式的進程。序列化也稱為緊縮或編組, 相反,去序列化也被稱為膨脹或解組。
編程語言通常提供支持對象序列化和去序列化的機制。例如,可實現(xiàn)接口或可指定自定義屬性,等等。因此,對象可被編寫成能提供序列化和去序列化。換言之,在設計期間定義對象時,考慮序列化和去序列化。發(fā)明內(nèi)容
下面呈現(xiàn)了簡化的發(fā)明內(nèi)容,以便提供對所公開主題的某些方面的基本概念。本發(fā)明內(nèi)容不是廣泛性的概觀。它并不旨在標識關鍵/重要元素,也不旨在劃定所要求保護主題的范圍。其唯一目的是以簡化形式呈現(xiàn)一些概念,作為稍后呈現(xiàn)的更具體實施例的序言。
簡言之,本發(fā)明涉及外部序列化和去序列化,更一般地涉及外部變換。設計時不支持序列化和去序列化的對象可在外部被序列化和去序列化(例如相對于相應的對象模型)。 換言之,對象模型的對象的序列化和去序列化是在不進行警告或以其它方式影響原始相應類型的情況下完成的。序列化和去序列化函數(shù)可從開發(fā)者處獲得,和/或被自動發(fā)現(xiàn)或推斷出??杀闅v對象圖,并基于對象元數(shù)據(jù)選擇和(例如遞歸地)執(zhí)行適當?shù)男蛄谢瘮?shù)。隨后,可基于序列化的對象元數(shù)據(jù)來定位去序列化函數(shù),并應用該去序列化函數(shù)以將序列化的數(shù)據(jù)去序列化。根據(jù)一個特定方面,序列化可以是可配置的,以允許各種程度的細節(jié)被序列化并隨后被去序列化。
為實現(xiàn)上述及相關目的,在此結合以下描述和附圖描述了所要求保護主題的某些說明性方面。這些方面指示可實踐本主題的各種方式,它們均落在所要求保護主題的范圍之內(nèi)。當結合附圖閱讀以下詳細描述時,本發(fā)明的其他優(yōu)點和新穎特征將變得顯而易見。
圖I是外部序列化/去序列化系統(tǒng)的框圖。
圖2是代表性的序列化組件的框圖。
圖3示出用于循環(huán)檢測的上下文的使用。
圖4是代表性的去序列化組件的框圖。
圖5示出示例性的序列化和去序列化場景。
圖6是序列化的方法的流程圖。
圖7是序列化的方法的流程圖。
圖8是便于序列化和去序列化的方法的流程圖。
圖9是去序列化的方法的流程圖。
圖10是示出用于本公開各方面的合適操作環(huán)境的示意性框圖。
具體實施方式
以下細節(jié)一般涉及數(shù)據(jù)變換,包括但不限于序列化和去序列化。常規(guī)地,對象圖的序列化假設封閉世界模型,在該模型中,對象已被編寫成使得可提供序列化和去序列化。這可包括使用自定義屬性或?qū)崿F(xiàn)接口,等等。換言之,開發(fā)者作出有意識的決定,以允許默認的不可序列化的類型或?qū)ο蟮膶嵗杀恍蛄谢?。如果想要對設計時未考慮序列化(或者換言之,缺少如通常需要的對于對象模型的序列化和去序列化的支持)的類型進行序列化和去序列化,則會產(chǎn)生問題。為了解決此問題,可采用開放世界模型,相對于對象模型,開放世界模型執(zhí)行外部序列化。換言之,對象模型的對象的序列化是在不進行警告或以其它方式影響原始相應類型的情況下完成的。例如,可發(fā)現(xiàn)關于對象的元數(shù)據(jù),并利用元數(shù)據(jù)來產(chǎn)生和/或選擇對該對象進行序列化或去序列化的函數(shù)。
為了便于清楚和理解,在序列化和去序列化的情境下描述了本公開的諸方面。然而,本主題不限于此。更一般地,諸方面涉及利用函數(shù)和反函數(shù)的類型之間的變換。這意味著類型“A”可被轉(zhuǎn)換成類型“B”,并從類型“B”轉(zhuǎn)換回類型“A”。更具體地,整數(shù)可被變換成串,并從串變換回整數(shù)。這就像將第一類型植入第二類型,并允許第一類型被恢復。一種使用情況是序列化和去序列化,但可以存在其它使用情況,包括出于兼容性目的在對象模型之間的轉(zhuǎn)換,等等。
現(xiàn)在參考附圖更詳細地描述本發(fā)明的各個方面,在全部附圖中用相似的標記來指示相似或相應的元素。然而應該理解,附圖及其相關詳細描述不旨在將所要求保護的主題限于所公開的具體形式。相反,其意圖是覆蓋落在所要求保護主題的精神和范圍之內(nèi)的所有修改、等價物和替換的方案。
最初參考圖1,示出了外部序列化/去序列化系統(tǒng)100。系統(tǒng)100包括配置成將對象進行序列化的序列化組件110和配置成將對象進行去序列化的去序列化組件120。更具體地,序列化組件110被配置成接收、檢索、或以其他方式獲得或獲取對象圖112 (也稱為, 原始對象圖),并在函數(shù)結構140的輔助下將對象圖112轉(zhuǎn)換成序列化數(shù)據(jù)130,對象圖112 包括多個對象和它們的關系。隨后,去序列化組件120可接收、檢索或以其它方式獲得或獲取已序列化的數(shù)據(jù)130,并在函數(shù)結構140的輔助下將其變換成去序列化的對象圖122。
除了提供常規(guī)的序列化功能,序列化組件110被擴展以支持對象的外部序列化, 其中對象類型在設計時未考慮序列化。在該情況下,類型可超出序列化方的控制,因此,在事后改變類型以支持序列化會是不可能的。如將在下文進一步詳細描述地,序列化組件110 可發(fā)現(xiàn)與對象有關的元數(shù)據(jù)(例如,屬性),并至少部分地基于元數(shù)據(jù)來產(chǎn)生和/或選擇序列化函數(shù)。更具體地,序列化組件Iio可相對于函數(shù)結構140來產(chǎn)生和/或選擇序列化函數(shù), 并應用所選的函數(shù)以將對象轉(zhuǎn)換成序列化形式。
函數(shù)結構140存儲用于序列化和去序列化的函數(shù)和反函數(shù)。盡管不限于此,但函數(shù)結構可被具體化為規(guī)則表以及相關的序列化和去序列化函數(shù),如以下表I中提供
權利要求
1.一種外部變換的方法,包括 采用至少一個處理器(1020),所述處理器被配置來執(zhí)行存儲在存儲器(1030)中的計算機可執(zhí)行指令以執(zhí)行以下動作 基于所發(fā)現(xiàn)的與構成對象圖的一個或多個對象有關的元數(shù)據(jù),在相應的對象模型外部將對象圖從第一形式變換為第二形式。
2.如權利要求I所述的方法,其特征在于,還包括利用與對象類型相關聯(lián)的函數(shù)來變換所述一個或多個對象中的一個。
3.如權利要求2所述的方法,其特征在于,還包括從往返函數(shù)來確定所述函數(shù)。
4.如權利要求2所述的方法,其特征在于,還包括基于反映信息來確定所述函數(shù)。
5.如權利要求2所述的方法,其特征在于,還包括基于壓縮函數(shù)來選擇所述函數(shù)。
6.—種序列化系統(tǒng)(100),包括 耦合到存儲器(1030)的處理器(1020),所述處理器(1020)被配置來執(zhí)行存儲在所述存儲器(1030)中的以下計算機可執(zhí)行組件 第一組件(110),被配置成基于所發(fā)現(xiàn)的與對象圖的一個或多個對象有關的元數(shù)據(jù),在相應的對象模型外部將所述對象圖序列化。
7.如權利要求6所述的系統(tǒng),其特征在于,還包括第二組件,被配置成利用對象類型對所述一個或多個對象中的至少一個加標簽。
8.如權利要求6所述的系統(tǒng),其特征在于,所述第一組件進一步被配置成基于對象類型來調(diào)用序列化函數(shù)。
9.如權利要求6所述的系統(tǒng),其特征在于,還包括第二組件,被配置成對所述元數(shù)據(jù)的至少一部分進行序列化。
10.如權利要求6所述的系統(tǒng),其特征在于,所述對象圖是查詢表達式的表示。
全文摘要
本發(fā)明提供了用于外部序列化和去序列化的方法和系統(tǒng)??苫谒l(fā)現(xiàn)的與對象圖的對象有關的元數(shù)據(jù),在相應的對象模型外部將對象圖從第一形式變換為第二形式。在一個實例中,變換可對應于序列化和去序列化。
文檔編號G06F9/44GK102981841SQ20121044235
公開日2013年3月20日 申請日期2012年11月7日 優(yōu)先權日2011年11月8日
發(fā)明者B·德斯梅特, H·J·M·梅杰 申請人:微軟公司