2010-02-18 14 views
8

für eine meiner Anwendungen möchte ich eine minimale Web-Oberfläche 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.Mit C++/Qt4-Anwendung als Back-End für Web-Anwendung

Idee 1: Verwenden eines integrierten Webservers

Das erste, was ich versuchte (und das bis zu einem gewissen Grad gearbeitet) wurde einen eingebetteten Web-Server (mongoose). Wie Sie sich vorstellen können, ist es nur eine sehr dünne Bibliothek und Sie müssen eine Menge Dinge selbst implementieren (wie Session-Management, Cookies, etc.).

Idee 2: einen normalen Web-Server verwenden und das Hinzufügen einer fcgi/cgi/scgi Backend auf meine Bewerbung

Das nächste, was mir in den Kopf kam, war eine reife, aber kompakte Web-Server (zB lighttpd) und stellen 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, mit dem ich direkt mit dem Backend sprechen kann.

Ich habe versucht, die libfcgi in meine Anwendung zu implementieren, aber es sieht unordentlicher als benötigt (zum Beispiel müssten Sie Ihre eigenen TCP/IP-Sockets für die Weitergabe von Daten zwischen Ihrer App und dem Webserver implementieren und tunneln durch die FCGI Bibliothek, meh)

Idee 3: eine Kommandozeilen-Version meiner Anwendung erstellen, die die grundlegendsten Dinge tun und einen normalen Web-Server und Framework verwenden den Rest

Dies ist die dritte Idee zu tun das kam mir zu Kopf. Es geht im Grunde darum, eine Webanwendung auf herkömmliche Weise (PHP, RoR usw.) zu erstellen und eine Befehlszeilenversion meiner Anwendung zu verwenden, um Daten zu verarbeiten und bei Bedarf zurückzugeben.


Ich habe einige Erfahrung mit der Erstellung von Web-Anwendungen bekommen, aber ich hatte nie so etwas zu tun, so möchte ich einige Ideen oder Vorschläge hören. Ich möchte JavaScript auf den Browsern (AJAX, das ist) verwenden und einige JSON-Konstrukte zwischen Webbrowser und Server übergeben, um den Benutzer etwas glatter zu machen.

Also was sind deine Vorschläge, Ideen dazu? Ich möchte das Rad nicht wirklich neu erfinden.

Antwort

4

Ich würde nie eine benutzerdefinierte schriftliche Anwendung auf das Netz als Front-End, für die Server wie Apache oder Lighthttp gebaut werden. Sie geben Ihnen einige ernsthafte Sicherheit aus der Box.

Wie für die Interaktion Ihrer App mit dem Webserver, es hängt ein wenig von der Last und welcher Art von Erfahrung, die Sie mit dem Schreiben von Software haben in PHP, Python oder andere von Ihrem Web-Server unterstützten Sprachen (via Dolmetscher natürlich).

Ein leichtes Laden und ein Kommandozeilen-Tool, auf das von PHP aus zugegriffen wird, kann sehr gut funktionieren.

Eine schwerere Last und Sie möchten vielleicht einen einfachen (SOAP?) Server mit Qt implementieren und darauf von einem Python (oder PHP) -Skript zugreifen.

Auf diese Weise brauchen Sie nicht das Layout App in was Sie zu tun, und Sie müssen auch keine Sicherheit viel alle implementieren, dass.

+0

ich ehrlich will nichts Layout in meiner Anwendung im Zusammenhang tun (wie das ist, was Template-Klassen und so sind für). Ich möchte nur wichtige Informationen zwischen dem Webserver und meiner Kernanwendung austauschen und stabilere und sicherere Technologien verwenden, um den Rest zu erledigen. Habe SOAP nie angeschaut, lese ein bisschen mehr darüber. – BastiBen

3

Ich forschen derzeit eine ähnliche Situation (benutzerdefinierte Web-App-Backend mit Qt) und die am wenigsten schlechte Option ist FastCGI. Gefunden etwas, das Sie vielleicht interessieren nicht Produktion bereit, ohne einige ernsthafte Prüfung, aber dies könnte ein guter Ausgangspunkt für Qt sein - FastCGI Interop. FastCGIQt

+0

Ich habe FastCGI angeschaut, aber die "offizielle" C/C++ - Bibliothek ist ein echtes Durcheinander. Vielleicht habe ich etwas verpasst, aber die meisten Webserver verbinden sich über TCP/IP mit den fastcgi-Anwendungen; obwohl die offizielle fastcgi-Bibliothek keine TCP/IP-Unterstützung bietet ...? – BastiBen

2

ich die FastCGI Protocol Driver library für ein ähnliches Projekt verwendet haben (auch eine Qt-Anwendung), der Download-Link befindet sich 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.

0

Sie Wt auch eine Web-Schnittstelle zu Qt-basierten Anwendungen zur Verfügung zu stellen funktioniert. Beide haben einen ähnlichen Programmierstil, und es gibt ein Beispiel, das die Integration mit Qt demonstriert.

Verwandte Themen