Как разработать клиент-серверную систему с OSGi?

#sockets #client-server #osgi

#сокеты #клиент-сервер #osgi

Вопрос:

В последние дни я учусь разрабатывать с помощью OSGi, но сталкиваюсь с множеством проблем.

Я не знаю, как спроектировать свою клиент-серверную систему на основе OSGi с Equinox в качестве фреймворка. Должен ли я использовать сокет-соединения для реализации этого или использовать распределенную модель?

Я также не понимаю, нужно ли мне импортировать какие-то сторонние пакеты для поддержки моего программирования на socket, jdbc, swing и т.д., Или уже существуют пакеты, предлагаемые Equinox или другими проектами OSGi с открытым исходным кодом?

Впервые задаю вопросы здесь, кто-нибудь может мне помочь?

Комментарии:

1. Вы можете использовать сокеты или RMI, или веб-службы, или сервлеты, или MQ, или любой другой известный вам механизм распространения.

Ответ №1:

просто взгляните на реализации удаленных служб OSGi (более подробно в спецификации OSGi):

Приветствия,

Дмитрий

Комментарии:

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 помочь вам с сервисами и модульностью.