Общается ли по протоколу TCP быстрее, чем по HTTP? - PullRequest
2 голосов
/ 01 сентября 2010

WCF поддерживает несколько различных протоколов для общения.Мои службы WCF развернуты только на одной машине.Я просто хотел узнать, является ли TCP более эффективным, чем HTTP, или я должен использовать HTTP?

Ответы [ 7 ]

9 голосов
/ 01 сентября 2010

Если ваши службы WCF находятся на одной машине, используйте именованные каналы. Я нашел эту блок-схему полезной.

WCF Binding Selection Flow Chart.

4 голосов
/ 01 сентября 2010

Преимущество HTTP - прикладного уровня (7 в модели OSI ) -

  • близко к использованию пользователем (человеком), с помощью текстовых команд (и многих ответов)
  • например, можно использовать telnet (к порту, где приложение взаимодействует по протоколу http) и выполнить несколько простых команд для диалога с удаленным сервером
  • протокол http имеет дело с другими сложными действиями

HTTP (обычно) основан на TCP (транспорт) / IP (сеть).Таким образом, все преимущества, описанные выше, несут потери производительности.Вы можете определить приложение с более гибким протоколом 1016 * (на уровне пользователя / приложения), но обычно для этого требуется больше программирования, например, решение проблем, уже включенных в HTTP.Кроме того, как следует из названия protocol , никто не поймет ваш собственный протокол, если вы определите его, в отличие от http.Вам придется проектировать, программировать и создавать не только серверную часть, но и клиентскую часть.Клиенты должны будут установить вашу программу и использовать ее.

4 голосов
/ 01 сентября 2010

Если ваша служба будет работать только на том же компьютере, попробуйте использовать NetNamedPipeBinding .

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

2 голосов
/ 01 сентября 2010

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

1 голос
/ 01 сентября 2010

Как уже было сказано, TCP - это протокол управления передачей, HTTP - это протокол сверху. Вы можете создать свой собственный протокол, который мог бы быть более эффективным, поскольку в нем не было бы части багажа http. Я должен был сделать это, чтобы получить номера кадров из видеопотока, записанного на удаленном компьютере.

1 голос
/ 01 сентября 2010

Вы можете ясно видеть, что HTTP находится поверх TCP здесь: http://en.wikipedia.org/wiki/OSI_model ИЛИ ЖЕ еще лучше здесь: http://en.wikipedia.org/wiki/TCP/IP_model

1 голос
/ 01 сентября 2010

HTTP - это протокол поверх TCP, поэтому, скорее всего, быстрее НЕ добавлять дополнительный протокол поверх.См. Также Модель OSI .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...