Подтвердить что ты не робот

WCF Насколько быстрее TCP, чем HTTP

Я понимаю, что TCP быстрее HTTP для WCF, но мне интересно узнать, на сколько. У меня проблема с производительностью с большим приложением, использующим HTTP, и я думаю, что переход к netTcp даст достаточное повышение производительности, чтобы сделать инвестиции стоящими.

Кто-нибудь знает разницу в количестве данных, отправленных netTCP по сравнению с привязками Http?

4b9b3361

Ответ 1

До сих пор много ответов, но никаких конкретных данных.

Microsoft разработала тест для измерения того, что вы просили, - разницу в производительности (пропускной способности) между HTTP и TCP для служб WCF. (Тест не учитывал размер пакета!)

Рисунок 1: Пиковые тарифы TPS для теста веб-службы. IBM WebSphere Trade 6.1 работает в его EJB/Entity по умолчанию  Beans с управляемым постоянством контейнера (CMP).

Это показывает, что TCP/binary обеспечивает почти 2x пропускную способность HTTP/xml для сообщений в этом тесте. Узким местом в этом тесте был серверный процессор, а не сеть. Ваши результаты будут отличаться, потому что ваши сообщения будут более (или менее) сложными, ваша сеть будет больше (или меньше) ограничена, а ваш код приложения будет больше (или меньше) CPU-интенсивным. Но это дает вам представление.

Фактически, тест Stocktrader был конкурентным, сравнивая производительность WCF на Windows Server с производительностью WebSphere в Linux. Но как часть этого, MS также сравнила производительность WCF с использованием HTTP с производительностью WCF с использованием TCP.

загрузить полный отчет Stocktrader

Ответ 2

Это не совсем так просто. HTTP, TCP и другие транспортные опции имеют опции для балансировки за пределами только скорости. Надежность может играть важную роль в стабильности вашего приложения в зависимости от того, что на самом деле делает. Не просто пролистывайте протокол и запускайте свою программу пару раз и считайте это хорошим тестом. Читайте о протоколах и взвешивайте варианты в соответствии с вашими требованиями. Запустите некоторые программы, нагрузки, производительности и сетевых тестов, желательно с помощью квалифицированного администратора сети.

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

Ответ 3

В соответствии с моделью ISO/OSI TCP является транспортным уровнем. HTTP - это прикладной уровень, реализованный поверх TCP. Таким образом, HTTP всегда будет добавлять накладные расходы, несмотря ни на что.

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

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

Ответ 4

Самая дорогая часть WCF - это сериализация, я думаю. По сравнению с этим накладные расходы на стеки веб-сервера составляют около 5-10%, что исключает только TCP-транспорт. Вопрос в том, нужны ли вам дополнительные преимущества веб-сервера.

Ответ 5

Проведите несколько тестов! Это зависит от вашей сети и того, что на самом деле делает ваш сервис.

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