WCF-合同版本控制(例如)
-
26-10-2019 - |
题
对于熟悉版本服务/数据合同的最佳实践的人来说,这应该很容易。我想确保以正确的方式使用此版本。
因此,假设我们有一份服务合同:
[ServiceContract(Namespace="http://api.x.com/Svc1")]
public interface IService1
{
[OperationContract(Name = "AddCustomer")]
bool AddCustomer(DTOCustomer1 customer);
}
和数据合同:
[DataContract(Name="Customer", Namespace="http://api.x.com/Svc1/2011/01/DTO")]
public class DTOCustomer1
{
[DataMember(Name="Name")]
public string Name { ... }
}
如果我真的需要将后者更改为其他东西:(以下是示例)
[DataContract(Name="Customer", Namespace="http://api.x.com/Svc1/2012/01/DTO")]
public class DTOCustomer2
{
[DataMember(Name="Name")]
public string Name { ... }
[DataMember(Name="Address")]
public DTOAddress Address { ... }
}
...那么我该如何使用服务中的dtocustomer2而不是dtocustomer1,以使新客户和新客户都合规?在这种情况下,建议什么?我的服务合同会改变吗? AFAIK我不需要更改服务合同。服务合同将如何?我需要一个新的终点吗?我需要使用新的数据合同使用新数据合同吗?
edit1:简单地改变
bool addcustomer(dtocustomer1客户);
进入
bool addcustomer(dtocustomer2客户);
会做?
edit2:回答edit1是 不, ,由于dtocustomer2具有不同的名称空间,但是如果它具有相同的名称空间,则可能起作用。我仍然不知道这里最好的事情是什么,希望有人提出一个很好的答案。
先感谢您!
解决方案
我最终在这里的另一个问题的帮助下回答了这个问题: WCF-处理版本
其他提示
不隶属于 StackOverflow