我在ACE,Boost和wxWidgets方面拥有丰富的经验。我最近找到了POCO个库。有没有人对它们有任何经验,以及它们在性能和可靠性方面与ACE,Boost和wxWidgets相比如何?
我对用POCO取代ACE特别感兴趣。我无法让ACE使用带有x64目标的VS2008进行编译。我主要使用ACE_Task,所以我想我可以用Poco的线程和消息队列替换它们。
我感兴趣的POCO的其他部分是HTTPServer,HTTPClient和LayeredConfiguration。这些库与Boost和wxWidgets中的库类似,但我尝试将wxWidgets的使用限制为GUI组件,而类似的Boost库是......很难。
我对任何人可以分享关于POCO的任何经验感兴趣,无论好坏。
答案 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之上),因此维护良好,我会访问大型用户群以获得问题和支持。