Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: sergek от Август 25, 2016, 18:34



Название: Организация взаимодействия прикладного и веб-сервера
Отправлено: sergek от Август 25, 2016, 18:34
Коллеги, проблема, вроде простая, но у меня нет нужного опыта.
Имеется серверное приложение, задача которого - обеспечение взаимодействия с различными устройствами (опрос состояния и управление этими устройствами). Сейчас пользователи подключаются к нему через интернет с клиентского приложения, которое может работать в синхронном (запрос/ответ) и асинхронном режиме (сервер сам чего-то там делает, например, опрашивает устройства, а клиент просто получает результаты опроса и отображает их).

Клиентская программа должна работать на разных платформах - компьютерах, смартфонах, планшетах. Поэтому решено сделать веб-интерфейс с таким же функционалом (в дополнение к существующему клиенту).
Поднимаем веб-сервер там же, где и серверное приложение. Все три компонента (клиент, сервер и веб-сервер) написаны на Qt.

Пока не соображу, как обеспечить взаимодействие серверного приложения с веб-сервером. Я вижу два пути:
- на веб-сервере разместить весь функционал серверного приложения. Но что-то мне не нравится это - оба сервера многопотоковые, два типа соединения, два протокола, какая-то каша получается;
- межпроцессное взаимодействие. А тут много вариантов. Может, в моей ситуации есть что-то очевидное? Я поэтому и описал задачу, как мне кажется, излишне подробно.
Помогите с советом, пожалуйста.


Название: Re: Организация взаимодействия прикладного и веб-сервера
Отправлено: VPS от Август 25, 2016, 19:56
Я бы, наверное, остановился на взаимодействии web-приложения с серверным по протоколу, который уже используется для взаимодействия с desktop-ным клиентом.

P/S: а правильно я понял, что пользователи будут работать через браузер? Если так, то для оповещения клиентов в асинхронном режиме можно использовать WebSocket.


Название: Re: Организация взаимодействия прикладного и веб-сервера
Отправлено: sergek от Август 25, 2016, 20:00
P/S: а правильно я понял, что пользователи будут работать через браузер? Если так, то для оповещения клиентов в асинхронном режиме можно использовать WebSocket.
Да, через браузер. Насчет WebSocket - мне казалось, что далеко не все браузеры его поддерживают, или я ошибаюсь?


Название: Re: Организация взаимодействия прикладного и веб-сервера
Отправлено: VPS от Август 25, 2016, 20:13
Да, через браузер. Насчет WebSocket - мне казалось, что далеко не все браузеры его поддерживают, или я ошибаюсь?
Да, вроде не все.
Но тогда Вам надо будет на самой странице настраивать интервал опроса web-сервера, чтобы имитировать работу асинхронной части.


Название: Re: Организация взаимодействия прикладного и веб-сервера
Отправлено: qate от Август 26, 2016, 13:06
но зачем менять хорошее решение с клиентом на qt на веб браузер ?


Название: Re: Организация взаимодействия прикладного и веб-сервера
Отправлено: sergek от Август 26, 2016, 17:57
Чтобы не ставить программу пользователям. И чтобы не делать клиентских програм под винды, андроид и линукс.


Название: Re: Организация взаимодействия прикладного и веб-сервера
Отправлено: qate от Август 26, 2016, 21:41
Чтобы не ставить программу пользователям. И чтобы не делать клиентских програм под винды, андроид и линукс.

это иллюзия, ибо браузерное решение очень плохое, интерфейс нормальный написать или нельзя или сложно, да и неудобно
кроме плюса "что не писать клиента" одни минусы
а еще сам браузер глючит
говорю как переходящий от браузера на "клиент" )


Название: Re: Организация взаимодействия прикладного и веб-сервера
Отправлено: Bepec от Август 27, 2016, 09:09
Моё мнение - надо писать отдельно веб сервер и расширять протокол под него. Ибо с клиентским апи сделать нормальную веб морду не получится. Точнее нормальную можно, но она будет дырявой :D


Название: Re: Организация взаимодействия прикладного и веб-сервера
Отправлено: sergek от Август 27, 2016, 12:04
Спасибо, именно к этому выводу я тоже пришел.