Verwendung der C ++ / Qt4-Anwendung als Backend für die Webanwendung

8

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.

    
BastiBen 18.02.2010, 08:52
quelle

5 Antworten

4

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.

    
extraneon 18.02.2010, 09:08
quelle
3

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

    
Mihai Limbășan 18.02.2010 10:18
quelle
2

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.

    
raffel 28.07.2010 19:38
quelle
0

Sie Wt funktioniert gut, um eine Webschnittstelle für Qt-basierte Anwendungen bereitzustellen. Beide haben einen ähnlichen Programmierstil, und es gibt ein Beispiel, das die Integration mit Qt demonstriert.

    
user52875 14.10.2010 11:26
quelle
0

Hier ist ein Beispiel für einen eingebetteten QML-Server: Ссылка

    
user2053898 30.03.2015 01:32
quelle

Tags und Links