Tipps und Tricks rund um .NET und Visual Studio

WCF Erweiterbare Datenverträge
Kommentare

Dr. Holger Schwichtenberg (MVP) und FH-Prof. Manfred Steyer teilen in der Kolumne „.NETversum“ ihr Expertenwissen rund um .NET-Tools und WPF mit.

Datenverträge können abwärtskompatibel erweitert werden, indem weitere optionale Eigenschaften hinzugefügt werden. Empfängt ein Service, der die ursprüngliche Version des Datenvertrags verwendet, Daten von einem Client, der bereits die neuen zusätzlichen Eigenschaften kennt, ignoriert er diese. Das ermöglicht zwar die Implementierung abwärtskompatibler Verhalten, allerdings ergibt sich ein Problem, wenn diese Daten vom Service an einen weiteren Service weitergeleitet werden, der diese neuen Eigenschaften auch kennt. Da der erste Service die dafür empfangenen Daten verworfen hat, kann er sie nicht an den zweiten Service weiterreichen. Um diese Problematik zu umgehen, muss eine Klasse, die einen Datenvertrag repräsentiert, das Interface IExtensibleDataObject implementieren. Dieses Interface gibt lediglich eine Eigenschaft vom Typ ExtensionDataObject vor, in der nichtbekannte Eigenschaften abgelegt werden, sodass sie nicht verloren gehen und beim Weiterreichen des Datenvertrags an andere Services auch weitergesendet werden können (Listing 1).

Listing 1

[DataContract]
public class Flug: IExtensibleDataObject
{
    public ExtensionDataObject ExtensionData { get; set; }

    [...]
}  

Autor

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -