ACE vs Boost vs Poco vs wxWidgets

时间:2009-04-17 13:55:24

标签: c++ boost ace poco-libraries

我在ACEBoostwxWidgets方面拥有丰富的经验。我最近找到了POCO个库。有没有人对它们有任何经验,以及它们在性能和可靠性方面与ACE,Boost和wxWidgets相比如何?

我对用POCO取代ACE特别感兴趣。我无法让ACE使用带有x64目标的VS2008进行编译。我主要使用ACE_Task,所以我想我可以用Poco的线程和消息队列替换它们。

我感兴趣的POCO的其他部分是HTTPServer,HTTPClient和LayeredConfiguration。这些库与Boost和wxWidgets中的库类似,但我尝试将wxWidgets的使用限制为GUI组件,而类似的Boost库是......很难。

我对任何人可以分享关于POCO的任何经验感兴趣,无论好坏。

3 个答案:

答案 0 :(得分:16)

我一次又一次地使用POCO的部分,发现它是一个非常好的lib。我在很多年前基本上放弃了ACE,但是POCO包含了一些相同的模式 - 任务,反应器等。我从来没有遇到任何问题所以我必须假设它是稳定的。

我喜欢的一些方面:

  • 它是一个非常好的集成OOP层次结构,因此组件可以很好地相互协作。它具有比Boost更具凝聚力的感觉,而Boost则相当于零食。

  • 源代码可用且非常清晰。您不需要花费大量时间来了解它正在做什么(ACE,至少最后我查看了源代码)或者是模板向导(Boost)。

  • 组件贴近标准C ++。异常来自std :: exception;他们没有重新发明另一个字符串等等。

  • 令人惊讶的全面。乍看之下还有很多东西。

缺点:

  • 个人偏好的问题,但作者坚持每个头文件模型一个类,所以你最终包含了很多不同的文件。

  • 有限的文件。主要是doxygen类型的API页面和几个指向源示例的PDF。它是可用的,但考虑到lib的大小,如果你正在充分利用组件,最初很难确定。

  • 如果围绕它建立了一个活跃的社区,我从未找到它。该软件包由一家欧洲公司维护,他们有一个维基,但我没有发现它有效或有用。

考虑到所有因素,下行空间非常小。我认为这是一个非常好的图书馆,肯定会推荐它。

答案 1 :(得分:6)

我从未使用ACE,但我使用过Boost和Poco。我非常喜欢Poco的编码风格。包是一致的,源代码易于阅读。他们不像模板那样疯狂。根据我的经验,我花了几个小时阅读如何使用boost - 序列化包,指针映射容器等 - 并且很少有时间阅读如何使用Poco的东西。我会说他们有很好的设计,并在需要时使用模板。

从消极方面来看,他们有API文档,但他们没有关于如何使用软件包的大量文档。为此,您通常会查看示例源代码或其单元测试源代码。

我让HTTPServer在Windows / Linux上运行,没有任何明显的错误。

因此,将其作为一种积极的体验。

答案 2 :(得分:2)

对我来说,似乎提升对新的C ++库来说是最有吸引力的,而且很多人都接受了即将推出的C ++标准,这本身就说明了这一点。

我自己使用ACE和Boost,我选择它们的原因是它们已经成熟(特别是ACE)拥有庞大的用户社区,确保它们得到维护和增强,并且我可以获得高质量的专业支持。我们使用Remedy IT来获得ACE / TAO支持,并且非常满意。

由于ACE是一个比Boost更老的库,其中一个目标是支持更具异国情调的(如嵌入式)平台,因此它不像Boost那样使用如此多的尖端C ++技术。我正在使用ACE和Boost的混合物,我非常满意这种组合。

我不太清楚你为什么把wxWidgets放在匹配中,因为它主要是一个图形用户界面库。但是,如果我不得不做一些C ++ UI项目,我会选择QT,主要是因为这也是一个广泛使用的库(所有KDE桌面都建立在QT之上),因此维护良好,我会访问大型用户群以获得问题和支持。