繁体   English   中英

将DataMember添加到WCF中的现有DataContract

[英]Adding a DataMember to an existing DataContract in WCF

我想将DataMember添加到我的一个DataContract 我想知道如果其中一方未更新,现有服务器和客户端将在新DataMember存在时的行为。

我记得有一种方法可以使DataMember可选,但我想知道它是否适用于所有场景:

  • 更新了Client => old Server
  • 旧客户端=>更新服务器
  • 更新的客户端<=旧服务器
  • 旧客户端<=已更新服务器

WCF将优雅地处理它无法识别的新成员。 合同的消费者(在客户端或服务器端)根本不会“看到”该成员,因此结果是新成员永远不应该是IsRequired=true属性。

此外,只要DataContract实现了IExtensibleDataObject ,WCF就会透明地桥接组件之间的新属性。 EG,如果消息路径是:

更新的客户端=>旧服务器=>更新的服务器

然后,链末端的更新服务器仍将看到新的DataMember。 但是,“旧服务器”不会看到新的DataMember。

如果旧服务器向更新的客户端发送消息,则在新客户端中反序列化时,新DataMember将设置为default(type)

这里有更多关于DataContract版本控制的最佳实践

本文讨论了Breaking和Non-Breaking更改之间的区别

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM