Was ist der beste Weg, um einen neuen (optionalen) Parameter zu einem bestehenden Vorgang hinzuzufügen, ohne dass der Client seine WSDL aktualisieren muss? Ich möchte den Namespace nicht aktualisieren, um eine neue Version der Serviceverträge zu beschreiben, da diese mit älteren Clients abwärtskompatibel sein sollte.Hinzufügen eines neuen Parameters zu einer WCF-Operation: Auswahlen?
Sollte ich eine neue Operation mit einem neuen Parameter als Überladung hinzufügen? Oder sollte ich einfach den Parameter zur bestehenden Operation hinzufügen?
Hier ist mein Betrieb ist:
[OperationContract]
MyResponse GetData();
es sein sollte:
[OperationContract]
MyResponse GetData();
[OperationContract]
MyResponse GetData(string filter);
Oder einfacher, es ist einfach zu dies ändern: scheint
[OperationContract]
MyResponse GetData(string filter);
Letztere Option am besten, und gemäß meinem Nachschlagewerk "Die Auswirkung auf den Client ist keine. Neue Parameter werden initialisiert zu den Standardwerten am Dienst. "Initialisiert WCF es auf den so genannten Standardwert? Wenn ja, wie lautet der Standardwert?
Es ist eine nicht brechende Änderung. Ich handle, wenn der Filter null oder leer ist. –
@Mike: Ich glaube nicht, dass es nicht bricht - plötzlich erwartet Ihre Methode "GetData" jetzt einen Parameter, der nicht von den ursprünglichen Anrufern geliefert wird. –
@marc_s: aufgrund der Flexibilität von WCF so lange Wenn der Wert null sein kann, funktioniert ein Client, der ihm nichts übergibt. Das ist der Vorteil, wenn Versionsabweichungen in WCF zugelassen werden. –