WCF - Verträgen versioning (durch Beispiel)

Dieser sollte einfach sein für jemanden, der vertraut ist mit den besten Praktiken der Versionierung service - /Daten-Verträge. Ich möchte sicherstellen, dass ich diese Versionierung in der richtigen Art und Weise.

So, sagen wir, wir haben einen service-Vertrag:

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

- und Daten-Vertrag:

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

wenn ich wirklich brauchen, um zu ändern, letztere in etwas anderes: (das folgende ist nur Beispiel)

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

...dann wie soll ich DTOCustomer2 statt DTOCustomer1 aus dem Dienst, so dass alte und neue Kunden gefällig? Was ist empfehlenswert in diesem Fall? Wird mein service-Vertrag ändern? AFAIK habe ich nicht ändern müssen, die den service-Vertrag. Wie wird der service-Vertrag Aussehen? Brauche ich einen neuen Endpunkt? Brauche ich eine neue operation Vertrages die Nutzung der neuen Daten-Vertrag?

EDIT1:
Einfach ändern

bool AddCustomer(DTOCustomer1 Kunden);

in

bool AddCustomer(DTOCustomer2 Kunden);

tun?

EDIT2:
Antwort auf EDIT1 ist Keine, da DTOCustomer2 hat anderen namespace, aber es könnte funktionieren, wenn es den gleichen namespace. Noch weiß ich nicht, was ist die beste Sache, die Sie hier und erwarten, dass jemand zu kommen mit eine gute Antwort.

Vielen Dank im Voraus!

InformationsquelleAutor Learner | 2012-01-10
Schreibe einen Kommentar