ACE против Boost против Poco против 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, хороший или плохой.


person Jere.Jones    schedule 17.04.2009    source источник
comment
Если у вас возникли проблемы с ACE, свяжитесь со Стивом Хьюстоном по адресу riverace.com - он работал над ACE для долгое время. Когда я работал с ACE в предыдущей компании, я говорил с ним о проблемах, которые у нас были, и он был любезен и чрезвычайно полезен. В конце концов, мы купили у него поддержку, и она стоила каждого пенни.   -  person 17 of 26    schedule 17.04.2009
comment
Ваш заголовок вводит в заблуждение, как будто вы пытаетесь сравнить яблоки и апельсины. Я до сих пор не понимаю, почему вы вообще упоминаете wx и boost?   -  person mentat    schedule 17.04.2009
comment
Между POCO и Boost существует значительное совпадение (например, общие указатели, asio, program_options). Точно так же POCO и wxWidgets частично пересекаются.   -  person Jere.Jones    schedule 17.04.2009


Ответы (3)


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

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

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

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

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

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

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

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

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

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

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

person Duck    schedule 17.04.2009

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

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

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

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

person Budric    schedule 17.04.2009

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

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

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

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

person lothar    schedule 17.04.2009
comment
wxWidgets действительно определяет свои собственные классы строк и коллекций, а также множество межплатформенных служебных классов для файлов / сокетов и т. д. Это наследие тех дней, когда компиляторы C ++ не поддерживали STL (или шаблоны!) - person Martin Beckett; 17.04.2009
comment
Распространенное заблуждение, что wxWidgets - это только графический интерфейс, но это еще не все. - person Jere.Jones; 17.04.2009
comment
@ Jere.Jones Как и QT, но это не значит, что я бы использовал его для вещей, не связанных с пользовательским интерфейсом :-) - person lothar; 17.04.2009
comment
Для меня проблема с QT - это moc ... wxWidgets может многое сделать без чего-то вроде moc. Кроме того, wxWidgets можно скомпилировать как отдельные библиотеки, поэтому в отличие от QT у вас могут быть только те части, которые вы используете в своем приложении. (Я могу ошибаться в этом, но я думаю, что нет) - person Coyote21; 06.05.2012