Какой библиотекой C++ пользоваться для записи межплатформенного сервиса/демона?

Интересно, какая библиотека упростила бы разработку межплатформенного сервиса/демона? (C/C++)

Я нацелен: Windows, Linux и OS X. Требования: сетевые операции и коммуникация последовательного порта.

Также было бы хорошо иметь основное демонстрационное сервисное приложение.

10
задан sorin 18 April 2010 в 21:54
поделиться

4 ответа

Когда речь идет о Qt, вы можете попробовать qt-service.

6
ответ дан 3 December 2019 в 19:32
поделиться

Демон в Linux - это на самом деле просто процесс, который выполняется без подключения к терминалу. В Windows служба - это то, чем можно управлять с помощью API управления службами, но, опять же, в основном это просто отключенный процесс. Помимо отключения, демоны и серверы не имеют много общего, от задачи к задаче. Например, не требуется, чтобы они были многопоточными, асинхронными или выполняли сетевой ввод-вывод. Учитывая это, довольно сложно понять, что будет делать кроссплатформенная библиотека.

6
ответ дан 3 December 2019 в 19:32
поделиться

Boost , вероятно, имеет большую часть того, что вам нужно с точки зрения потоковой передачи и сети ввода / вывода .

Вы также можете найти Qt хорошей альтернативой. В нем также есть библиотеки потоков и сети, а также гораздо проще использовать и понимать модель программирования, управляемую событиями, с использованием цикла выполнения. Система сигналов / слотов Qt очень проста в использовании и идеально подходит для сетевого демона / службы (Boost также включает систему сигнал / слот , но ее сложнее использовать и она не включает цикл событий; вы должны сверните свой, используя некоторую библиотеку событий). Как кроссплатформенная библиотека, Qt может справиться со многими проблемами при объединении ментальной модели Unix (OS X и Linux) и Windows для процессов, файловых систем и т. Д.

Что касается модульного тестирования, я был очень доволен Библиотека модульного тестирования C ++ от Google называется googletest (хотя и Boost, и Qt также имеют встроенные системы модульного тестирования). Он работает на всех указанных вами платформах. Я много работал с googletest над кроссплатформенными проектами Qt и нашел его вполне удовлетворительным.

3
ответ дан 3 December 2019 в 19:32
поделиться

Вам следует взглянуть на POCO . В зависимости от того, что вы делаете, у него могут быть возможности для выполнения большого объема работы за вас с гораздо меньшим объемом работы, чем у Boost.

Обязательное упоминание о ACE , хотя лично меня это особо не волнует.

5
ответ дан 3 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: