RMI имеет некоторые интересные особенности, и достаточно быстро, но также имеет некоторые проблемы:
- Вы должны убедиться, что все вы сериализацию орудия Сериализуемый.
- Вы должны убедиться, что сервер и клиент имеют точно такую же версию всех классов Serializable и развернуты точно в одно и то же время, и каждый класс, который вы сериализуете (включая поля, хранящиеся в сериализуемых объектах), использует serialVersionUID соответственно. В противном случае вы окажетесь в мире боли (читай: «несоответствие серийной версии»).
- Вы должны убедиться, что классы, которые вы сериализуете, не связаны с ссылками на объекты, которые в конечном итоге содержат ссылки на большие объекты, иначе вы будете очень удивлены размерам пакетов, проходящих по проводу.
- Если вы когда-либо решаете обратиться к сервису только с Java, вам придется написать еще один уровень удаленного доступа.
- Нет №5.
На практике я почти всегда рекомендую услугу REST в эти дни. Так легко создавать небольшие объекты Java и использовать Gson или Jackson или что-то, чтобы маршалировать данные взад и вперед, что преимущества RMI в сравнении с ними выглядят незначительно.
RMI основан на Java Serialization, поэтому он должен быть достаточно эффективным. –
Как насчет REST? [Веб-службы мертвы - долго жить REST] (http://www.infoworld.com/d/application-development/web-services-are-dead-long-live-rest-211395) –
RMI будет быстрее, но в нем отсутствуют определенные функции, такие как безопасность на уровне сервера, однако это можно упускать из виду, если используются две внутренние корпоративные системы. Другой проблемой может быть функция балансировки займов. У Webservices есть свои накладные расходы, такие как Marshalling/Unmarshalling, но учитывая, что теперь сервер дней более мощный, это не должно быть проблемой. В предвидении веб-сервисы делают ваши предприятия более ориентированными на SOA. Таким образом, это поможет улучшить дизайн, если вам нужно расширить свой сервис для других сторон. – user1428716