¿Cuáles son las ventajas y desventajas del estilo CGI OO y el estilo CGI orientado a funciones en Perl?

La programación orientada a objetos tiene ventajas bien entendidas sobre el código de procedimiento (más flexible, mantenimiento más fácil, etc.). Por lo tanto, tiene sentido que el módulo CGI sea una clase.

Sin embargo…

Es increíblemente raro necesitar múltiples objetos CGI en el mismo programa. Por lo tanto, crear un objeto en un programa CGI puede verse como una exageración. Es por eso que muchas personas usan la interfaz de procedimiento en su lugar.

Sin embargo…

La interfaz de procedimiento es realmente una envoltura delgada alrededor de la interfaz OO. Por lo tanto, no piense que aumentará el rendimiento utilizando el procedimiento. Y nunca mire el código que funciona si una subrutina CGI ha sido llamada como método o función. Te hará sangrar los ojos.

Asi que. Si está escribiendo un programa usando el módulo CGI, entonces recomendaría usar la interfaz de procedimiento. Solo porque hará que su código se vea más simple.

Sin embargo…

Es 2017 y tenemos herramientas mucho mejores para escribir aplicaciones web en Perl. Si está escribiendo un programa CGI en Perl en 2017, lo está haciendo mal. El mejor enfoque es escribir aplicaciones web utilizando tecnología basada en PSGI (que probablemente será un marco web como Catalyst o Dancer).

El uso de PSGI le brinda tres enormes ventajas sobre las tecnologías más antiguas.

  • Separa el desarrollo y la implementación. Puede implementar un programa PSGI en su entorno CGI, como un controlador mod_perl, como un servicio separado detrás de un proxy como nginx, o en muchos otros entornos. Y no tiene que cambiar su código para moverse entre estos entornos.
  • Obtiene herramientas poderosas que hacen que probar y depurar su código sea mucho más fácil de lo que sería para un programa basado en el módulo CGI u otras tecnologías similares.
  • Obtiene acceso a un poderoso ecosistema de complementos y middleware que hará que agregar funciones como la autenticación a su aplicación sea realmente fácil.

Hay una razón por la cual el módulo CGI se eliminó del núcleo de Perl hace un par de años. Los desarrolladores de Perl no querían ser vistos como alentadores al uso de tecnologías obsoletas. Siga sus consejos y deje de escribir programas CGI.

Los sitios web modernos no usan CGI.pm. Usan algo más como Catalyst o Mojolicious, ninguno de los cuales usa CGI.pm.