Подходит ли WCF для реализации устаревших сетевых сервисов? - PullRequest
1 голос
/ 10 августа 2009

Я использую термин сетевые сервисы для обозначения таких вещей, как NNTP, IMAP, POP3 ... вещей, которые имеют определенный протокол, размещенный поверх TCP / IP.

Мне очень трудно понять, как я могу подключиться к существующей сетевой службе с помощью клиента WCF. Я не нашел никаких примеров, кроме тех, которые в основном используют код сокета, модифицированный C #.

Кто-нибудь может отослать меня к каким-либо примерам использования WCF для общения с унаследованным сервисом как с чем-то отличным от прославленного сокета?

Подходит ли WCF для этого типа требований?

Спасибо.

Ответы [ 3 ]

1 голос
/ 10 августа 2009

WCF поставляется с набором стандартных привязок, вот список привязок, предоставленных в 3.5:

http://msdn.microsoft.com/en-us/library/ms730879.aspx

Если вам нужно использовать что-то еще, вероятно, WCF - не тот путь. Даже если бы вы могли создать свою собственную привязку, цена перевесила бы выгоду.

Если в вашем проекте есть требование, чтобы все использовали WCF, вы можете построить фасад WCF поверх кода сокетов.

0 голосов
/ 10 августа 2009

Ну, WCF по своей сути - это унифицированный механизм коммуникации, разработанный Microsoft на основе SOAP - он заменяет веб-сервисы ASMX, WSE, .NET Remoting и многое другое.

Как таковой, он основан на SOAP и поэтому может общаться со всем, что говорит о SOAP - что, я сомневаюсь, относится к POP3 или другим сервисам. Поэтому я не думаю, что вы можете написать WCF клиент для этих служб, на самом деле.

Что касается написания этих сервисов с нуля и представления их как сервисов WCF - это может сработать, поскольку в основном реализация сервиса WCF может делать все что угодно, а затем представлять себя внешнему миру как сервис SOAP - может работать, вопрос заключается в следующем: в чем выгода?

Марк

0 голосов
/ 10 августа 2009

Ну, термин "WCF" на самом деле означает 2 вещи:

  • Каркас: "Азбука" - Адрес, обязательный, договор
  • Фактическое использование комбинации вышеперечисленного (например, веб-сервис WCF с использованием BasicHttpBinding)

Там нет встроенных привязок для протоколов, которые вы упомянули, поэтому примеры, которые вы увидите, выглядят как "прославленные сокеты" - это то, что они есть. Вот что такое привязка: уровень абстракции, основанный на базовом протоколе (обычно UDP / IP или TCP / IP).

Теперь, с учетом всего вышесказанного, вам нужно создать / одолжить / украсть / любую привязку, которую можно использовать с вашим выбранным протоколом. Может показаться, что вы просто внедряете сокеты в инфраструктуру WCF, и, честно говоря, это именно то, что есть:) ... Так что же в этом хорошего?

Если вам удалось реализовать привязку к спецификациям, вы получили очень легко заменяемый компонент, который подходит для всех приложений WCF. Хотите ли вы такое поведение или нет, зависит от вас и ваших требований:)

Удачи с этим.

...