爲什麼我們需要使用序列化?
如果我們想通過網絡發送一個對象或一段數據我們可以使用字節流。
如果我們想保存一些數據到磁盤我們可以再次使用二進制模式和字節流並保存。
那麼使用序列化的優點是什麼?我們爲什麼要使用序列化?
回答
技術上的低級別,你的序列化對象也將最終成爲你的電纜或文件系統的字節流...
所以你也可以認爲它作爲將對象轉換爲字節流的標準化且已經可用的方式。存儲/傳輸對象是一個非常普遍的需求,在每個應用程序中重新發明這個輪子意義不大或沒有多大意義。正如其他人所提到的,你也知道這個object-> stream_of_bytes實現是相當健壯的,經過測試的,並且通常與體系結構無關。
這並不意味着它是保存或傳輸對象的唯一可接受的方式:在某些情況下,您必須實現自己的方法,例如避免保存不必要的/私有成員(例如安全性或性能原因)。但是,如果您處於一個簡單的情況,您可以通過使用框架,語言或虛擬機的序列化/反序列化而不必自己實現它來讓生活更輕鬆。
希望這會有所幫助。
在通用化,系列化是堅持一個對象的狀態的方法,但我建議你閱讀本wiki頁面,這是很詳細,正確的在我看來:
我得到了*什麼是序列化。我認爲OP和我都想知道什麼是一個**示例**,它會有用 –
它用於在網絡上傳輸數據包,因爲每一邊都可能有一臺具有不同架構的機器。 – MCG
除其他原因在架構之間兼容。一個整數的字節數不是從一個架構到另一個架構,有時從一個編譯器到另一個編譯器。
再加上你在談論的仍然是序列化。二進制序列化。您將對象的所有字節放在一起以便存儲它們,並能夠稍後將它們重新轉換爲對象。這是序列化。
更多信息on wikipedia
序列化是將對象轉換爲流的過程,以便它可以保存在任何物理文件(如XML)中或可以保存在數據庫中。在C#中序列化的主要目的是保持一個對象並將其保存在任何指定的存儲介質中,如流,物理文件或數據庫。
- 1. 爲什麼我們需要序列化的Web服務
- 2. 爲什麼我們要使用HttpContext.Current?
- 3. 爲什麼我們需要使用prompt.start()?
- 4. 我們爲什麼要使用NSOperationQueue?
- 5. 爲什麼我們需要使用ExitWindowsEx
- 6. 裝配需要什麼?爲什麼我們使用它們?
- 7. 我們爲什麼要放?
- 8. 爲什麼我們不需要實現Serializable來序列化爲xml
- 9. 在什麼情況下我們需要使用gson來反序列化領域?
- 10. 爲什麼我們需要瞬態關鍵字來防止序列化? [Java]
- 11. 我們爲什麼需要,使用貓鼬有什麼好處
- 12. 模型中有什麼?爲什麼我們需要使用它
- 13. 爲什麼序列化對象需要序列化
- 14. 爲什麼我們檢查散列,如果我們要檢查等於什麼?
- 15. 爲什麼我們不能序列化這些對象?
- 16. 我們爲什麼要使用`realloc`如果我們需要一個'TMP buffer`
- 17. 爲什麼我們在使用iframe時要使用母版頁?
- 18. 爲什麼我的異常類需要序列化?
- 19. 爲什麼我甚至需要首先序列化?
- 20. 什麼是仿函數,爲什麼我們需要它們?
- 21. 什麼是EJB回調,爲什麼我們需要它們?
- 22. 爲什麼我們需要爲每個線程使用NSAutoreleasepool?
- 23. 我們爲什麼要在FRP中使用行爲
- 24. 爲什麼我無法使用DataContractSerializer序列化對象?
- 25. 爲什麼我們需要simple_one_for_one?
- 26. 爲什麼我們需要TensorFlow tf.Graph?
- 27. 我們爲什麼要取物體?
- 28. 爲什麼我們需要scalaz.stream迭代?
- 29. 爲什麼我們需要WCF
- 30. 我們爲什麼要這樣做。
序列化*是*'字節流'。 – EJP