Ключевое решение заключается в том, чтобы служба WCF соответствовала клиенту сокета или нет, чтобы клиент сокета соответствовал службе WCF.
Будет проще попытаться соответствовать службе WCF, чем пытаться реализовать что-то настраиваемое в WCF, что никогда не бывает легко. Внизу раздела «Другие ресурсы» ниже вы увидите ссылку, описывающую проверку сообщений, которая необходима для того, чтобы попытаться соответствовать службе WCF.
Сказав это, сокеты .NET изначально не взаимодействуют с WCF.
Любая попытка сделать это потребует пользовательского программирования на стороне WCF.
Неважно, используете ли вы TcpClient или необработанные сокеты в .NET для подключения и взаимодействия с WCF. Любая такая совместимость должна обрабатываться с помощью пользовательской логики в WCF. Обратите внимание, что Net.Tcp - это собственный транспортный протокол. Технически это не использует TCP так же, как TcpClient.
Например, UDP очень часто используется серверами сокетов в мире Linux. WCF не предоставляет встроенный транспорт UDP. Однако есть пример UDP для WCF, который реализует UDP для WCF. К сожалению, этот пример не иллюстрирует взаимодействие с сервером сокетов UPD, отличным от WCF.
У меня остался довольно подробный вопрос, в котором я объясняю свои усилия, направленные на то, чтобы пример кода был в общем тестируемым для использования UDP ...
Можно ли заставить WcfTestClient работать для пользовательских транспортных каналов?
Никто еще не ответил на мой вопрос. Так что, если вам удастся сделать эту работу, я очень заинтересован. Мой случай был вызван желанием, чтобы служба WCF могла обращаться к серверу сокетов UDP, работающему в Linux, без необходимости загромождать мой сервис кодированием, отличным от WCF. Я не хочу смешивать подходы.
Другие ресурсы ...
Выбор транспорта
В этой статье говорится, что "транспорт WCF TCP оптимизирован для
сценарий, где оба конца
общение используют WCF ".
http://msdn.microsoft.com/en-us/library/ms733769.aspx
Попытка подключить не-WCF-клиента к службе WCF
который использует BasicHttpBinding.
Разработчик заканчивает писать собственный код
через WebClient (в отличие от
TcpClient).
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/c2d72c2d-c095-4ae1-b8ae-d15f32a4e0be/
WCF против Raw .NET Sockets
Ответ указывает на то, что TCP + двоичная сериализация или UDP + двоичная
сериализация может быть необходима. Там
пример привязки UDP, как я
упомянутый выше.
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/c0520111-c1ca-4ffd-a4e0-ac68e86130ee/
Запись пользовательских запросов в простой WCF
Услуги
Автор объясняет, как выяснить формат сообщения,
нужно отправить в сервис, поэтому
что TcpClient или другой не-WCF
сокеты клиент может отправить запись
информация для службы WCF.
Подразумевается, что вы не
пытаясь соответствовать WCF
сервис, а скорее вы заставляете
сокет-клиент, чтобы сделать тяжелый
лифтинг. Тем не менее, вы не получите
встроенные преимущества WCF
привязки, если вы ожидаете
что.
http://blogs.msdn.com/carlosfigueira/archive/2008/01/13/writing-custom-requests-to-simple-wcf-services.aspx