Может ли служба WCF заменить функциональность TCPListener?

У меня есть серверное приложение на основе TCPListener, которое прослушивает клиентов на одном конкретном порту. Клиенты подключаются, отправляют XML, получают XML в ответ и затем отключаются.

Можно ли вообще заменить приложение на основе TCPListener службой WCF без каких-либо изменений в клиентах? Если да, то может ли кто-нибудь предложить ресурсы, которые помогли бы мне создать такой сервис?


person Andrew    schedule 07.09.2010    source источник
comment
Без каких-либо изменений для клиентов? Какой протокол используется поверх TCPListener? Если это не SOAP/JSON, я не думаю, что вам повезет без изменения клиентского кода.   -  person Kirk Woll    schedule 07.09.2010
comment
Ни то, ни другое, а клиенты являются сторонними приложениями, поэтому я не могу их изменить.   -  person Andrew    schedule 08.09.2010


Ответы (2)


Теоретически да. WCF имеет много точек расширения, поэтому вы можете включить свое собственное сообщение кодировщик, ваш собственный транспортный канал и т. д. Вы можете включить настраиваемое поведение, чтобы повлиять на формат сообщения и т. д. Вы должны иметь возможность сделать это, даже если у вас есть собственный формат сообщения или транспортный протокол. Но это большая работа.

Если вы действительно хотите попробовать это, вы можете начать с пользовательского кодировщика сообщений, который будет принимать сообщение и записывать его в виде вашего пользовательского формата XML в двоичный кодировщик. Объедините этот новый кодировщик в настраиваемой привязке со сборкой tcpTransport. Отладить будет сложно. Примеры содержат пример добавления поддержки JSONP. Я думаю, что это аналогичный подход. Он использует встроенный транспорт и кодировщик, а также добавляет настраиваемое форматирование сообщений.

person Ladislav Mrnka    schedule 07.09.2010
comment
Звучит как много работы практически без пользы, решение TCPListener работает хорошо, мне просто было любопытно, возможно ли это. - person Andrew; 08.09.2010

Простой сервер на основе tcp не следует протоколу формирования сообщений, которому следует net.tcp для wcf http://blogs.msdn.com/b/drnick/archive/2009/01/19/message-framing-part-1.aspx.

Именно поэтому очень сложно реализовать WCF, который может взаимодействовать с клиентами, использующими пользовательскую службу TCP Listener с вашей собственной схемой обмена сообщениями.

person Sajay    schedule 08.09.2010