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!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Landete ich die Beantwortung dieser Frage durch eine andere Frage hier: WCF - Griff-Versionierung
Finden Sie einige nützliche links, die beschreiben, die best-Practice für die Daten-Vertrag Versionierung.
Den 2. link beschreibt, wie Sie damit umgehen, wenn Sie möchten hinzufügen oder entfernt Parametern mit Ihren Daten-Vertrag und ein paar andere Szenarien.
Hoffe, das hilft.