WCF Http RouteTables (для управления версиями) - PullRequest
1 голос
/ 11 июня 2011

У меня сейчас есть что-то подобное для моей таблицы маршрутов.Есть ли лучший способ обработки версий в WCF Web API или обычном 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);

1 Ответ

0 голосов
/ 19 июня 2011

Вы можете сделать это, но это очень привязано к протоколу , в данном случае HTTP .Интересно, есть ли способ сделать это, не беспокоясь о протоколах?В идеале мы хотим сделать это только один раз, а не для каждого транспорта там.К счастью, есть способ, позвольте мне объяснить.

В конце концов, ваши внутренние компоненты WCF должны быть независимыми от протокола .Под этим подразумевается, что к тому моменту, когда метод вызывается в вашем сервисе, нам не нужно беспокоиться о том, прибыл ли он по REST, TCP, HTTP или по именованным каналам .

В WCF это довольно просто.и версия тоже.С версионностью мы можем многое узнать о версиях интерфейса .NET, особенно когда это не имеет никакого отношения к WCF.Идея заключается в том, что ваш сервис должен реализовывать:

interface ISomething1 { ... }

Позже, когда потребуется новый метод или изменения, вы должны:

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

Тогда просто опубликовать ваш сервис с помощью 2конечные точки в конфигурации, одна указывает на ISomething1 , а другая на ISomething2 .

...