ACE vs Boost vs POCO

2021-12-24 00:00:00 c++ boost poco-libraries ace

我使用 Boost C++ 库 已经有一段时间了.我非常喜欢用于网络编程的 Boost Asio C++ 库.但是我被介绍到另外两个库:POCO 和 自适应通信环境 (ACE) 框架.我想知道每个人的好与坏.

I have been working with the Boost C++ Libraries for quite some time. I absolutely love the Boost Asio C++ library for network programming. However I was introduced to two other libraries: POCO and Adaptive Communication Environment (ACE) framework. I would like to know the good and bad of each.

推荐答案

正如 rdbound 所说,Boost 具有接近 STL"的状态.因此,如果您不需要 另一个库,请坚持使用 Boost.但是,我使用 POCO 因为它对我的情况有一些优势.POCO IMO 的优点:

As rdbound said, Boost has a "near STL" status. So if you don't need another library, stick to Boost. However, I use POCO because it has some advantages for my situation. The good things about POCO IMO:

  • 更好的线程库,尤其是 Active Method 实现.我也喜欢你可以设置线程优先级的事实.

  • Better thread library, especially a Active Method implementation. I also like the fact that you can set the thread priority.

boost::asio 更全面的网络库.不过boost::asio 也是一个非常好的库.

More comprehensive network library than boost::asio. However boost::asio is also a very good library.

包括 Boost 中没有的功能,例如 XML 和数据库接口等等.

Includes functionality that is not in Boost, like XML and database interface to name a few.

与 Boost 相比,它作为一个库的集成度更高.

It is more integrated as one library than Boost.

它具有干净、现代且易于理解的 C++ 代码.我发现它比大多数 Boost 库更容易理解(但我不是模板编程专家:)).

It has clean, modern and understandable C++ code. I find it far easier to understand than most of the Boost libraries (but I am not a template programming expert :)).

它可以在很多平台上使用.

It can be used on a lot of platforms.

POCO 的一些缺点是:

Some disadvantages of POCO are:

  • 它的文档有限.这在某种程度上被来源易于理解的事实所抵消.

  • It has limited documentation. This somewhat offset by the fact that the source is easy to understand.

与 Boost 相比,它的社区和用户群要小得多.因此,例如,如果您在 Stack Overflow 上提出问题,则获得答案的机会比 Boost 的要少

It has a far smaller community and user base than, say, Boost. So if you put a question on Stack Overflow for example, your chances of getting an answer are less than for Boost

它与新 C++ 标准的集成程度还有待观察.你肯定知道这对 Boost 来说不是问题.

It remains to be seen how well it will be integrated with the new C++ standard. You know for sure that it will not be a problem for Boost.

我从未使用过 ACE,因此我无法对其发表评论.据我所知,人们发现 POCO 比 ACE 更现代、更易于使用.

I never used ACE, so I can't really comment on it. From what I've heard, people find POCO more modern and easier to use than ACE.

对 Rahul 评论的一些回答:

Some answers to the comments by Rahul:

  1. 我不知道多功能和高级.POCO 线程库提供了一些 Boost 没有的功能:ActiveMethodActivity,以及 ThreadPool.IMO POCO 线程也更易于使用和理解,但这是一个主观问题.

  1. I don't know about versatile and advanced. The POCO thread library provides some functionality that is not in Boost: ActiveMethod and Activity, and ThreadPool. IMO POCO threads are also easier to use and understand, but this is a subjective matter.

POCO 网络库还提供对 HTTP 和 SSL 等更高级别协议的支持(可能也在 boost::asio 中,但我不确定?)

POCO network library also provides support for higher level protocols like HTTP and SSL (possibly also in boost::asio, but I am not sure?).

还行.

集成库的优势在于具有一致的编码、文档和通用的外观".

Integrated library has the advantage of having consistent coding, documentation and general "look and feel".

跨平台是 POCO 的一个重要特性,这不是 Boost 的优势.

Being cross-platform is an important feature of POCO, this is not an advantage in relation to Boost.

同样,如果 POCO 提供了一些您需要的功能,而 Boost 中没有,那么您可能应该只考虑 POCO.

Again, you should probably only consider POCO if it provides some functionality you need and that is not in Boost.

相关文章