Может ли служба WCF заменить функциональность TCPListener? - PullRequest
5 голосов
/ 07 сентября 2010

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

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

Ответы [ 2 ]

5 голосов
/ 07 сентября 2010

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

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

2 голосов
/ 09 сентября 2010

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

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

...