2012-09-07 43 views
22

爲什麼我們需要使用序列化?
如果我們想通過網絡發送一個對象或一段數據我們可以使用字節流。
如果我們想保存一些數據到磁盤我們可以再次使用二進制模式和字節流並保存。
那麼使用序列化的優點是什麼?我們爲什麼要使用序列化?

+6

序列化*是*'字節流'。 – EJP

回答

22

技術上的低級別,你的序列化對象也將最終成爲你的電纜或文件系統的字節流...

所以你也可以認爲它作爲將對象轉換爲字節流的標準化且已經可用的方式。存儲/傳輸對象是一個非常普遍的需求,在每個應用程序中重新發明這個輪子意義不大或沒有多大意義。正如其他人所提到的,你也知道這個object-> stream_of_bytes實現是相當健壯的,經過測試的,並且通常與體系結構無關。

這並不意味着它是保存或傳輸對象的唯一可接受的方式:在某些情況下,您必須實現自己的方法,例如避免保存不必要的/私有成員(例如安全性或性能原因)。但是,如果您處於一個簡單的情況,您可以通過使用框架,語言或虛擬機的序列化/反序列化而不必自己實現它來讓生活更輕鬆。

希望這會有所幫助。

2

在通用化,系列化是堅持一個對象的狀態的方法,但我建議你閱讀本wiki頁面,這是很詳細,正確的在我看來:

http://en.wikipedia.org/wiki/Serialization

+0

我得到了*什麼是序列化。我認爲OP和我都想知道什麼是一個**示例**,它會有用 –

+0

它用於在網絡上傳輸數據包,因爲每一邊都可能有一臺具有不同架構的機器。 – MCG

9

除其他原因在架構之間兼容。一個整數的字節數不是從一個架構到另一個架構,有時從一個編譯器到另一個編譯器。

再加上你在談論的仍然是序列化。二進制序列化。您將對象的所有字節放在一起以便存儲它們,並能夠稍後將它們重新轉換爲對象。這是序列化。

更多信息on wikipedia

3

序列化是將對象轉換爲流的過程,以便它可以保存在任何物理文件(如XML)中或可以保存在數據庫中。在C#中序列化的主要目的是保持一個對象並將其保存在任何指定的存儲介質中,如流,物理文件或數據庫。

相關問題