Frage

Ich habe derzeit so etwas für meinen Routentisch. Gibt es eine schönere Möglichkeit, die Versioning in der Version in den Umgang mit WCF Web API oder konventionell WCF?

RouteTable.Routes.MapServiceRoute<Service1>("1.0/Route1", Config1);
RouteTable.Routes.MapServiceRoute<Service2>("1.0/Route2", Config2);
RouteTable.Routes.MapServiceRoute<Service3>("1.0/Route3", Config3);
RouteTable.Routes.MapServiceRoute<Service4>("1.0/Route4", Config4);
War es hilfreich?

Lösung

Sie könnten das tun, aber es ist sehr Protokollgebundene, in diesem Fall Http. Ich frage mich, ob es eine Möglichkeit gibt, das zu tun, ohne sich so viel um Protokolle zu sorgen. Idealerweise möchten wir es nur einmal und nicht für jeden Transport da draußen tun. Zum Glück gibt es einen Weg, lassen Sie mich erklären.

Am Ende des Tages sollten Ihre WCF -Interna sein Protokoll agnostisch. Da meine ich, wenn eine Methode in Ihrem Service aufgerufen wird Ruhe, TCP, HTTP oder benannte Rohre.

In WCF ist dies ziemlich einfach und die Versionierung. Mit der Versionierung können wir viel über .NET Interface Versioning lernen, insbesondere wenn es nichts mit WCF zu tun hat. Die Idee ist, dass Ihr Service erkennen sollte:

interface ISomething1 { ... }

Später, wenn eine neue Methode oder Änderungen erforderlich sind, sollten Sie:

interface ISomething2 : ISomething1 { void SomethingNew (...) }

Es ist dann eine einfache Angelegenheit, Ihren Dienst mit 2 Endpunkten in der Konfiguration zu veröffentlichen, auf die man zeigt Isomething1 und der andere zu Isomething2.

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