fbpx
Wikipedia

FastCGI

FastCGI es un protocolo para interconectar programas interactivos con un servidor web.

FastCGI es una variación de la ya conocida Common Gateway Interface (CGI o Interfaz Común de Entrada).

El principal objetivo de FastCGI es reducir la carga asociada con el hecho de interconectar el servidor web y los programas Common Gateway Interface, permitiéndole a un servidor atender más peticiones a la vez.

Ventajas

  • Independencia del lenguaje utilizado. Libertad de elección de la plataforma de desarrollo: C++, PHP, Python, Perl, Java, entre otros.
  • Se utiliza un proceso separado. Libertad de elección del servidor web. Facilidad para el tratamiento de errores y depuración.
  • Es posible la ejecución en host separado. Mayor libertad para configuración del sistema, tanto en el diseño de la red como en la elección de los sistemas operativos. Disminución de la carga de trabajo del servidor principal.

En resumen, la libertad de diseño de CGI a la velocidad de un módulo del servidor..

Historia

CGI es un protocolo para interconectar aplicaciones externas con servidores web. Las aplicaciones CGI corren en un proceso separado que es creado al inicio de cada petición y es finalizado cuando termina su trabajo. Este modelo de "un nuevo proceso por cada petición" hace que los programas CGI sean muy fáciles de implementar, pero limita la eficiencia y la escalabilidad. En altas cargas, la sobrecarga en el sistema operativo por la creación y destrucción de procesos se torna significativa y limita la escalabilidad. Además, el modelo de procesos CGI limita las técnicas de reutilización de recursos (como ser la reutilización de conexiones a base de datos, caché en memoria, etc).

Para encarar el problema de escalabilidad del CGI, Open Market desarrolló FastCGI y lo introdujo por primera vez en su producto de servicio web a mediados de los 90'. Open Market originalmente desarrolló FastCGI en parte como una respuesta competitiva contra la, en aquel entonces en proceso, API propietaria de Netscape's, la NSAPI que servía para desarrollar aplicaciones Web.

Aunque inicialmente desarrollada por Open Market, FastCGI fue implementada por otros fabricantes de servicios web. FastCGI, sin embargo, compitió contra otras técnicas que también intentaban aumentar la velocidad y simplificar las comunicaciones del lado del servidor, pero sin seguir el paradigma CGI. Módulos para Apache tales como mod perl y mod php aparecieron aproximadamente por la misma fecha y parecían ser mejores reemplazos para CGI, permitiendo una integración muy próxima con la base del servidor web.

Detalles de la implementación

En vez de crear procesos nuevos por cada petición, FastCGI puede usar un solo proceso persistente que maneja cualquier petición durante su período de vida. El hecho de procesar múltiples peticiones a la vez es logrado ya sea mediante la utilización de una sola conexión con un multiplexado interno (por ejemplo múltiples peticiones sobre una sola conexión) y/o utilizando múltiples conexiones. Varios de esos procesos pueden existir, y eso es algo que incrementa la escalabilidad y el rendimiento. FastCGI permite también a los programas hacer que el servidor web realice ciertas operaciones sencillas, como leer un archivo antes de que la petición sea procesada. Las variables de entorno y las peticiones de páginas son enviadas desde el servidor web hacia los procesos a través de una conexión TCP (para procesos remotos) o a través de zócalos de Unix (para procesos locales). Las respuestas son devueltas desde el proceso hacia el servidor web sobre la misma conexión. La conexión puede ser cerrada al final de una respuesta, pero el servidor web y el proceso se mantienen en ejecución.

Varios administradores y programadores de sitios web encontraron que la separación de las aplicaciones web con respecto al servidor web producto de FastCGI (y la simplicidad de SCGI) tenían muchas ventajas sobre los intérpretes incrustados (mod perl, mod php, etc). Esta separación permite a los procesos del servidor y de las aplicaciones ser reiniciados en forma independiente; una consideración importante a tomar en cuenta en sitios web muy ocupados. Esto también facilita la aplicación de políticas de seguridad por cada aplicación; cosa importante para los ISPs y para las compañías de alojamiento web.

Servidores Web que implementan FastCGI

Nota: a menos que se notifique lo contrario, hasta ahora no se sabe cuándo será completada la implementación FastCGI
  • Abyss Web Server
  • Apache HTTP Server (parcial)
    • Implementado por mod_fcgid. Este módulo era de terceros, pero fue garantizado que sería un subproyecto de Apache en el 2009, liderado por Chris Darroch[1]
    • El módulo desactualizado de terceros mod_fastcgi también está siendo utilizado
    • Multiplexado de peticiones a través de una sola conexión está prohibido por el diseño de Apache,[2]​ así que no está soportado en Apache
  • Cherokee HTTP Server[3]
  • Hiawatha webserver[4]
    • Soporte de balance de carga para FastCGI
    • Soporte servidores FastCGI con jaula root
  • Lighttpd[5]
  • Monkey Web Server[6]
  • LiteSpeed Web Server
  • Microsoft IIS[7]
  • Kerio WebSTAR
  • Nginx
  • Open Market Web Server
  • Resin Application Server
  • Roxen Web Server
  • Sun Java System Web Server
  • Cualquier contenedor Servlet (como ser Apache Tomcat o Jetty), usando la biblioteca JFastCGI.
  • Zeus Web Server
  • My server project

'Bindings' de lenguajes para la API FastCGI

FastCGI puede ser implementado en cualquier lenguaje que soporte zócalos (sockets). La API existe[8]​ para:

FastCGI permitió portabilidad a las aplicaciones web; en contraste, las aplicaciones que fueron desarrolladas para intérpretes embebidos (tales como mod python) están generalmente muy limitadas a la API de Apache. Frameworks recientes tales como Ruby on Rails, Kepler (etc...) permiten el uso de cualquiera de los intérpretes embebidos (mod ruby, mod perl, mod python o mod_lual, respectivamente), pero también FastCGI. Esta tendencia parece ser que va a continuar.

Bibliotecas que incluyen soporte para FastCGI

  • qDecoder
  • GNU Cgicc

Referencias

  1. FastCGI apache module mod_fcgid
  2. . Archivado desde el original el 8 de febrero de 2010. Consultado el 14 de mayo de 2010. 
  3. FastCGI for Cherokee
  4. FastCGI HOWTO for Hiawatha
  5. FastCGI for Lighttpd
  6. . Archivado desde el original el 27 de junio de 2013. Consultado el 26 de junio de 2013. 
  7. «Extensión FastCGI para IIS6.0 - RTM». FastCGI para IIS. Microsoft. 28 de febrero de 2008. Consultado el 29 de febrero de 2008. 
  8. Application Libraries / Development Kits el 27 de diciembre de 2009 en Wayback Machine.
  9. . Archivado desde el original el 22 de noviembre de 2008. Consultado el 13 de marzo de 2018. 
  10. Hay varios módulos FastCGI para Perl: FCGI (un módulo compilado escrito en C), FCGI::Async (de aplicaciones FastCGI asíncronas), AnyEvent::FCGI (para aplicaciones AnyEvent-basadas en), FCGI::EV (para aplicaciones EV-basadas en), CGI::Fast (Perl similar CGI-interface para FastCGI), FCGI::Client (una biblioteca de cliente FastCGI), y Net::FastCGI (constantes y funciones para construir y analizar mensajes FastCGI).

Véase también

Bibliografía

  • Sergio Luján Mora (2001). Programación de servidores web con CGI, SSI e IDC (libro completo gratuito en pdf) (1ª edición). Editorial Club Universitario. 

Enlaces externos

  • (inglés)
    • Fork de la Página Inicial de FastCGI (inglés)
    • Fork de la FastCGI specification
    • mod_fastcgi – FastCGI module fork for Apache 1.x and 2.x supporting external applications
  • mod_fcgid - a FastCGI module for Apache 2.x
  • Microsoft FastCGI
  • Apache v2.x mod_proxy FastCGI Module
  • FastCGI interface for WASD httpd server for OpenVMS
  • FastCGI y PHP seguro en UserDir
  •   Datos: Q1397631

fastcgi, protocolo, para, interconectar, programas, interactivos, servidor, variación, conocida, common, gateway, interface, interfaz, común, entrada, principal, objetivo, reducir, carga, asociada, hecho, interconectar, servidor, programas, common, gateway, in. FastCGI es un protocolo para interconectar programas interactivos con un servidor web FastCGI es una variacion de la ya conocida Common Gateway Interface CGI o Interfaz Comun de Entrada El principal objetivo de FastCGI es reducir la carga asociada con el hecho de interconectar el servidor web y los programas Common Gateway Interface permitiendole a un servidor atender mas peticiones a la vez Indice 1 Ventajas 2 Historia 3 Detalles de la implementacion 4 Servidores Web que implementan FastCGI 5 Bindings de lenguajes para la API FastCGI 6 Bibliotecas que incluyen soporte para FastCGI 7 Referencias 8 Vease tambien 9 Bibliografia 10 Enlaces externosVentajas EditarIndependencia del lenguaje utilizado Libertad de eleccion de la plataforma de desarrollo C PHP Python Perl Java entre otros Se utiliza un proceso separado Libertad de eleccion del servidor web Facilidad para el tratamiento de errores y depuracion Es posible la ejecucion en host separado Mayor libertad para configuracion del sistema tanto en el diseno de la red como en la eleccion de los sistemas operativos Disminucion de la carga de trabajo del servidor principal En resumen la libertad de diseno de CGI a la velocidad de un modulo del servidor Historia EditarCGI es un protocolo para interconectar aplicaciones externas con servidores web Las aplicaciones CGI corren en un proceso separado que es creado al inicio de cada peticion y es finalizado cuando termina su trabajo Este modelo de un nuevo proceso por cada peticion hace que los programas CGI sean muy faciles de implementar pero limita la eficiencia y la escalabilidad En altas cargas la sobrecarga en el sistema operativo por la creacion y destruccion de procesos se torna significativa y limita la escalabilidad Ademas el modelo de procesos CGI limita las tecnicas de reutilizacion de recursos como ser la reutilizacion de conexiones a base de datos cache en memoria etc Para encarar el problema de escalabilidad del CGI Open Market desarrollo FastCGI y lo introdujo por primera vez en su producto de servicio web a mediados de los 90 Open Market originalmente desarrollo FastCGI en parte como una respuesta competitiva contra la en aquel entonces en proceso API propietaria de Netscape s la NSAPI que servia para desarrollar aplicaciones Web Aunque inicialmente desarrollada por Open Market FastCGI fue implementada por otros fabricantes de servicios web FastCGI sin embargo compitio contra otras tecnicas que tambien intentaban aumentar la velocidad y simplificar las comunicaciones del lado del servidor pero sin seguir el paradigma CGI Modulos para Apache tales como mod perl y mod php aparecieron aproximadamente por la misma fecha y parecian ser mejores reemplazos para CGI permitiendo una integracion muy proxima con la base del servidor web Detalles de la implementacion EditarEn vez de crear procesos nuevos por cada peticion FastCGI puede usar un solo proceso persistente que maneja cualquier peticion durante su periodo de vida El hecho de procesar multiples peticiones a la vez es logrado ya sea mediante la utilizacion de una sola conexion con un multiplexado interno por ejemplo multiples peticiones sobre una sola conexion y o utilizando multiples conexiones Varios de esos procesos pueden existir y eso es algo que incrementa la escalabilidad y el rendimiento FastCGI permite tambien a los programas hacer que el servidor web realice ciertas operaciones sencillas como leer un archivo antes de que la peticion sea procesada Las variables de entorno y las peticiones de paginas son enviadas desde el servidor web hacia los procesos a traves de una conexion TCP para procesos remotos o a traves de zocalos de Unix para procesos locales Las respuestas son devueltas desde el proceso hacia el servidor web sobre la misma conexion La conexion puede ser cerrada al final de una respuesta pero el servidor web y el proceso se mantienen en ejecucion Varios administradores y programadores de sitios web encontraron que la separacion de las aplicaciones web con respecto al servidor web producto de FastCGI y la simplicidad de SCGI tenian muchas ventajas sobre los interpretes incrustados mod perl mod php etc Esta separacion permite a los procesos del servidor y de las aplicaciones ser reiniciados en forma independiente una consideracion importante a tomar en cuenta en sitios web muy ocupados Esto tambien facilita la aplicacion de politicas de seguridad por cada aplicacion cosa importante para los ISPs y para las companias de alojamiento web Servidores Web que implementan FastCGI EditarNota a menos que se notifique lo contrario hasta ahora no se sabe cuando sera completada la implementacion FastCGIAbyss Web Server Apache HTTP Server parcial Implementado por mod fcgid Este modulo era de terceros pero fue garantizado que seria un subproyecto de Apache en el 2009 liderado por Chris Darroch 1 El modulo desactualizado de terceros mod fastcgi tambien esta siendo utilizado Multiplexado de peticiones a traves de una sola conexion esta prohibido por el diseno de Apache 2 asi que no esta soportado en Apache Cherokee HTTP Server 3 Hiawatha webserver 4 Soporte de balance de carga para FastCGI Soporte servidores FastCGI con jaula root Lighttpd 5 Monkey Web Server 6 LiteSpeed Web Server Microsoft IIS 7 Kerio WebSTAR Nginx Open Market Web Server Resin Application Server Roxen Web Server Sun Java System Web Server Cualquier contenedor Servlet como ser Apache Tomcat o Jetty usando la biblioteca JFastCGI Zeus Web Server My server project Bindings de lenguajes para la API FastCGI EditarFastCGI puede ser implementado en cualquier lenguaje que soporte zocalos sockets La API existe 8 para Borland Delphi FreePascal 9 C C Chicken Scheme Common Lisp CLISP y CMUCL D Guile Scheme Eiffel 10 Haskell HP BASIC for OpenVMS Java Lua OCaml Mono XSP Perl 11 PHP Roadsend PHP Python Ruby SmallEiffel Smalltalk FasTalk and Dolphin Smalltalk TCLFastCGI permitio portabilidad a las aplicaciones web en contraste las aplicaciones que fueron desarrolladas para interpretes embebidos tales como mod python estan generalmente muy limitadas a la API de Apache Frameworks recientes tales como Ruby on Rails Kepler etc permiten el uso de cualquiera de los interpretes embebidos mod ruby mod perl mod python o mod lual respectivamente pero tambien FastCGI Esta tendencia parece ser que va a continuar Bibliotecas que incluyen soporte para FastCGI EditarqDecoder GNU CgiccReferencias Editar FastCGI apache module mod fcgid FastCGI The Forgotten Treasure Section 2 3 Archivado desde el original el 8 de febrero de 2010 Consultado el 14 de mayo de 2010 FastCGI for Cherokee FastCGI HOWTO for Hiawatha FastCGI for Lighttpd FastCGI for Monkey Web Server Archivado desde el original el 27 de junio de 2013 Consultado el 26 de junio de 2013 Extension FastCGI para IIS6 0 RTM FastCGI para IIS Microsoft 28 de febrero de 2008 Consultado el 29 de febrero de 2008 Application Libraries Development Kits Archivado el 27 de diciembre de 2009 en Wayback Machine ExtPascal Archivado desde el original el 22 de noviembre de 2008 Consultado el 13 de marzo de 2018 Goanna Eiffel Hay varios modulos FastCGI para Perl FCGI un modulo compilado escrito en C FCGI Async de aplicaciones FastCGI asincronas AnyEvent FCGI para aplicaciones AnyEvent basadas en FCGI EV para aplicaciones EV basadas en CGI Fast Perl similar CGI interface para FastCGI FCGI Client una biblioteca de cliente FastCGI y Net FastCGI constantes y funciones para construir y analizar mensajes FastCGI Vease tambien EditarCGI SCGI WinCGIBibliografia EditarSergio Lujan Mora 2001 Programacion de servidores web con CGI SSI e IDC libro completo gratuito en pdf 1ª edicion Editorial Club Universitario Enlaces externos EditarPagina Inicial de FastCGI ingles Fork de la Pagina Inicial de FastCGI ingles FastCGI specification Fork de la FastCGI specification mod fastcgi FastCGI module for Apache 1 x and 2 x supporting external applications mod fastcgi FastCGI module fork for Apache 1 x and 2 x supporting external applications mod fcgid a FastCGI module for Apache 2 x Microsoft FastCGI Apache v2 x mod proxy FastCGI Module FastCGI interface for WASD httpd server for OpenVMS FastCGI y PHP seguro en UserDir Datos Q1397631 Obtenido de https es wikipedia org w index php title FastCGI amp oldid 136617594, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos