WCF - использование нескольких привязок, включая REST (webHttpBinding), в одной библиотеке сервисов?
-
13-09-2019 - |
Вопрос
Я хочу предоставить свой уровень обслуживания (который в настоящее время написан как стандартная библиотека классов с POCOs) как для внешнего, так и для внутреннего использования.Внешние клиенты будут использовать его через API в стиле REST, в то время как внутренне мое приложение MVC будет использовать его через привязку net.tcp для повышения производительности.
Как мне сделать это элегантно?Я могу написать 2 оболочки, одну для REST, используя функции REST VS2010 Beta 2, а другую - используя стандартные привязки WCF.
Могу ли я сделать это в одной обертке?или лучше просто рефакторингуйте мои существующие сервисы как WCF и предоставляйте их на различных конечных точках, используя различные привязки, такие как webHttpBinding, wsHttpBinding и т.д.
С уважением,
Аджай
Решение
Ваша библиотека сервисов будет содержать только реализацию сервиса - ваши контракты на обслуживание (и данные) должны быть в отдельной сборке "Контракты".
Вопрос о хостинге и о том, какой протокол использовать, решается вашим сервисом ведущий - это может быть IIS или отдельная служба NT, или консольное приложение, или что-то еще.Это полностью независимо от вашего класса обслуживания и вашей библиотеки сервисов.
Так что да - вы можете легко создать библиотеку сервисов, а затем предоставить доступ к этому сервису через множество конечных точек на вашем хосте сервиса - эти две вещи должны храниться полностью отдельно друг от друга.
Другие советы
Конечно, вы можете просто добавить их в конфигурационный файл или с помощью кода.
Функции REST в версии VS 2010 Beta 2 сами по себе построены поверх WCF, поэтому, если вы хотите их использовать, вам все равно придется преобразовать свой сервис в службу WCF.На этом этапе, как говорят Дэни и marc_s, вы можете очень легко добавить дополнительные конечные точки к сервису через файл конфигурации.