Question

Cela devrait être facile pour quelqu'un familiariser avec les meilleures pratiques de versioning contrats de service / données. Je veux vous assurer que je vais utiliser cette versioning de manière correcte.

Alors, disons que nous avons un contrat de service:

[ServiceContract(Namespace="http://api.x.com/Svc1")]
public interface IService1
{
   [OperationContract(Name = "AddCustomer")]
   bool AddCustomer(DTOCustomer1 customer);
}

et contrat de données:

[DataContract(Name="Customer", Namespace="http://api.x.com/Svc1/2011/01/DTO")]
public class DTOCustomer1
{
   [DataMember(Name="Name")]
   public string Name { ... }
}

si je vraiment besoin de changer ce dernier en quelque chose d'autre: (ce qui suit est par exemple juste)

[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 { ... }
}

... alors comment vais-je utiliser DTOCustomer2 au lieu de DTOCustomer1 du service afin que les anciens et les nouveaux clients seront conformes? Ce qui est recommandé dans ce cas? Est-ce que mon changement de contrat de service? Autant que je sache, je pas besoin de changer le contrat de service. Comment va le regard du contrat de service comme? Ai-je besoin d'un nouveau point final? Ai-je besoin d'une nouvelle utilisation de la prise de contrat d'exploitation du nouveau contrat de données?

EDIT1: Il suffit de changer

bool AddCustomer (client DTOCustomer1);

dans

bool AddCustomer (client DTOCustomer2);

va faire?

EDIT2: Réponse à EDIT1 est Non , puisque DTOCustomer2 a différents espaces de noms, mais il pourrait fonctionner si elle a le même espace de noms. Cependant, je ne sais pas quelle est la meilleure chose ici et attendre que quelqu'un vienne avec une bonne réponse.

Merci d'avance!

Était-ce utile?

La solution

I ended up answering to this question with the help of another question here: WCF - handle versioning

Autres conseils

Please find some useful links that describe the best practise for Data contract versioning.

  1. Best Practices: Data Contract Versioning
  2. Data Contract Versioning

The 2nd link describes on how you handle when you want to add or removed attributes of your data contract and few other scenarios.

Hope that helps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top