Вопрос

В настоящее время у меня есть что -то подобное для моего стола маршрута. Есть ли более приятный способ справиться с версиями в 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top