2011-05-26 26 views
18

He estado tratando de decidir si mi proyecto web es un candidato para la implementación usando PSGI, pero realmente no veo qué bueno sería para mi aplicación en esta etapa.PSGI: ¿Qué es y de qué se trata?

Realmente no entiendo todo el alboroto. Para mí, 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 de ejecutarse en mod_perl a fastcgi, y proporcione el soporte de la aplicación para ejecutar en ambas opciones.

¿Es correcto o me he perdido algo?

Como yo y el equipo soy parte no solo del desarrollo de la aplicación, sino también del mantenimiento y la configuración de los servidores, no veo el valor para nosotros de poder ejecutar en fastcgi, cgi y mod_perl, hacemos bien solo con mod_perl.

¿He entendido mal la funcionalidad de PSGI, o simplemente no es adecuada para mi proyecto?

+3

http://lists.scsys.co.uk/pipermail/catalyst/2011-March/026738.html – daxim

+1

http://www.perl.org/about/whitepapers/perl-plack.html podría ser de interés – Ranguard

Respuesta

25

Olvide 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 nuestra aplicación ejecutándose con una carga de CPU muy alta después de actualizar a Apache2: la evaluación comparativa de varias configuraciones de Apache y NYTProf'ing no pudo determinar el motivo, y el uso de PSGI y el servidor web Starman funcionó mucho mejor. para nosotros.

Ahora todo se maneja en un solo lugar mediante nuestra aplicación PSGI (URL reescribe, contenido estático, encabezados de caducidad, etc.) en lugar de la configuración de Apache, por lo que es a) Perl, yb) probado fácilmente a través de nuestro estándar/t/guiones. Además, nuestras pruebas ahora prueban 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á satisfecho 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 alivio en sí mismo. La facilidad de las pruebas y la capacidad de simplemente quedarse en Data :: Dumper y ver qué sucede en lugar de luchar con ModRewrite y sus amigos, es una gran ayuda.

16

Inspirándose en un reciente post del blog de cromática, Why PSGI/Plack Matters (Testing), esto es lo que es:

Es una buena idea tomada de WSGI de Python y Ruby rack pero hizo Perlish; es una simple formalización de un patrón de desarrollo de aplicaciones web, donde el punto de entrada en 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 todo. Eso es tan simple como puede ser, y esa simplicidad engaña a muchas personas que quieren aprenderlo.

Una ventaja importante es ibid.,

Dada una aplicación Plack, que no tiene que desplegar en un servidor web, incluso a nivel local para probar la aplicación como si estuviera desplegada ... Plack y TWMP (y Plack::Test) utilizan el pozo -Dibujo del patrón de Plack 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 demuestran el valor de Plack.

7

Started escribió una respuesta y después de 50 líneas lo eliminé. Simplemente porque es imposible decir (en resumen) por qué el PSGI es extremadamente genial. También soy nuevo en PSGI, pero las cosas ahora son mucho más fáciles que antes en mi era apache/mod_perl.

que puedo darle consejos siguientes:

  1. leen el Plack advent calendar - todos los días, paso a paso. Debe comprender la filosofía básica, lo que es bueno en cebollas y demás ... :)
  2. busque CPAN para "Plack :: Middleware ::" - y lea las primeras líneas en cada una. Aquí hay MUCHOS. (Realmente debería estar en algún lugar con una breve descripción de cada uno, desafortunadamente no conozco ninguna forma más rápida. Simplemente es bueno saber qué middlewares ya están desarrollados. (Por ejemplo, seguro que necesitarás el Plack :: Middleware :: Session , o Plack :: Middleware :: Estático y así sucesivamente ...)
  3. lea sobre Plack :: Builder (ya hecho, cuando haya terminado con el calendario de adviento) :)
  4. intente escribir algunas aplicaciones con él y lo hará encontrar que Plack es como el primer sexo; ahora no entendiste que podrías vivir sin él.

ps: Si fue aquí algo así como "Perl Oscar", sure MyiagavaSan nominación. :)

+1

Respuesta graciosa, pero describe los puntos principales. Una cosa más: lo mejor en PSGI es la fácil estratificación de su aplicación. Esto es importante no solo para el desarrollo, sino también para el despliegue/mantenimiento. – kobame

Cuestiones relacionadas