miércoles, febrero 21, 2007

El mundo de los 32 bits, interfaces Internet.

Después de haberle dado un respiro a nuestra aplicación Clipper MS-DOS, pasándola a 32 bits, todavía hay mucho camino por recorrer y muchas opciones de donde escoger, ya dejamos el tiempo pasar y el destino nos ha alcanzado, ahora tenemos que pensar como hacer nuestra aplicación mas "moderna"; ha llegado el momento en que debemos de pensar que vamos a hacer con ella, porque desde luego, no puede pasarse toda la vida como está.

En este punto debemos discurrir hacia donde dar el siguiente paso, ¿ nos movemos a una plataforma Windows ?, ¿ nos movemos a una plataforma basada en internet teniendo como front end un navegador Web ?

En este capítulo hablaré del uso de Clipper/xHarbour con Internet para acceso y publicación de datos, que aunque parezca disparatado, es perfectamente posible, y dejaré para el siguiente comentario el tema de Windows.

¿ Internet con Clipper/xHarbour ?, pues sí, así es, parece modo de mentira, pero mucha gente piensa que Internet = Windows, cuando en realidad, los principios básicos que rigen internet fueron establecidos mucho mucho mucho antes de que si quiera Bill Gates hubiese nacido.

Tenemos que recordar que en esos lejanos días de los inicios de Internet, todo se manejaba con código ASCII y utilizando archivos de texto, es mas, las computadoras con procesadores de 32 bits ni siquiera existían, así que nuestro "viejo" lenguaje Clipper puede trabajar perfectamente con Internet, pero no por las razones que te imaginas, sino por cómo fue concebido lo que hoy conocemos como "internet", es decir el World Wide Web.

Contrariamente a lo que se cree, la WEB, lo que conocemos como WWW, no es un invento norteamericano, sino Europeo, si si si, así como lo escuchas, la web no se inventó en Estados Unidos, se inventó en Europa, junto con el lenguaje HTML y el concepto "servidor web", todo esto se inventó en el CERN, Centro Europeo de Investigación Nuclear, que entre sus múltiples atributos tenemos que tiene la máquina mas grande del mundo construida por el hombre, un acelerador de partículas de 27 kilometros de longitud, además de que protagoniza el libro "Angeles y Demonios" de Dan Brown.

El www no tiene mucho tiempo de vida, en realidad fue en 1993 cuando todo esto de la "internet comercial" como le llamo yo, comenzó.

El lenguaje HTML fue inventado por una persona con dislexia, y su facilidad para aprenderse, hace que hoy por hoy sea el estándar para el desarrollo de "páginas web", y que múltiples tecnologías hayan sido construidas alrededor de él, pero a final de cuentas, una página web, no es mas que un vil archivo de texto, con una codificación especial.

¿ Donde entran Clipper/xHarbour en esta ecuación ?

Veamos primero un poco de teoría:

Dentro de todas las cosas que se han inventado para el internet "moderno", como las páginas web dinámicas, los Application Servers, el XML, el .NET, el PHP , el ASP, etc, todos tuvieron su origen en una cosa llamada CGI.

CGI son la iniciales de Common Gateway Interface, es una interfaz universal, un estándar generalmente aceptado y soportado por la mayoría de los servidores web mas populares (Apache, Internet Information Server, WebSite, etc) que se utiliza para EJECUTAR PROGRAMAS EN SERVIDORES WEB, sí, así como lees, mediante el uso de CGI, es posible ejecutar un programa en "remoto", es decir, se puede correr un programa que se encuentra instalado en un servidor de internet desde una ventana de un navegador como el Internet Explorer, el Mozilla Firebird, o el Netscape.

¿ En que estan hechos estos programas ?..... en lo que quieras..... , escoge tu lenguaje... Delphi, Visual Basic, CLIPPER/XHARBOUR, C++, hasta un simple archivo .BAT puede ser ejecutado a través de internet.

Todo se lo debemos a los formularios, voy a omitir algunos detalles técnicos pero el invento este a grandes rasgos funciona así:

  • Tu rellenas los datos en un formulario mediante tu navegador
  • La persona que diseñó el formulario, ha indicado en el código HTML el nombre del programa EXE (hecho en cualquier lenguaje de programación) que quiere ejecutar.
  • Al momento de pulsar el botón de "Enviar", el servidor web recibe todos los datos tecleados en el formulario como una cadena de caracteres donde cada variables va indicada asi: valor=variable&otravariable=otrovalor&... y así sucesivamente.
  • El servidor web "sabe" qué programa tiene que ejecutar (viene indicado en el formulario), así que ejecuta el equivalente a un "RUN Programa.exe" de Clipper, pasando le como uno de sus parámetros, la cadena de caracteres que contiene las variables.
  • El resto es fácil, el programa EXE analiza la cadena de caracteres, ejecuta acciones, como por ejemplo abrir y buscar datos en una tabla DBF, y luego debe publicar el resultado en un "archivo de salida" cuyo nombre también es pasado como parámetro al EXE, este archivo tiene que ir codificado en HTML, y como es un archivo de texto, pues es super simple generarlo.
  • Al detectar la aparición de dicho archivo, el servidor web AUTOMATICAMENTE envía el archivo generado al navegador que envió el formulario originalmente.

¿ Así de simple ?, ¡¡¡¡ SIIIII !!!!! la tecnología de publicación en Internet es estúpidamente simple, quien diga lo contrario está mintiendo. El único requerimiento para que esto funcione es que el servidor que estas utilizando soporte CGI (WebSite, Apache e IIS lo soportan) , que tu lenguaje de programación pueda ejecutar múltiples copias del mismo EXE simultáneamente y que pueda generar archivos de texto, cosa que a Clipper/xHarbour se le da muy bien.

Personalmente he usado (y abusado) de esta tecnología para hacer varias aplicaciones interesantes para Internet usando el lenguaje Clipper/xHarbour, primero para hacer experimentos y a últimas fecha por ahorrarme y ahorrarle trabajo a nuestros clientes, por ejemplo el FIVETILUS, la base de conocimientos de FiveWin, es un programa en xHarbour que hace búsquedas sobre DBFs usando Advantage Database Server, cuando te registras para descargar nuesto CD de utilidades de FiveWin, el programa que registra tus datos y te envía el correo electrónico con los datos para descargar los archivos está hecho en xHarbour, cuando consultas el Directorio de Usuarios de FiveWin, estas usando un programa hecho en Clipper (este es de 16 bits, sorry, no he tenido tiempo de migrarlo), que publica los datos de DBFs en internet.

Esta tecnología no te limita a solo usar Clipper/xHarbour, puedes combinarla con otros lenguajes en el front end como Html por su puesto, JavaScript, Applets de Java o con DHTML, incluso, como veremos mas adelante, puedes incluir código Clipper dentro de una hoja HTML.

Tengo clientes que han desarrollado sistemas completos de gestión administrativa y contabilidad usando esta tecnología, y muchos otros que combinan programas de escritorio hechos con Xailer, FiveWin y aun bajo MS-DOS con publicación sobre Internet.

La publicación de datos sobre Internet usualmente se utiliza como complemento de las aplicaciones que se ejecutan dentro de nuestra red de área local, sin embargo cada día las aplicaciones basadas en Internet van tomando mas y mas importancia, en nuestro caso y como comenté hace tiempo, de 5 proyectos que manejamos 3 son para internet y 2 son para Window, ¿ porqué?

Por que las aplicaciones basadas en Internet tienen ventajas MUY evidentes, que las hacen superiores a las aplicaciones basadas en Windows:
  1. Son multiplataforma, con que tengas como cliente una computadora que tenga un navegador web basta, sin importar si es una PC con Windows, con Linux, con MacOS-X, o incluso con Unix, hasta un teléfono móvil (como el Blackberry por ejemplo) con acceso a internet por Edge o GPRS te funciona, una PDA Palm o Pocket PC con WiFi, y en general, cualquier aparato que se pueda conectar a Internet y que tenga un navegador, vale para usar tu aplicación.
  2. Es super económica, montarte toda una infraestructura tecnológica que soporte programas en Clipper / xHarbour para capturar o publicar datos por internet no llega a 1,000.00 USD ANUALES, (y estoy exagerando) incluyendo el costo de la conexión a Internet. El software servidor web prácticamente es gratis, Apache se puede descargar de Internet, y el Internet Information Server viene incluído con Windows. El hardware para el servidor web puede ser cualquier equipo no necesariamente nuevo, que tenga instalado Windows 98 o superior o Linux, el costo de una conexión ADSL es muy accesible hoy en día para cualquier tipo de empresa y este rubro es el que mas presupuesto consume, y si no cuentas con una IP fija, como en el caso de nosotros, que nos negamos con todo éxito a pagar los abusivos precios que nos impone Telmex por una IP fija (como 100.00 USD mensuales), puedes utilizar servicios de "redireccionamiento" de IP como Dns2Go ó NoIP que por algo así como 30.00 USD anuales te permitirán tener tu propio dominio en línea 24 x 7 x 365 sin tener IP fija.
  3. No requieres cambio de equipo; esta tecnología funciona aún con equipos con Windows 95 que tengan un navegador web instalado, porque la aplicación no corre en el cliente, sino en el servidor, ahorrándote tener que comprar computadoras de última generación para tu programa, como podría ser en el caso de una aplicación basada en Windows.
  4. Son por naturaleza aplicaciones tipo Cliente / Servidor, en el más estricto sentido del término, porque el EXE, y las DBFs están alojadas en un servidor de Internet, y se ejecutan ahí, es en realidad una aplicación monousuario, con lo cual, la aplicación no está expuesta a los típicos errores de red, el navegador web en el cliente solo ve los resultados generados por el programa.
  5. Son 100% móviles y no requieres instalar nada en el equipo cliente, puedes acceder a ellas desde cualquier parte del mundo, con tu teléfono móvil estando de vacaciones en Las Bahamas, con tu laptop en un Starbucks de Nueva York, desde la comodidad de tu casa tumbado en la cama, en el aeropuerto con tu PDA mientras esperas tu próximo vuelo, o desde un café internet en Tokio.
xHarbour tiene incorporadas distintas herramientas para trabajar con Internet, como por ejemplo la clase TCGI, que se utiliza para generación de páginas WEB y que trabaja de la mano con el servidor web en el cual se monte el programa (Apache, IIS, WebSite, etc), o las clases de la familia TIP que se utilizan para conectar con distintos servicios de internet como www, ftp, smtp o pop.

Pero esta tecnología, basada en CGI, es tecnología "vieja" dirian algunos y tienen razón, aunque estoy casi seguro que no sabías que era posible hacer programación y publicación de datos con Clipper / xHarbour, lo nuevo es PHP, ASP y otras "maravillas" como .NET, no hay problema, xHarbour lo ha solucionado de una manera flexible y poderosa, con un componente llamado xbScript, que está disponible gratuitamente desde la página de la versión comercial de xHarbour.

¿ Qué es xbScript ?, bueno, a grandes rasgos, es un complemento para ASP, que sustituye el lenguaje que normalmente se utiliza para programar este tipo de hojas (Visual Basic Script) por un lenguaje 100% compatible con xHarbour/Clipper (xbScript), simplemente cambiando una DLL y configurando el Internet Information Sever, la implementación es muy simple y rápida, y puedes trabajar con un servidor que soporte ASP y en conjunto con el editor ASP/HTML de tu preferencia como el Dreamweaver por ejemplo, solo que programando en xHarbour y leyendo bases de datos DBFs, o SQL.

xbScript va mas allá, porque además es un ActiveX para Internet Explorer y puedes incluirlo DENTRO del código de una pagina web, así como utilizas JavaScript en una página web, puedes utilizas xbScript, simplemente incluyendo una línea de código en tu página html.

xbScript no solo corre con el servidor ASP del Internet Information Server, sino también con cualquier otro servidor que soporte ASP.

Como verás, por el lado de internet, aún tienes mucho que hacer con tu aplicación Clipper / xHarbour, y espera a ver los post que siguen: Interfaces gráficas: Windows y Linux y acceso a otros formatos de base de datos, objetivo: SQL.

3 comentarios:

Anónimo dijo...

Rene,
gracias por el post. Visito todos los dias tu blog. Me es muy útil toda la info que publicas. Estaba agarrando la costumbre de escuchar tu participación en el programa de radio. Pero ya no recuerdo ni que dia ni la hora. Solo recuerdo que cuando era el dia... cuando me daba cuenta ya se había pasado la hora. En fin, luego investigo la hora y el dia del programa.

Saludos
Fernando Leal

Anónimo dijo...

Hola René,

Aprecio que hayas hecho una investigación tan profunda acerca de las posibilidades de migrar el entorno Clipper-Fivewin al mundo web.

Coincido con todo lo que estás planteando. De hecho, hace ya varios años existe una web que explica como desarrollar cgi's en clipper y usarlos tanto en IIS como en Apache (versión Windows). La versión actual del producto la puedes encontrar en:

http://www.hallogram.com/clipweb/index.html

En teoría... y en la práctica... funciona...

Pero...

Creo que corresponde limitar el contexto de aplicación: si uno monta su propio servidor web en su propia máquina... con las limitaciones que esto supone, ahi funciona correctamente.

Pero...

No creo que ningún webmaster de algún hosting te vaya a habilitar el subsistema windows 16 bits para que pongas tus propios cgi's. Ni hablar de los hostings gratuitos.

Y nuevamente.. volvemos al mismo tema de migrar aplicaciones de 16 bits a 32 bits.

Existen muchas posibilidades intermedias: Alaska, (x)Harbour.. etc...

Creo que seguir apostando a este tipo de desarrollos.. es como seguir comprando pasajes para el Titanic.

Me voy a referir a una posibilidad a ser considerada: NeoBook 5

NeoBook 5 es una especie de apicación RAD (Rapid Application Development) de Borland Delphi. De hecho, el programa es compilado por el compilador Delphi.

32 bits nativos, programación orientada a eventos totalmente manejada por asistentes, conecta con cualquier tipo de base de datos local o remota, navega internet, soporta VbScript y JavaScript y muchisimas prestaciones mas que serían que este post sea demasiado largo.

Creo que es una herramienta a ser considerada porque el costo de NeoBook Professional es de 199,95 dólares y existen servicios externos gratuitos y pagos para manejar distintos tipos de bases de datos.

Mas información:

www.neosoftware.com
www.neobook.com.ar

Saludos desde Buenos Aires,
NeoEspecialista.

Rene Flores dijo...

NeoEspecialista:

Creo que estas un poco desinformado de como ha evolucionado el lenguaje CA-Clipper / xHarbour en los ultimos años.

En la empresa que dirijo, CiberTec nuestro lema ha sido: Llevamos a Clipper al siglo XXI y realmente lo hemos hecho, contamos con herramientas y tecnologías que ponen a este lenguaje XBase a la altura de cualquier lenguaje "moderno".

Sabemos que hoy no es suficiente con hacer programas, hay que hacerlos para Web, móviles para PDAs y Smartphones, con ventanitas graficas para Windows, para Linux, que accedan a bases de datos SQL, todo eso es posible hoy por hoy con el viejo lenguaje Clipper de toda la vida.

En el caso de las aplicaciones Web, montar tu propio servidor web no tiene porque ser costoso, de hecho hasta es gratis con las herramientas apropiadas, por lo que no necesitas forzosamente ni tener un hosting que hospede tus aplicaciones, ni invertir dinero en montarte la tecnología.

Tu mismo en tu casa u oficina, con un simple ADSL que hoy en día puede pagar cualquiera, puedes montarte tu propio servidor para aplicaciones web a 16 o 32 bits, sin necesidad de IP fija ni nombres de dominio, porque existen soluciones gratis como NoIP (www.noip.com) o de paga como Dns2Go (www.d2g.com) donde por menos de 30 dolares anuales puedes tener tu propio servidor web o de base de datos montado sobre internet con el ADSL que usas en casa todos los dias.

Por otro lado, si realmente conocieras de lenguajes XBase, sabrías perfectamente que Alaska Xbase++ tiene componentes llamados "XbaseParts" con los cuales puedes acceder a distintos formatos de bases de datos, no solo DBFs y que con (x)Harbour además de poder acceder a los DBFs tradicionales cuentas además con capacidades de acceso a datos SQL usando ADO-OLEDB si quieres usar SQL con una aproximación muy similar a como el programador XBase está acostumbrado a trabajar con sus tablas y también cuentas con algunos otros componentes de terceros como el SQLRdd, Eagle, Mediator, etc.

El tema de las herramientas RAD para Clipper/(x)Harbour también está cubierto, existe Visual xHarbour y mi favorito: Xailer, el cual es un RAD muy similar a Delphi, soporta prácticamente todo lo que puedes encontrar en cualquier lenguaje visual de programación, con el plus de que puedes seguir manteniendo los proceso "ciegos" (los que no generan salida a pantalla o impresora) tal cual los tienes en este momento en Clipper.

Xailer además ofrece debugger, diseñador de formularios, y acceso a cualquier formato de base de datos SQL o DBF con componentes estandares, de tal forma que si tu quieres cambiarte de acceder a DBFs a acceder a cualquier servidor SQL, simplemente lo haces con 2 clicks del mouse.

El precio puedes pensar que es alto, comenzando en los 210 dolares en la versión básica y llegando hasta 800 en la versión mas completa, pero cuentas con un completo manual totalmente en español y un estupendo soporte técnico también en español, ya que los autores y el grueso de la comunidad somos de habla hispana.