Подтвердить что ты не робот

ACE против Boost против Poco vs wxWidgets

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Недостаток:

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

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

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

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

Ответ 2

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

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

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

Итак, сделайте это как положительный опыт.

Ответ 3

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

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

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

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