È possibile combinare C / C ++ con i linguaggi Web? [duplicare]

8

Vorrei creare un'applicazione web (il che significa che verrà eseguita dal browser). Il punto è che voglio scrivere solo l'interfaccia utente in HTML5 + CSS + JS (o forse anche qualche PHP). D'altra parte, voglio scrivere la funzionalità dell'applicazione in C o C ++. Quindi, voglio combinare il codice relativo all'interfaccia utente e alla funzionalità. Pertanto, vorrei chiedere se sia possibile combinare codice C / C ++ con markup web / linguaggi di programmazione?

    
posta terett 04.10.2013 - 16:44
fonte

3 risposte

8

Ci sono un paio di modi per usare C o C ++ nel mondo del web.

Il metodo antico è CGI . Con questo approccio hai un server web configurato per lanciare CGI fork e exec CGI quando richiesto. Il problema con questo è che il fork e exec è piuttosto pesante. Se hai 1000 connessioni simultanee, significa che hai 1000 processi in esecuzione, non ideali.

Spostando un passo avanti verso il server web, in particolare questa volta apache, si potrebbe scrivere un modulo per esso in C che gestisce il codice. Questo vive all'interno del server web come una libreria ed è molto più veloce, anche se significa strettamente integrato con l'ambiente Apache che non è sempre banale. Il libro più recente per questo approccio è stato pubblicato nel 1999 ed è probabilmente un po 'datato.

Altri linguaggi e stack di programmazione Web sono stati spostati in una struttura del server delle applicazioni. Con questo approccio, è progettato per ospitare processi leggeri (piuttosto che pesanti fork ed exec), spesso con un focus su un'interfaccia web per le applicazioni.

Elenchi di Wikipedia alcuni server di applicazioni C ++:

  • Tuxedo - Based on the ATMI standard, is one of the original application servers.
  • Tntnet - Includes a template engine which allows embedding C++ code in HTML pages. Templates are compiled before run-time, and thus very fast. Multi-threaded, supports object lifetime via scoped variables.
  • CPPSERV - C++ servlet container.
  • Wt - A web toolkit similar to Qt permitting GUI-application-like web development with built-in Ajax abilities.
  • POCO C++ Libraries - A collection of open source class libraries including Poco.Net.HTTPServer.html
  • CppCMS

Il punto chiave di questo è che probabilmente hai bisogno di lavorare all'interno di un altro framework. La scrittura di un'applicazione Web scalabile multithreading è al di là dei mezzi della maggior parte dei programmatori.

Ti rendi conto che l'hosting potrebbe essere un problema. Quasi tutti gli host Web offrono php e molti offrono tomcat (java). Dovresti fare un po 'di scavo per trovarne uno che offra uno dei suddetti server applicativi (pochissimi offrono ora cgi e ancora meno permetteranno un'applicazione casuale da eseguire).

Uno dei vantaggi dei linguaggi accoppiati a un server di applicazioni all'inizio del loro sviluppo è che la struttura dell'applicazione è coerente (java ha il file .war che è lo stesso indipendentemente dal contenitore a cui si distribuisce, a meno che tu ho scritto codice specifico del contenitore). I contenitori C ++ sembrano incompatibili tra loro (accolgo con favore eventuali correzioni su questo argomento).

    
risposta data 04.10.2013 - 17:03
fonte
1

Che ne pensi dello sviluppo delle funzionalità dell'app come server separato e della comunicazione con l'interfaccia utente utilizzando REST (o SOAP)? JS può elaborare questi messaggi e aggiornare l'interfaccia utente. IMHO è un'opzione migliore.

Questa soluzione è praticabile per te?

    
risposta data 04.10.2013 - 22:20
fonte
0

Puoi usare anche strumenti come emscripten , questo converte il codice a barre LLVM in javascript. Puoi combinarlo con clang o clang ++ per eseguire C o C ++ nel browser. (In realtà sul lato client, a differenza di CGI)

(Unreal ha fatto la sua porta html5 in questo modo!)

    
risposta data 04.10.2013 - 20:52
fonte

Leggi altre domande sui tag