2010-03-14 5 views
5

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

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

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

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

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

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

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

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

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

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

Спасибо.

ответ

15

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

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

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

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

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

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

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

NetTCP binding is secured by default with TLS.

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

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

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

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

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

и

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

Похоже, вы хотите взглянуть на How to: Use the ASP.NET Membership Provider.

3

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

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

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

Для получения дополнительной информации о REST, проверьте WCF REST Developer Center on MSDN