Boost::Asio - Wtf geht hier vor sich!?



  • Hallo,

    zuerstmal: Warum zur Hölle gibt es zu so einer geilen Lib keine vernünftigen Tutorials? Unverschämtheit so eine geile Lib zu proggen und dann eine unschlüssige Halbreferenz dahin zu knallen, mit der keiner etwas anfangen kann.

    Wie dem auch sei, ich habe eine Frage zu boost::asio::ip::tcp::acceptor. Bzw. was ist das überhaupt? Kann ich mir das als eine Art "Schnittstelle" vorstellen?

    Danke im Voraus!



  • Kóyaánasqatsi schrieb:

    zuerstmal: Warum zur Hölle gibt es zu so einer geilen Lib keine vernünftigen Tutorials? Unverschämtheit so eine geile Lib zu proggen und dann eine unschlüssige Halbreferenz dahin zu knallen, mit der keiner etwas anfangen kann.

    Wenn Du zu dumm bist, um das Beispiel zu verstehen, woher willst Du dann wissen, dass diese Library "geil" ist?



  • Mir wurde bereits von mehreren Leuten bestätigt dass das Paper, welches sich "Tutorial" schimpft, schlecht ist. Deswegen behalte ich mal meine Meinung über dich für mich. Scheinst ja auch nicht der Hellste zu seien, wenn du meinst hier Leute beleidigen zu müssen 👎 .



  • Kóyaánasqatsi schrieb:

    Mir wurde bereits von mehreren Leuten bestätigt dass das Paper, welches sich "Tutorial" schimpft, schlecht ist.

    Wie kannst Du dann behaupten, dass diese Library was taugt?
    PS: http://blog.think-async.com/



  • @Komischer Film den keiner kennt:

    Die ASIO sieht auf den ersten Blick ganz toll aus. IMO ist sie aber recht mühsam zu verwenden, und macht einem an einigen Stellen das Leben unnötig schwer. So schwer, dass ich es fast einen Design-Fehler nennen würde.
    Ich will die ASIO oder ihre Erschaffer nicht schlecht machen. Ich bin aber der Meinung, dass der Peer-Review Prozess der Boost hier einigermassen versagt hat. Anders gesagt: sie ist zu schnell aufgenommen worden. Nun ist sie quasi-Standard, und wir haben den Salat.

    Allgemein würde ich die ASIO als ziemlich schwierig und komplex einstufen. Und das, kombiniert damit dass auf den ersten Blick alles toll und einfach aussieht, finde ich nicht so gut.

    Du wirst also vielleicht verstehen, dass ich die Meinung von Baba soweit teile, als dass ich glaube, dass du die Qualität der ASIO unmöglich beurteilen kannst.

    Davon abgesehen...
    Die Doku die du verlinkst, ist extrem alt. Boost Version 1.35, das war kurz nach dem Krieg. Soll das also ein schlechter Scherz sein, oder ist es einfach nur auf die Unfähigkeit zurückzuführen die aktuelle Version eben dieser Doku zu finden?

    Die aktuelle ist hier: http://www.boost.org/doc/libs/1_42_0/doc/html/boost_asio.html
    Beispiele sind hier zu finden, falls du den grossen, dicken "Examples" Link auf der Haupt-Seite nicht findest: http://www.boost.org/doc/libs/1_42_0/doc/html/boost_asio/examples.html

    ----

    Was tcp::acceptor angeht, da: http://www.boost.org/doc/libs/1_42_0/doc/html/boost_asio/reference/ip__tcp/acceptor.html
    Und da: http://www.boost.org/doc/libs/1_42_0/doc/html/boost_asio/overview/networking/protocols.html#boost_asio.overview.networking.protocols.tcp_servers

    Was genau ist da jetzt besonders unklar?

    Oder könnte es vielleicht sein, dass du von TCP/IP und Netzwerk-Streams so überhaupt garkeine Ahnung hast, und glaubst die Doku der ASIO müsse dir auch noch das Fahrrad-Fahren, Kochen und Nase-Putzen beibringen? In hübsch bebilderten Tutorials?



  • Die "Designfehler" liegt doch eher darin, das es sich um eine Low-Level-Library handelt, oder? Nicht jeder braucht so was. Die meisten wollen doch eher gängige Anwendungsprotokolle, wie http, pop3 usw. nutzen. Aber genau das vermisst man doch als Einsteiger in die Netzwerk-Welt. Und genau dann kommt das was hustbaer beschreibt: die Low-Level-Knowhows braucht man für boost asio. Aber die muß nicht jeder Anwendungsprogrammierer kennen. Ich brauche Low-Level-Knowhow, wenn ich ein eigenes Protokoll implementieren will, oder einen Server entwickle.

    Über das Low-Level-Design will und kann ich nicht urteilen. Aber meiner Meinung nach ist boost asio nicht weiter gedacht. Es fehlen Standard-Anwendungs-Protokolle: http, ftp, smtp, pop3, nntp uvm. Ich will einfach nur eine http-Request senden und eine Seite geliefert bekommen. Punkt! Das geht nicht mit asio, oder?

    Da kann man eindeutig die Konkurrent empfehlen: http://pocoproject.org/
    Da sind die Anwendungsprotokolle dabei.



  • Dass die ASIO eher eine Low-Level Library ist, stört mich nicht wirklich.
    Zumindest nimmt sie einem einen grossteil der Plattform-abhängigen Sachen ab, und bietet eine halbwegs schöne Integration mit C++.

    Was mich dagegen schon stört, ist z.B. die Sache mit den Completion-Handlern. Die ASIO "garantiert" dass ein Completion-Handler irgendwann aufgerufen wird. OK, ausgeschrieben steht diese "Garantie" glaube ich nirgends, aber man geht davon aus dass es so sein muss. Diese "Garantie" kann sie aber nicht halten, da es Fälle gibt, wo der Completion-Handler einfach nur zerstört wird. Nämlich z.B. wenn nicht genügend Resourcen da sind, um den Aufruf des Completion-Handlers in einer Queue einzutragen.

    D.h. man muss sein Programm so auslegen, dass man im Falle des Falles mitbekommt, wenn die letzte Kopie eines Completion-Handlers zerstört wird.

    Das sind so Dinge, die einem das Leben einfach total schwer machen. Vor allem weil man erstmal draufkommen muss, dass es da ein potentielles Problem gibt.


Anmelden zum Antworten