Вопрос

Имею значительный опыт работы с ТУЗ, Способствовать росту и wxWidgets.Недавно я нашел ПОКО библиотеки.Есть ли у кого-нибудь опыт работы с ними и их сравнение с ACE, Boost и wxWidgets с точки зрения производительности и надежности?

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

Обратная сторона:

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top