Интересно, какая библиотека упростила бы разработку межплатформенного сервиса/демона? (C/C++)
Я нацелен: Windows, Linux и OS X. Требования: сетевые операции и коммуникация последовательного порта.
Также было бы хорошо иметь основное демонстрационное сервисное приложение.
Когда речь идет о Qt, вы можете попробовать qt-service.
Демон в Linux - это на самом деле просто процесс, который выполняется без подключения к терминалу. В Windows служба - это то, чем можно управлять с помощью API управления службами, но, опять же, в основном это просто отключенный процесс. Помимо отключения, демоны и серверы не имеют много общего, от задачи к задаче. Например, не требуется, чтобы они были многопоточными, асинхронными или выполняли сетевой ввод-вывод. Учитывая это, довольно сложно понять, что будет делать кроссплатформенная библиотека.
Boost , вероятно, имеет большую часть того, что вам нужно с точки зрения потоковой передачи и сети ввода / вывода .
Вы также можете найти Qt хорошей альтернативой. В нем также есть библиотеки потоков и сети, а также гораздо проще использовать и понимать модель программирования, управляемую событиями, с использованием цикла выполнения. Система сигналов / слотов Qt очень проста в использовании и идеально подходит для сетевого демона / службы (Boost также включает систему сигнал / слот , но ее сложнее использовать и она не включает цикл событий; вы должны сверните свой, используя некоторую библиотеку событий). Как кроссплатформенная библиотека, Qt может справиться со многими проблемами при объединении ментальной модели Unix (OS X и Linux) и Windows для процессов, файловых систем и т. Д.
Что касается модульного тестирования, я был очень доволен Библиотека модульного тестирования C ++ от Google называется googletest (хотя и Boost, и Qt также имеют встроенные системы модульного тестирования). Он работает на всех указанных вами платформах. Я много работал с googletest над кроссплатформенными проектами Qt и нашел его вполне удовлетворительным.
Вам следует взглянуть на POCO . В зависимости от того, что вы делаете, у него могут быть возможности для выполнения большого объема работы за вас с гораздо меньшим объемом работы, чем у Boost.
Обязательное упоминание о ACE , хотя лично меня это особо не волнует.