Кроссплатформенный фоновый сервис + GUI - PullRequest
0 голосов
/ 03 января 2012

Это типичное приложение: 1. Одна часть программы должна сканировать аудиофайлы в фоновом режиме и записывать теги в базу данных. 2. Другая часть делает поисковые запросы и показывает результаты. Приложение должно быть кроссплатформенным.

Итак, основной цикл поиска, включая добавление данных в базу данных, не является проблемой. Вопросы: 1. Как лучше всего реализовать этот фоновый рабочий сервис? Boost (asio) или Qt (сервисные рамки?)? 2. Каков наилучший подход, чтобы сделать нативную оболочку службы с использованием упомянутых библиотек или эмулировать ее с помощью не графического приложения? 3. Должен ли я подключить графический интерфейс к сервису (как они будут общаться, используя boost или qt?) Или напрямую к базе данных (могут ли быть блокировки?)? 4. Будет ли решение в пункте 1 потреблять все использование процессора? И как этого избежать? Как реализовать сканирование файлов с меньшим расходом ресурсов процессора? S

1 Ответ

0 голосов
/ 03 января 2012

Мне нравится использовать Poco , который имеет удобный класс ServerApplication, который можно использовать в приложении, которое можно запускать либо как обычное приложение командной строки, либо как службу Windows, либо как * nix daemon без необходимости касаться кода.

Если вы используете «настоящую» базу данных (MySQL, PostgreSQL, SQL Server), то запрос к базе данных из приложения с графическим интерфейсом, вероятно, подойдет и проще. Если вы используете базу данных другого типа, которая не обязательно является многопользовательской, вам следует взаимодействовать со службой, используя петлевые сокеты или каналы.

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

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