WCF Http RouteTables (pour des versions)
-
26-10-2019 - |
Question
J'ai actuellement quelque chose comme ça pour ma table d'itinéraire. Y at-il une plus belle façon de gérer versioning dans WCF Web API
ou WCF
classique?
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);
La solution
Vous pouvez le faire, mais il est très protocole lié , dans ce cas HTTP . Je me demande s'il y a un moyen de le faire sans se soucier tant sur les protocoles? Idéalement, nous voulons seulement faire une fois et non pour chaque transport là-bas. Heureusement, il y a un moyen, laissez-moi vous expliquer.
A la fin de la journée, vos internes WCF doit être protocole agnostique . Je veux dire au moment où une méthode est invoquée sur votre service, il ne faut pas prendre soin s'il est venu par REST, TCP, HTTP ou tubes nommés .
Dans ce WCF est assez facile et est donc versioning. Avec versioning, nous pouvons apprendre beaucoup sur l'interface .NET versioning en particulier quand il n'a rien à voir avec WCF. L'idée est que votre service doit réaliser:
interface ISomething1 { ... }
Plus tard, quand une nouvelle méthode ou les modifications sont nécessaires devraient:
interface ISomething2 : ISomething1 { void SomethingNew (...) }
Il est alors facile de publier votre service avec 2 points de terminaison dans config, un pointage ISomething1 et l'autre à ISomething2 .