共用方式為


串行化 (Visual Basic)

串行化是將物件轉換成位元組數據流的程式,以便儲存物件或將它傳輸至記憶體、資料庫或檔案。 其主要目的是儲存物件的狀態,以便在需要時重新建立它。 反向程序稱為還原串行化。

串行化的運作方式

此插圖顯示序列化的整體過程。

串行化圖形

物件會串行化為數據流,該數據流不僅包含數據,而且包含物件類型的相關信息,例如其版本、文化特性和元件名稱。 從該數據流中,它可以儲存在資料庫、檔案或記憶體中。

序列化的應用

串行化可讓開發人員儲存物件的狀態,並視需要重新建立它,以提供對象的儲存以及數據交換。 透過串行化,開發人員可以執行動作,例如透過 Web 服務將對象傳送至遠端應用程式、將物件從某個網域傳遞至另一個網域、將對象傳遞至防火牆做為 XML 字串,或維護跨應用程式的安全性或使用者特定資訊。

JSON 序列化

System.Text.Json命名空間包含 JavaScript 物件表示法 (JSON) 串行化和還原串行化的類別。 JSON 是一種開放標準,通常用於跨 Web 共用數據。

JSON 串行化會將物件的公用屬性串行化為符合 RFC 8259 JSON 規格的字串、位元組數位或數據流。 若要控制類別實例的串行化或還原串行化方式JsonSerializer,您可以使用下列一種或多種方法:

二進位和 XML 串行化

命名空間 System.Runtime.Serialization 包含二進位和 XML 串行化和還原串行化的類別。

在二進位序列化中,即使是只讀成員,也會被序列化,因此效能得到了提升。 XML 串行化提供更易讀的程式代碼,以及為了互作性用途,對象共用和使用方式的更大彈性。

警告

使用 BinaryFormatter 的二進位串行化可能很危險。 如需詳細資訊,請參閱 BinaryFormatter 安全性指南BinaryFormatter 移轉指南

使物件可串行化

若要使用二進位或 XML 串行化來序列化物件,您需要提供要序列化的物件、存放序列化物件的資料流,以及FormatterSystem.Runtime.Serialization 包含串行化和還原串行化物件所需的類別。

SerializableAttribute 屬性套用至類型,以指出此類型的實例可以串行化。 當您嘗試串行化但類型缺少SerializationException屬性時,會擲回SerializableAttribute例外狀況。

如果您不希望類別內的欄位可串行化,請套用 NonSerializedAttribute 屬性。 如果可串行化類型的欄位包含指標、句柄或其他特定環境特定的其他數據結構,而且該欄位不能在不同的環境中有意義地重新建構,則您可能想要讓它不可串行化。

如果串行化類別包含標記 SerializableAttribute之其他類別對象的參考,這些物件也會串行化。

二進位串行化

二進位串行化會使用二進位編碼來產生精簡串行化,以用於記憶體或套接字型網路數據流。

XML 串行化

XML 串行化會將物件的公用欄位和屬性,或參數和方法的傳回值串行化為符合特定 XML 架構定義語言 (XSD) 檔案的 XML 數據流。 XML 序列化將生成強型別類別,這些類別包含轉換為 XML 的公用屬性和欄位。 System.Xml.Serialization 包含串行化和還原串行化 XML 所需的類別。

您可以將屬性套用至類別及其成員,以控制 XmlSerializer 序列化或反序列化類別的實例的方式。

基本和自定義串行化

二進位和 XML 串行化可以透過兩種方式執行:基本和自定義。 基本串行化會使用 .NET 自動串行化 物件。

基本序列化的唯一要求是物件已經套用屬性 SerializableAttributeNonSerializedAttribute可用來防止特定欄位串行化。

當您使用基本串行化時,物件的版本設定可能會造成問題,在此情況下,自定義串行化可能比較好。 基本串行化是執行串行化的最簡單方式,但它不會對程式提供太多控制權。

在自定義串行化中,您可以確切指定要串行化哪些物件,以及其完成方式。 類別必須標示 SerializableAttribute 並實作 ISerializable 介面。 如果您希望物件以自定義方式進行反序列化,則必須使用自定義建構函式。

設計者序列化

設計工具串行化是一種特殊的串行化形式,涉及通常與開發工具相關聯的對象持續性類型。 設計階段的序列化是將物件圖形轉換成來源檔案的過程,稍後可用來復原物件圖形。 原始程式檔可以包含程式代碼、標記,甚至是 SQL 資料表資訊。

相關文章

如何:從 XML 檔案讀取物件資料 (Visual Basic)
示範如何使用 類別讀取先前寫入 XML 檔案 XmlSerializer 的對象數據。

如何:將物件數據寫入 XML 檔案 (Visual Basic)
示範如何使用 XmlSerializer 類別將物件從一個類別寫入 XML 檔案。