How To Get Gambas Web Started (1)

Introduccion

A continuación se presenta una breve información sobre cómo iniciar y utilizar un sitio web de Gambas, los requisitos y cómo desplegar el trabajo realizado. Tenga en cuenta que la prueba de la página web dentro del IDE no es la misma que cuando se llama desde el navegador, porque el IDE, cuando se ejecuta, utiliza su propio servidor web embebido con diferentes variables (muy diferentes) respecto a un servidor de producción, y difiere del código interpretado.

Usar el directorio del proyecto como programa para compilarlo e incrustarlo en el servidor web "real".

Illustrando con equivalentes

La tecnología de Gambas ofrece las mismas características y características similares a las de otras tecnologías, veamos una tabla comparativa de esto:

Tecnologia Interprete Compilado
Gambas gbs files (gambas3-scripter) gb programs (gambas3-runtime)
Java jsp (Javas server pages) servlets (Java Enterprise)
PhP php/phtml (php-cgi/php-fpm) N/A
.NET asp (active server pages) COM ( CLR runtime)

Conceptos prelilminares

La tecnología web de Gambas se proporciona para producir web 2.0 (contenido dinámico y también interactivo).

Hay dos formas de producir y/o renderizar html en contenido web dinámico o estático: Interpretado y/o precompilado.

El contenido web se produce con la ayuda de un servidor web, usando siempre CGI, anunciando directamente el programa precompilado o como script al intérprete de Gambas a través de código de script.

Independientemente de la forma en que el servidor entrega la página web del documento, todo el tiempo se utiliza el concepto CGI.

¿Y que es el CGI? Common Gateway Interface (CGI) ofrece un protocolo estándar para que los servidores web ejecuten programas como aplicaciones de consola (también llamados programas de interfaz de línea de comandos) que se ejecutan en un servidor que genera páginas web dinámicamente. Tales programas son conocidos como scripts CGI o simplemente como CGIs. El servidor determina cómo el script es ejecutado por el servidor.

Interpretado (o script) gambas3-scripter permite interpretar un archivo fuente y en base a su contenido como script renderizará html o no utilizando la lógica, sólo se recomienda para contenidos estáticos que sólo necesitan una lógica mínima, cuando falla se muestra el código fuente en el servidor web, éste debe ser configurado utilizando el cgi como envoltorio que entrega la petición al intérprete.
Precompilado (o cgi) gambas3-runtime gambas3-web permite compilar el programa que actuará como programa cgi y produce el renderizado html. El componente ide se le dio la debida instalación de muchos de los necesarios, pero en el servidor no es recomendable, este debe ser configurado como el manejador de la petición directamente.

Requerimientos

Necesitamos un servidor web, un compilador IDE de Gambas y un intérprete de scripts de Gambas, a menos que sólo hagas cgi's el script es innecesario. El comando de instalación recomendado debe realizarse abriendo una consola y cambiando a root para instalar los paquetes de programas de la distribución de Gambas, los paquetes necesarios del servidor web y configurar los componentes cgi en el servidor web.

Requerimientos de instalacion

Primero: ten Gambas! La forma más fácil es instalar Gambas desde tu distribución de Linux. Si Gambas aún no está contenido en su distribución, entonces descargue la distribución de http://gambas.sourceforge.net

Segundo: entendiendo! Necesita entender REALMENTE los conceptos de peticion Request y respuesta Response, Aquí se requiere estar familiarizado, HTTP se basa en un modelo de solicitud / respuesta, por lo que hay dos tipos de mensajes HTTP: la solicitud y la respuesta. El navegador abre una conexión con un servidor y hace una petición. El servidor procesa el que cliente "hace uan peticion" y servidor "retorna una respuesta"; así que entonces los datos se envían usando los dos métodos más comunes de HTTP: GET y POST. Debido a que Gambas es un RAD (Rapid Application Development) esos conceptos deben ser muy claros para el desarrollador.

Ultimo: el entorno! Necesita un servidor web, que proporcione capacidades de gci verdaderas. Nginx no proporciona capacidades reales u necesitará más ajustes para configurarlo. Como información adicional general para entornos de producción de alta gama, que debe configurarse como un dúplex de un servidor frontal que proporciona un proxy inverso al servidor web cgi real con el programa cgi Gambas3.

Feature Comparison Chart and Status

Empezar a desarrollar en Gambas necesita un punto de dirección correcto, por lo que proporcionamos un gráfico rápido para ver que las características soportadas respetan otras tecnologías.

El desarrollo de tecnologías web ha ganado fuerza desde hace unos 3 años en la comunidad de desarrolladores de Gambas, teniendo hoy en día incluso un componente de diseño gráfico web.

No se incluye la curva de inclinación porque aprender Basic es obviamente más fácil que cualquier otro lenguaje de programación, y Gambas es básico.

Un correo de comparativas de rendimiento https://lists.gambas-basic.org/pipermail/user/2020-January/068432.html (January 2020) esta en la lista de correo; demostrando como Gambas ofrece en algunos resultados mejor rendimiento inclusive.

CARACTERISTICA Gambas Java .NET Python Php
Lenguaje base codigo Basic C++,C Basic,C++ CPython,C Perl,C
Compatibilidad versiones viejas siempre siempre Rompe API cada 4 años Incompatible siempre
Ejecuta en Unix based Any OS Solo MS based Casi Any OS Casi Any OS
Servidor web Cualquier cgi Tomcat, Jboss, Glassfish, Websphere, Weblogic IIS Apache2, IIS, Lightty, Hiawatta,Ngynx Apache2, IIS, Lightty, Hiawatta,Ngynx
Runtime Gambas Runtime Java virtual Machine Common Languaje Runtime Python runtime Zend Engine
Diseñador Grafico Gambas IDE Eclipse thirparty .NET IDE Not Not
Componentes Web gb.web, gb.http, gb.web.feed, gb.util.web, gb.curl EJB, JSP, JSF, Spring, GWT ASP, Spring, COM Muchos php-cgi, php-fpm, php-curl, php-sockets, more..
Frameworks Web Gambasforge Spring, Struts, GWT Buil-in Django,CubicWeb Codeigniter, Lavarel, Symphony
DBMS Acceso datos ODBC, MySQL, SqLite, Postgres JDBC: Oracle, Sybase, MSSQL, MySQL, Sqlite, DB2, etc ADO.NET-oleDB, ODBC PyODBC: ODBC php-odbc, Php-pysql, php-sybase, php-pgsql, php-sqlite
DBMS Mapeo de datos Jbsan MapBD Hibernate, Dozer, Commons, Mapstruts, ModelMapper ADO.NET Django, Pandas Codeigniter, Kohana, Doctrine
Web services gb.xml Build-in Buil-in Add-on (many) php-soap, php-xml
Mobile native not yet Androit SDK Xamarin(MOno) Kivy, BeeWare Not possible
Unit Tests By own JUnit NUnit,MSUTF PyUnit PhpUnit

Comenzando a codificar

Gambas es un software RAD por lo que no asumimos que usará el IDE, ya que siempre se puede usar un editor de texto normal y luego compilar el programa cgi a mano en la consola.

Comenzando a codificar en el IDE

Cuando termine la instalación, use Gambas:

  • En una ventana terminal escriba "gambas3.gambas"

  • El IDE de Gambas se abrirá, selecciona "Nuevo proyecto...".

  • Selecciona "Crear una aplicación web gb.web", haz click en siguiente,

  • Encuentra un directorio donde poner el proyecto web, haz clic en siguiente,.

  • Introduce un nombre para tu proyecto web, haz clic en OK.

  • Cierra la ventana de consejos del día.

Esto inicia un módulo principal que cuando se construye rinde una página que imprime valores importantes, necesita entender para manejar los cgi's web,

  • En la ventana de proyecto encuentra el botón de inicio, presiónalo (o presiona la tecla F5).

  • Luego por un tiempo, el navegador por defecto se abrirá o se levantará una nueva pestaña y se mostrará una dirección web del localhost

esto inicia un servidor web local embebido usando un puerto bind 8080, mostrando los valores estándar del servidor GCI, que son muy importantes de entender para páginas web de alto nivel de producción.

Despliega el resultado

El IDE, cuando se ejecuta en un servidor local incrustado, esto es significativamente diferente, más bien se ejecuta en el servidor debido a que debe especificar cuál es el "punto de entrada" de la aplicación web.

Como una ruta root: el cgi procesará toda la ruta desde root, ejemplo: http://domain/thegcipath/ Como una entrada web: el cgi será llamado directamente por la solicitud, ejemplo: http://domain/thegcipath/thecgiprogram

1) configurando el cgi en el servidor

En el servidor web estándar de los servidores web de los proveedores sólo hay dos caminos en los que se puede desplegar el "programa producido" (el programa compilado de Gambas), en la ruta web "/cgi-bin/", y sólo hay dos lugares para ellos, globalmente y por usuarios, hay configuraciones para ambos casos:

Webserver Initial/global configs Per user configs Script additions module related
apache ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AddHandler cgi-script .cgi .sh .pl Options ExecCGI SetHandler cgi-script AddHandler cgi-script .gbs () a2enmod cgi cgid alias userdir
lighttpd $HTTP =~ "^/cgi-bin/" { cgi.assign = ( "" => "" ) } $HTTP =~ "^(/~[^/]+)?/cgi-bin/" { cgi.assign = ("" => "") } cgi.assign = ("gbs" => "gbs3") lighty-enable-mod cgi alias userdir

() en apache todavía no hay manera de resolver la interpretación de los guiones en el momento de escribir esto

2) Despliege de tipo produccion

  • En el IDE, ir al proyecto

  • Crear-> ejecutable

  • Si usa la "configuración por usuario" elija la salida del directorio como "public_html" bajo su casa.

  • Elija el nombre del programa de salida, por defecto "programname.gambas"

  • Si el servidor web sólo permite programas con extensión .cgi en la segunda entrada: mv $(FILE) $(FILE).cgi

  • El programa cgi ahora puede ser invocado desde la url http://localhost/~username/cgi-bin/programname.gambas.cgi

Todo esto tomando en consideración que dentro de tu casa, hay un directorio "public_html", usado y manejado por el servidor web como contenido web para el usuario, y también bajo esto hay un directorio "cgi-bin", que es para los programas cgi, y el software del servidor web es sólo apache2 o lighttpd.

See also