2009-04-17 63 views
17

Tôi có một lượng đáng kể trải nghiệm với ACE, BoostwxWidgets. Gần đây tôi đã tìm thấy thư viện POCO. Có ai có bất kỳ kinh nghiệm với họ và làm thế nào họ so sánh với ACE, Boost và wxWidgets liên quan đến hiệu suất và độ tin cậy?ACE vs Boost vs Poco vs wxWidgets

Tôi đặc biệt quan tâm đến việc thay thế ACE bằng POCO. Tôi đã không thể nhận được ACE để biên dịch với VS2008 với một mục tiêu x64. Tôi chủ yếu sử dụng ACE_Task vì vậy tôi nghĩ rằng tôi có thể thay thế những người có chủ đề và hàng đợi tin nhắn của Poco.

Một số phần khác của POCO mà tôi quan tâm là HTTPServer, HTTPClient và LayeredConfiguration. Những thư viện này tương tự như các thư viện trong Boost và wxWidgets nhưng tôi cố gắng hạn chế việc sử dụng wxWidgets của mình cho các thành phần GUI và các thư viện Boost có thể so sánh là ... khó khăn.

Tôi quan tâm đến bất kỳ trải nghiệm nào mà bất kỳ ai cũng có thể chia sẻ về POCO, tốt hay xấu.

+0

Nếu bạn gặp sự cố với ACE, hãy liên hệ với Steve Huston tại http://www.riverace.com/ - anh ấy đã làm việc cho ACE trong một thời gian dài. Khi tôi làm việc với ACE tại một công ty trước đó, tôi đã nói chuyện với anh ta về những vấn đề chúng tôi gặp phải và anh ấy rất tốt và cực kỳ hữu ích. Cuối cùng, chúng tôi đã tìm cách hỗ trợ mua hàng từ anh ta và nó đáng giá mỗi xu. –

+0

Tiêu đề của bạn gây nhầm lẫn, như thể bạn đang cố gắng so sánh táo và cam. Tôi vẫn không thể có được lý do tại sao bạn đề cập đến wx và tăng ở tất cả? – mentat

+3

Có sự chồng chéo đáng kể giữa POCO và Boost (ví dụ: con trỏ được chia sẻ, asio, program_options). Tương tự, POCO và wxWidgets chồng chéo lên nhau một chút. –

Trả lời

17

Tôi đã sử dụng các phần của POCO ngay bây giờ và một lần nữa và nhận thấy đó là một thư viện rất hay. Tôi phần lớn đã bỏ rơi ACE cách đây vài năm nhưng POCO có chứa một số mẫu giống nhau - Nhiệm vụ, Lò phản ứng, vv Tôi chưa bao giờ gặp bất kỳ vấn đề nào với nó nên tôi phải cho rằng nó ổn định.

Một số khía cạnh mà tôi thích:

  • nó là một hệ thống phân cấp OOP khá tốt tích hợp để các thành phần làm việc tốt với nhau. Nó có một cảm giác gắn kết hơn nhiều so với một cái gì đó như Boost mà là khá mảnh bữa ăn.

  • mã nguồn có sẵn và rất rõ ràng. Bạn không cần phải dành nhiều khối thời gian để hiểu những gì nó đang làm (ACE, ít nhất là cuối cùng tôi nhìn vào nguồn) hoặc là một trình hướng dẫn mẫu (Boost).

  • Thành phần dính gần chuẩn C++. Ngoại lệ được bắt nguồn từ std :: exception; họ đã không tái tạo lại một lớp chuỗi khác, v.v.

  • Thật ngạc nhiên toàn diện. Có rất nhiều thứ xuất hiện ở cái nhìn đầu tiên.

Nhược điểm:

  • Một vấn đề sở thích cá nhân nhưng các tác giả dính khá nhiều đến một mô hình tập tin một lớp cho mỗi tiêu đề để bạn kết thúc trong đó có rất nhiều tác phẩm khác nhau.

  • Tài liệu giới hạn. Hầu hết các trang API doxygen loại và một vài tệp PDF trỏ đến các ví dụ nguồn. Nó có thể sử dụng nhưng xem xét kích thước của lib nó ban đầu là khó khăn để tìm ra nếu bạn đang làm cho việc sử dụng tốt nhất của các thành phần.

  • Nếu có cộng đồng tích cực được xây dựng xung quanh nó, tôi chưa bao giờ tìm thấy nó. Các gói phần mềm được duy trì bởi một số công ty châu Âu dựa và họ đã có một wiki nhưng tôi đã không tìm thấy nó hoạt động hoặc hữu ích.

Tất cả mọi thứ được xem xét, nhược điểm là khá nhỏ. Tôi nghĩ rằng đó là một thư viện rất tốt và chắc chắn sẽ giới thiệu nó.

6

Tôi chưa bao giờ sử dụng ACE, nhưng tôi đã sử dụng Boost và Poco. Tôi thực sự thích phong cách mã hóa của Poco. Các gói phù hợp và mã nguồn dễ đọc. Chúng không phải là mẫu điên rồ như tăng cường. Theo kinh nghiệm của tôi, tôi dành hàng giờ đọc làm thế nào để sử dụng gói serial - serialization, con trỏ bản đồ container vv và ít thời gian đọc cách sử dụng các công cụ Poco. Tôi sẽ nói rằng họ có thiết kế tốt và sử dụng các mẫu khi cần thiết.

Về mặt phủ định, chúng có tài liệu API nhưng chúng không có tài liệu mở rộng về cách bạn sử dụng gói. Vì vậy, bạn thường xem mã nguồn ví dụ hoặc kiểm tra đơn vị mã nguồn của chúng.

Tôi có HTTPServer hoạt động trên Windows/Linux mà không có bất kỳ lỗi rõ ràng nào.

Vì vậy, hãy viết lên 1 trải nghiệm tích cực.

2

Với tôi, có vẻ như sự thúc đẩy có sức hút nhất đối với các thư viện C++ mới và thực tế là nhiều người trong số họ đã được chấp nhận vào tiêu chuẩn C++ sắp tới nói cho chính nó.

Tôi sử dụng ACE và Tăng cường bản thân và lý do tôi chọn là họ trưởng thành (đặc biệt là ACE) có cộng đồng người dùng mạnh mẽ, đảm bảo rằng họ sẽ được duy trì và nâng cao và tôi có thể nhận được sự hỗ trợ chuyên nghiệp. Chúng tôi sử dụng Remedy IT cho hỗ trợ ACE/TAO của chúng tôi và rất hài lòng.

Vì ACE là thư viện cũ hơn nhiều so với Boost và một trong những mục tiêu của nó là hỗ trợ các nền tảng kỳ lạ hơn (như được nhúng), nó không sử dụng nhiều công nghệ C++ như Boost. Tôi đang sử dụng một hỗn hợp của ACE và Boost và tôi rất hài lòng với sự kết hợp đó.

Tôi không biết lý do tại sao bạn đặt wxWidgets trong trận đấu, vì nó chủ yếu là thư viện giao diện người dùng đồ họa. Nhưng nếu tôi phải thực hiện một số dự án C++ UI, tôi sẽ đi với QT, chủ yếu là vì đây cũng là thư viện được sử dụng rộng rãi (tất cả máy tính để bàn KDE được xây dựng trên QT) và do đó được duy trì tốt và tôi sẽ có quyền truy cập cơ sở người dùng cho các câu hỏi và hỗ trợ.

+1

wxWidgets không định nghĩa các chuỗi và các lớp sưu tập riêng của nó cũng như rất nhiều lớp tiện ích nền tảng cho tệp/socket, vv .. Đây là di sản từ những ngày trước khi trình biên dịch C++ hỗ trợ STL (hoặc mẫu!) –

+0

Nó là một quan niệm sai lầm phổ biến wxWidgets chỉ là công cụ GUI, nhưng có nhiều thứ hơn cho nó. –

+0

@ Jere.Jones Vì vậy, QT, nhưng điều đó không có nghĩa là tôi sẽ sử dụng nó cho các công cụ không giao diện người dùng :-) – lothar