RMI по сравнению с веб-сервисами. Что является лучшим для дистанционной работы Java2Java?

Полезный ответ PetSerAl - ваш единственный вариант в Windows PowerShell , начиная с версии 5.1.

PowerShell Core v6.1 + теперь предлагает собственное решение PowerShell с помощью расширения для оператора -replace, что устраняет необходимость вызова [regex]::Replace():

$text -replace "-(\d*)-", { param($match) 
  "This is the image: $(Get-Base64 $match.Groups[1].Value)" 
}

45
задан cretzel 19 September 2008 в 21:32
поделиться

6 ответов

Веб-сервисы действительно позволяют слабо связанную архитектуру. С RMI необходимо удостовериться, что определения классов остаются в синхронизации во всех экземплярах приложения, что означает, что всегда необходимо развертывать всех их одновременно, даже если только один из них изменяется (не обязательно, но это требуется довольно часто из-за последовательных UUID и этажерки)

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

В моем уме RMI работает лучше всего на меньшие, локальные приложения, которые не связаны с Интернетом, но все еще должны быть разъединены. Я использовал его для имения JAVA-приложения, которое обрабатывает электронные средства связи, и я был довольно удовлетворен результатами. Для других приложений, которые требуют более сложного развертывания и работы через Интернет, я скорее использую веб-сервисы.

33
ответ дан Mario Ortegón 4 August 2019 в 16:22
поделиться

Мой опыт с RMI и веб-сервисами зеркально отражает Ваши предположения выше. В целом производительность RMI далеко превышает веб-сервисы, но интерфейсная спецификация явно указана для веб-сервисов.

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

4
ответ дан Steve Moyer 4 August 2019 в 16:22
поделиться

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

, Если Вы знаете, что этой проблемой не является проблема, необходимо рассмотреть использование RMI. SOA не зависит от технологии так как на хорошем сервисном дизайне. Если у Вас есть контейнер EJB, Вы можете бобы сеанса вызовов через RMI и дополнительно представлять их как веб-сервисы, если Вы действительно должны, между прочим.

производительность зависит от данных, которыми Вы планируете обмениваться. Если Вы хотите отправить сети сложного объекта от одного приложения до другого, это, вероятно, быстрее с RMI, так как это (обычно) передается в двоичном формате. Если бы у Вас есть некоторое ТЕКСТОВОЕ / СОДЕРЖАНИЕ XML так или иначе, веб-сервисы могут быть эквивалентными или еще быстрее, с тех пор Вы не должны были бы преобразовывать ничего вообще (для коммуникации).

HTH,
Martin

12
ответ дан Martin Klinke 4 August 2019 в 16:22
поделиться

RMI может быть лучшим направлением, если необходимо поддержать сложное состояние.

2
ответ дан sammyo 4 August 2019 в 16:22
поделиться

Что относительно Дистанционной работы Spring. Это комбинирует подобный REST протокол HTTP с двоичным форматом RMI. Работы отлично для меня.

1
ответ дан 4 August 2019 в 16:22
поделиться

Для Spring Remoting (я догадался, что вы имеете в виду HTTP Invoker), обе стороны должны использовать Spring, если это так, то это можно обсудить.

Для Java для Java-приложения RMI является хорошим решением,

-1
ответ дан 26 November 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: