2011-11-07 16 views
16

Entiendo el propósito de FastCGI en términos de rendimiento sobre otras interfaces de puerta de enlace. Pero si las bibliotecas que implementan FastCGI ya tienen que pasar por las medidas meticulosas de implementar un servicio TCP seguro y eficiente, ¿por qué no simplemente escribir aplicaciones como un servidor web? ¿Es menos eficiente para un servidor web front-end implementar un proxy inverso que para FCGI? ¿O la especificación para FCGI es mucho más simple que la de HTTP?¿Por qué implementar una aplicación web como FastCGI en lugar de un nuevo servidor web?

+1

Alguien votó para cerrar esta pregunta. Me gustaría saber el motivo. – andyortlieb

+0

Hrm esta es una gran pregunta, siempre me he preguntado esto también. Votos votados con la esperanza de que alguien de ellos tenga una opinión. – HurnsMobile

+2

Estoy interesado en saber también. FCGI es más simple que HTTP, pero no es necesario implementar la especificación HTTP completa para ser un servidor. Supongo que también FCGI es menos propenso a la configuración incorrecta que podría causar que el servidor de fondo maneje la carga completa. – voidvector

Respuesta

4

Tenía un programa de servidor web que reemplacé con un programa FCGI. Parte de la razón por la que lo hice fue debido a los requisitos del programa. Tenía que ejecutarse bajo el servidor web existente, ya que hacerlo no requeriría ninguna configuración adicional.

Otro requisito era que podría rastrear algunos valores de estado que pueden cambiar con frecuencia. El programa existente no era muy eficiente, rastreando estos valores de estado externamente y haciendo una carga nueva de ellos para cada solicitud. Una ventaja de un programa FCGI es que es persistente, por lo que podría sondear esos valores de estado y estarían disponibles y listos para cada solicitud.

No tenía aplicado ninguna de las especificaciones FCGI, acabo de utilizar una biblioteca FCGI existente y se maneja toda la comunicación con el servidor web para mí. En comparación con otras aplicaciones que he escrito que tienen un servidor web incorporado, la implementación de una con la biblioteca FCGI fue relativamente simple.

Otra ventaja de FCGI es que una aplicación FCGI no necesita residir realmente en un disco accesible para el servidor web. Puede configurar el servidor para establecer una conexión TCP a una instancia de su aplicación FCGI en otro servidor. Si se encuentra en una situación en la que no puede acceder directamente al servidor web, esto puede ser muy útil. Lograr lo mismo con otros métodos puede ser engorroso, pero una aplicación FCGI ni siquiera necesita modificarse. Simplemente configure el servidor, inicie su aplicación bajo el host FCGI, y estará listo.

Otra ventaja de FCGI es que puede configurar el servidor web para distribuir solicitudes entre un número preestablecido de instancias de su aplicación. Si su aplicación web funciona mejor al manejar cada solicitud sincrónicamente, FCGI es ideal porque puede canalizar cada solicitud en una sola instancia, y esa instancia puede manejar cada solicitud en un solo ciclo. Si desea como máximo 2, 3 o n instancias, todo lo que necesita hacer es cambiar el valor en el servidor y puede lograrlo.

Por lo tanto, FCGI no es el mejor para cada situación. Es el momento en que te enfrentas a requisitos inusuales que FCGI es más atractivo.

Cuestiones relacionadas