Wcf http -routetables (для управления версиями)
-
26-10-2019 - |
Вопрос
В настоящее время у меня есть что -то подобное для моего стола маршрута. Есть ли более приятный способ справиться с версиями в 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);
Решение
Вы могли бы сделать это, но это очень протокол, в таком случае Http. Анкет Интересно, есть ли способ сделать это, не беспокоясь о протоколах? В идеале мы хотим сделать это только один раз, а не для каждого транспорта там. К счастью, есть способ, позвольте мне объяснить.
В конце концов, ваши внутренние внутренности WCF должны быть Протокол агностик. Анкет Под этим я имею в виду, когда на ваш сервис вызывается метод, нам все равно, пришло ли он Отдых, TCP, http или названные трубы.
В WCF это довольно просто, как и версии. С помощью версий мы можем многое узнать о версии интерфейса .NET, особенно когда это не имеет ничего общего с WCF. Идея состоит в том, что ваш сервис должен реализовать:
interface ISomething1 { ... }
Позже, когда требуется новый метод или изменения, вы должны:
interface ISomething2 : ISomething1 { void SomethingNew (...) }
Тогда просто опубликовать свой сервис с двумя конечными точками в конфигурации, один указывает на Isomething1 а другой Isomething2.