Привязки WCF net.tcp, форматы сообщений и контрольные вопросы

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

  • На самом базовом уровне правильно ли, что WCF использует двоичный (Net.Tcp), HTTP или MSMQ для передачи моего сообщения по сети?

  • Однако верно ли, что во всех случаях, независимо от того, как передаются данные, само сообщение в формате SOAP с заголовками и телом? Таким образом, это своего рода XML-сообщение, которое передается либо в HTTP/S, либо в двоичном формате.

  • Является ли Net.Tcp хорошим выбором для моего клиент-серверного приложения - оно похоже на приложение для обмена сообщениями в том смысле, что все клиенты являются удаленными пользователями по другую сторону брандмауэра от моего сервера. Большинство вещей, которые я читаю, советуют использовать WS* и HTTP.

  • Защищен ли Net.Tcp стандартно и без сертификатов? - то есть - люди не могут слушать по проводу и декодировать данные, которые идут туда и обратно.

  • Можно ли отправить логин и пароль по net.tcp и без установленного сертификата?

  • Если это так, я предполагаю, что могу подключить это к моему провайдеру членства и аутентифицировать доступ к каждому методу в реализации моего контракта на обслуживание.

  • Я предполагаю, что с безопасностью имени пользователя и пароля прокси-сервер инициализируется именем пользователя и паролем, и эта информация отправляется с каждым запросом.

  • Затем мой провайдер членства будет вызываться для каждого вызова метода и делать все, что ему нужно, чтобы получить авторизацию для метода.

Извините за кучу вопросов, но было бы здорово узнать, правильно ли я думаю о том, как работает WCF.

Спасибо.


person Remotec    schedule 14.03.2010    source источник


Ответы (2)


На самом базовом уровне правильно ли, что WCF использует двоичный (Net.Tcp), HTTP или MSMQ для передачи моего сообщения по сети?

Вы путаете транспортный уровень с механизмом сериализации. Варианты транспорта WCF: TCP, именованные каналы, HTTP и MSMQ. Параметры сериализации WCF — двоичные, текстовые (включая SOAP, POX и JSON). ) и МТОМ.

Однако верно ли, что во всех случаях, независимо от того, как передаются данные, само сообщение в формате SOAP с заголовками и телом? Таким образом, это своего рода XML-сообщение, которое передается либо в HTTP/S, либо в двоичном формате.

Нет. WCF использует класс Message в качестве элементарной единицы связи. Это SOAP по структуре, но это не формат сериализации, такой как SOAP.

Является ли Net.Tcp хорошим выбором для моего клиент-серверного приложения - оно похоже на приложение для обмена сообщениями в том смысле, что все клиенты являются удаленными пользователями по другую сторону брандмауэра от моего сервера. Большинство вещей, которые я читаю, советуют использовать WS* и HTTP.

Похоже, TCP не будет хорошим выбором. Брандмауэры могут затруднить использование TCP, если вы не можете управлять своим сервером через порт 80 или 443. Исходя из моего личного опыта, я бы также рекомендовал не использовать WCF с привязкой TCP в развертываниях в Интернете. Когда соединение TCP потеряно, WCF заставляет вас прыгать через множество обручей, чтобы поймать и восстановить его. Привязками HTTP намного проще управлять.

Защищен ли Net.Tcp стандартно и без сертификатов? - то есть - люди не могут слушать по проводу и декодировать данные, которые идут туда и обратно.

привязка NetTCP по умолчанию защищена с помощью TLS.

Можно ли отправить логин и пароль по net.tcp и без установленного сертификата?

Вы можете использовать предварительно установленный сертификат для аутентификации с привязкой TCP. Вы также можете добавить имя пользователя и пароль в заголовки сообщений, но это отдельная вещь.

Если это так, я предполагаю, что могу подключить это к моему провайдеру членства и аутентифицировать доступ к каждому методу в реализации моего контракта на обслуживание.

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

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

и

Затем мой провайдер членства будет вызываться для каждого вызова метода и делать все, что ему нужно, чтобы получить авторизацию для метода.

Похоже, вы хотите взглянуть на Как использовать членство в ASP.NET Провайдер.

person sipsorcery    schedule 14.03.2010

В дополнение к отличному ответу Sipwiz:

Однако верно ли, что во всех случаях, независимо от того, как передаются данные, само сообщение в формате SOAP с заголовками и телом? Таким образом, это своего рода XML-сообщение, которое передается либо в HTTP/S, либо в двоичном формате.

Да - почти. Большинство привязок для WCF используют SOAP в качестве своего формата в сети, за исключением webHttpBinding и связанных вещей, таких как службы данных WCF (ранее известные как «Astoria» или службы данных ADO.NET) или службы WCF RIA. Они используют подход REST к передаче данных и не имеют ничего общего с SOAP.

Дополнительные сведения о REST см. в Центре разработчиков WCF REST на сайте MSDN.

person marc_s    schedule 14.03.2010