WCF NetTCPBinding против разницы HttpBinding в данных, отправляемых по проводам - PullRequest
5 голосов
/ 31 марта 2011

Скажем, у меня есть служба, предоставляющая две конечные точки, первая - NetTCPBinding, вторая - любой вариант HttpBinding. Они оба реализуют один и тот же контракт на обслуживание.

Какая разница в том, что отправляется по проводу?

  • При использовании netTcp мое сообщение все еще сериализовано в XML? Или какое-то двоичное представление моих объектов?
  • С точки зрения того, что получает сообщения, в чем разница? Будет ли конечная точка http понимать только команды http (get / post и т. Д.), Где конечная точка nettcp понимает что-то другое?
  • Почему nettcp более эффективен (в этом случае мне не нужна совместимость), чем http - где издержки?

Я думаю, что во всех случаях перед тем, как сообщение будет передано на провод, оно будет преобразовано в двоичный файл, так что http также находится над tcp в терминах сети - так что для http-коммуникаций требуется нечто большее.

Оцените вопрос немного расплывчато, но, надеюсь, кто-то поймет, что я пытаюсь задать:)

1 Ответ

7 голосов
/ 31 марта 2011

В WCF конкретная привязка не обязательно подразумевает определенную кодировку.Различные привязки могут быть настроены для использования различных кодировок.Net.TCP использует двоичную кодировку по умолчанию (я думаю, MTOM), а HTTP использует текстовую / xml кодировку по умолчанию.

С net.tcp ваши сообщения отправляются отправителем -> net.tcp -> получателем.С HTTP они отправляются от отправителя -> http -> tcp -> http -> получателя.Там дополнительный слой.Преимущество tcp заключается в следующем: и дополнительный уровень, и кодировка по умолчанию.

HTTP с двоичным кодированием приближается к производительности net.tcp.

РЕДАКТИРОВАТЬ: На самом деле я думаю, что также может бытьдругие оптимизации в Net.TCP.Это сценарий взаимодействия WCF-WCF, поэтому MS контролирует оба конца.

...