Netzwerkprogrammierung: Erzeugung von Sitzungen



  • Hallo Leute,

    ich habe mal eine allgemeine Frage zum Thema Netzwerkprogrammierung.

    Folgendes: Ich habe einen einfachen TLS-Server und -Client. Die Serverinstanz nutzt Sessions die an die jeweiligen Clients gebunden werden. Also jeweis eine Session-Instanz für jeden Client, der sich mit dem Server verbindet. Wenn ich mir diverse Beispiele anschaue, dann werden die Session-Instanzen vom Server auf Vorrat erzeugt. D.h. sobald ein Client connected, wird die vorrätige Session an den Client gekoppelt. Danach generiert der Server eine neue Session-Instanz und hält diese für den nächsten Client bereit.

    Warum macht man das so? Bietet das signifikante Vorteile?

    hier sind z.B. 2 Beispiele:
    --> Boost.ASIO: http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio/example/ssl/server.cpp
    --> Heise: https://www.heise.de/developer/artikel/SSL-TLS-Netzwerkprogrammierung-mit-Boost-Asio-Teil-2-Server-Programmierung-3102667.html?seite=all

    viele Grüße,
    SBond



  • Vorweg, ich weiß es nicht. Aber ich würde es mir wie folgt erklären:

    Üblicherweise will sich ein Server mit mehreren Clients verbinden, daher ist das immer Multithreaded. (dein Beispiel ist ja auch boost asio).

    Wenn jetzt mehrere Clients gleichzeitig auf den Server zugreifen, müsstest du, wenn du die Sessions nicht vorrätig hältst, für jeden Client eine Session erstellen. Das könnte von gemeinsam genutzten Ressourcen abhängig sein um die die unterschiedlichen Clients konkurrieren würden.

    Wenn genug Sessions zur Verfügung stehen, kann für neue Verbindungen jeweils eine Session aus dem Pool genommen werden, während ein anderer Thread gemütlich neue Sessions erstellt, die dann dem Pool hinzugefügt werden.



  • War mir nicht sicher ob so ein Vorgehen bestimmte Vorteile bietet, da die Erzeugung einer leere Session wahrscheinlich nicht ins Gewicht fällt (aus zeitlicher Sicht)

    zu Boost.ASIO... das läuft standardmäßig in einem Thread ab, auch wenn es die Verarbeitung asynchron geschieht. Daher gibt es auch keine Ressourcenkonflikte. 😃

    LG,
    SBond


Log in to reply