Привязки WCF net.tcp, форматы сообщений и вопросы безопасности - PullRequest
5 голосов
/ 14 марта 2010

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

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

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

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

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

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

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

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

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

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

Спасибо.

Ответы [ 2 ]

15 голосов
/ 14 марта 2010

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

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

Однако верно ли, что во всех случаях независимо от того, как данные передаются в самом сообщении в формате 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 .

3 голосов
/ 14 марта 2010

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

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

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

Подробнее о REST можно узнать в Центре разработчиков WCF REST на MSDN

...