Как использовать основанный на сокете клиент с WCF (net.tcp) сервис?

Используйте это:

double start = 400;
double end = 402;
double random = new Random().nextDouble();
double result = start + (random * (end - start));
System.out.println(result);

EDIT:

new Random().nextDouble(): случайным образом генерирует число от 0 до 1.

start: начать номер, сдвинуть число «вправо»

end - start: интервал. Random дает вам от 0% до 100% от этого числа, потому что случайный дает вам число от 0 до 1.


EDIT 2: Tks @ daniel и @aaa bbb. Мой первый ответ был неправильным.

39
задан Burhan 13 February 2009 в 23:53
поделиться

3 ответа

Ключевое решение состоит в том, заставить ли сервис WCF соответствовать сокетному клиенту или заставить ли сокетный клиент соответствовать сервису WCF.

будет самым простым попытаться соответствовать сервису WCF, вместо того, чтобы пытаться реализовать что-то пользовательское в WCF, который никогда не легок. У основания раздела Other Resources ниже Вас будет видеть ссылку, которая описывает контроль сообщения, который необходим, чтобы попытаться соответствовать сервису WCF.

Однако сокеты.NET исходно не общаются с WCF.

Любая попытка сделать так потребует пользовательского программирования на стороне WCF вещей.

, Используете ли Вы TcpClient или неструктурированные сокеты в.NET, чтобы соединиться с и общаться с WCF, не имеет значения. Любая такая совместимость должна быть обработана с пользовательской логикой в WCF. Отметьте ту Сеть. Tcp является пользовательским транспортным протоколом. Это технически не использует TCP таким же образом, который TcpClient.

, Например, UDP является очень наиболее часто используемым серверами сокета в мире Linux. WCF не обеспечивает встроенный транспорт UDP. Однако существует образец UDP для WCF, который реализует UDP для WCF. К сожалению, тот образец не иллюстрирует передачу к и от non-WCF UPD сервер сокета.

у меня есть нерешенный вопрос, который скорее детализирован, где я объясняю свое усилие заставить пример кода в общем быть тестируемым для использования UDP...

это возможный заставить WcfTestClient работать на пользовательские транспортные каналы?

Никто еще не ответил на мой вопрос. Так, если Вы преуспеваете в том, чтобы делать эту работу, мне очень интересно. Мой случай управлялся требованием Сервиса WCF, чтобы смочь обратиться к серверу сокета UDP, работающему на Linux, не имея необходимость создавать помехи моему сервису кодированием non-WCF. Я не хочу смешивать подходы.

Другие Ресурсы...

  • Выбор статьи Transport
    This указывает, что "Транспорт TCP WCF оптимизирован для сценария, где оба конца коммуникации используют WCF".

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

  • Попытка подключить non-WCF клиент к сервису WCF, который использует BasicHttpBinding.
    разработчик заканчивает тем, что писал пользовательский код через WebClient (в противоположность TcpClient).

    http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/c2d72c2d-c095-4ae1-b8ae-d15f32a4e0be/

  • WCF по сравнению с Сырыми данными Сокеты.NET
    ответ указывает, что TCP + двоичная сериализация или UDP + двоичная сериализация мог бы быть необходим. Существует UDP обязательный образец, как я упомянул выше.

    http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/c0520111-c1ca-4ffd-a4e0-ac68e86130ee/

  • Пишущие Пользовательские Запросы к Simple WCF Services
    автор объясняет, как выяснить формат сообщения, которое должно быть отправлено службе, так, чтобы TcpClient или другой клиент сокетов non-WCF могли отправить информацию о записи службе WCF. Импликация здесь - то, что Вы не пытаетесь приспособить сервису WCF, а скорее Вы вынуждаете сокетный клиент сделать тяжелый подъем. Несмотря на это, Вы не получаете встроенные преимущества привязки WCF, если Вы ожидаете это.

    http://blogs.msdn.com/carlosfigueira/archive/2008/01/13/writing-custom-requests-to-simple-wcf-services.aspx

51
ответ дан Community 23 September 2019 в 18:08
поделиться

Hy,

Вы включали Трассировку WCF? Поскольку, если Вы делаете и Вы получаете следующее сообщение: "Сервис не позволяет Вам входить в систему анонимно". затем это - (обычно) проблема настройки безопасности.

В этом случае отключают режим безопасности для Вашей привязки:

<netTcpBinding>
   <binding name="MyCustomBinding"> 
      <security mode="None" /> 
   </binding> 
</netTcpBinding>

, Но лучше должен был бы работать с сертификатами.

0
ответ дан TomTom 23 September 2019 в 18:08
поделиться

Сеть. Привязка TCP использует пользовательский формат кадров проводного уровня, который действительно не документируется, хотя Nicholas Allen запустил серию сообщений в блоге по теме недавно. Ряды запускаются здесь: http://blogs.msdn.com/drnick/archive/2009/01/19/message-framing-part-1.aspx

Честно говоря, Сеть. TCP действительно, в настоящее время, более полезен для WCF к коммуникации WCF. если Вы хотите к interop с пользовательским форматом TCP, который необходимо обработать, Вы - очень более обеспеченные или использующие неструктурированные сокеты или создание Вашего собственного транспортного канала WCF (который не мог бы быть тривиальным, btw)

6
ответ дан tomasr 23 September 2019 в 18:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: