2009-04-17 32 views
17

Ich habe eine beträchtliche Menge an Erfahrung mit ACE, Boost und wxWidgets. Ich habe kürzlich die POCO Bibliotheken gefunden. Hat jemand Erfahrung mit ihnen und wie sie mit ACE, Boost und WXWidgets in Bezug auf Leistung und Zuverlässigkeit vergleichen?ACE vs Boost vs Poco vs wxWidgets

Ich bin besonders daran interessiert, ACE durch POCO zu ersetzen. Ich konnte ACE nicht mit VS2008 mit einem x64-Ziel kompilieren. Ich benutze meistens ACE_Task, also denke ich, dass ich diese durch Pocos Threads und Nachrichtenwarteschlangen ersetzen kann.

Einige andere Teile von POCO, die mich interessieren, sind HTTPServer, HTTPClient und LayeredConfiguration. Diese Bibliotheken ähneln Bibliotheken in Boost und wxWidgets, aber ich versuche, meine Verwendung von wxWidgets auf GUI-Komponenten zu beschränken, und die vergleichbaren Boost-Bibliotheken sind ... schwierig.

Ich bin interessiert an jeder Erfahrung, die jemand über POCO teilen kann, gut oder schlecht.

+0

Wenn Sie Probleme mit ACE haben, kontaktieren Sie Steve Huston unter http://www.riverace.com/ - er arbeitet seit langem an ACE. Als ich bei ACE in einer früheren Firma arbeitete, sprach ich mit ihm über Probleme, die wir hatten und er war nett und sehr hilfsbereit. Letztendlich haben wir die Unterstützung von ihm gekauft und es war jeden Cent wert. –

+0

Ihr Titel ist irreführend, als ob Sie Äpfel und Orangen vergleichen möchten. Ich kann immer noch nicht verstehen, warum du WX und Boost überhaupt erwähnst? – mentat

+3

Es gibt signifikante Überlappungen zwischen POCO und Boost (z. B. gemeinsame Zeiger, asio, program_options). Ähnlich überlappen sich POCO und wxWidgets ziemlich. –

Antwort

17

Ich habe Teile von POCO hin und wieder benutzt und fand es eine sehr schöne Lib. Ich habe ACE vor einigen Jahren weitgehend aufgegeben, aber POCO enthält einige der gleichen Muster - Task, Reaktor usw. Ich hatte nie Probleme damit, also muss ich annehmen, dass es stabil ist.

Einige Aspekte, die Ich mag:

  • es eine ziemlich gut integriert OOP Hierarchie ist, so dass die Komponenten gut miteinander arbeiten. Es hat ein viel zusammenhängenderes Gefühl als etwas wie Boost, das eher Stück-Mahlzeit ist.

  • der Quellcode ist verfügbar und sehr klar. Sie müssen keine großen Zeitblöcke aufwenden, um zu verstehen, was es tut (ACE, zumindest zuletzt habe ich die Quelle angeschaut), oder ich bin ein Template Wizard (Boost).

  • Komponenten bleiben nahe am Standard C++. Ausnahmen werden von std :: exception abgeleitet; sie erfanden nicht noch eine andere String-Klasse, etc.

  • Es ist überraschend umfassend. Dort gibt es viel mehr, als auf den ersten Blick erscheint.

Der Nachteil:

  • Eine Frage des persönlichen Geschmacks, aber die Autoren bleiben so ziemlich auf eine eine Klasse pro Header-Datei-Modell, so dass Sie viele verschiedene Dateien einschließlich enden.

  • Begrenzte Dokumentation. Meistens Doxygen-API-Seiten und einige PDFs, die auf Quellbeispiele verweisen. Es ist zwar brauchbar, aber angesichts der Größe der Lib ist es zunächst schwierig zu bestimmen, ob man die Komponenten am besten nutzt.

  • Wenn es eine aktive Community gibt, habe ich sie nie gefunden. Das Paket wird von einer in Europa ansässigen Firma gepflegt und sie hatten ein Wiki, aber ich fand es nicht so aktiv oder nützlich.

Alles in allem ist der Nachteil ziemlich gering. Ich denke, es ist eine sehr gute Bibliothek und würde es auf jeden Fall empfehlen.

6

Ich habe nie ACE verwendet, aber ich habe Boost und Poco. Ich mag den Programmierstil von Poco sehr. Die Pakete sind konsistent und der Quellcode ist leicht zu lesen. Sie sind nicht Template-verrückt wie Boost. Meiner Erfahrung nach verbringe ich Stunden damit zu lesen, wie man boost - serialization package, pointer map container usw. benutzt - und wenig Zeit damit zu lesen, wie man Poco-Zeug benutzt. Ich würde sagen, sie haben ein gutes Design und verwenden Vorlagen, wo nötig.

Auf der negativen Seite haben sie API-Dokumentation, aber sie haben keine umfangreiche Dokumentation darüber, wie Sie ein Paket verwenden würden. Dafür schauen Sie sich normalerweise den Beispiel-Quellcode an, oder die Unit testet den Quellcode.

Ich habe den HTTPServer unter Windows/Linux ohne offensichtliche Fehler arbeiten.

Also schreibe es als 1 positive Erfahrung.

2

Für mich scheint Boost die meiste Zugkraft für neue C++ - Bibliotheken zu haben und die Tatsache, dass viele von ihnen in den kommenden C++ - Standard aufgenommen wurden, spricht für sich.

ich ACE und Boost mich und die Gründe, warum ich sie gewählt sind, dass sie reif sind (vor allem ACE) haben einen großen starken User-Community, die sicherstellt, werden sie gepflegt und erweitert werden, und dass ich gute Qualität professionelle Unterstützung erhalten können. Wir verwenden Remedy IT für unseren ACE/TAO Support und sind sehr zufrieden.

Da ACE eine viel ältere Bibliothek als Boost ist und eines ihrer Ziele ist, exotischere (wie eingebettete) Plattformen zu unterstützen, verwendet es nicht so viel innovative C++ - Technologie wie Boost. Ich verwende eine Mischung aus ACE und Boost und bin sehr glücklich mit dieser Kombination.

Ich weiß nicht genau, warum Sie wxWidgets in das Spiel einfügen, da es hauptsächlich eine Grafik-UI-Bibliothek ist. Aber wenn ich einige C++ - UI-Projekte machen müsste, würde ich mit QT gehen, hauptsächlich, weil dies auch eine weit verbreitete Bibliothek ist (der gesamte KDE-Desktop ist auf QT aufgebaut) und daher gut gepflegt und ich hätte Zugang zu einem großen Benutzerbasis für Fragen und Unterstützung.

+1

wxWidgets definiert eigene String- und Collection-Klassen sowie eine Menge Cross-Plattform-Utility-Klasse für Datei/Socket usw. Dies ist ein Erbe aus den Tagen, bevor C++ - Compiler die STL (oder Templates!) Unterstützt haben –

+0

Es ist ein weit verbreitetes Missverständnis Das wxWidgets ist nur GUI-Zeug, aber es gibt viel mehr. –

+0

@ Jere.Jones Also tut QT, aber das bedeutet nicht, dass ich es für nicht UI Sachen verwenden würde :-) – lothar

Verwandte Themen