Апплет (или приложение WebStart), вызывающий сервер:лучшие практики?
-
06-09-2019 - |
Вопрос
Я хотел бы написать апплет (или веб-приложение Java), вызывающий его сервер (сервлет?), Чтобы вызвать некоторые методы и отправить/получить данные.Какой способ/технология будет лучшим для отправки и получения этих сообщений?
Решение
Протокол:
Если вас не волнует совместимость с другими языками, я бы выбрал RMI через HTTP.Он имеет поддержку прямо из JRE, его довольно легко настроить и очень легко использовать, если у вас есть фреймворк.
Для аппликативной логики я бы использовал либо:
- Шаблон команды, передающий объекты, которые при вызове вызывают методы на сервере.Это хорошо для небольших проектов, но со временем имеет тенденцию усложняться и добавляться больше команд.Кроме того, требуется, чтобы клиент был связан с логикой сервера.
- Запрос по имени + подход DTO.Преимущество этого заключается в том, что логика сервера полностью отделяется от клиента, что позволяет серверной стороне изменяться по мере необходимости.Накладные расходы на создание поддерживающей структуры немного больше, чем в первом варианте, но разделение клиента и сервера, на мой взгляд, стоит затраченных усилий.
Выполнение:
Если вы еще не начали или используете Spring, то удаленное взаимодействие Spring — отличный инструмент.Он работает везде (включая апплеты), даже если вы не используете контейнер IOC.
Если вы не хотите использовать Spring, базовый RMI также довольно прост в использовании и имеет множество примеров в Интернете.
Другие советы
HTTP-запросы?Параметры на входе, XML на выходе.
XML по-прежнему является моим предпочтительным выбором для обмена данными.
Использование XML с чем-то вроде xstream это устраняет большую часть хлопот, связанных с XML-библиотеками Java.Ты можешь сериализовать и десериализовать объекты очень простым способом.