2008-10-28 11 views
125

La documentación disponible en el boost website es ... limitada.La mejor documentación para Boost: asio?

Según lo que he podido leer, el consenso general es que simplemente es difícil encontrar una buena documentación en la biblioteca boost :: asio.

¿Es este realmente el caso? Si es así, ¿por qué?

Notas:

  • ya he encontrado la (no-boost) Asio website - y la documentación que parece ser idéntica a la de la página web impulso.
  • Sé que Boost :: asio es nuevo. Estoy buscando soluciones, no excusas.

Editar:

  • Hay una proposal to add a networking library to standard library for TR2 escrito por el autor de Boost: asio (Christopher Kohlhoff). Si bien no es la documentación de boost: asio, sí la usa como base para la propuesta de TR2. Dado que el autor hizo un mayor esfuerzo en este documento, he encontrado que es algo útil, si no como referencia, al menos como una descripción general.

Respuesta

52

En primer lugar, he estado usando Boost.Asio desde hace bastante tiempo, y comparto su preocupación. Para abordar su pregunta:

  • Realmente hay muy poca documentación sobre Boost.Asio aparte de la introducción y el tutorial. No soy el autor, pero esto se debe principalmente a que hay demasiadas cosas para documentar algo tan bajo como una biblioteca de I/O asíncrona.
  • Los ejemplos dan más lejos que los tutoriales. Si no le importa pasar un poco de tiempo mirando los diferentes ejemplos, creo que deberían ser suficientes para comenzar. Si desea huir con él, entonces la documentación de referencia debería ayudarlo mucho.
  • Pregunte en la lista de correo de Boost Users y Boost Developers si realmente está trabado o buscando orientación específica. Estoy bastante seguro de que muchas personas estarán dispuestas a abordar sus inquietudes en las listas de correo.

Existen esfuerzos (que no forman parte de Boost.Asio) para exponer una gran parte de la funcionalidad y posibles casos de uso alternativos. Esto, en el mejor de los casos, está disperso por la web en blogs y otras formas de documentación no empaquetada.

Una cosa que no está clara y que realmente necesitará una estrecha coordinación con el autor y los desarrolladores de la biblioteca de Boost.Asio sería extenderla y personalizarla para una plataforma específica o agregar nuevas funcionalidades específicas. Sin embargo, esto debería mejorarse, pero lo bueno es que parece que Asio será una implementación de referencia para un informe técnico de biblioteca estándar (para una biblioteca IO asíncrona en el STL) en el futuro.

+1

Gracias por confirmar las sospechas. Lamentablemente, traté de aprender de los ejemplos, con un éxito decente pero limitado. Desafortunadamente, no puedo justificar el uso de una biblioteca que tiene un pequeño conjunto de ejemplos como un conjunto de instrucciones. Puedo seguir su consejo para preguntar sobre el NM, pero espero con impaciencia una mejor asistencia. – mmocny

+0

Acabo de poner dos y dos juntos. Uno de los mejores éxitos de google (y la mayoría de los artículos informativos) que encontré mientras Google aumenta Asio estaba en tu blog :) – mmocny

+0

Sí, pero no quería decirlo abiertamente todavía. ;) Chis Kholhoff (el autor) también tiene un blog en el que habla mucho sobre Asio y cómo se puede utilizar en circunstancias no tan comunes. –

39

Escribí dos pequeños artículos que podrían usarse como introducción a boost.asio. Están disponibles en my site

+4

Encontré el sitio web de Alex Ott de forma independiente mientras investigaba si usar asio o as para nuestro proyecto actual. Su sitio respondió muchas de mis preguntas. –

60

Algunos buen impulso en la documentación que incluye un capítulo sobre asio se pueden encontrar en un (gratis) libro de impulso en http://en.highscore.de/cpp/boost/index.html. El capítulo sobre asio ofrece una descripción general y luego llega a cómo desarrollar sus propias extensiones de asio personalizadas. ¡Un esfuerzo realmente fantástico de Boris Schäling!

30

Un relativamente nuevo y muy buen tutorial para principiantes Boost.Asio (que también se explica cómo utilizar de manera eficaz con bind, shared_ptr, y las roscas) se pueden encontrar aquí :

http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting-started-with-boostasio?pg=1

Nota: Si estás usando C++ 0x cuenta con muchos de los usos simples de vinculación para la creación de un funtor se puede reemplazar con lambdas, y shared_ptr/vinculación también están disponibles en la versión más reciente de Visual Studio (o gcc que también incluyen s hilos.)

Cuando estaba buscando documentación o un tutorial, esta pregunta seguía apareciendo en la parte superior de los resultados de búsqueda, por lo que es importante mantenerla actualizada a medida que aparezcan nuevos tutoriales.

+0

¡Buen enlace! Definitivamente una buena guía para comenzar con asio – Ralf

+0

Buen enlace muy bueno – Ghita

+1

Gracias por publicar este enlace. Desafortunadamente, sentí que justo cuando empezaba a ser bueno, el autor tira la pelota, te tira directamente a la biblioteca que creó y me perdió por completo. Él/ella pasó de explicar en detalle cómo funciona 'bind' hasta dejar que el lector adivine qué 'Hive' está en su biblioteca. –

4

La documentación asio, la que está disponible en el impulso, es minimalista pero muy precisa, cada palabra es importante. Dicho esto, aprendí asio (y sigo aprendiendo) principalmente de SO.

En mi opinión, la answer a 'confundido cuando asio impulso :: :: io_service bloques método run/desbloquea' es el primer paso, leer una lectura de nuevo hasta que realmente lo entiende, second answer también es útil.

entonces he RSS suscrito a newest SO boost-asio tag question y para estos dos que responden:

Tanner Sansburry, el autor de la respuesta anterior, sus respuestas son siempre muy precisa, completa, con referencias, incluso beautiful schema s. RSS feed
Sehe (perdón Sehe, solo 2do). RSS feed

¡Con todo ese material, pronto será un experto en asio!

0

Un poco tarde para la fiesta, pero hay un libro llamado "Boost Asio Network Programming" (publicación de Packt).

Compré una copia de esto, la leí durante el fin de semana y luego escribí un servidor completo en C++ sin mucho problema.

Descargo de responsabilidad: No tengo nada que ver con el libro

Cuestiones relacionadas