perl - PSGI: ¿Qué es y de qué se trata?
fastcgi mod-perl2 (3)
He estado tratando de decidir si mi proyecto web es un candidato para la implementación utilizando PSGI, pero realmente no veo qué bien haría para mi aplicación en esta etapa.
Realmente no entiendo todo el alboroto. Para mí, el PSGI parece un marco que proporciona una interfaz común entre diferentes módulos de Apache que le permite mover su aplicación entre ellos. Por ejemplo, mueva fácilmente su aplicación para que no se ejecute en mod_perl a fastcgi, y proporcione el soporte de la aplicación para ejecutar en ambas opciones.
¿Es eso correcto, o me he perdido algo?
Como yo y el equipo del que formo parte no solo desarrollamos la aplicación, sino que también realizamos prácticamente el mantenimiento y la configuración de los servidores. No veo el valor para nosotros de poder ejecutar en fastcgi, cgi y mod_perl. bien con solo mod_perl.
¿He entendido mal la funcionalidad de PSGI, o simplemente no es adecuada para mi proyecto?
Comencé escribí una respuesta y después de 50 líneas la borré. Simplemente porque es imposible decir (en breve) por qué PSGI es extremadamente bueno. También soy nuevo en PSGI, pero las cosas de zilion ahora son mucho más fáciles como antes en mi era apache / mod_perl.
Te puedo dar los siguientes consejos:
- lea el calendario de adviento de Plack - todos los días, paso a paso. Debes entender la filosofía básica, lo que es bueno en las cebollas y así sucesivamente ... :)
- busque "Plack :: Middleware ::" en CPAN y lea las primeras líneas de cada una. Aquí están muchos. (Realmente debería estar en algún lugar una breve descripción de cada uno, desafortunadamente no conozca una manera más rápida. Simplemente es bueno saber qué middlewares ya están desarrollados. (Por ejemplo, seguramente necesitará el Plack :: Middleware :: Session , o Plack :: Middleware :: Static y así sucesivamente ...)
- lea sobre Plack :: Builder (ya hecho, cuando haya terminado con el calendario de adviento) :)
- Intenta escribir algunas aplicaciones con él y descubrirás que Plack es como el primer sexo: ahora no entendiste que podrías vivir sin él.
ps: si hubiera aquí algo como "Perl Oscar", seguro que voy a nominar a MyiagavaSan. :)
Olvida el bit de apache. Es una forma de escribir su aplicación para que la elección del servidor web sea menos relevante. En $ work, cambiamos a Plack / PSGI después de encontrar que nuestra aplicación se estaba ejecutando con una carga de CPU muy alta después de actualizar a Apache2; no se pudo determinar la razón utilizando el PSGI y el servidor web Starman. para nosotros.
Ahora todo se maneja en un solo lugar mediante nuestra aplicación PSGI (reescrituras de URL, contenido estático, encabezados de vencimiento, etc.) en lugar de la configuración de Apache, por lo que es a) Perl yb) se prueba fácilmente a través de nuestro estándar / t / scripts. Además, nuestras pruebas ahora están probando exactamente lo que ve un usuario, en lugar de solo la aplicación básica en sí.
Puede que no sea relevante para usted si está contento con Apache y mod_perl, y estoy seguro de que otros podrán dar respuestas mucho mejores, pero para nosotros no tener que lidiar con nada relacionado con Apache nuevamente es un gran alivio. en si mismo. La facilidad de las pruebas, y la capacidad de pegarse en un Data :: Dumper y ver lo que está sucediendo en lugar de luchar con ModRewrite y sus amigos, es una gran ventaja.
Tomando prestado de una reciente publicación en el blog de chromatic, Why PSGI / Plack Matters (Pruebas) , esto es lo que es:
Es una buena idea tomada de WSGI de Python y Ruby''s Rack pero hecha de Perlish; es una simple formalización de un patrón de desarrollo de aplicaciones web, donde el punto de entrada a la aplicación es una referencia de función y el punto de salida es una tupla de información de encabezado y un cuerpo de respuesta.
Eso es. Es tan simple como puede ser, y esa simplicidad engaña a muchas personas que quieren aprenderlo.
Un beneficio importante es, ibid. ,
Dada una aplicación Plack, no tiene que desplegar en un servidor web, incluso localmente, para probar su aplicación como si estuviera implementada ... Plack y TWMP (y Plack::Test ) usan el patrón Plack bien definido para hacer algo que antes era difícil en algo increíblemente fácil. No son los primeros y no serán los últimos, pero sí demuestran el valor de Plack.