2011-11-07 9 views
16

Capisco lo scopo di FastCGI in termini di prestazioni rispetto ad altre interfacce gateway. Ma se le librerie che implementano FastCGI devono già passare attraverso le misure minuziose per implementare un servizio TCP sicuro ed efficiente, perché non scrivere semplicemente applicazioni come server web? È meno efficiente per un server Web front-end implementare un proxy inverso rispetto a FCGI? O la specifica per FCGI è molto più semplice di quella di HTTP?Perché implementare un'applicazione Web come FastCGI anziché come nuovo server Web?

+1

Qualcuno ha votato per chiudere questa domanda - Mi piacerebbe sapere il motivo per cui. – andyortlieb

+0

Hrm questa è una grande domanda, me lo sono sempre chiesto anch'io. Votato nelle speranze che qualcuno fuori di loro abbia un'opinione. – HurnsMobile

+2

Anche io sono interessato a saperlo. FCGI è più semplice di HTTP, ma non è necessario implementare le specifiche HTTP complete per essere un server. Immagino anche che FCGI sia meno incline a errori di configurazione che potrebbero causare il carico del server back-end. – voidvector

risposta

4

Avevo un programma server Web che ho sostituito con un programma FCGI. Parte della ragione per cui l'ho fatto era a causa dei requisiti del programma. Doveva essere eseguito sotto il server Web esistente, poiché ciò non richiederebbe alcuna configurazione aggiuntiva.

Un altro requisito era che sarebbe in grado di tracciare alcuni valori di stato che possono cambiare frequentemente. Il programma esistente non era molto efficiente, tenendo traccia di questi valori di stato esternamente e facendone un nuovo carico per ogni richiesta. Un vantaggio di un programma FCGI è che è persistente, quindi potrebbe eseguire il polling di quei valori di stato e sarebbero disponibili e pronti per ogni richiesta.

Non ho dovuto implementare alcuna delle specifiche FCGI, ho appena usato una libreria FCGI esistente e ha gestito tutte le comunicazioni con il server web per me. Rispetto ad altre applicazioni che ho scritto che hanno un server Web incorporato, l'implementazione di una con la libreria FCGI è stata relativamente semplice.

Un altro vantaggio di FCGI è che un'applicazione FCGI non ha bisogno di risiedere su un disco accessibile al server web. È possibile configurare il server per stabilire una connessione TCP a un'istanza dell'applicazione FCGI su un altro server. Se ti trovi in ​​una situazione in cui non puoi accedere direttamente al server web, questo può essere molto utile. Realizzare la stessa cosa con altri metodi può essere complicato, ma un'applicazione FCGI non ha nemmeno bisogno di essere modificata. Basta configurare il server, lanciare la tua app sotto l'host FCGI e sei a posto.

Un altro vantaggio di FCGI è la possibilità di configurare il server Web per distribuire le richieste tra un numero predefinito di istanze dell'applicazione. Se la tua applicazione web funziona meglio gestendo ogni richiesta in modo sincrono, FCGI è l'ideale perché puoi canalizzare ogni richiesta in una singola istanza e quell'istanza può gestire ogni richiesta in un singolo ciclo. Se vuoi al massimo 2, 3 o n istanze tutto ciò che devi fare è cambiare il valore sul server e puoi farlo.

Quindi FCGI non è il massimo per ogni situazione. È il momento in cui ti trovi di fronte a requisiti insoliti che FCGI è più attraente.

Problemi correlati