C# 在WCF合同中标记不推荐的字段

C# 在WCF合同中标记不推荐的字段,c#,wcf,deprecated,datacontract,C#,Wcf,Deprecated,Datacontract,我有一份与客户v1合作的wcf合同 现在我正在处理服务v2,我想将一些字段标记为已弃用,这样客户端v1将看到并使用它们,客户端v2将忽略它们 是否有针对此问题的最佳做法?WCF中是否有我应该使用的现有属性 谢谢。您可以将旧属性装饰为[过时],但只有当它们使用DLL引用而不是服务/web引用(WSDL)时,客户端才会看到它们[过时]装饰将不会传递给使用WSDL生成代理的客户端 就WCF版本控制而言,一旦发布了接口,就不能删除任何方法,或者就契约而言,就不应该删除任何属性。如果希望新客户端使用DTO

我有一份与客户v1合作的wcf合同

现在我正在处理服务v2,我想将一些字段标记为已弃用,这样客户端v1将看到并使用它们,客户端v2将忽略它们

是否有针对此问题的最佳做法?WCF中是否有我应该使用的现有属性


谢谢。

您可以将旧属性装饰为
[过时]
,但只有当它们使用DLL引用而不是服务/web引用(WSDL)时,客户端才会看到它们<代码>[过时]装饰将不会传递给使用WSDL生成代理的客户端

就WCF版本控制而言,一旦发布了接口,就不能删除任何方法,或者就契约而言,就不应该删除任何属性。如果希望新客户端使用DTO类,可以发布新接口并创建单独的DTO类


参考:.

在我们这方面,我们通常通过名称空间对操作进行版本设置。当一个操作被弃用时,我们只是在描述中添加一个弃用注释,客户机可以通过wsdl看到该注释。我们通知我们的客户,并让他们知道不推荐的操作及其到期日期。

我同意@Aliostad的观点,即您一般不应该从服务合同中删除操作,因为它引入了破坏性的更改,因此应在单一版本的API中避免

但是,如果您想将一些计划的更改通知客户机/消费者,或者有任何其他需要将某些“额外”信息添加到操作契约中,则可以查看接口,创建实现该接口的自定义属性,并注释特定操作


您可以查看以获取详细参考。

不推荐的]是您创建的自定义属性,对吗?对不起,我是说
[obsoltte]
。更正了。[过时]不会给我留下支持v1的选项