Апплет (или приложение WebStart), вызывающий сервер: лучшие практики? - PullRequest
1 голос
/ 28 мая 2009

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

Ответы [ 4 ]

1 голос
/ 28 мая 2009

XML по-прежнему мой предпочтительный выбор для обмена данными.

Использование XML с чем-то вроде xstream , которое устраняет большую часть хлопот с XML-библиотеками XML. Вы можете сериализовать и десериализовать объекты очень простым способом.

1 голос
/ 28 мая 2009

Протокол:

Если вам не нужна совместимость с другими языками, я бы выбрал RMI по HTTP. Он имеет поддержку прямо из JRE, довольно прост в настройке и очень прост в использовании, если у вас есть фреймворк.

Для аппликативной логики я бы использовал:

  1. Шаблон команды, передающий объекты, которые при вызове вызывают методы на сервере. Это хорошо для небольших проектов, но со временем усложняется и добавляется больше команд. Кроме того, это требует, чтобы клиент был связан с логикой сервера.
  2. Запрос по имени + DTO подход. Преимущество этого заключается в том, что клиентская логика полностью отделена от клиентской логики, что позволяет серверной стороне свободно меняться по мере необходимости. Затраты на создание вспомогательной инфраструктуры немного больше, чем в первом варианте, но разделение клиента и сервера, на мой взгляд, стоит усилий.

Реализация:

Если вы еще не начали, или используете и используете Spring, Spring Remoting - отличный инструмент. Он работает везде (включая апплеты), даже если вы не используете контейнер IOC.
Если вы не хотите использовать Spring, базовый RMI также довольно прост в использовании и имеет множество примеров в Интернете.

1 голос
/ 28 мая 2009

HTTP-запросов? Параметры in, xml out.

0 голосов
/ 26 октября 2009

Легким решением может быть Гессиан тоже.

Простой пример: здесь .

Если вам нужен ORM для этого случая: попробуйте Cayenne .

...