2010-02-18 15 views
8

per una delle mie applicazioni Mi piacerebbe fornire un'interfaccia web minima. Questa applicazione principale è scritta in C++ e utilizza Qt4 come framework. Dal momento che sto anche usando alcune librerie che ho scritto per calcolare alcune cose e fare una gestione dei dati complessa, mi piacerebbe usare questo codice esistente come back-end per l'interfaccia web.Utilizzo dell'applicazione C++/Qt4 come backend per l'applicazione Web

Idea 1: L'utilizzo di un server Web incorporato

La prima cosa che ho provato (e che ha lavorato in una certa misura) è stato utilizzando un server Web incorporato (mongoose). Come puoi immaginare, è solo una libreria molto sottile e devi implementare molte cose da te (come la gestione delle sessioni, i cookie, ecc.).

Idea 2: utilizzo di un server web normale e l'aggiunta di un backend fcgi/cgi/SCGI alla mia domanda

La prossima cosa che mi è venuta in testa stava usando un web server maturo, ma compatta (per esempio, lighttpd) e fornire un backend fcgi/scgi/cgi ad esso. Potrei scrivere l'applicazione web utilizzando un buon framework, come Pylons, PHP o RoR, (...) e semplicemente avere un prefisso URL, come /a/... che mi consente di parlare direttamente con il back-end.

Ho provato a implementare il libfcgi nella mia applicazione, ma sembra più messoso del necessario (ad esempio dovresti implementare i tuoi socket TCP/IP per trasferire i dati tra la tua app e il server web e farlo passare attraverso la biblioteca fcgi, meh)

idea 3: creazione di una versione a linea di comando della mia applicazione che fa le cose più elementari e utilizzare un web server normale e il quadro per fare il resto

Questa è la terza idea mi è venuto in mente. Si tratta fondamentalmente di creare un'applicazione web utilizzando un modo tradizionale (PHP, RoR, ecc.) E utilizzando una versione a riga di comando della mia applicazione per elaborare i dati e restituirli quando necessario.


Ho una certa esperienza con la creazione di applicazioni web, ma non ho mai avuto a che fare qualcosa di simile, quindi mi piacerebbe sentire alcune idee o suggerimenti. Mi piacerebbe utilizzare JavaScript sui browser (AJAX, ovvero) e passare alcuni costrutti JSON tra browser Web e server per rendere l'esperienza utente un po 'più fluida.

Allora, quali sono i tuoi suggerimenti, idee su questo? Non voglio re-inventare la ruota, onestamente.

risposta

4

Non vorrei mai esporre un'applicazione personalizzata in rete come front-end, per quei server come apache o lighthttp sono costruiti. Ti danno una certa sicurezza fuori dagli schemi.

Per quanto riguarda l'interazione del vostro app con il webserver, dipende un po 'del carico e che tipo di esperienza avete con la scrittura di software in PHP, Python o altri linguaggi supportati dal vostro web server (tramite interprete ovviamente).

Un leggero carico e uno strumento da riga di comando cui accede da PHP potrebbe fare perfettamente.

Un carico più pesante e si potrebbe desiderare di implementare un semplice server (SOAP?) Con Qt e accedervi da uno script python (o php).

In questo modo non è necessario eseguire il layout nell'app e non è necessario implementare la sicurezza.

+0

Sinceramente non voglio fare tutto ciò che riguarda il layout nella mia applicazione (come questo è quello che le classi template e sono tali per). Voglio solo scambiare informazioni essenziali tra il server web e la mia applicazione principale e utilizzare una tecnologia più stabile e sicura per fare il resto. Non ho mai guardato SOAP, leggerò un po 'di più a riguardo. – BastiBen

3

Attualmente sto ricercando una situazione simile (backend di applicazioni Web personalizzate utilizzando Qt) e l'opzione meno valida è FastCGI. Trovato qualcosa che ti potrebbe interessare. Non pronto per la produzione senza alcuni seri test, ma potrebbe essere un buon punto di partenza per Qt - FastCGI interop: FastCGIQt

+0

Ho esaminato FastCGI, ma la libreria C/C++ "ufficiale" è un vero casino. Forse mi sono perso qualcosa, ma la maggior parte dei server web si connettono alle applicazioni fastcgi usando TCP/IP; sebbene la libreria ufficiale di fastcgi non fornisca alcun supporto TCP/IP ...? – BastiBen

2

Ho usato il FastCGI Protocol Driver library per un progetto simile (anche un'applicazione Qt), il link per il download si trova alla fine di quella pagina [Libfastcgi]. L'integrazione con l'applicazione è risultata in realtà relativamente semplice. Lighttpd + mod_fastcgi è stato usato come web server. Non posso dire nulla su FastCGIQt, però.

0

Si Wt è utile per fornire un'interfaccia Web per le applicazioni basate su Qt. Entrambi hanno uno stile di programmazione simile, e c'è un esempio che dimostra l'integrazione con Qt.

Problemi correlati