Joe*_*ite 5 .net versioning serialization backwards-compatibility datacontractserializer
我正在阅读微软的最佳实践:数据合同版本控制,他们说:
不要删除更高版本中的数据成员,即使在先前版本中IsRequired属性的默认属性为false时也是如此.
任何人都可以提出任何理由吗?他们没有详细说明.由于他们说可以在以后的版本中添加数据成员,所以删除似乎也很好 - 实际上,旧版本会将其视为添加.
我想,差异在于你应该在最后添加新成员(使用DataMemberAttribute上的Order属性),而被删除的属性可能不会在最后.但是他们也说缺失的成员在加载过程中会保留默认值,所以很明显缺少的成员都可以.
我错过了什么?如果我废弃了我的产品的一个功能并删除了随其附带的[DataMember]属性,那么我将导致哪些版本 - 互操作问题(向前兼容性和向后兼容性)?
另外,如果我认为我对前向兼容性不感兴趣(即,如果我不关心旧版本打开更新的文件),那么这些问题是否仍然适用?
仅仅是因为外部服务使用者可能会提供/使用该数据(它们是在您删除某些成员之前创建的)。如果您更改了服务方法签名,由于未知的数据成员,DataContractSerializer将无法再识别。DataContract
因此,如果您的服务消费者都是已知的,那么您可以轻松地按照自己的意愿操作数据成员,只要您:
| 归档时间: |
|
| 查看次数: |
545 次 |
| 最近记录: |