2010-09-09 58 views
1

This question在解釋串行器之間的功能方面做得很好。 BinaryFormatter很快,XmlSerializer可互操作等。我知道這一點。FCL中的序列化程序之間的意圖有什麼區別?

intent有什麼區別?每個班級設計的用例是什麼?

特別是:

  • 他們爲什麼決定要XmlSerializer盲目的私人數據,當BinaryFormatter看到它足夠快(通過所謂慢反射)
  • 爲什麼他們讓3個獨立的XML序列化 - XmlSerializer,SoapFormatterDataContractSerializer
  • 爲什麼選擇加入和選擇退出?
  • 他們爲什麼使界面如此不一致?例如。 XmlSerializer不提供OnDeserializedCallback等價物。另一個示例 - XmlSerializer使用IsNullable[XmlIgnore],BinarySerializer使用的是[OptionalField][NonSerialized]

回答

0

XML序列化用於創建特定的XML結構,並允許您更改對象序列化的方式 - XMl的外觀(如果使用屬性或節點等)。

二進制序列化「看到」私有成員,因爲它只是將對象的內存結構寫入並將其寫入磁盤。速度非常快,但無法互操作,尤其是在對象結構略有不同的情況下(例如試圖反序列化較舊二進制文件的新版應用程序)。

SoapFormatter和DataContractSerializer用於.NET組件之間的通信,通常是分層應用程序 - 在WCF中使用DataContractSerializer,而在較早的SOAP實用程序中使用SoapFormatter。

相關問題