WCF - использование нескольких привязок, включая REST (WebHttpBinding) в одной библиотеке служб?

Я хочу предоставить свой уровень обслуживания (который в настоящее время написан как стандартная библиотека классов с POCO) для внешнего и внутреннего потребления. Внешние клиенты будут использовать его через API в стиле REST, в то время как внутреннее приложение MVC будет использовать его через привязку net.tcp для повышения производительности.

Как мне сделать это элегантно? Я могу написать 2 оболочки, одну для REST, используя функции REST VS2010 Beta 2, а другую - со стандартными привязками WCF.

Могу ли я сделать это в одной обертке? или лучше просто сделать рефакторинг моих существующих сервисов как WCF и выставить их на разных конечных точках, используя разные привязки, такие как WebHTTPBinding, WsHttpBinding и т. д.

С Уважением,

Аджай

3 ответа

Решение

Ваша сервисная библиотека будет содержать только реализацию сервиса - ваши сервисные (и данные) контракты должны быть в отдельной сборке "Контракты".

Вопрос о хостинге и используемом протоколе обрабатывается хостом вашей службы - это может быть IIS или отдельная служба NT, консольное приложение или что-то еще. Это совершенно не зависит от вашего класса обслуживания и вашей библиотеки обслуживания.

Так что да - вы можете легко создать библиотеку служб и затем предоставить эту службу множеству конечных точек на хосте службы - эти две вещи должны быть полностью отделены друг от друга.

Конечно, вы можете просто добавить их в файл конфигурации или использовать код.

Функции REST VS 2010 Beta 2 сами по себе построены на основе WCF, поэтому, если вы хотите их использовать, вам все равно придется преобразовать свой сервис в сервис WCF. В этот момент, как говорят Dani и marc_s, вы можете очень легко добавить дополнительные конечные точки к сервису через файл конфигурации.

Другие вопросы по тегам