【问题标题】:Is boost::asio equivalent to Poco::Net?boost::asio 是否等同于 Poco::Net?
【发布时间】:2013-04-13 18:18:52
【问题描述】:

我是使用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中是否有类似的东西......

【问题讨论】:

    标签: boost-asio poco-libraries


    【解决方案1】:

    虽然有一些重叠,但Boost.Asio并不等同于POCO的Net库。更高级别的协议不在 Boost.Asio 的范围内。该库的rationale 明确指出它是一个框架,而不是一个框架,旨在支持其他提供更高级别抽象的库的开发,例如 HTTP。此外,我不知道有任何 Boost 库(已发布或候选)为更高级别的协议提供支持。一种替代方案可能是cpp-netlib 库,它仍在开发中,旨在为更高级别的协议提供支持。但是,它目前只实现了 HTTP 客户端和服务器。

    如果您正在寻找更高级别的协议支持,那么POCO 可能是一个不错的选择。但是,在做出决定之前,我建议考虑其他几点:

    • 支持:在 StackOverflow 上 似乎比 更活跃。其他支持途径包括Boost Mailing ListPOCO fourms
    • Boost.Asio 被设计成一个工具包并利用通用编程。虽然 POCO 通过非框架方式提供了一些功能,但一些更高级别的功能仅通过框架提供。因此,它引入了与应用程序更紧密的耦合,并可能影响应用程序的设计。
    • 两个库之间的异步编程略有不同。在 POCO 中,回调与事件类型相关联,允许为单个订阅多次执行回调。另一方面,Boost.Asio 将回调关联到单个操作,导致对于给定操作最多调用一次回调。这种差异可能会对异步链的设计和流动方式产生影响。

    【讨论】:

      猜你喜欢
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 2020-03-02
      • 2011-09-08
      相关资源
      最近更新 更多