WCF - версия контрактов (на примере) - PullRequest
2 голосов
/ 10 января 2012

Это должно быть легко для тех, кто знаком с лучшими практиками управления версиями контрактов на обслуживание / данные.Я хочу убедиться, что я буду использовать эту версию правильно.

Итак, допустим, у нас есть контракт на обслуживание:

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

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 11 января 2012

В итоге я ответил на этот вопрос с помощью другого вопроса: WCF - управление версиями

0 голосов
/ 10 января 2012

Пожалуйста, найдите несколько полезных ссылок, которые описывают лучшие практики для управления версиями контракта данных.

  1. Рекомендации: управление версиями контракта данных
  2. Управление версиями контракта данных

2-я ссылка описывает, как вы обрабатываете, когда хотите добавить или удалить атрибуты вашего контракта с данными и несколько других сценариев.

Надеюсь, это поможет.

...