LetoDbf desarrollado por Rolf "elch" Beckmann es un folk de LetoDB original de Alexander S. Kresin es un sistema de administración de bases de datos cliente-servidor (DBMS) y supone una alternativa gratuita a Advantage Database Server (ADS) y sobre todo con todos los fuentes disponibles para modificarlos a nuestro antojo,
El servidor LetoDB está escrito principalmente en C y usa algunas bibliotecas Harbour, incluidos los controladores de bases de datos: DBFCDX y DBFNTX .
Podemos distinguir principalmente 2 partes:
- La parte del cliente, compuesta principalmente por un controlador RDD en forma de librería rddleto.lib.
- Y la parte servidor letodb.exe junto con un fichero de configuración letodb.ini, encargada de recibir las peticiones del cliente y enviar los resultados. Este servicio puede instalarse como servicio en windows o demonio en linux.
Hay que puntualizar que junto a las 2 partes principales también existen algunas utilidades de monitorización y varios ejemplos.
Compilación
Descargamos del repositorio [url=https://github.com/elchs/LetoDBf] todo el proyecto y si tenemos el entorno de desarrollo harbour preparado para BCC o descomentamos las dos primeras líneas del fichero make_bc32.bat y le ponemos los paths de nuestro entorno, con sólo ejecutarlo nos creará en los directorios lib y bin el cliente y el servidor respectivamente.
También podemos hacer uso de nuestro compilador de C favorito y utilizar hbmk2 para compilar tanto el server como el rdd del cliente.
Si nos fijamos hay varios ficheros .hbp, si modificamos el de creación del server letodbsvc.hbp comentando o descomentando las siguientes líneas, podemos hacer que funcione en windows como servicio (lo más habitual), o como proceso, muy práctico en desarrollo.
Código: Seleccionar todo
-prgflag={win}-D__WIN_DAEMON__
#-prgflag={win}-D__WIN_SERVICE__
Instalación
El cliente rddleto.lib simplemente lo añadiremos a nuestro proyecto junto el fichero rddleto.ch del directorio include (siempre que necesitemos hacer uso de las funciones agregadas de LetoDBF).
En cuanto al servidor necesitaremos el fichero letodb.exe y el fichero letodb.ini y los situaremos en la máquina donde vaya a funcionar de server, claro está que para pruebas y desarrollo lo normal es que sean la misma.
Sólo queda modificar el letodb.ini que viene de ejemplo a nuestras necesidades, principalmente:
Código: Seleccionar todo
Server=192.168.2.201
IP=192.168.2.201
DataPath=C:\Programa\DBF
Ya podremos instalar el servicio en nuestro windows con letodb.exe install (no olvidéis ejecutarlo como administrador para que pueda ser creado el servicio), a partir de ese momento se comportará como un servicio mas al que podremos iniciar, parar o reiniciar de la forma habitual.
La distribución de LetoDBF incluye varias utilidades, que deberemos compilar previamente, dentro de la carpeta utils, principalmente console.exe y letobackup.exe . El programa console.exe Es una utilidad de administración del servidor, que se puede ejecutar desde la máquina del cliente y proporciona una variedad de información sobre el servidor: estadísticas, lista de conexiones, la lista de tablas abiertas y le permite cerrar cualquier conexión, así como crear usuarios, utiliza el mismo fichero de configuración que el server.
En cuanto a letobackup.exe, permite realizar copias remotas de nuestros datos, lleva su propio .ini de configuración, del cual se puede ver un ejemplo en el fichero readme.txt que lo acompaña.
Mucho cuidado con con los Firewall, en particular el de Windows, debe tener abiertos los puertos necesarios para establecer la comunicación (por defecto 2812 y 2813) y si la conexión es a través de internet tener claro la redirección de los mismos para que sea alcanzable el server desde el cliente.
Uso desde nuestros programas.
Una vez configurado el server veamos como es una conexión simple desde nuestros programas:
Código: Seleccionar todo
/*
* Conexión simple al Servidor
* Cambie los datos de cPath a los de su servidor.
*/
REQUEST DBFCDX
REQUEST LETO
#include "rddleto.ch"
Function Main( )
LOCAL cPath := "//localhost:2812/"
IF leto_Connect( cPath, /*user*/, /*pass*/, /*nTimeOut*/) == -1
? "NO SE HA ENCONTRADO SERVIDOR LETO: " + cPath
Inkey(0)
ELSE
? LETO_GetServerVersion(), " en la direccion: ", Leto_getLocalIP( .T. )
LETO_DBDRIVER( "DBFCDX", "FPT", 512 )
? "DRIVER DE LA BASE DE DATOS DBF:", LETO_DBDRIVER()[ 1 ], "MEMOTYPE:", LETO_DBDRIVER()[ 2 ]
Inkey(0)
//Abrimos la Tabla test.dbf y realizamos un browse
USE test
BROWSE()
CLOSE DATABASES
ENDIF
Return Nil
Existen muchas a funciones agregadas, todas reconocibles por el prefijo Leto_", que obedecen a esa necesidad de interactuar entre el servidor y cliente a nivel es ficheros, las podéis ver todas en el fichero readme.txt.
- Leto_File( cFileName ) ==>; lFileExists - Comprueba si existe el fichero en el server.
- Leto_FCopy( cFilename, cFileNewName ) ==>; -1 si falla - Copia un fichero al server cambiando el nombre.
- Leto_FErase( cFileName ) ==>; -1 si falla - Borra un fichero en el server.
- etc.
Esto lo lograremos utilizando el fichero letoudf.hrb, que no es mas que un fichero precompilado en .hrb con nuestras funciones propias, pero que situaremos en el server y que podrán ser llamadas desde nuestro cliente con:
Código: Seleccionar todo
LETO_UDF( cServerFunc [, xParam1, ... ] ) ==> xResult
Código: Seleccionar todo
LETO_UDF( cCodeBlock [, xParam1, ... ] ) ==> xResult
Consideraciones Finales
Esto no pretende para nada ser un manual, sino una guía que nos permita poner en marcha LetoDBF de forma rápida para posteriormente adentrarnos en todas las posibilidades que nos ofrece.
LetoDBF tiene todas estás y muchas otras características que no se han explicado y que le dotan de mayor potencia, todas ellas explicadas en el fichero readme.txt.
- Seguridad por usuario y contraseña al establecer la conexión.
- Transacciones.
- Intercambio de variables entre servidor y cliente.
- Compresión de las comunicaciones.
- etc.