Java: RMI по сравнению с веб-сервисами

Я должен создать распределенное приложение, состоящее из нескольких клиентов, которые отправляют файлы (плюс информация о файлах) к одному серверу, также запрашивают тот сервер.

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

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

Что Вы думаете об этом? Хороший подход, или сделайте у Вас есть некоторые альтернативы, должен быть рассмотрен.

Заранее спасибо.

10
задан Sheldon 22 December 2009 в 05:03
поделиться

4 ответа

RMI может быть туннелирован через HTTP (см. здесь ), поэтому не позволяйте этому слишком сильно влиять на ваше решение.

Если оба конца могут использовать RMI, тогда Вам, вероятно, следует использовать RMI; наладить работу намного проще, чем веб-сервис.

7
ответ дан 3 December 2019 в 16:29
поделиться

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

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

5
ответ дан 3 December 2019 в 16:29
поделиться

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

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

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

3
ответ дан 3 December 2019 в 16:29
поделиться

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

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

7
ответ дан 3 December 2019 в 16:29
поделиться
Другие вопросы по тегам:

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