Interfaccia Web con FastCGI o con HTTP diretto?

5

Supponiamo che io voglia (per divertimento all'inizio) di giocare con qualche nuova idea DSL (linguaggio specifico del dominio). E voglio davvero che i suoi utenti (probabilmente solo io all'inizio) interagiscano attraverso un'interfaccia web. Probabilmente lo implementerò in C ++ (probabilmente usando LLVM).

Devo usare una libreria server HTTP (come libonion o microhttpd ) per parlare direttamente con HTTP o dovrei usare FastCGI? Potrei anche usare le librerie facendo entrambi come cppcms o wt ...

In particolare, sto notando che diversi framework web recenti ( Opa , Ocsigen , ...) non hanno alcuna interfaccia FastCGI ma solo HTTP uno .... (ma Ur / Web sembra avere entrambi)

Quindi la mia sensazione è che FastCGI sia davvero fuori moda ...

Qualche opinione su questo? Sai che è stato avviato di recente un progetto utilizzando FastCGI? (e che dire di SCGI?)

    
posta Basile Starynkevitch 08.12.2012 - 00:41
fonte

2 risposte

3

Alcune note:

So my feeling is that FastCGI is really out of fashion....

Dire questo equivale a dire che TCP / IP è fuori moda nei giorni di HTTP.

FastCGI è il protocollo tra l'applicazione web e il server web, tuttavia ciò non significa che sia necessario utilizzarlo direttamente dalla tua applicazione.

Should I use an HTTP server library (like libonion or microhttpd) to talk directly HTTP or should I use FastCGI? I could also use libraries doing both like cppcms or wt...

Vedi se vuoi sviluppare anche un semplice sito web è molto difficile farlo usando il solo HTTP - ci sono molti fattori da gestire - questo è il motivo per cui ci sono framework web che risolvono il problema per te, più di così tanti cose come la consegna di file statici e alcune considerazioni sulla sicurezza vengono passate al web server e al framework stesso.

Quindi ti consiglierei di usare framework Web come CppCMS che permetta di implementare facilmente l'applicazione web usando C ++ - quindi in pratica lavori sulla logica di busyness, il resto del framework web fa per te.

E come rimbalzo ottieni il supporto dei protocolli HTTP, FastCGI, SCGI e puoi utilizzare il tuo server web interno o qualsiasi protocollo standard del settore con un potente server web.

    
risposta data 12.12.2012 - 08:47
fonte
2

Ho preso in considerazione molte implementazioni, con diversi tipi di metodi di connessione, ed è così che vedo la scelta.

Dal punto di vista dello sviluppatore, FastCGI è fuori moda, nello stesso modo in cui considerano C. dal punto di vista dello sviluppatore, il compito può essere svolto in modi più semplici.

Dal punto di vista dell'implementazione, HTTP non è un sostituto perfetto, tuttavia esiste una sovrapposizione sufficiente in modo che possano essere utilizzati per risolvere gli stessi obiettivi. Ma in realtà questa domanda riguarda l'implementazione e l'architettura, e non una domanda focalizzata sullo sviluppatore, quindi ti risponderò dal lato dell'ingegneria dei sistemi.

Nonostante ciò che ho sfortunatamente letto nei blog degli sviluppatori, FastCGI può essere una scelta migliore se utilizzata nelle circostanze appropriate. Separa una grande preoccupazione complessa, che altrimenti deve essere implementata più in alto nello stack.

Ad esempio, ti permette di evitare di creare un robusto server web all'interno del tuo framework / linguaggio. Un compito enorme se davvero ti interessa la qualità, ma molto fattibile se lo schiaffi insieme come la maggior parte. Quindi è ironicamente più facile arrotolare tutto in una palla di spaghetti, quindi separare in modo pulito quella parte. Questo è il motivo per cui così tanti evitano FastCGI, perché potrebbero solo implementarlo quasi avvolgendo HTTP comunque, a causa delle loro cattive scelte architettoniche.

Dato che non hai avuto informazioni più dettagliate su quanto sia ambizioso il tuo piano, non posso davvero darti ottimi consigli. Consentitemi di suggerire alcune cose da indagare, che non sono lo slap comune dello stile del nodo python.

Leggi i dettagli di implementazione di, php-fpm

Se vuoi fare un altro modello di appserver, fallo bene, leggi uwsgi

    
risposta data 30.12.2015 - 19:42
fonte

Leggi altre domande sui tag