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。此外,我不知道有任何 Boost 库(已发布或候选)为更高级别的协议提供支持。一种替代方案可能是cpp-netlib库,它仍在开发中,旨在为更高级别的协议提供支持。但是,它目前只实现了一个 HTTP 客户端和服务器。

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

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