Вопрос

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

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

[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, мне не нужно будет изменить контракт на обслуживание. Как будет выглядеть контракт на обслуживание? Мне нужна новая конечная точка? Нужен ли мне новый контракт на операцию, используя новый контракт на данные?

РЕДАКТИРОВАТЬ1:Просто меняется

Bool AddCustomer (DTOCUSTOMER1 клиент);

в

Bool Addcustomer (клиент DTOCustomer2);

Сделаю?

Edit2:Ответ на Edit1 Нет, поскольку dtocustomer2 имеет различное пространство имен, но это может работать, если у него одинаковое пространство имен. Тем не менее, я не знаю, что здесь самое лучшее, и ожидаю, что кто -то придумает хороший ответ.

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

Это было полезно?

Решение

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

Другие советы

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

  1. Лучшие практики: управление версиями контракта данных
  2. Версия контракта данных

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top