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);
Était-ce utile?

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 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top