我很困惑 - 什麼時候應該使用XML序列化,什麼時候應該在.NET框架中使用二進制序列化?什麼時候應該在.NET框架中使用XML序列化與二進制序列化?
回答
具體到.NET,如果您有正在使用的同類型系統中的兩個應用程序,那麼你可以使用二進制序列化。另一方面,如果您的應用程序位於不同平臺上,則建議使用XML序列化。所以如果我正在編寫一個聊天應用程序(客戶端和服務器),我可能會使用二進制序列化,但如果我以後決定使用Python來編寫客戶端,那麼我可能不會。
如果您在說「xml序列化」時包含Data Contract Serializer,那麼我同意你的意見。 – 2011-01-20 04:48:50
非常感謝回答 – Mahantesh 2011-01-20 05:29:12
如果您想要用戶友好型或跨平臺輸出,請使用XML。 此外,XML序列化使用公共字段和屬性進行序列化,並且如果您想使用屬性和類級別的自定義序列化,則可以更改/重新格式化輸出。 Bin.Ser。使用專用字段進行序列化。
這兩個現有答案都關注「跨平臺」,但這是一個無關緊要的問題。他們在那裏做的是「如果你正在做跨平臺,不要使用BinaryFormatter
」 - 我完全支持這一點。然而,有一系列的二進制序列化格式,其中很多都是跨平臺 - protobuf/ASN.1是最好的例子。
所以,讓我們來看看每個人都能提供什麼;
- 二進制通常是較小的,典型地更快地處理(在兩端),並且不容易人類可讀/可編輯的
- 文本格式(XML/JSON)往往比二進制更詳細的(儘管通常壓縮以及),但很容易手工操作;但所有的文字處理的映射往往使他們慢
- XML是很常見的網絡服務,並從中受益gooling支持,如XSD,XSLT和強大的XML編輯器
- JSON是在瀏覽器中的主要球員基於通訊科(雖然它是在網絡服務中使用) - 往往是不太正規,但還是很有效的
注意的互操作性如何既不是力量也不是任何弱點,只要你選擇適當的二進制格式!
Here's an answer比較大多數.NET序列化程序的序列化時間,反序列化和空間度量,供您參考。
- 1. 爲什麼二進制序列化比xml序列化更快?
- 2. 什麼時候應該使用JSON序列化,爲什麼?
- 3. C# - XML反序列化與二進制反序列化與二元期權+ Deflate
- 4. 二進制序列化與使用WCF
- 5. 二進制序列化/反序列化
- 6. 序列化 - 反序列化(二進制)
- 7. 爲什麼XML序列化建議通過SOAP和二進制序列化?
- 8. 使用C#進行二進制Plist序列化/反序列化#
- 9. Java:序列化/反序列化到XML /而不是二進制
- 10. 哪個更好二進制序列化或XML序列化?
- 11. .net二進制序列化 - 選項
- 12. Unity如何使用二進制序列化器序列化Vector3
- 13. 什麼時候應該/不應該在Spark中序列化一個類?
- 14. 在.NET 4.6中,二進制序列化速度很慢(有時候)4.6
- 15. 使用.NET序列化XML序列化到.NET類
- 16. .NET XML序列化
- 17. .NET XML序列化
- 18. 二進制序列化與應用程序設置(user.config)
- 19. Parallel.ForEach中的二進制序列化/反序列化(BinaryFormatter)
- 20. Java序列化與.NET序列化
- 21. 二進制序列化與JSON與xml的比較
- 22. 隔離級別 - 可序列化。我應該什麼時候使用這個?
- 23. 二進制序列化到列表
- 24. 列表的二進制(反)序列化
- 25. 緊湊框架的二進制序列化3.5
- 26. node.js的二進制序列化框架或庫
- 27. 穀物二進制歸檔序列化/反序列化
- 28. XML序列化 - 當要使用的DataContractSerializer /二進制/ XMLSerialiser
- 29. WCF中的二進制序列化NetTCPBinding
- 30. 爲什麼.NET中的Web服務使用XML序列化程序而不是SOAP序列化程序?
當你想要二進制文件時使用二進制序列化?混淆在哪裏? – 2011-01-20 04:36:48
只是想要?或任何應該情況? – 2014-01-05 10:16:30