4

私はboost、c++ ライブラリとして使用しているプロジェクトの一部です。ここで、SMTP/POP3/SSL/HTTP/HTTPS を使用したいと考えています。いくつかの適切なクラスと関数を検出しましたPoco::Net

  • Poco::Net::POP3ClientSession
  • Poco::Net::MailMessage
  • Poco::Net::SMTPClientSession
  • Poco::Net::HTTPSClientSession
  • Poco::Net::HTTPRequest

に相当するものが見つかりませんでしたboost::asio。最終決定を下す前に、私が正しいかどうか、または似たようなものがあるかどうかをコミュニティに尋ねたいと思いboostます...

4

1 に答える 1

17

一部の重複はありますが、Boost.Asio は POCO の Net ライブラリと同等ではありません。高レベルのプロトコルは、Boost.Asio の範囲外です。ライブラリの理論的根拠は、HTTP などのより高いレベルの抽象化を提供する他のライブラリの開発をサポートするように設計されたフレームワークではなく、takeit であると明示的に述べています。さらに、より高いレベルのプロトコルをサポートする Boost ライブラリ (リリース済みまたは候補) については知りません。代替手段の 1 つは、cpp-netlibライブラリである可能性があります。これはまだ開発中であり、より高いレベルのプロトコルのサポートを提供することを目的としています。ただし、現在のところ、HTTP クライアントとサーバーのみが実装されています。

より高いレベルのプロトコル サポートを探している場合は、POCOが適切な候補になる可能性があります。ただし、決定を下す前に、他の点を検討することをお勧めします。

  • サポート: StackOverflowではよりもアクティブに見えます。その他のサポート手段には、Boost メーリング リストPOCO fourmsなどがあります。
  • Boost.Asio はツールキットとして設計されており、汎用プログラミングを活用しています。POCO はフレームワーク以外の方法で一部の機能を提供しますが、高レベルの機能の一部はフレームワークのみで提供されます。そのため、アプリケーションとの結合がより緊密になり、アプリケーションの設計に影響を与える可能性があります。
  • 2 つのライブラリ間の非同期プログラミングは少し異なります。POCO では、コールバックはイベント タイプに関連付けられているため、1 つのサブスクリプションに対してコールバックを複数回実行できます。一方、Boost.Asio はコールバックを単一の操作に関連付けるため、コールバックは特定の操作に対して最大 1 回呼び出されます。この違いは、非同期チェーンの設計方法とフローに影響を与える可能性があります。
于 2013-04-20T15:58:38.413 に答える