Вопрос

Аргументы о простоте решений, использующих XML-RPC или REST, легко понять, и с ними трудно поспорить.

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

Это было полезно?

Решение

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

Существует также (несколько устаревшая) интересная беседа о выступлении на эту тему на Форумы MSDN.

Короче говоря, большинство этих источников, похоже, согласны с тем, что SOAP и REST имеют примерно одинаковую производительность для данных общего назначения.Однако некоторые результаты, по-видимому, указывают на то, что при использовании двоичных данных REST на самом деле может быть менее производительным.Смотрите ссылки на форуме, на который я ссылался, для получения более подробной информации об этом.

Другие советы

Основное влияние на скорость производства МЫЛА оказываетОСТАЛЬНОЕ связано не со скоростью передачи данных, а с возможностью кэширования.REST предлагает использовать семантику web вместо попыток туннелирования через XML, поэтому веб-службы RESTful, как правило, предназначены для корректного использования заголовков кэша, поэтому они хорошо работают со стандартной инфраструктурой web, такой как кэширующие прокси и даже локальные кэши браузера.Кроме того, использование семантики интернета означает, что такие вещи, как ETags и автоматическое сжатие zip-файлов, являются хорошо понятными способами повышения эффективности.

.а теперь вы говорите, что вам нужны контрольные показатели.Что ж, с помощью Google я нашел один парень чье тестирование показывает, что REST в 4-6 раз быстрее SOAP и другого бумага это также способствует ОТДЫХУ.

REST как протокол не определяет какую-либо форму огибающей сообщения, в то время как SOAP имеет этот стандарт.

Поэтому было бы несколько упрощенно пытаться сравнить их, это как яблоки с апельсинами.

Тем не менее, объем SOAP-конверта (за вычетом данных) составляет всего несколько к, поэтому не должно быть какой-либо заметной разницы в скорости при условии, что вы извлекаете сериализованный объект как через SOAP, так и через REST.

SOAP и любой другой протокол, использующий XML, обычно немного раздувают ваши сообщения - это может быть проблемой, а может и не быть, в зависимости от контекста.

Что-то вроде JSON было бы более компактным и, возможно, более быстрым для сериализации / десериализации, но не используйте его исключительно по этой причине.Делайте все, что, по вашему мнению, имеет смысл в данный момент, и меняйте это, если это проблема.

Все, что обычно использует HTTP (если только оно не использует повторно соединение с поддержкой HTTP 1.1, чего нет во многих реализациях), запускает новое TCP-соединение для каждого запроса;это довольно плохо, особенно для каналов с высокой задержкой.HTTPS намного хуже.Если у вас много коротких запросов от одного отправителя к одному получателю, подумайте о том, как вы можете сократить эти накладные расходы.

Использование HTTP для любого вида RPC (будь то SOAP или что-то еще) всегда сопряжено с такими накладными расходами.Другие протоколы RPC обычно позволяют вам поддерживать соединение открытым.

Расширяя ответ "pjz".

Если вы получаете много ИНФОРМАЦИИ (get * тип вызовов) на основе операций SOAP, в настоящее время вы не можете ее кэшировать.Но если бы вы реализовали эти же операции с помощью REST, существует вероятность того, что данные (зависит от вашего бизнес-контекста) могут быть кэшированы, как упоминалось выше.Поскольку SOAP использует POST для своих операций, он не может кэшировать информацию на стороне сервера.

МЫЛО определенно работает медленнее.Полезные нагрузки значительно больше, и их медленнее собирать, транспортировать, анализировать, проверять и обрабатывать.

Я не знаю никакого ответа на вопрос бенчмаркинга, однако, что я знаю о формате SOAP, так это то, что да, у него есть накладные расходы, но эти накладные расходы не увеличиваются на запрос:если у вас есть один элемент, отправленный в веб-службу, у вас есть накладные расходы + построение одного элемента, а если у вас есть 1000 элементов, отправленных в веб-службу, у вас есть накладные расходы + построение 1000 элементов.Накладные расходы возникают, когда XML-запрос форматируется для конкретной операции, но каждый отдельный элемент аргумента в запросе форматируется одинаково.

Если вы придерживаетесь повторяющихся коротких пакетов данных (скажем, 500 элементов), скорость должна быть приемлемой.

Я думаю, главный вопрос здесь заключается в том, как сравнивается RPC с SOAP.

они оба используют один и тот же подход к абстракции связи, имея объекты-заглушки, с которыми вы работаете, и примитивные / сложные типы данных, которые вы получаете обратно, на самом деле не зная, как все это обрабатывается внизу.

Я бы всегда предпочел (JSON-) RPC, потому что

  • он легкий
  • существует множество отличных реализаций для всех языков программирования
  • его просто изучить / использовать / создать
  • это быстро (особенно с JSON).

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

еще некоторые подробности вы получите из этого stackoverflow вопрос

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top