17

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

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

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

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

4

3 回答 3

16

我一次又一次地使用了 POCO 的一部分,发现它是一个非常好的库。几年前我基本上放弃了 ACE,但 POCO 包含一些相同的模式——任务、反应堆等。我从来没有遇到过任何问题,所以我不得不假设它是稳定的。

我喜欢的一些方面:

  • 它是一个很好的集成 OOP 层次结构,因此组件可以很好地相互配合。它比像 Boost 这样零碎的东西更有凝聚力。

  • 源代码可用且非常清晰。您无需花费大量时间来了解它在做什么(ACE,至少我上次查看源代码)或成为模板向导(Boost)。

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

  • 这是令人惊讶的全面。那里的内容比乍看之下要多得多。

不足之处:

  • 个人喜好问题,但作者几乎坚持每个头文件模型一个类,因此您最终会包含许多不同的文件。

  • 有限的文档。大多数是 doxygen 类型的 API 页面和一些指向源示例的 PDF。它是可用的,但考虑到库的大小,最初很难确定您是否正在充分利用这些组件。

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

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

于 2009-04-17T16:29:49.053 回答
6

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

不利的一面是,他们有 API 文档,但没有关于如何使用包的大量文档。为此,您通常会查看示例源代码或它们的单元测试源代码。

我有 HTTPServer 在 Windows/Linux 上工作,没有任何明显的错误。

所以把它记为一种积极的体验。

于 2009-04-17T16:18:10.093 回答
2

对我来说,boost 似乎对新的 C++ 库具有最大的吸引力,其中许多被即将到来的 C++ 标准接受这一事实不言而喻。

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

由于 ACE 是一个比 Boost 更古老的库,并且它的目标之一是支持更奇特的(如嵌入式)平台,它不像 Boost 那样使用那么多前沿的 C++ 技术。我正在使用 ACE 和 Boost 的混合物,并且对这种组合非常满意。

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

于 2009-04-17T16:30:46.197 回答