J'ai travaillé avec le Bibliothèques Boost C++ depuis un certain temps. J'aime absolument le Boost Bibliothèque Asio C++ pour la programmation du réseau. Cependant, on m'a présenté deux autres bibliothèques : POCO y Cadre de l'environnement de communication adaptatif (ACE) . J'aimerais connaître les avantages et les inconvénients de chacun.
Réponses
Trop de publicités?Les bibliothèques de socket ACE sont solides. Si vous essayez de porter une implémentation standard des sockets, vous ne pouvez pas vous tromper. Le code ACE s'en tient à un paradigme de développement rigide. Les constructions de plus haut niveau sont un peu confuses à utiliser. Le paradigme rigide provoque quelques anomalies dans la gestion des exceptions. Il existe ou a existé des situations où des paires de valeurs de chaînes de caractères passées dans une exception alors que l'une des paires est nulle, ce qui provoque une levée d'exception dans l'exception qui vous laissera perplexe. La profondeur de la superposition des classes est fastidieuse lors du débogage. Je n'ai jamais essayé les autres bibliothèques et ne peux donc pas faire de commentaire intelligent.
Boost bénéficie d'un statut "proche de la STL" en raison du nombre de personnes siégeant au comité de normalisation du C++ qui sont également des développeurs Boost. Poco et ACE ne bénéficient pas de cet avantage, et d'après mon expérience anecdotique, Boost est plus répandu.
Cependant, le POCO dans son ensemble est plus centré sur des trucs de type réseau. Je m'en tiens à Boost, donc je ne peux pas vous aider dans ce domaine, mais l'avantage de Boost est son utilisation (relativement) répandue.
Boost est génial, je n'ai entendu que de bonnes choses sur POCO (mais je ne l'ai jamais utilisé) mais je n'aime pas ACE et je l'éviterais à l'avenir. Bien que vous trouviez des fans de ACE, vous trouverez également de nombreux détracteurs, ce qui n'est pas le cas avec Boost ou Poco (IME), ce qui, pour moi, indique clairement que ACE n'est pas le meilleur outil (bien qu'il fasse ce qu'il dit sur la boîte).
Parmi ceux-ci, je n'ai jamais vraiment utilisé que ACE. ACE est un excellent framework pour les applications de réseau d'entreprise multiplateformes. Il est extrêmement polyvalent et évolutif et est livré avec TAO et JAWS pour un développement rapide et puissant d'applications ORB et/ou Web.
Il peut être quelque peu décourageant de se familiariser avec le système, mais il existe une abondante documentation à ce sujet et un soutien commercial.
Il est cependant un peu lourd, donc pour les applications à petite échelle, il peut être un peu excessif. En lisant le résumé de POCO, il semble qu'ils visent un système qui peut être exécuté sur des systèmes embarqués, donc je suppose qu'il peut être utilisé d'une manière beaucoup plus légère. Je peux maintenant lui donner un tourbillon :P
Je pense que c'est vraiment une question d'opinion, il n'y a pas de bonne réponse.
D'après mon expérience de l'écriture de code serveur Win32/Linux portable (plus de 15 ans), je trouve personnellement que boost/ACE est inutilement gonflé et introduit des risques de maintenance (autrement connu sous le nom de "dll hell") pour le peu d'avantages qu'il procure.
ACE semble également être terriblement dépassé, c'est une "bibliothèque c++" écrite par des "programmeurs c" dans les années 90 et cela se voit vraiment à mon avis. Il se trouve qu'en ce moment même, je suis en train de réorganiser le projet écrit avec Pico, il me semble qu'il suit complètement l'idée de ACE, mais en termes plus contemporains, pas beaucoup mieux.
Quoi qu'il en soit, pour des communications serveur performantes, efficaces et élégantes, il est préférable de n'utiliser aucun d'entre eux.
- Réponses précédentes
- Plus de réponses
3 votes
ACE est le "couteau suisse ultime de la programmation réseau" pour la programmation C++, mais la dernière fois que j'ai vérifié, c'était aussi un énorme monstre dépendant en soi.