Dot-Net
將 DataMember 添加到 WCF 中的現有 DataContract
我想
DataMember在我的一個DataContracts 中添加一個。我想知道DataMember如果其中一方未更新,現有伺服器和客戶端在新的存在下將如何表現。我記得有一種方法可以
DataMember選擇,但我想知道它是否適用於所有場景:
- 更新客戶端 => 舊伺服器
- 舊客戶端 => 更新的伺服器
- 更新的客戶端 <= 舊伺服器
- 舊客戶端 <= 更新伺服器
WCF 將優雅地處理它無法辨識的新成員。合約的消費者(在客戶端或伺服器端)根本不會“看到”該成員,因此結果是新成員永遠不應該是一個
IsRequired=true屬性。此外,只要 DataContract 實現,WCF 就會透明地橋接組件之間的新屬性
IExtensibleDataObject。EG,如果消息路徑是:更新的客戶端 => 舊伺服器 => 更新的伺服器
那麼鏈末端的更新伺服器仍然會看到新的 DataMember。但是,“舊伺服器”不會看到新的 DataMember。
如果舊伺服器向更新的客戶端發送消息,則新的 DataMember 將
default(type)在新客戶端的反序列化時設置為。這裡有更多關於DataContract 版本控制的最佳實踐。