Como os comentamos en nuestro último artículo, uno de nuestros objetivos para las futuras versiones de Xailer era la posibilidad de crear ejecutables y librerías para Linux en 64 bits. No se trataría de ejecutables con su propio entorno gráfico al estilo de Windows, sino que se trataría de aplicaciones que principalmente estarían pensadas para ser utilizadas como CGIs . Es decir, para ser utilizadas desde entornos Web principalmente.
Básicamente en la web y desde el lado del servidor hay dos formas de realizar aplicaciones (back-end): Utilizando guiones / scripts que se ejecutan en lenguajes como PHP, Python o Node.js o utilizando ejecutables cerrados que pueden ser elaborados en cualquier lenguaje que cree ejecutables para el sistema operativo anfitrión del servidor web. Ambos sistemas, tienen sus ventajas y sus inconvenientes.
Los guiones o scripts tienen la gran ventaja de que son tremendamente sencillos de crear y modificar ya que sólo hace falta un simple editor de texto para trabajar. Cualquier modificación que realice en el guion, después de ser grabado, ya se puede observar en la página Web. No hay compilación, ni enlazado y aunque su velocidad de ejecución es muy baja con respecto a un ejecutable, el hecho de tener cargado en memoria del servidor todo el motor de ejecución del script hace que los tiempos de ejecución sean muy asumibles. Las aplicaciones tipo CGI son muy rápidas en su ejecución comparadas con los guiones , pero están penalizadas por su tiempo de carga, que lógicamente es mayor que el de un guion cuyo motor de ejecución está siempre cargado en memoria. No obstante, este problema se ha solucionado gracias a la aparición de FastCGI. Tanto es así, que incluso motores como el de PHP, se pueden ejecutar en modo FastCGI para evitar los problemas que pudieran surgir por guiones maliciosos o mal realizados, sin que ello suponga una perdida de velocidad.
Las aplicaciones tipo CGI han de ser compiladas y enlazadas creando un ejecutable que puede ser autónomo o dependiente de librerías externas. Y esto que puede parecer una desventaja con respecto a los guiones o scripts, pero es en realidad su mayor ventaja, por varios motivos:
- Propiedad intelectual: Nuestra propiedad intelectual del código incluido en las aplicaciones queda asegurado al no estar los fuentes del mismo disponibles en el servidor. No sólo la propiedad intelectual está en peligro cuando todo el código está disponible en el servidor , si los scripts se ejecutan en un servidor que tiene acceso nuestro cliente es imposible controlar su buen uso o por ejemplo establecer un sistema de licencias por uso del mismo.
- Seguridad: Es infinitamente más sencillo ‘hackear‘ un servidor web que utilice motores de scripting como PHP a uno que no lo utilice. Un ‘hacker‘ que consiga subir un archivo al servidor con código malicioso, que es sencillamente, texto plano, puede llegar a conseguir que dicho archivo sea ejecutado por el motor PHP (por ejemplo) y se apoderé completamente de la máquina. Los agujeros de seguridad existentes en todo el software de gestión de contenidos que se basan en dicho motores de script tienen que estar constantemente actualizándose para contrarrestar todas las amenazas que reciben. Este problema no existe con los CGIs.
- Depuración: La depuración de aplicaciones basadas en scripts son realmente una pesadilla ya que ni siquiera existe un corrector sintáctico del código. Es decir, si hace falta un ‘;’ para indicar fin de instrucción y no lo ponemos, no nos enteraremos hasta que se ejecute en el servidor y normalmente lo único que recibiremos de respuesta es una página en blanco y poco más. Si llamamos a una función que no existe o nos olvidamos de cerrar un bloque IF..ENDIF, exactamente igual. En las aplicaciones CGIs nos aseguramos que el código ha sido compilado y enlazado sin problemas y por lo tanto los errores que podamos tener son sólo errores de ejecución. En la mayoría de los lenguajes de programación que realizan CGIs es necesario utilizar un sistema de ‘Logs‘ para poder depurar las aplicaciones y saber hasta que punto se han ejecutado correctamente o conocer valores de variables internas. En Xailer hemos conseguido depurar cualquier aplicación CGI de la misma forma que se depura cualquier otro tipo de aplicación de escritorio y todo sin salir del IDE. Xailer es capaz de ejecutar cualquier CGI y mostrarlo en su navegador interno, pudiendo poner puntos de ruptura, ejecución paso a paso e inspección de variables. Esto sólo es posible realizarlo creando CGIs tipo Windows. Los CGIs que cree tipo Linux se mostrarán en el IDE pero no tendrán las ventajas de depuración de los CGIs de Windows.
El proyecto está bastante avanzado y en la versión Beta actual de Xailer ya es posible crear aplicaciones para Linux en 64 bits directamente desde el IDE de Xailer y sin tener que salir de nuestro cómodo sistema operativo Windows para nada. No obstante, necesitaremos poder compilar y enlazar nuestros programas en Linux y para ello habrá que instalar algún software adicional (gratuito), que a continuación os explico.
En este primer artículo os vamos a explicar como instalar lo estrictamente necesario para poder crear y ejecutar nuestros CGIs creados para Linux en nuestra propia maquina sin tener que depender de servidores en la nube. Para ello deberemos instalar WSL (Subsistema de Windows para Linux). Necesitareis Windows 10 o Windows 11 y os adelanto que no es nada exigente con los requisitos de máquina por lo que os animo a instalarlo aunque vuestro hardware no sea muy potente. Igualmente, es muy poco exigente en cuanto a los recursos que usa. WSL es realmente un gran acierto por parte de Microsoft. En este enlace de nuestro Wiki tenéis toda la información necesaria para instalar WSL.
El siguiente artículo os mostraremos lo fácil que es crear un CGI desde el propio IDE de Xailer. ¡Estad atentos!
Un saludo