ACE、Boost、Poco、wxWidgets
我对 ACE、Boost 和 wxWidgets。 我最近找到了 POCO 库。 有谁有使用它们的经验以及它们与 ACE、Boost 和 wxWidgets 在性能和可靠性方面的比较如何?
我对用 POCO 替换 ACE 特别感兴趣。 我无法使用 VS2008 和 x64 目标来编译 ACE。 我主要使用 ACE_Task,所以我想我可以用 Poco 的线程和消息队列替换它们。
POCO 中我感兴趣的其他部分是 HTTPServer、HTTPClient 和 LayeredConfiguration。 这些库与 Boost 和 wxWidgets 中的库类似,但我尝试将 wxWidgets 的使用限制为 GUI 组件,并且类似的 Boost 库......很困难。
我对任何人可以分享的有关 POCO 的经验感兴趣,无论好坏。
I have a considerable amount of experience with ACE, Boost and wxWidgets. I have recently found the POCO libraries. Does anyone have any experience with them and how they compare to ACE, Boost and wxWidgets with regard to performance and reliability?
I am particularly interested in replacing ACE with POCO. I have been unable to get ACE to compile with VS2008 with an x64 target. I mostly use ACE_Task so I think I can replace those with Poco's threads and message queues.
Some other portions of POCO that interest me are the HTTPServer, HTTPClient, and LayeredConfiguration. Those libraries are similiar to libraries in Boost and wxWidgets but I try to limit my use of wxWidgets to GUI components and the comparable Boost libraries are... difficult.
I'm interested in any experience anyone can share about POCO, good or bad.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我时常使用 POCO 的一部分,发现它是一个非常好的库。 几年前我基本上放弃了 ACE,但 POCO 包含一些相同的模式 - 任务、反应器等。我从来没有遇到过任何问题,所以我必须假设它是稳定的。
我喜欢的一些方面:
它是一个集成良好的 OOP 层次结构,因此组件可以很好地协同工作。 它比 Boost 之类的东西更有凝聚力,Boost 是零散的。
源代码可用并且非常清晰。 您不需要花费大量时间来理解它在做什么(ACE,至少最后我查看了源代码)或成为模板向导(Boost)。
组件接近标准 C++。 异常源自 std::exception; 他们还没有重新发明另一个字符串类等。
它的全面性令人惊讶。 里面的内容比乍一看要多得多。
缺点:
这是个人喜好的问题,但作者几乎坚持每个头文件一个类的模型,因此最终会包含很多不同的文件。
有限的文档。 主要是 doxygen 类型的 API 页面和几个指向源示例的 PDF。 它是可用的,但考虑到库的大小,最初很难确定您是否充分利用了组件。
如果有一个围绕它建立的活跃社区,我从未找到过。 该软件包由一些欧洲公司维护,他们有一个 wiki,但我没有发现它那么活跃或有用。
考虑到所有因素,缺点很小。 我认为这是一个非常好的图书馆,并且肯定会推荐它。
I have used parts of POCO now and again and found it to be a very nice lib. I largely abandoned ACE a number of years ago but POCO contains some of the same patterns - Task, Reactor, etc. I have never had any problems with it so I have to assume it is stable.
Some aspects that I like:
it is a pretty well integrated OOP hierarchy so the components work well with each other. It has a much more cohesive feel than something like Boost which is rather piece-meal.
the source code is available and very clear. You don't need to devote large blocks of time to understand what it is doing (ACE, at least last I looked at the source) or be a template wizard (Boost).
Components stick close to standard C++. Exceptions are derived from std::exception; they didn't reinvent yet-another-string class, etc.
It is surprising comprehensive. There is a lot more there than appears at first glance.
The downside:
A matter of personal preference but the authors stick pretty much to a one class per header file model so you end up including a lot of different files.
Limited documentation. Mostly doxygen type API pages and a couple of PDFs pointing to source examples. It's usable but considering the size of the lib it is initially difficult to figure if you are making the best use of the components.
If there is an active community built around it, I never found it. The package is maintained by some European based company and they had a wiki but I didn't find it that active or useful.
All things considered, the downside is pretty minor. I think it is a very good library and would definitely recommend it.
我从来没有用过ACE,但我用过Boost和Poco。 我真的很喜欢 Poco 的编码风格。 软件包一致,源代码易于阅读。 它们不像 boost 那样对模板疯狂。 根据我的经验,我花了几个小时阅读如何使用 boost - 序列化包、指针映射容器等 - 而很少花时间阅读如何使用 Poco 的东西。 我想说他们有很好的设计并在需要时使用模板。
不利的一面是,他们有 API 文档,但没有关于如何使用包的详细文档。 为此,您通常会查看示例源代码或其单元测试源代码。
我的 HTTPServer 在 Windows/Linux 上运行,没有任何明显的错误。
因此,将其视为一次积极的经历。
I have never used ACE, but I used Boost and Poco. I really like the coding style of Poco. The packages are consistent and the source code is easy to read. They're not template crazy like boost. In my experience I spend hours reading how to use boost - serialization package, pointer map container etc- and little time reading how to use Poco stuff. I would say they have good design and make use of templates where needed.
On the negative side they have API documentation but they don't have extensive documentation on how you would use a package. For that you usually look at example source code, or their unit tests source code.
I have the HTTPServer working on Windows/Linux without any obvious errors.
So chalk it up as 1 positive experience.
对我来说,boost 似乎对新的 C++ 库最具吸引力,而且其中许多库被即将发布的 C++ 标准所接受这一事实本身就说明了一切。
我自己使用 ACE 和 Boost,我选择它们的原因是它们很成熟(尤其是 ACE),拥有庞大强大的用户社区,这确保它们得到维护和增强,并且我可以获得优质的专业支持。 我们使用 Remedy IT 来提供 ACE/TAO 支持,并且非常满意。
由于 ACE 是一个比 Boost 更老的库,并且它的目标之一是支持更奇特的(如嵌入式)平台,因此它不像 Boost 那样使用那么多前沿的 C++ 技术。 我混合使用了 ACE 和 Boost,并且对这种组合非常满意。
我不太明白为什么你把 wxWidgets 放在比赛中,因为它主要是一个图形 UI 库。 但如果我必须做一些 C++ UI 项目,我会选择 QT,主要是因为这也是一个广泛使用的使用过的库(所有 KDE 桌面都构建在 QT 之上),因此维护良好,我可以访问大量用户群来寻求问题和支持。
To me it seems boost has the most traction for new C++ libraries and the fact that many of them got accepted into the upcoming C++ standard speaks for itself.
I use ACE and Boost myself and the reasons I chose them are that they are mature (especially ACE) have a large strong user community which makes sure they will be maintained and enhanced and that I can get good quality professional support. We use Remedy IT for our ACE/TAO support and are highly satisfied.
As ACE is a much older library than Boost and one of it's goals is to support more exotic (like embedded) platforms it does not use so much bleeding edge C++ technology as Boost. I am using a mixture of ACE and Boost and am very happy with that combination.
I don't quite know why you put wxWidgets in the match, as it is mostly a graphics UI library. But if I had to do some C++ UI projects I would go with QT, mostly because this is also a widely used library (all of the KDE desktop is built on top of QT) and therefore well maintained and I would have access to a large user base for questions and support.