Für eine meiner Anwendungen möchte ich ein minimales Web-Interface bereitstellen. Diese Kernanwendung ist in C ++ geschrieben und verwendet Qt4 als Framework. Da ich auch einige Bibliotheken verwende, die ich geschrieben habe, um einige Dinge zu berechnen und ein komplexes Datenmanagement durchzuführen, möchte ich diesen vorhandenen Code als Backend für die Webschnittstelle verwenden.
Idee 1: Verwenden eines eingebetteten Webservers
Das erste, was ich ausprobiert habe (und das zu einem gewissen Grad funktioniert hat), war ein eingebetteter Webserver ( Manguste ). . Wie Sie sich vorstellen können, ist es nur eine sehr dünne Bibliothek und Sie müssen viele Dinge selbst implementieren (wie Session Management, Cookies, etc.).
Idee 2: Einen normalen Webserver verwenden und ein fcgi / cgi / scgi-Backend zu meiner Anwendung hinzufügen
Als nächstes kam mir ein ausgereifter, aber kompakter Webserver (zum Beispiel lighttpd) in den Sinn und stellte einfach ein fcgi / scgi / cgi-Backend zur Verfügung. Ich könnte die Webanwendung mit einem guten Framework wie Pylons, PHP oder RoR schreiben (...) und einfach ein URL-Präfix wie /a/...
haben, das es mir erlaubt, direkt mit dem Backend zu kommunizieren.
Ich habe versucht, das libfcgi in meine Anwendung zu implementieren, aber es sieht unordentlicher als nötig aus (zum Beispiel müssten Sie Ihre eigenen TCP / IP-Sockets implementieren, um Daten zwischen Ihrer App und dem Webserver weiterzuleiten und durch den Tunnel zu tunneln FCGI-Bibliothek, meh)
Idee 3: Erstellen einer Befehlszeilenversion meiner Anwendung, die die grundlegendsten Dinge tut und einen normalen Webserver und ein Framework verwendet, um den Rest zu erledigen
Das ist die dritte Idee, die mir zu Kopf gestiegen ist. Es geht im Grunde darum, eine Webanwendung auf traditionelle Weise (PHP, RoR usw.) zu erstellen und eine Befehlszeilenversion meiner Anwendung zu verwenden, um Daten zu verarbeiten und bei Bedarf zurückzugeben.
Ich habe etwas Erfahrung mit der Erstellung von Web-Anwendungen, aber ich musste nie so etwas machen, also würde ich gerne einige Ideen oder Vorschläge hören. Ich würde gerne JavaScript in den Browsern (AJAX) verwenden und einige JSON-Konstrukte zwischen dem Webbrowser und dem Server übergeben, um den Benutzer etwas flüssiger zu machen.
Was sind Ihre Vorschläge, Ideen dazu? Ich will das Rad nicht wirklich neu erfinden.
Ich würde niemals eine benutzerdefinierte geschriebene Anwendung als Front-End dem Netz aussetzen, denn Server wie Apache oder Lighthttp werden erstellt. Sie geben Ihnen einige ernsthafte Sicherheit aus der Box.
Was die Interaktion Ihrer App mit diesem Webserver betrifft, hängt es ein wenig von der Auslastung ab und welche Art von Erfahrung Sie mit PHP-Software, Python oder anderen von Ihrem Webserver unterstützten Sprachen haben (natürlich über einen Interpreter) / p>
Ein leichter Ladevorgang und ein Kommandozeilen-Tool, auf das von PHP aus zugegriffen wird, können sehr gut funktionieren.
Eine schwerere Last und Sie möchten vielleicht einen einfachen (SOAP?) Server mit Qt implementieren und von einem Python (oder PHP) -Skript darauf zugreifen.
Auf diese Weise müssen Sie in Ihrer App kein Layout erstellen, und Sie müssen auch nicht so viel Sicherheit implementieren.
Ich untersuche gerade eine ähnliche Situation (benutzerdefinierte Web-App-Backend mit Qt), und die am wenigsten schlechte Option ist FastCGI. Gefunden etwas, das Sie interessieren könnte. Nicht Produktion bereit, ohne einige ernsthafte Tests, aber dies könnte ein guter Ausgangspunkt für Qt - FastCGI Interop sein: FastCGIQt
Ich habe die FastCGI Protocol Driver-Bibliothek für ein ähnliches Projekt (auch eine Qt-Anwendung) verwendet, der Download-Link ist am Ende dieser Seite [Libfastcgi]. Die Integration mit der Anwendung gestaltete sich tatsächlich vergleichsweise einfach. Lighttpd + mod_fastcgi wurde als Webserver verwendet. Ich kann jedoch nichts über FastCGIQt sagen.
Hier ist ein Beispiel für einen eingebetteten QML-Server: Ссылка
Tags und Links c++ ajax qt4 web-services backend