2009-04-17 27 views
17

Ho una notevole quantità di esperienza con ACE, Boost e wxWidgets. Recentemente ho trovato le librerie POCO. Qualcuno ha esperienza con loro e come si confronta con ACE, Boost e wxWidgets in termini di prestazioni e affidabilità?ACE vs Boost vs Poco vs wxWidgets

Sono particolarmente interessato a sostituire ACE con POCO. Non sono riuscito a ottenere ACE per compilare con VS2008 con un target x64. Per lo più uso ACE_Task quindi penso di poter sostituire quelli con i thread di Poco e le code dei messaggi.

Alcune altre parti di POCO che mi interessano sono HTTPServer, HTTPClient e LayeredConfiguration. Queste librerie sono simili alle librerie in Boost e wxWidgets ma cerco di limitare il mio uso di wxWidgets ai componenti della GUI e le librerie Boost comparabili sono ... difficili.

Sono interessato a qualsiasi esperienza chiunque possa condividere su POCO, buono o cattivo.

+0

Se si verificano problemi con ACE, contattare Steve Huston all'indirizzo http://www.riverace.com/ - ha lavorato su ACE per un lungo periodo. Quando ho lavorato con ACE in una società precedente, gli ho parlato dei problemi che stavamo avendo e lui è stato gentile ed estremamente utile. Alla fine abbiamo finito per comprare il supporto da lui e ne è valsa la pena. –

+0

Il titolo è fuorviante, come se si stesse cercando di confrontare mele e arance. Non riesco ancora a capire perché menzioni wx e boost? – mentat

+3

Esiste una sovrapposizione significativa tra POCO e Boost (ad esempio, puntatori condivisi, asio, opzioni_programma). Allo stesso modo, POCO e wxWidgets si sovrappongono un po '. –

risposta

17

Ho usato parti di POCO di tanto in tanto e ho trovato che era un lib molto bello. Ho in gran parte abbandonato ACE un certo numero di anni fa, ma POCO contiene alcuni degli stessi pattern: Task, Reactor, ecc. Non ho mai avuto problemi con esso, quindi devo presumere che sia stabile.

Alcuni aspetti che mi piacciono:

  • si tratta di una gerarchia di OOP abbastanza bene integrata in modo che i componenti lavorano bene con l'altro. Ha una sensazione molto più coesa di qualcosa come Boost, che è piuttosto pezzo-pasto.

  • il codice sorgente è disponibile e molto chiaro. Non è necessario dedicare ampi blocchi di tempo per capire cosa sta facendo (ACE, almeno l'ultima volta che ho guardato il sorgente) o essere un wizard di template (Boost).

  • I componenti si avvicinano allo standard C++. Le eccezioni derivano da std :: exception; non hanno ancora reinventato un'altra classe di stringhe, ecc.

  • È sorprendente completo. C'è molto di più lì che appare a prima vista.

Il rovescio della medaglia:

  • una questione di preferenze personali, ma gli autori si attaccano praticamente ad un modello di file di una classe per intestazione così si finisce tra cui un sacco di file differenti.

  • Documentazione limitata. Principalmente le pagine API di tipo doxygen e un paio di PDF che puntano a esempi di fonti. È utilizzabile, ma considerando le dimensioni della libreria è inizialmente difficile capire se si sta facendo il miglior uso dei componenti.

  • Se c'è una comunità attiva costruita attorno ad esso, non l'ho mai trovata. Il pacchetto è gestito da alcune società europee e avevano un wiki ma non l'ho trovato così attivo o utile.

Tutto considerato, il lato negativo è piuttosto minore. Penso che sia un'ottima libreria e lo consiglierei sicuramente.

6

Non ho mai usato ACE, ma ho usato Boost e Poco. Mi piace molto lo stile di programmazione di Poco. I pacchetti sono coerenti e il codice sorgente è facile da leggere. Non sono modelli folli come boost. Nella mia esperienza passo ore a leggere come usare boost - pacchetto di serializzazione, contenitore mappa puntatore ecc. E poco tempo a leggere come usare Poco roba. Direi che hanno un buon design e fanno uso di modelli dove necessario.

Sul lato negativo hanno documentazione dell'API ma non hanno una documentazione esauriente su come usereste un pacchetto. Per questo di solito guardi il codice sorgente di esempio, o la loro unità testa il codice sorgente.

Ho il server HTTPS che funziona su Windows/Linux senza errori evidenti.

Quindi scrivilo come 1 esperienza positiva.

2

Per me sembra che boost abbia la maggior trazione per le nuove librerie C++ e il fatto che molte di esse siano state accettate nel prossimo standard C++ parla da sé.

Io uso ACE e Boost me stesso e le ragioni per cui li ho scelti sono che sono maturi (in particolare ACE) hanno una grande comunità di utenti forte che assicura che saranno mantenuti e migliorati e che posso ottenere un supporto professionale di buona qualità. Usiamo Remedy IT per il nostro supporto ACE/TAO e siamo molto soddisfatti.

Poiché ACE è una libreria molto più vecchia di Boost e uno dei suoi obiettivi è supportare piattaforme più esotiche (come quelle incorporate), non utilizza la tecnologia C++ come Boost. Sto usando una miscela di ACE e Boost e sono molto felice di questa combinazione.

Non so esattamente perché hai messo wxWidgets nella partita, poiché è principalmente una libreria di interfaccia grafica. Ma se dovessi fare alcuni progetti di C + UI andrei con lo QT, principalmente perché questa è anche una libreria ampiamente utilizzata (tutto il desktop di KDE è costruito sopra QT) e quindi ben mantenuto e avrei accesso ad un grande base utenti per domande e supporto.

+1

wxWidgets definisce le proprie classi di stringhe e di raccolta e molte classi di utilità cross-platform per file/socket, ecc. Questo è un retaggio dei giorni precedenti I compilatori C++ supportavano STL (o modelli!) –

+0

È un comune equivoco che wxWidgets è solo roba della GUI, ma c'è molto di più. –

+0

@ Jere.Jones Così fa QT, ma questo non significa che lo userei per cose non UI :-) – lothar

Problemi correlati