[解決済み] ACE vs Boost vs POCO [クローズド]。
質問
私は、これまで Boost C++ ライブラリ を使用しています。私は絶対に Boost Asio C++ ライブラリ が大好きです。しかし、私は他の2つのライブラリを紹介されました。 POCO と ACE (Adaptive Communication Environment)フレームワーク . それぞれの良い点、悪い点を教えていただきたいです。
どのように解決するのですか?
rdboundが言ったように、Boostは"near STL"の状態になっています。そのため、もし が必要な場合は 他のライブラリが必要ないのであれば、Boostにこだわってください。しかし、私が使っている POCO を使っています。POCOの良いところIMO。
-
より良いスレッドライブラリ、特にActive Methodの実装。スレッドの優先順位を設定できるのも良い。
-
よりも包括的なネットワークライブラリが
boost::asio
. しかしboost::asio
も非常に良いライブラリです。 -
XMLやデータベースインターフェイスなど、Boostにはない機能を含んでいます。
-
Boostよりも一つのライブラリとして統合されている。
-
クリーンでモダンで理解しやすいC++のコードを持っています。私は、ほとんどの Boost ライブラリよりもはるかに理解しやすいと思います (しかし、私はテンプレートプログラミングの専門家ではありません :))。
-
多くのプラットフォームで使用できる。
POCOのデメリットをいくつか挙げます。
-
ドキュメントが限られている。これは、ソースが理解しやすいという事実によって、いくらか相殺されています。
-
Boostなどに比べると、コミュニティやユーザーベースがはるかに小さいです。そのため、例えばStack Overflowに質問を投稿しても、回答を得られる可能性はBoostの場合よりも低くなります。
-
新しいC++標準とどの程度統合されるかは未知数です。Boost にとっては問題ないだろうということは、確実に分かっているはずです。
私はACEを使ったことがないので、それについてコメントすることはできません。私が聞いたところでは、人々はPOCOをACEよりもモダンで使いやすいと感じているようです。
Rahulのコメントに対するいくつかの回答です。
-
多用途と高度についてはわかりません。POCOスレッドライブラリは、Boostにない機能を提供しています。
ActiveMethod
とActivity
であり、かつThreadPool
. IMO POCOスレッドも使いやすく、理解しやすいのですが、これは主観的な問題です。 -
POCO ネットワークライブラリは、HTTP や SSL のようなより高度なプロトコルのサポートも提供します (おそらくは
boost::asio
にもあるかもしれませんが、確かではありません?) -
十分公平です。
-
統合されたライブラリは、一貫したコーディング、ドキュメント、および一般的な"look and feel"を持つという利点があります。
-
クロスプラットフォームであることはPOCOの重要な特徴ですが、これはBoostとの関係では利点ではありません。
繰り返しますが、POCOは、あなたが必要とする機能を提供し、それがBoostにない場合にのみ検討すべきです。
関連
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み】変数やフィールドがvoid宣言されている
-
[解決済み] UbuntuにBoostをインストールする方法
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】C++の余分な資格エラー
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。