Sei sulla pagina 1di 5

FastCGI

FastCGI
FastCGI es un protocolo para interconectar programas interactivos con un servidor web. FastCGI es una variacin de la ya conocida Common Gateway Interface (CGI Interfaz Comn 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, permitindole a un servidor atender ms peticiones a la vez.

Ventajas
Independencia del lenguaje utilizado. Libertad de eleccin de la plataforma de desarrollo: C++, PHP, Perl, Java, entre otros. Se utiliza un proceso separado. Libertad de eleccin del servidor web. Facilidad para el tratamiento de errores y depuracin. Es posible la ejecucin en host separado. Mayor libertad para configuracin del sistema, tanto en el diseo de la red como en la eleccin de los sistemas operativos. Disminucin de la carga de trabajo del servidor principal. En resumen, la libertad de diseo de CGI a la velocidad de un mdulo 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 peticin y es finalizado cuando termina su trabajo. Este modelo de "un nuevo proceso por cada peticin" hace que los programas CGI sean muy fciles de implementar, pero limita la eficiencia y la escalabilidad. En altas cargas, la sobrecarga en el sistema operativo por la creacin y destruccin de procesos se torna significativa y limita la escalabilidad. Adems, el modelo de procesos CGI limita las tcnicas de reutilizacin de recursos (como ser la reutilizacin 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 serva 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 tcnicas que tambin intentaban aumentar la velocidad y simplificar las comunicaciones del lado del servidor, pero sin seguir el paradigma CGI. Mdulos para Apache tales como mod perl y mod php aparecieron aproximadamente por la misma fecha y parecan ser mejores reemplazos para CGI, permitiendo una integracin muy prxima con la base del servidor web.

Detalles de la implementacin
En vez de crear procesos nuevos por cada peticin, FastCGI puede usar un solo proceso persistente el cual maneja cualquier peticin durante su perodo de vida. El hecho de procesar mltiples peticiones a la vez es logrado ya sea mediante la utilizacin de una sola conexin con un multiplexado interno (por ejemplo mltiples peticiones sobre una sola conexin) y/o utilizando mltiples conexiones. Varios de esos procesos pueden existir, y eso es algo que incrementa la escalabilidad y el rendimiento. FastCGI permite tambin a los programas hacer que el servidor web realice ciertas operaciones sencillas, como leer un archivo antes de que la peticin sea procesada. Las variables de entorno y las peticiones de pginas son enviadas desde el servidor web hacia los procesos a travs de una conexin TCP (para procesos remotos) o a travs de zcalos de Unix (para procesos locales). Las respuestas son devueltas desde el proceso hacia el servidor web sobre la misma conexin. La conexin puede ser cerrada al final de una respuesta, pero el servidor web y el proceso se mantienen en ejecucin.

FastCGI Varios administradores y programadores de sitios web encontraron que la separacin de las aplicaciones web con respecto al servidor web producto de FastCGI (y la simplicidad de SCGI) tenan muchas ventajas sobre los intrpretes incrustados (mod perl, mod php, etc). Esta separacin permite a los procesos del servidor y de las aplicaciones ser reiniciados en forma independiente; una consideracin importante a tomar en cuenta en sitios web muy ocupados. Esto tambin facilita la aplicacin de polticas de seguridad por cada aplicacin; cosa importante para los ISPs y para las compaas de alojamiento web.

Servidores Web que implementan FastCGI


Nota: a menos que se notifique lo contrario, hasta ahora no se sabe cundo ser completada la implementacin FastCGI Abyss Web Server Apache HTTP Server (parcial) Implementado por mod_fcgid [1]. Este mdulo era de terceros, pero fue garantizado que sera un subproyecto de Apache en el 2009, liderado por Chris Darroch[2] El mdulo desactualizado de terceros mod_fastcgi tambin est siendo utilizado Multiplexado de peticiones a travs de una sola conexin est prohibido por el diseo de Apache,[3] as que no est soportado en Apache Cherokee HTTP Server[4] Hiawatha webserver[5] Soporte de balance de carga para FastCGI Soporte servidores FastCGI con jaula root Lighttpd[6] Monkey Web Server[7] LiteSpeed Web Server Microsoft IIS[8] 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 [9]. Zeus Web Server My server project

'Bindings' de lenguajes para la API FastCGI


FastCGI puede ser implementado en cualquier lenguaje que soporte zcalos (sockets). La API existe[10] para: Borland Delphi/FreePascal[11] C C++ Chicken Scheme Common Lisp: CLISP y CMUCL D

Guile Scheme Eiffel[12]

FastCGI Haskell HP BASIC for OpenVMS Java Lua OCaml Mono XSP Perl[13] PHP Roadsend PHP Python Ruby SmallEiffel Smalltalk: FasTalk and Dolphin Smalltalk TCL

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

Bibliotecas que incluyen soporte para FastCGI


qDecoder [14] GNU Cgicc [15]

Referencias
[1] http:/ / httpd. apache. org/ mod_fcgid/ [2] FastCGI apache module mod_fcgid (http:/ / httpd. apache. org/ mod_fcgid/ ) [3] FastCGI The Forgotten Treasure/ Section 2.3. (http:/ / cryp. to/ publications/ fastcgi/ #AEN147) [4] FastCGI for Cherokee (http:/ / www. cherokee-project. com/ doc/ modules_handlers_fcgi. html) [5] FastCGI HOWTO for Hiawatha (http:/ / www. hiawatha-webserver. org/ howto/ #5. 1) [6] FastCGI for Lighttpd (http:/ / trac. lighttpd. net/ trac/ wiki/ Docs:ModFastCGI) [7] FastCGI for Monkey Web Server (http:/ / monkey-project. com/ about) [9] https:/ / sourceforge. net/ projects/ jfastcgi [10] Application Libraries / Development Kits (http:/ / www. fastcgi. com/ drupal/ node/ 5) [11] ExtPascal (http:/ / extpascal. googlecode. com) [12] Goanna Eiffel (http:/ / goanna. origo. ethz. ch) [13] Hay varios mdulos FastCGI para Perl: FCGI (http:/ / search. cpan. org/ perldoc?FCGI) (un mdulo compilado escrito en C), FCGI::Async (http:/ / search. cpan. org/ perldoc?FCGI::Async) (de aplicaciones FastCGI asncronas), AnyEvent::FCGI (http:/ / search. cpan. org/ perldoc?AnyEvent::FCGI) (para aplicaciones AnyEvent (http:/ / search. cpan. org/ perldoc?AnyEvent)-basadas en), FCGI::EV (http:/ / search. cpan. org/ perldoc?FCGI::EV) (para aplicaciones EV (http:/ / search. cpan. org/ perldoc?EV)-basadas en), CGI::Fast (http:/ / search. cpan. org/ perldoc?CGI::Fast) (Perl similar CGI (http:/ / search. cpan. org/ perldoc?CGI)-interface para FastCGI), FCGI::Client (http:/ / search. cpan. org/ perldoc?FCGI::Client) (una biblioteca de cliente FastCGI), y Net::FastCGI (http:/ / search. cpan. org/ perldoc?Net::FastCGI) (constantes y funciones para construir y analizar mensajes FastCGI). [14] http:/ / www. qdecoder. org/ [15] http:/ / www. gnu. org/ software/ cgicc/

FastCGI

Bibliografa
Sergio Lujn Mora (2001) (en espaol, libro completo gratuito en pdf). Programacin de servidores web con CGI, SSI e IDC (http://hdl.handle.net/10045/16997) (1 edicin). Editorial Club Universitario.

Enlaces externos
Pgina Inicial de FastCGI (http://www.fastcgi.com) (ingls) FastCGI specification (http://www.fastcgi.com/devkit/doc/fcgi-spec.html) mod_fastcgi FastCGI module for Apache 1.x and 2.x supporting external applications (http://www.fastcgi. com/mod_fastcgi/docs/mod_fastcgi.html) mod_fcgid - a FastCGI module for Apache 2.x (http://httpd.apache.org/mod_fcgid/) Microsoft FastCGI (http://www.iis.net/default.aspx?tabid=1000051) Apache v2.x mod_proxy FastCGI Module (http://mproxyfcgi.sourceforge.net/) FastCGI interface for WASD httpd server for OpenVMS (http://wasd.vsm.com.au/ht_root/src/fcgi/ readmore.html) FastCGI y PHP seguro en UserDir (http://anyeos.wordpress.com/2008/07/18/ fastcgi-y-php-seguro-en-userdir)

Fuentes y contribuyentes del artculo

Fuentes y contribuyentes del artculo


FastCGI Fuente: http://es.wikipedia.org/w/index.php?oldid=67955584 Contribuyentes: Ajavier, Cristo Manco, Dianai, Dodo, Hcastillo, Hyperspeed, John plaut, Poco a poco, Qwertyytrewqqwerty, Serlumo, Sonia Rod, SpeedyGonzalez, Superzerocool, Wiyarmir, 45 ediciones annimas

Licencia
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/

Potrebbero piacerti anche