Должен ли я беспокоиться о накладных расходах HTTP при вызове локальных веб-служб? - PullRequest
3 голосов
/ 22 сентября 2010

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

То, что в настоящее время касается меня (незначительно), воспринимается как накладные расходыэто связано с локальным HTTP-трафиком.Я должен объяснить, что веб-службы SOAP в настоящее время и в обозримом будущем будут находиться на одном физическом сервере, и если и когда они будут перемещаться, они останутся в одной сети.Меня беспокоит тот факт, что для каждого вызова, который был внутренним вызовом функции php, теперь это http-запрос, вызывающий аналогичный вызов функции.

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

Ответы [ 4 ]

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

Вы делаете сотни или тысячи этих вызовов в секунду? Если нет, то вам, вероятно, не о чем беспокоиться.

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

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

Если сервер работает в том же физическом ящике, то вы не можете разделять привилегии. А увеличение емкости за счет добавления уровней в стек (вместо двухвалентных узлов) - это путь к недоступности.

Если вы что-то скрываете за SOAP, издержки HTTP, вероятно, будут относительно небольшими по сравнению с тем, что делает «что-то» (например, чтение из базы данных). Однако, когда вы складываете стоимость создания SOAP-запроса, декомпозируете SOAP-запрос и составляете ответ, добавляете накладные расходы для HTTP, тогда возникает вопрос, почему вы не предоставляете ярлык, вызывая код PHP, реализованный непосредственно на сервере в том же потоке исполнения.

Если вы разрабатываете абстрактный интерфейс soap, который отображается непосредственно на типы php и из них, тогда это можно было бы сократить, не тратя времени на создание различных API.

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

Должен ли он быть веб-сервисом SOAP?Это клиент говорит вам об этом, или это ваше решение?

Вы, кажется, обеспокоены HTTP-вызовами, и это хорошо, но как насчет ненужных сериализации / десериализации в / из XML для передачинад «проводом» - этот «провод» - это та же самая машина.=)

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

Однако я согласен с ответом @ Skilldrick - егоне будет проблемой, если вы осведомлены о своих HTTP-вызовах.

Кэшируйте, когда можете, пакетируйте свои звонки и т. д.

0 голосов
/ 22 сентября 2010

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

См:

Что бы действительно ответить на ваш вопрос, помните правило 80/20 . Для этого используйте инструмент сравнения / отслеживания, который поможет вам определить, где находятся ваши горячие точки. Исправь это и забудь об остальном.

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