Какую библиотеку C ++ использовать для написания кроссплатформенного сервиса / демона? - PullRequest
10 голосов
/ 19 апреля 2010

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

Я нацеливаюсь: на Windows, Linux и OS X. Требования: сетевые операции и связь через последовательный порт.

Также было бы неплохо иметь базовый пример приложения-службы.

Ответы [ 5 ]

6 голосов
/ 12 мая 2010

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

6 голосов
/ 19 апреля 2010

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

5 голосов
/ 19 апреля 2010

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

Обязательное упоминание для ТУЗ , хотя мне лично это безразлично.

3 голосов
/ 19 апреля 2010

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

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

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

0 голосов
/ 27 марта 2012

В большой версии ASIO я обнаружил большую библиотеку. Вам не нужна вся библиотека Boost, а только эта небольшая библиотека только для заголовков и очень хорошо документированная http://think -async.com /

В качестве примеров, дневная сервер-клиентская система реализована в очень мало строк кода. Посмотрите на это.

(не забудьте посмотреть версию без наддува)

...