Frage

Dies sollte für jemanden einfach sein, der mit den Best Practices von Versioning -Service/Datenverträgen vertraut ist. Ich möchte sicherstellen, dass ich diese Versionierung richtig verwenden werde.

Nehmen wir also an, wir haben einen Servicevertrag:

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

und Datenvertrag:

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

Wenn ich wirklich in etwas anderes umwandeln muss: (Folgendes ist nur ein 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 { ... }
}

... wie soll ich dtocustomer2 anstelle von dtocustomer1 aus dem Dienst verwenden, damit alte und neue Kunden konform sind? Was wird in diesem Fall empfohlen? Wird sich mein Servicevertrag ändern? Afaik Ich muss den Servicevertrag nicht ändern. Wie sieht der Servicevertrag aus? Benötige ich einen neuen Endpunkt? Benötige ich einen neuen Betriebsvertrag, der den neuen Datenvertrag nutzt?

Edit1:Einfach ändern

bool addCustomer (Dtocustomer1 -Kunde);

hinein

bool addCustomer (Dtocustomer2 -Kunde);

Wird besorgt?

Edit2:Antwort auf edit1 ist Nein, Da dtocustomer2 einen unterschiedlichen Namespace hat, kann es jedoch funktionieren, wenn es den gleichen Namespace hat. Trotzdem weiß ich nicht, was hier das Beste ist und erwarte, dass jemand eine gute Antwort findet.

Danke im Voraus!

War es hilfreich?

Lösung

Am Ende beantwortete ich diese Frage mit Hilfe einer anderen Frage hier: WCF - Handlungsversioning

Andere Tipps

Bitte finden Sie einige nützliche Links, die die Best Practice für die Datenversionsversionierung beschreiben.

  1. Best Practices: Datenvertragsversionierung
  2. Datenvertragsversionierung

Der 2. Link beschreibt, wie Sie umgehen, wenn Sie Attribute Ihres Datenvertrags hinzufügen oder entfernt werden möchten, und wenige andere Szenarien.

Ich hoffe, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top