В чем преимущества и недостатки RMI?Преимущества и недостатки использования java rmi
ответ
Преимущества и недостатки подобны преимуществам любой RPC-подобной (Remote Procedure Call) системы. Существует поверхностное появление простоты, потому что объекты, которые на самом деле удалены, можно трактовать так, как если бы они были локальными.
Это может показаться большой выгодой для простоты программирования, но есть скрытые затраты. Распределенные системы имеют проблемы с задержкой и возможностью частичного отказа, о которых должен знать программист. Вызов удаленного метода подвержен потенциальному отказу от безопасности, проблем с задержкой, сбою сети и т. Д. Бумага по этим типам проблем может стать катастрофой для надежности.
Waldo et al. хорошо обсуждают проблемы.
Из моего опыта:
Pros:
- Легко начать
- Динамическая нагрузка класса является очень мощным
- Если вы реализуете что-то, как показано ниже, вы не можете изменить на стороне сервера в течение длительного время и развитие клиента (одно исключение на сервере rmi должно получить эти классы в пути к классам - так что либо они передают их по сети, либо включают их, либо восстанавливают сервер)
Вы можете реализовать два интерфейса так:
Общий интерфейс Задача:
public interface Task<T extends Serializable> extends Serializable {
T execute();
}
Rmi интерфейс:
public interface RmiTask extends Remote {
<T extends Serializable> T executeTask(Task<T> task) throws RemoteException;
}
RmiTask
реализация на стороне сервера:
public class RmiTaskExecutor implements RmiTask {
public <T extends Serializable> T executeTask(Task<T> task) {
return task.execute();
}
}
Exampl е клиент Task
реализация:
public class IsFileTask implements Task<Boolean> {
final String path;
public IsFileTask(String path) {
this.path = path;
}
public Boolean execute() {
return new File(path).isFile();
}
}
Минусы:
- Может быть небезопасно, при использовании динамической загрузки класса (клиент обслуживает реализацию передаваемых типов) - например, вы знаете, что сервер RMI вызывает
method()
наPassedObject
, но замечательный клиент может переопределить этот метод и выполнить все, что он там хочет ... - сложно реализовать обратный вызов, который будет работать через Интернет (ему нужно установить новое соединение с сервера на клиента - может быть сложно передать его через NAT/маршрутизаторы/брандмауэры)
- , когда вы внезапно нарушили соединение во время выполнения удаленного метода, бывает так, что этот метод не вернется (я рекомендую обматывать вызовы rmi в
Callable
и запускать их с определенными таймаутами).
- 1. Преимущества использования Java RMI
- 2. Преимущества и недостатки использования ReactJS
- 3. Преимущества и недостатки использования раскадровки?
- 4. Преимущества/недостатки использования timthumb.php?
- 5. Преимущества/недостатки использования триггеров MySQL
- 6. Каковы преимущества/недостатки использования Maven?
- 7. Каковы преимущества/недостатки использования CTE?
- 8. Преимущества и недостатки NHibernate
- 9. Преимущества/Недостатки использования приложений доступа
- 10. Каковы преимущества и недостатки использования Global.asax?
- 11. Каковы преимущества и недостатки использования DLL?
- 12. Каковы преимущества и недостатки использования OpenID?
- 13. Каковы преимущества и недостатки использования прокси-сервера?
- 14. Преимущества и недостатки использования идентификаторов в CSS?
- 15. Преимущества и недостатки использования пользовательских обработчиков asp.net?
- 16. Каковы преимущества и недостатки использования линз?
- 17. Каковы преимущества и недостатки использования XML-схем?
- 18. Каковы преимущества и недостатки повторного использования AFHTTPRequestOperationManager?
- 19. Каковы преимущества и недостатки использования контейнера IOC?
- 20. Преимущества и недостатки использования корпоративной библиотеки
- 21. Каковы преимущества и недостатки использования ARC?
- 22. преимущества и недостатки использования TRY/поймать
- 23. Веб-службы против EJB против RMI, преимущества и недостатки?
- 24. Преимущества и недостатки использования .io TLD как пакета Java?
- 25. Каковы преимущества и недостатки веб-сервисов и RMI в среде Java?
- 26. Каковы преимущества и недостатки использования FXLM и без использования FXML?
- 27. Каковы преимущества и недостатки использования RMI или JMS между веб-и бизнес-уровнями?
- 28. Преимущества и недостатки DotNetNuke?
- 29. Преимущества и недостатки AngularJS
- 30. Преимущества и недостатки CardView
Спасибо за ссылку на бумагу. Я могу прекрасно использовать это в своем тезисе :) – Daff
Хорошо сказано. Хотя я написал книгу о RMI, я на самом деле не сторонник.Это делает вещи кажущимися простыми, которые очень далеки от простых, и это усложняет работу, что на самом деле не так сложно, например. «Я должен повторить?» – EJP
Ссылка на «Waldo et al» больше не существует: | –