.NET中的一些東西被稱爲「格式化程序」 - BinaryFormatter
,SoapFormatter
。「格式化程序」和「序列化程序」 - 術語之間的任何區別?
其他被稱爲「串行器」 - XmlSerializer
,DataContractSerializer
。
爲什麼區別?
.NET中的一些東西被稱爲「格式化程序」 - BinaryFormatter
,SoapFormatter
。「格式化程序」和「序列化程序」 - 術語之間的任何區別?
其他被稱爲「串行器」 - XmlSerializer
,DataContractSerializer
。
爲什麼區別?
有點脆弱,但有一個微妙的區別。 .NET框架中有17個具體類用於格式化XML。這些格式化程序全部隱藏起來,您可以使用像XmlWriter.Create()這樣的方法獲得實例。 DataContractSerializer也是如此,實際的格式是由XmlDictionaryWriter實例完成的。
對BinaryFormatter或SoapFormatter沒有這樣的間接尋址,他們自己處理格式。換句話說,格式化程序格式,序列化程序使用格式化程序。
在格式化的差異是關鍵 - 的BinaryFormatter因爲它表明,該數據在本機二進制的方式,而SoapFormatter是XML文本的方式,扔在不同方式的序列化實際上是依賴於格式化程序的類型,使用BinaryFormatter的二進制數據往往比肥皂格式化程序小得多並且速度更快。
正是出於這個原因,如果你想採取一個「內存轉儲」這是更好地使用的BinaryFormatter和序列化/反序列化了,在數據互操作不同架構之間的成本 - 這意味着它可能不兼容如果更換不同的平臺,但更快的處理速度之間的數據...
而與SoapFormatter它是從這樣的二進制不兼容的保護,因爲它基於Unicode或ASCII是文本,但相對很慢!
有趣。我在哪裏可以閱讀關於格式化XML的17個類? – 2010-09-09 15:33:15
他們沒有記錄。但你可以用Reflector看到它們。 – 2010-09-09 15:45:43