Session management per CGI (c / c++ )



  • Will paar dynamische Seiten per cgi auf C / C++ ebene "zaubern". C / C++ wegens der performance, und scho vorhandene DB anbindung.

    Kennt da wer paar gute seiten zum thema Session managment, will den user ja nicht bei jedem click Username / password neu eingeben lassen, und username / pw sollen nicht im html aufruf erscheinen, weder verschluesselt noch unverschluesselt.
    Oder hat da wer paar tips ?

    Ciao ...



  • Hallo RHBaum,

    ich bin absolut kein CGI Experte, aber das Problem liegt ja offenbar
    darin, dass du keinen Context hast, in den du die Daten speichern kannst
    um sie beim nächsten Seitenaufruf wieder abzurufen.
    Also mußt du dir selbst ne Session basteln. Generier dir ne (eindeutige)Identifizierung
    und übergib sie per Cockie (oder URL) an den Client. Mit Hilfe dieser
    Identifizierung (und der IP-Adresse) kannste die Daten dann serialisieren
    um sie beim nächsten Seitenaufruf wieder zu laden.
    Wie du sie Zwischenspeicherst ist egal. Ich würd es in der Datenbank machen.

    Gruß,
    *Cpp-Anfänger*



  • Du speicherst halt eine zufällig generierte SessionID in einem Cookie beim Client. Und auf dem Server merkst du dir die Zuordnung Session => User.



  • Nur so nebenbei: Wegen der Performance empfiehlt sich kein C oder C++ als cgi einzusetzen. PHP beispielsweise ist wesentlich schneller als ein cgi-Programm, welches in C oder C++ geschrieben wurde. Bei cgi wird bei jedem Aufruf der Prozess gestartet. Bei PHP nicht. Wenn es um Datenbanken geht, kann ein persistentes System zudem auch eine Verbindung zur Datenbank halten und muß daher nicht für jeden Request sich neu anmelden.

    Ich bin kein Anhänger von PHP. Im Gegenteil - ich würde PHP eher nicht empfehlen. Ich bevorzuge immer C++. Aber ich warne einfach davor, C++ oder C einfach mit schnell gleich zu setzen. Wenn man es nicht richtig macht, kann das durchaus daneben gehen.

    Es gibt sicher einen Webapplikationsserver für C++, der die Applikation persistent hält. Da musst Du sicher nicht allzuweit suchen. Das erleichtert auch das Sessionmanagement, da die Sessions im Speicher gehalten werden können. 😉



  • @tntnet: 100% ACK. An dieser Stelle muss auf jeden Fall Java erwähnt werden, da es genau in diesem Bereich seine Vorteile ausspielen kann.

    Schau Dir wt (http://www.webtoolkit.eu/wt/) an, imho derzeit das beste C++ Web Toolkit!



  • /. schrieb:

    @tntnet: 100% ACK. An dieser Stelle muss auf jeden Fall Java erwähnt werden, da es genau in diesem Bereich seine Vorteile ausspielen kann.

    Schau Dir wt (http://www.webtoolkit.eu/wt/) an, imho derzeit das beste C++ Web Toolkit!

    Hast Du Dir tntnet schon mal angeschaut?



  • Schau Dir tntnet an, imho derzeit das beste Webapplikationsserver für C++



  • Immer die selben Märchen. C ist und bleibt um ein vielfaches schneller, als es PHP oder Java jemals sein werden. ich verweise hier nurmal auf http://www.mrunix.de/forums/showthread.php?t=50206 um nicht wieder alles schreiben zu müssen.

    Java, PHP und CO können von Natur aus niemals so schnell sein, wie echter Maschinencode.



  • Denk scho das Java / php schneller sein kann.

    Muss halt nur mehrere cgi aufrufe an den webserver generieren, und schon laed er jedesmal nen neuen prozess. waehrend bei ner interpretierten Sprache der Interpreter ja meist scho geladen ist.

    Bei der reinen abarbeitung von code, wenn der prozess einmal geladen wurde, ist c / c++ natuerlich schneller.

    Warum ich eigentlich c / c++ machen will:
    Ich will den content parallel, also einmal als Webapplikation (cgi) und einmal als normale Applikation mit "Datenaustausch per Tcp" zum Server, anbieten.

    Einigen Gelegenheitsusern kann man natuerlich nicht zumuten, nen client zu installieren.
    Anderen "powerusern/administratoren" kann man natuerlich nicht die "Traegheit" einer Webapplikation zumuten. Da iss nen caching auf der eigenen Platte und uebertragung zum server im hintergrund wesentlich effektiver.

    Die DB soll dabei ziemlich doof bleiben, die verknuepfung der Daten aber ist doch recht komplex. Also brauch ich soweiso ne Aufarbeitungsschicht dazwischen, die werd ich eh in C / C++ machen, in form von Lib's.

    Deshalb dacht ich, dass man mit c++ da weiterkommt, dann koennten die libs c++ schnittstellen haben.

    Kann man in Java / php eigentlich libs mit c schnittstellen einbinden ? sollte doch gehen ?

    Ne alternative waere das der Webserver den Applikationsserver (der die Infos per tcp bereitstellt) befragt und nicht die DB selber. hab aber keine Ahnung ob man mit php / java gescheit auf bytebene (datenbloecke) arbeiten kann, und man ueberhaupt in der lage ist, natives tcp/ip, also mit ner quasi socket-aehnlichen schnittstelle zu fahren.

    Nen generieren der daten in xml wollt ich eigentlich vermeiden (performance) ....

    Ciao ...



  • @RHBaum
    CGI ist das Problem. Nicht C oder C++. Man nimmt halt lieber FastCGI, SCGI oder schreibt sich ein Modul für den Server. Mod_php ist ja auch ein C-Programm!


Log in to reply