viernes, enero 19, 2007

(x)Harbour en modo consola... volver a lo básico.

Sin duda, no me equivoco al pensar que la mayoría de ustedes queridos lectores del mundo, utilizan xHarbour para programar acompañados de una interfaz gráfica, llámese Xailer (y vuelta con Xailer...) FiveWin (hasta que se acordó de mencionarlo) o Harbour MiniGUI (¿y eso con que se come?) y que seguramente utilizan su (x)Harbour para hacer programas para Windows.

Bueno, dejenme comentarles que personalmente tengo una gran cantidad de clientes que aún el dia de hoy, siguen programando con Clipper MS-DOS 16 bits y que no se les ven la intenciones de cambiar a menos que ocurra una catástrofe que les obligue como le sucedió hace poco a uno.

Este cliente es una cadena de zapaterías muy importante de México, utilizan el sistema administrativo ADMIN, para mis lectores fuera de México, voy a hacer un paréntesis para comentarles que ADMIN fue el primer software de código abierto hecho en Clipper desarrollado por la empresa ABITS, estos amigos te vendían todo el código fuente de la aplicación de gestión administrativa, contabilidad, control de bancos, producción y nómina, totalmente hecho en Clipper, de tal forma que si necesitabas mejorar algo, introducir una nueva funcionalidad y adecuardo para tus propias necesidades, podías hacerlo perfectamente, algo similar a lo que hace el buen amigo Alfredo Arteaga con su RC-Extended y su CA-Extended, ambos productos diseñados para FiveWin Harbour, y cuyo código fuente puedes adquirir si deseas ahorrate la paliza de comenzar a escribir una gestión administrativa desde cero.

Pero regresando al tema, ABITS se canso de vender ADMIN, hace unos dias, comentando esto con un amigo EX-ABITS, Héctor Murillo, me comentaba que se vendieron no menos de 5 mil unidades del producto, en sus versiones estándar (solo EXE) y profesional (EXE y Código fuente), asi que ya se podrán imaginar la cantidad de usuarios que puede haber de ese producto.

El caso es que muchos de esos clientes con necesidades muy específicas no cubiertas por el software comercial "en caja" adquirieron el producto y aun hoy, 10 años después de su lanzamiento, los siguen utilizando, créanlo o no.

ADMIN nunca fue pensado para manejar grandes volumenes de información, sin embargo, tengo clientes que maneja millones y millones de registros (y aun lo siguen haciendo hoy en dia) gracias a la maravilla de Advantage Database Server, entre ellos el caso materia de este post. (por fin vamos a entrar en materia).

Les comentaba anteriormente que este cliente es una importante cadena de Zapaterías de México, con mas de 30 sucursales (todas corriendo el POS de ADMIN), un centro de distribución de venta a Mayoreo (con 25 nodos y 7 POS ADMIN) y una oficina central con 50 usuarios conectados, también a ADMIN, ellos adquirieron su licencia de Advantage Database Server hace mas de 7 años y habían trabajado todo sin problemas hasta que decidieron cambiar su servidor de datos.

Anteriormente trabajaban con un Novell Netware 4.11, y ADS se desempeñaba bastante bien bajo ese sistema operativo, de hecho fue bajo Novell Netware donde se desarrollaron las primeras versiones de ADS, así que ellos trabajaban felices con su ADS 5.x y su Novell 4.11.

Un buen dia decidieron decirle gracias al Novell y moverse a una plataforma mas "moderna", así que apagaron el servidor Novell y montaron un Windows 2003 Server Enterprise, y aquí comenzaron los problemas.

La idea original era trabajar ADS sobre el nuevo servidor, hasta aquí no hubo problema, ADS funciona perfectamente bajo Windows 2003 server, el problema fue la aplicación Clipper MS-DOS.

Como la empresa quería dejar todo bajo protocolo TCP/IP y como las aplicaciones MS-DOS no soportan dicho protocolo, hubo que hacer cambios en la programación del software , ya que ADS, para las versiones de Clipper bajo TCP/IP requiere una librería especial de comunicaciones, que se debe linkear al EXE final, pero eso no es todo, también necesita un programa "traductor" de paquetes IP para poder conectarse al servidor, ese programa, el llamado ADSDOSIP.EXE, agrega una capa extra a la comunicación entre el cliente el servidor, el precio a pagar: una pérdida terrible de velocidad de acceso a los datos.

Esto es entendible, mientras bajo Novell las aplicaciones Clipper se comunican con ADS usando protocolo IPX, que no es complicado en su implementación y que establece una comunicación directa entre el cliente y el servidor, las aplicaciones funcionan extraordinariamente rápido, bajo Windows esas mismas aplicaciones requieren de mas componentes y no resultan tan rápidas como cuando corren bajo Novell con IPX/SPX.

Ojo, que no se mal interprete esto que comento como que "las aplicaciones Clipper no funcionan con ADS bajo Windows 2003" no no no, nada mas fuera de la realidad, las aplicaciones Clipper FUNCIONAN PERFECTAMENTE bajo Windows 2003 con TCP/IP solo que no son tan rápidas. Si quieres tener mejor velocidad tienes que instalar los protocolos de Windows compatibles con Novell IPX/SPX, pero eso añade carga a la red, pero las aplicaciones funcionarán sin problema.

Los problemas de velocidad causaban desesperación en los usuarios, obvio, después de estar acostumbrados a aplicaciones que "volaban" bajo Novell, volver a la lentitud de antes de la implementacion de ADS como que no cuadraba, máxime que se había hecho una importante inversión en equipos nuevos supuesta mente con mayor capacidad y velocidad. ¿ Cual fue la solución ?, olvidarnos de compilar con Clipper y pasarnos directamente a xHarbour.

Así como lo leen, problemas desesperantes requieren soluciones desesperadas, así que armados de valor, de xHarbour, Borland C++ y AJMake, acometimos las mas de 200,000 líneas de código del ADMIN para pasarlo a 32 bits con xHarbour, y notese que no dije FiveWin, Xailer, MiniGUI ni nada, la aplicación se migró a 32 bits EN MODO CONSOLA, nada de florituras visuales, fue la misma aplicación Clipper pero ahora corriendo a 32 bits.

La ventaja principal de este movimiento, fue que bajo xHarbour el RDDADS utiliza capas de comunicación nativas de Windows, lo que le permite conectarse con Novell Netware o con Windows 2003 server indistintamente, gracias a sus DLLs de comuncaciones y a que el programa es un programa de 32 bits reales.

Para mi sorpresa, en la primera compilación xHarbour se "comió" un 80% del código Clipper original sin el menor empacho, hubo algunos problemas de compilacion debido a que incluimos muchos mas PRGs de los que realmente utilizaba el sistema, pero fue cuestión de eliminarlos y resumiendo, la migración del ADMIN a 32 bits estuvo totalmente resuelta en menos de 3 días.

El resultado fue el esperado, y aún mejor, logramos igualar, incluso superar la velocidad de acceso de la vieja aplicación Clipper para Novell con ADS, reportes que llevaban horas en su elaboración bajo la aplicación de 16 bits pasaron a generarse en 1 o 2 minutos con la aplicación de 32 bits, obvio, hubo algunos errores de linkeado por los nombres de funciones de mas de 10 caracteres, pero en general fueron pocos los problemas que se nos presentaron para volver a generar la aplicación a 32 bits. Prácticamente no tocamos nada del código fuente original salvo algunos problemas con macros, pero que les dimos la vuelta sin muchas dificultades.

El cliente ahora esta feliz, aprovechando su nuevo servidor, su nuevo ADS bajo Windows 2003 y continuando su trabajo sin interrupciones como había estado acostumbrado e incluso con mejoras en la velocidad.

Quien me iba a mi a decir, que en plena era Windows Internet, tendría que volver a tocar un programa en Clipper MS-DOS para convertirlo a otro programa Harbour en modo de consola pero a 32 bits con ADS, sin duda, un claro ejemplo de "volver a lo básico", lo interesante de esto es que aun hay bastantes ADMINes sueltos por ahí, voy a hacer una campaña para motivar a los usuarios a pasar a 32 bits, realmente merece la pena el cambio.

4 comentarios:

Anónimo dijo...

Muy reanimante para los viejos ClipeerSaurios.
Felicidades.

Anónimo dijo...

amigo, siempre he querido intentar pasar mi aplicación de ca clipper que está enlazada con la librería gráfica llibgh (que pena ya no me acuerdo cómo se escribe en estos momentos), pero utilizo sus funciones para dibujar lineas , escribir texto. pero cada vez que veo artículos de xharbour, quiero probar la compilación entonces con quién puedo entenderme para realizar estas pruebas. gracias

josé luis lópez rueda
joselopezrueda@yahoo.com

Anónimo dijo...

En mi caso yo soy aun uno de los clipersaurios en donde dos compañias del grupo donde trabajo aun usan ADMIN, conectados al advantage database server, usando el antiquisimo Novel 3.12
Llevamos desde 1995 trabajando con la aplicación de forma maravillosa.
Usamos el control de transacciones para garantizar la integridad de la base de datos, y eso por mas de 10 años nos ha llevado a una solidez increible. Aparte que siempre hemos podido cambiar el codigo a nuestro antojo deacuerdo a las necesidades de la empresa.
Sin embargo, siempre esta latente la necesidad de movernos a algo mas moderno. Es impactante que ADMIN ya no se venda como producto.
Y eso hace pensar siempre en nuevos horizontes.
Desde luego tu blog, nos da una refrescante oportunidad en otros sentidos, el dia que las aplicaciones de 16 bits sean tan obsoletas que sean imposible ponerlas a correr en los modernos sistemas operativos.
Por lo que resulta un respiro, en esta busqueda a la modernidad.

Saludos.
Jorge Macias
jorge_macias33@yahoo.com.mx

Paimar dijo...

Buenas.

Nos podrias decir si existe por la red algun tutorial de como pasar de clipper 5.x a xharbour?

Gracias

Eduardo Martin
España