C 序列化技術詳解

2021-05-23 12:18:44 字數 2671 閱讀 1235

序列化和反序列化我們可能經常會聽到,其實通俗一點的解釋

,序列化就是把乙個物件儲存到乙個檔案或資料庫欄位中去,反序列化就是在適當的時候把這個檔案再轉化成原來的物件使用。

序列化和反序列化最主要的作用有:

1、在程序下次啟動時讀取上次儲存的物件的資訊

2、在不同的

或程序之間傳遞資料

3、在分布式應用系統中傳遞資料

......在c#

中常見的序列化的方法主要也有三個:

binaryformatter

、soapformatter

、xml

序列化本文就通過乙個小例子主要說說這三種方法的具體使用和異同點

這個例子就是使用三種不同的方式把乙個

book

物件進行序列化和反序列化,當然這個

book

類首先是可以被序列化的。

book

類這個模擬較簡單,就是定義了一些

public

欄位和乙個可讀寫的屬性,乙個

private

字段,乙個標記為

[nonserialized]

的字段,具體會在下面的例子中體現出來

一、binaryformatter序列化方式

1、序列化,就是給

book

類賦值,然後進行序列化到乙個檔案中 2

、反序列化 3

、測試用的

binaryserialize

類主要就是呼叫

system.runtime.serialization.formatters.binary

空間下的

binaryformatter

類進行序列化和反序列化,以縮略型二進位制格式寫到乙個檔案中去,速度比較快,而且寫入後的檔案已二進位制儲存有一定的保密效果。

呼叫反序列化後的截圖如下:

也就是說除了標記為

nonserialized

的其他所有成員都能序列化

二、soapformatter序列化方式

呼叫序列化和反序列化的方法和上面比較類似,我就不列出來了,主要就看看

soapserialize

類soapserialize

類主要就是呼叫

system.runtime.serialization.formatters.soap

空間下的

soapformatter

類進行序列化和反序列化,使用之前需要應用

system.runtime.serialization.formatters.soap.dll

(.net

自帶的)

序列化之後的檔案是

soap

格式的檔案

(簡單物件訪問協議(

****** object access protocol

,soap

),是一種輕量的、簡單的、基於

xml的協議,它被設計成在

web上交換結構化的和固化的資訊。

soap

可以和現存的許多網際網路協議和格式結合使用,包括超文字傳輸協議(

),簡單郵件傳輸協議(

smtp

),多用途網際郵件擴充協議(

mime

)。它還支援從訊息系統到遠端過程呼叫(

rpc)等大量的應用程式。

soap

使用基於

xml的資料結構和超文字傳輸協議

的組合定義了乙個標準的方法來使用

internet

上各種不同操作環境中的分布式物件。

)呼叫反序列化之後的結果和方法一相同

三、xml序列化方式

呼叫序列化和反序列化的方法和上面比較類似,我就不列出來了,主要就看看

xmlserialize

類xmlserialize類

從這三個測試類我們可以看出來其實三種方法的呼叫方式都差不多,只是具體使用的類不同

xml序列化之後的檔案就是一般的乙個

xml檔案:

book.xml

也就是說採用xml序列化的方式只能儲存public的字段和可讀寫的屬性,對於private等型別的字段不能進行序列化

關於迴圈引用:

比如在上面的例子

book

public book relationbook;

在呼叫序列化時使用如下方法:

這樣就會出現迴圈引用的情況,對於

binaryserialize

和soapserialize

可以正常序列化

(.net

內部進行處理了

),對於

xmlserialize

出現這種情況會報錯:"序列化型別serializabletest.book的物件時檢測到迴圈引用。"

C 序列化技術

一 binaryformatter序列化 序列化簡單點來理解就是把記憶體的東西寫到硬碟中 當然也可以寫到記憶體中 這個內容我會在後面寫乙個例子 而反序列化就是從硬碟中把資訊讀到記憶體中 就這麼簡單,呵呵 現在來看下面的例子吧 在這篇文章中我將使用 binaryformatter 序列化類 book ...

序列化與反序列化技術

將記憶體中的臨時資料,儲存到本地硬碟的技術 持久化之後,即使程式重啟,也不會造成資料的丟失和重置 建立student集合 list stus newarraylist stus.add newstudent 1 小馬 16 stus.add newstudent 2 小菜 16 stus.add n...

C 中的序列化和反序列化詳解

序列化和反序列化,我們可能經常會聽到,其實通俗一點的解釋,序列化就是把乙個物件儲存到乙個檔案或資料庫欄位中去,反序列化就是在適當的時候把這個檔案再轉化成原來的物件使用。1 在程序下次啟動時讀取上次儲存的物件的資訊 3 在分布式應用系統中傳遞資料 常見的序列化的方法 1 binaryformatter...