#sockets #client-server #osgi
#сокеты #клиент-сервер #osgi
Вопрос:
В последние дни я учусь разрабатывать с помощью OSGi, но сталкиваюсь с множеством проблем.
Я не знаю, как спроектировать свою клиент-серверную систему на основе OSGi с Equinox в качестве фреймворка. Должен ли я использовать сокет-соединения для реализации этого или использовать распределенную модель?
Я также не понимаю, нужно ли мне импортировать какие-то сторонние пакеты для поддержки моего программирования на socket, jdbc, swing и т.д., Или уже существуют пакеты, предлагаемые Equinox или другими проектами OSGi с открытым исходным кодом?
Впервые задаю вопросы здесь, кто-нибудь может мне помочь?
Комментарии:
1. Вы можете использовать сокеты или RMI, или веб-службы, или сервлеты, или MQ, или любой другой известный вам механизм распространения.
Ответ №1:
просто взгляните на реализации удаленных служб OSGi (более подробно в спецификации OSGi):
-
Веб-сервисы (Apache CXF: распределенный OSGi) — http://cxf.apache.org/distributed-osgi.html
-
Платформа Eclipse Communication Framework — http://www.eclipse.org/ecf
Приветствия,
Дмитрий
Комментарии:
1. большое спасибо за мой первый полученный ответ здесь 🙂 Я знаю два способа, Apache CXF, как вы упомянули, и сокеты. Учитывая, что я просто хочу создать демонстрационную программу, такую как модуль входа пользователя в систему и регистрации, интересно, подойдет ли самый простой способ сокета?
2. кстати, есть ли какая-либо реализация, включенная в Equinox framework? Является ли второй метод, который вы предложили, сторонним пакетом?
3. Системный пакет Equinox включает в себя только спецификацию ядра OSGi. все остальное необязательно.
Ответ №2:
HTTP-модель, вероятно, самая простая в реализации, в отличие от протоколов, основанных на низкоуровневой обработке сокетов и двоичных протоколах.
Первый вопрос, который я бы задал, — это какая информация нужна вашим клиентам и серверу для обмена. Если вы можете работать с HTTP (а во многих случаях вы можете), вы можете просто использовать сервлеты на стороне сервера, клиентские библиотеки http на стороне клиента и модель связи RESTful.
Сервлеты легко реализовать в OSGi с использованием HTTPService, см., например http://www.osgilook.com/2009/09/08/osgi-http-service-registering-servlets-on-the-fly
Комментарии:
1. Обмениваемые данные в основном касаются запросов к базе данных и обновлений, я не знаком с программированием сервлетов, поэтому я не решаюсь использовать http-сервисы.
2. Использование HTTP может потребовать от вас вначале немного больше знаний, но не позволит вам изобретать велосипед, выполняя низкоуровневые вещи, с которыми другие уже разобрались за вас 😉
Ответ №3:
Работа с сокетами в OSGi не более и не менее сложна, чем в «обычной» Java. Вы разрабатываете свое приложение почти так же, как обычно, но получаете преимущества модульности и сервисов, используя OSGi.
Вы могли бы, например, разделить прием соединений и обработку запросов, введя что-то вроде WorkerFactory
или, возможно, повторно использовать службы как на клиенте, так и на сервере; это то, в чем хорош OSGi.
OSGi как «технология» (насколько это понятие выдерживает критику) не требует какого-либо конкретного метода взаимодействия. В спецификации compendium упоминаются удаленные службы (также известные как распределенный OSGi), но она также содержит спецификацию HTTP-сервиса — сервлеты — это то, что вам нужно.
Короче говоря, просто выберите решение для взаимодействия, которое наилучшим образом соответствует вашему сценарию, и позвольте OSGi помочь вам с сервисами и модульностью.