どのライブラリがクロスプラットフォームのサービス/デーモンの開発を容易にするのだろうか?(C / C ++)
対象としているのは、Windows、Linux、OSXです。要件:ネットワーク操作とシリアルポート通信。
また、基本的なサンプルサービスアプリケーションがあると便利です。
どのライブラリがクロスプラットフォームのサービス/デーモンの開発を容易にするのだろうか?(C / C ++)
対象としているのは、Windows、Linux、OSXです。要件:ネットワーク操作とシリアルポート通信。
また、基本的なサンプルサービスアプリケーションがあると便利です。
Qtに関しては、 qt-serviceを試してみてください。
Linuxのデーモンは、実際には端末から切断されて実行される単なるプロセスです。Windowsでは、サービスはサービス管理APIを使用して制御できるものですが、ここでも基本的には切断されたプロセスにすぎません。切断はさておき、デーモンとサーバーには、タスク間であまり共通点がありません。たとえば、マルチスレッドである、非同期である、またはネットワークI/Oを実行する必要はありません。それを考えると、クロスプラットフォームライブラリが何をするかを理解するのはちょっと難しいです。
Boostには、スレッド化とネットワークI/Oに関して必要なもののほとんどが含まれている可能性があります。
Qtも良い選択肢だと思うかもしれません。また、スレッド化ライブラリとネットワークライブラリがあり、実行ループを使用したイベント駆動型プログラミングモデルの使用と理解がはるかに簡単です。Qtのシグナル/スロットシステムは非常に使いやすく、ネットワークデーモン/サービスに最適です(Boostにはシグナル/スロットシステムも含まれていますが、使用が難しく、イベントループが含まれていません。何らかのイベントを使用して独自にロールする必要があります図書館)。クロスプラットフォームライブラリとして、Qtは、プロセスやファイルシステムなどのUnix(OS XおよびLinux)とWindowsのメンタルモデルを橋渡しする際の問題の多くを処理できます。
ユニットテストについては、 googletestと呼ばれるGoogleのC ++ユニットテストライブラリに非常に満足しています(ただし、BoostとQtの両方にユニットテストシステムが組み込まれています)。指定したすべてのプラットフォームで実行されます。私はクロスプラットフォームのQtプロジェクトでgoogletestを使って多くの作業を行い、非常に満足のいくものであることがわかりました。
ASIOの非ブーストバージョンで大きなライブラリを見つけました。すべてのBoostライブラリは必要ありませんが、この小さなヘッダーのみが必要です。十分に文書化されたライブラリhttp://think-async.com/
例として、日中のサーバークライアントシステムは非常に数行のコードで実装されています。それを見てください。
(ブースト化されていないバージョンを確認することを忘れないでください)