回答
假設你有兩個不同的物理機器上運行兩個應用程序。這兩個應用程序都需要交換兩個應用程序通常使用的數據。這些應用程序彼此交談以與一些介質共享數據,這些介質可以是文件系統,tcp或udp連接或任何其他合適的網絡協議,或者可以是直接的內存數據交換。任何這些媒介只會理解以一系列比特形式描述的數據。因此,當一個應用程序需要向另一個應用程序發送值10時,值10將作爲其二進制表示1010發送,並且您還將傳遞一些描述1010的信息。此元信息也將是一系列的其他應用程序可以容易理解。雖然這很容易。
讓我們看另一個例子,其中這兩個應用程序需要交換更復雜的非原始數據類型。假設他們需要交換類型爲Book的對象,其中Book是應用程序中的自定義類,並且這兩個應用程序都具有Book類型的定義。
public class Book
{
Book() { }
public long BookId { get;set; }
public string Author { get;set; }
public string Title { get;set; }
}
如何在兩個應用程序之間交換類型爲book的對象?爲了能夠在兩個應用程序之間共享對象,您需要能夠將Book對象轉換爲二進制表示。這是序列化進入圖片的地方。
藉助序列化,您可以定義對象如何轉換爲其二進制表示形式。接收應用程序將執行相反的過程,即反序列化,它從二進制表示中構造一個Book對象。
沒有比維基百科更好的解釋。
在計算機科學中,在 數據存儲和傳輸的背景下, 系列化是 轉換數據結構或對象 成比特序列的過程,以便它可以 被存儲在文件或內存緩衝區, 或通過網絡傳輸 連接鏈接將被「復活」 後來在相同或另一臺計算機 環境中。
http://en.wikipedia.org/wiki/Serialization
另外,Serializable屬性不能在方法中使用。 由屬性用法
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Delegate, Inherited = false)]
問題與Wikipedia的解釋的格式是,從技術上來說,都沒有數據結構和已經對象的比特序列? – davemackey 2015-05-17 01:59:15
哦,你的意思是,他們不是,當你從高級編程語言的角度來看:-) – 2016-08-18 10:43:05
序列化表示的是將對象轉換成字節流 的過程。反序列化是 通過字節流創建對象的相反過程。
序列化/反序列化主要用於運輸 對象(例如遠程處理過程中),或持續存在的對象(例如 到文件或數據庫).Serialization可以被定義爲存儲對象的狀態的過程 一個存儲 中。在此過程中,對象的公用和專用字段 以及該類的名稱(包括包含該類的 程序集)將轉換爲 字節的流,然後將其寫入數據流。當 對象隨後被反序列化時,會創建一個原始對象的確切克隆。
序列化是所述方法,其中數據轉換數據結構或對象狀態變爲可以存儲
- 1. 從概念上講什麼是序列化和反序列化?
- 2. 學習編程語言概念
- 3. C語言中的線程概念#
- 4. || = Ruby語言中的含義是什麼?
- 5. 什麼是概念?
- 6. 編程中「上下文」概念背後的一般概念是什麼?
- 7. 「序列化」的概念
- 8. 什麼是「細化」的逆概念
- 9. 「ccout」在彙編語言中的含義是什麼?
- 10. 各種語言的關鍵編程概念和術語
- 11. ANCS:PositiveAction的概念是什麼?
- 12. 這些彙編語言語句的含義是什麼?
- 13. 小批量FCN(語義分割)的概念是什麼?
- 14. 「幻數」的概念是否從語言變爲語言?
- 15. 什麼是冒泡概念?
- 16. 關於LISP編程語言的綁定概念
- 17. 什麼是DUP的彙編語言的含義( '#')
- 18. .NET中Assembly的概念是什麼?
- 19. 「工人」的概念在編程中意味着什麼?
- 20. C語言編程,想了解一些概念
- 21. 什麼語言有「保護」關鍵字或概念?
- 22. 什麼是GPU的編程語言
- 23. 什麼是果醬的編程語言
- 24. 在$ .getJSON中「url」+「序列化表單」的含義是什麼
- 25. 這個typedef結構在C語言中的含義是什麼?
- 26. 反斜槓'\'在perl語言中的含義是什麼?
- 27. void **在C語言中的含義是什麼?
- 28. C語言中是否存在類型擦除概念?
- 29. jdbc概念中供應商數據庫庫的含義是什麼?
- 30. Web應用程序的門戶概念是什麼?
非常感謝你的完整答案。 – 2010-06-15 05:36:26