Лучший способ отправки данных в клиент-серверное приложение с использованием сокетов - PullRequest
1 голос
/ 29 апреля 2011

Hy, я пытаюсь сделать это приложение Swing (с помощью сокетов) на стороне клиента, которое что-то делает, и другое приложение для сервера (с помощью serverSocket), которое выполняет всю работу базы данных в соответствии с запросом. У меня есть Прочтите о сокетах и ​​о том, как их использовать, моя главная задача - какой способ передачи данных является наилучшим.

Давайте просто скажем, что у меня есть коллекция пользователей, и я хочу отправить ее клиенту для показа. Каков наилучший способ ее отправки? Я думал о сериализации коллекции и отправке ее клиенту, но я не могу привести к типу (java.util.ArrayList) (просто пример), потому что я не знаю о классе пользователя в клиентском приложении и не могу получить доступ к методам, специфичным для пользователя. Это поднимает вопрос: должен ли я знать о Пользователи в клиентском приложении? Так что любые предложения хороши.

PS. Для получения данных я использую Hibernate.

Ответы [ 3 ]

2 голосов
/ 29 апреля 2011

Чтобы расширить @JB Nizet, RMI будет проще.JMX будет еще проще.Веб-сервисы были бы НАМНОГО проще.

По сути, эта проблема «решается» для большинства случаев использования VAST, и вы должны смотреть на эти технологии и структуры, а не на сырые сокеты.Если у вас нет действительно конкретной потребности (а чаще всего нет), сокеты - пустая трата времени.

Веб-сервисы, POX через HTTP, Удаленные EJB, Удаленный JMX, RMI и все остальное относятся ко всемэто для тебя.Это колесо не нужно заново изобретать.

Захватите Glassfish или Tomcat + JAX-WS, и с этим покончим.Напишите некоторую логику, чтобы решить проблему и сделать мир лучше, чем слесарное дело, которое было выяснено много лет назад.

2 голосов
/ 29 апреля 2011

Чтобы иметь возможность десериализации объекта, вам необходимо иметь конкретный класс объекта (и, рекурсивно, всех объектов, на которые ссылается объект) в пути к классам.Так что да, клиенту нужен класс User в его classpath.

Задумывались ли вы об использовании RMI вместо использования простых сокетов?Это, вероятно, будет намного проще.

0 голосов
/ 29 апреля 2011

Вы можете сериализовать некоторый промежуточный продукт (xml, json и т.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...