2013-04-20 136 views
4

我是一個使用boost作爲C++庫的項目的一部分。現在我們要使用SMTP/POP3/SSL/HTTP/HTTPS。我發現幾個配件類和函數Poco::Netboost :: asio相當於Poco :: Net嗎?

  • 波科::網:: POP3ClientSession
  • 波科::網:: MAILMESSAGE
  • 波科::網:: SMTPClientSession
  • 波科::網: :HTTPSClientSession
  • 波科::網::的HTTPRequest

我找不到任何相當於boost::asio。在我做出最終決定之前,我想問問社區,如果我是對的,或者如果有類似的東西boost ...

回答

15

儘管存在一些重疊,但Boost.Asio並不等同於POCO的Net圖書館。更高級別的協議超出了Boost.Asio的範圍。庫的rationale明確指出,它是一個takeit而不是框架,它被設計用來支持提供更高抽象層次的其他庫的開發,比如HTTP。此外,我不知道提供支持更高級協議的任何Boost庫(已發佈或候選)。一種替代方案可能是仍在開發中的cpp-netlib庫,旨在爲更高級別的協議提供支持。但是,它目前僅實現了HTTP客戶端和服務器。

如果您正在尋找更高級別的協議支持,那麼POCO可能是一個不錯的選擇。但是,在做出決定之前,我建議考慮其他的點:

  • 支持:在計算器上似乎比更加活躍。其他支持途徑包括Boost Mailing ListPOCO fourms
  • Boost.Asio被設計爲一個工具包,並利用泛型編程。雖然POCO通過非框架方式提供了一些功能,但一些更高級別的功能只能通過框架提供。因此,它引入了與應用程序更緊密的耦合,並可能影響應用程序的設計。
  • 兩個庫之間的異步編程略有不同。在POCO中,回調函數與事件類型相關聯,允許多次執行回調以執行單個訂閱。另一方面,Boost.Asio會將回調關聯到單個操作,導致最多隻會針對給定操作調用一次回調。這種差異可能會影響異步鏈的設計和流程。
+0

這是我希望得到的答案。非常感謝你!!! – heinob 2013-04-21 08:42:09