Is boost :: asio the equivalent of Poco :: Net?

I am part of a project that uses boost as a C ++ library. Now we want to use SMTP / POP3 / SSL / HTTP / HTTPS. I found several suitable classes and functions in Poco::Net

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

I could not find anything equivalent in boost::asio . Before making a final decision, I want to ask the community if I am right, or if something similar is in boost ...

+4
source share
1 answer

Despite some coincidence, Boost.Asio is not the equivalent of the POCO Net library. Higher-level protocols go beyond Boost.Asio. The rationale in the library explicitly states that it is a captured, not a framework that was designed to support the development of other libraries that provide higher levels of abstraction, such as HTTP. In addition, I am not aware of any Boost libraries (released or candidates) that provide support for higher-level protocols. One alternative could be the cpp-netlib library , which is still under development and is designed to support higher-level protocols. However, at the moment it has only an HTTP client and server.

If you are looking for higher level protocol support, then POCO might be a good candidate. However, before making a decision, I would suggest considering other issues:

  • Support: On StackOverflow to be more active than . Other support options include the Boost Mailing List and POCO for four months .
  • Boost.Asio is designed as a toolkit and uses universal programming. Although POCO provides some functionality through non-framework tools, some higher-level functions are only provided through frameworks. Thus, it introduces a closer connection with the application and can affect the design of the application.
  • Asynchronous programming between two libraries is slightly different. In POCO, callbacks are associated with an event type that allows you to call back several times for a single subscription. Boost.Asio, on the other hand, associates a callback with one operation, with the result that the callback is called no more than once for a given operation. This difference can have consequences on how the asynchronous circuits are designed and flow.
+15
source

All Articles