PHP-Java Bridge против RESTful WebService: Что касается производительности, что лучше?
У нас есть CMS-система drupal (PHP), которая быстро вышла из своих первоначальных требований. С тех пор был построен бэкэнд Java, который теперь выполняет большую часть функциональности. Эти две связи используют RESTful WS. Обе системы работают на одном сервере, так что это локальный вызов WS. Несмотря на то, что это локальный вызов, он кажется слишком неуклюжим, и я чувствую, что нам не следует использовать веб-сервисы для такой интеграции.
Я считаю, что мост php-java будет лучше работать (http://php-java-bridge.sourceforge.net/pjb/), поскольку он утверждает, что он в 50 раз быстрее, чем локальный вызов RPC через SOAP. Я вижу, что мост php-java использует потоковую передачу XML, поэтому я подумал, что производительность будет похожа на XML-RPC.
Я знаю, что лучший способ ответить на это - написать POC, но это невозможно из-за нехватки времени (сжатые сроки). Поэтому мой вопрос заключается в том, кто-нибудь оценил их или кто-то может рассказать о своем опыте, связанном с этими двумя технологиями. В частности, информация, касающаяся производительности.
Заранее спасибо.
2 ответа
У меня была похожая ситуация, но в итоге я решил реализовать ее с помощью JSON и REST, а не моста php-java. Уменьшенная сложность и более широкое повторное использование сервисов, предоставляемых REST, перевешивают необходимость повышения производительности.
Некоторые мысли
- Предоставляет ли ваш RESTFul WS ресурсы в формате JSON? Формат JSon легче и быстрее обрабатывается, чем XML
- Имейте в виду, что SOAP проходит проверку через заданный XSD, возможно, эта среда не использует XSD для выполнения проверки (что может быть рискованно)
- Вышеупомянутое решение соответствует JSR 223, который является JSR скриптового движка - это хорошо - при необходимости вы сможете заменить его другими поставщиками
- Я вижу, что он использует быстрый HTTP-сервер CGI - насколько я знаю, он отлично масштабируется с очень хорошей производительностью CGI.
Похоже, это может быть хорошим кандидатом - протокол оптимизирован по сравнению с SOAP (у меня есть опыт работы с SOAP).
В заключение - если ваш веб-сервис RESTFul не может предоставить SOAP - я бы рассмотрел этот подход, однако вам необходимо убедиться, что drupal работает с FastCGI.