Это должно быть легко для тех, кто знаком с лучшими практиками управления версиями контрактов на обслуживание / данные.Я хочу убедиться, что я буду использовать эту версию правильно.
Итак, допустим, у нас есть контракт на обслуживание:
[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 имеет другое пространство имен, но оно может работать, если оно имеет такое же пространство имен.Тем не менее, я не знаю, что здесь лучше, и жду от кого-нибудь хорошего ответа.
Заранее спасибо!