ACE против Boost против Poco против wxWidgets - PullRequest
17 голосов
/ 17 апреля 2009

У меня большой опыт работы с ACE , Boost и wxWidgets . Я недавно нашел библиотеки POCO . У кого-нибудь есть опыт работы с ними и как они сравниваются с ACE, Boost и wxWidgets с точки зрения производительности и надежности?

Я особенно заинтересован в замене ACE на POCO. Мне не удалось получить ACE для компиляции с VS2008 с целью x64. В основном я использую ACE_Task, поэтому думаю, что смогу заменить их на потоки и очереди сообщений Poco.

Некоторыми другими интересующими меня частями POCO являются HTTPServer, HTTPClient и LayeredConfiguration. Эти библиотеки похожи на библиотеки в Boost и wxWidgets, но я пытаюсь ограничить использование wxWidgets компонентами графического интерфейса, и схожие библиотеки Boost ... сложны.

Мне интересен любой опыт, которым кто-либо может поделиться о POCO, хороший или плохой.

Ответы [ 3 ]

16 голосов
/ 17 апреля 2009

Я использовал части POCO время от времени и нашел, что это очень хорошая библиотека. Я в основном отказался от ACE несколько лет назад, но POCO содержит некоторые из тех же шаблонов - Task, Reactor и т. Д. У меня никогда не было проблем с этим, поэтому я должен предположить, что он стабилен.

Некоторые аспекты, которые мне нравятся:

  • это довольно хорошо интегрированная иерархия ООП, поэтому компоненты хорошо работают друг с другом. У него гораздо более сплоченный вид, чем у чего-то похожего на Boost, который скорее кусочковый.

  • исходный код доступен и очень понятен. Вам не нужно выделять большие блоки времени, чтобы понять, что он делает (ACE, по крайней мере, последний раз, когда я смотрел на источник) или быть мастером шаблонов (Boost).

  • Компоненты придерживаются стандарта C ++. Исключения являются производными от std :: exception; они еще не изобрели новый класс-строку и т. д.

  • Это удивительно всеобъемлющее. Там гораздо больше, чем кажется на первый взгляд.

Недостатки:

  • Вопрос личных предпочтений, но авторы в значительной степени придерживаются модели файла заголовка по одному классу, поэтому вы в конечном итоге включаете много разных файлов.

  • Ограниченная документация. В основном страницы API типа Doxygen и несколько PDF-файлов, указывающих на исходные примеры. Его можно использовать, но, учитывая размер библиотеки, его изначально трудно определить, если вы используете компоненты наилучшим образом.

  • Если вокруг него построено активное сообщество, я его никогда не найду. Пакет поддерживается какой-то европейской компанией, и у них была вики, но я не нашел ее активной или полезной.

Учитывая все обстоятельства, недостаток довольно незначительный. Я думаю, что это очень хорошая библиотека и определенно рекомендую ее.

6 голосов
/ 17 апреля 2009

Я никогда не использовал ACE, но я использовал Boost и Poco. Мне очень нравится стиль кодирования Poco. Пакеты согласованы, и исходный код легко читается. Они не сумасшедшие как шаблон. По своему опыту я часами читал, как использовать boost - пакет сериализации, контейнер карты указателей и т. Д., И мало времени читал, как использовать Poco. Я бы сказал, что они имеют хороший дизайн и используют шаблоны там, где это необходимо.

С другой стороны, у них есть документация по API, но у них нет обширной документации о том, как вы будете использовать пакет. Для этого вы обычно смотрите пример исходного кода или их модульные тесты исходного кода.

У меня HTTPServer работает на Windows / Linux без каких-либо явных ошибок.

Так что записывайте это как 1 положительный опыт.

2 голосов
/ 17 апреля 2009

Мне кажется, что boost имеет наибольшее влияние на новые библиотеки C ++, и тот факт, что многие из них были приняты в будущем стандарте C ++, говорит сам за себя.

Я использую ACE и Boost самостоятельно, и поэтому я выбрал их, потому что они зрелые (особенно ACE), имеют большое сильное сообщество пользователей, которое гарантирует, что они будут поддерживаться и улучшаться, и что я могу получить профессиональную поддержку хорошего качества. Мы используем Remedy IT для нашей поддержки ACE / TAO и очень довольны.

Поскольку ACE является гораздо более старой библиотекой, чем Boost, и одной из ее целей является поддержка более экзотических (например, встраиваемых) платформ, в ней не используется такая передовая технология C ++, как Boost. Я использую смесь ACE и Boost и очень доволен этой комбинацией.

Я не совсем понимаю, почему вы включили wxWidgets в это совпадение, так как это в основном библиотека графического интерфейса пользователя. Но если бы мне пришлось делать некоторые проекты пользовательского интерфейса C ++, я бы пошел с QT , в основном потому, что это также широко используемая библиотека (весь рабочий стол KDE построен поверх QT) и поэтому хорошо поддерживается, и я будет иметь доступ к большой базе пользователей для вопросов и поддержки.

...