Как сделать приложение Java Swing приложением клиент-сервер? - PullRequest
8 голосов
/ 06 мая 2010

Я сделал приложение на Java Swing. Теперь я хотел бы сделать это клиент-серверным приложением. Все клиенты должны быть уведомлены об изменении данных на сервере, поэтому я не ищу веб-сервис. Приложение клиент-сервер будет работать в одной локальной сети, это бизнес-приложение. Сервер будет содержать базу данных JavaDB.

С каких технологий и библиотек легче всего начать? Должен ли я реализовать это с нуля с помощью сокетов, или я должен использовать Java RMI, или, возможно, JMS? Или есть другие альтернативы, с которых легче начать?

И есть ли какая-нибудь серверная библиотека, которую я должен использовать? Является ли Jetty альтернативой?

Ответы [ 5 ]

3 голосов
/ 06 мая 2010

Учитывая, что у вас уже есть приложение, возможно, самое простое, что нужно сделать, - это определить интерфейс, который вам требуется между клиентом и сервером, и, прежде всего, провести рефакторинг вашего приложения, чтобы использовать этот интерфейс для взаимодействия между бэкэндом / front-end в том же процессе .

Тогда вы можете начать разделять это на части. Простым решением было бы разделить это на части с помощью RMI (поскольку вы говорите об объектах Java и имеете вызовы методов Java). Spring содержит полезные инструменты для упрощения / автоматизации RMI-интерфейсов.

Для требования уведомления достаточно простого многоадресного UDP (или широковещательного).

Обратите внимание, что как только вы разбили свое приложение, у вас возникли проблемы. поддержание согласованного представления данных, управление своевременными обновлениями, обработка случаев, когда сервер не работает, возможные проблемы с загрузкой, когда у вас много клиентов и т. д. В некотором смысле, разделение приложения на клиент и сервер - это только начало новой архитектуры процесс.

2 голосов
/ 06 мая 2010

Mina - хороший выбор в качестве инфраструктуры сетевых приложений для создания простого сервера для этой цели - это гораздо лучший вариант, чем использование сырых сокетов.

http://mina.apache.org/

Если вам действительно нужен сервер приложений, вы можете взглянуть на JBoss . Он также предоставляет компонент удаленного взаимодействия (в качестве альтернативы чему-то вроде Mina):

http://www.jboss.org/jbossremoting

Возможно, вам не понадобится Enterprise Java Beans . В большинстве случаев простой инфраструктуры на основе POJO более чем достаточно - вы можете связать это вместе с инфраструктурой внедрения зависимостей, такой как Guice :

http://code.google.com/p/google-guice/

или Весна . Проще говоря, не используйте J2EE-сервер, если вам действительно не нужно. Надеюсь, это поможет.

2 голосов
/ 06 мая 2010

Это большая часть того, что делает J2EE, но это совершенно новая кривая обучения, потому что они заранее решили многие проблемы, с которыми вы столкнетесь, а многие - нет, и, следовательно, добавили много новых технологий.

Но, по сути, J2EE отвечает именно на этот вопрос.

1 голос
/ 06 мая 2010

Я работал в таком проекте. Мы реализовали клиентскую версию Swing и серверную часть с помощью J2EE. Мы использовали EJB, bean-компоненты без состояния и управляемые сообщениями bean-компоненты. Также я участвовал в проекте по отслеживанию устройств, управлению Нашими клиентами были грузовики + пользователи Swing, и мы использовали Servets + TCP / UDP, инфраструктуру Apache Mina для обработки и поддержания соединений.

0 голосов
/ 07 мая 2010

Я работаю в приложениях Java Swing Client / Server почти 3 года.Я бы посоветовал вам пойти на RMI / EJB.Первоначальное приложение, которое мы разработали, делало это, используя RMI / EJB для связи клиент-сервер, а WebLogic был сервером.

Но позже мы обнаружили, что в браузер нужно включить много функций, подобных браузеру.приложение, такое как время ожидания сеанса и т. д. Итак, мы использовали BrightSide Framework, который оборачивает вызовы RMI через HTTP.Еще одно усовершенствование, которое мы сделали, заключается в том, что мы заменили Weblogic на сервер с открытым исходным кодом JBoss.

Перенос вызовов через HTTP станет очень удобным, и вы сможете сделать ваши свинг-приложения по-настоящему насыщенными.Позже, когда ситуация потребует от вас строгого использования веб-сайта, вы можете развернуть свой свинг, используя jnlp .

Надеюсь, это помогло.

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