IR
irwinrodriguez.dev
Volver a documentación

FoxBridge

FoxBridge lleva el ecosistema de .NET a Visual FoxPro. Instancias cualquier clase de .NET, llamas a sus métodos, lees y escribes propiedades, trabajas con colecciones genéricas (List<T>, Dictionary<K,V>), invocas miembros estáticos y consumes async/await, todo con la sintaxis de punto de tu código VFP de siempre. Sin COM y sin registrar nada.

En esta sección

  • Instalación: Los ficheros que hay que copiar, el runtime de .NET y la activación de la licencia.
  • Primeros pasos: Tu primer objeto .NET desde VFP en menos de cinco minutos.
  • Ejemplos: Veinte ejemplos progresivos, de StringBuilder a HttpClient y async/await.
  • Referencia API: La clase FoxBridge y los proxies de colección, método a método.

Cómo funciona

Dos capas y una sola clase. FoxBridge.prg es la API que ves desde VFP; por debajo, x86\FoxBridgeNE.dll arranca el runtime de .NET y le pasa las llamadas, apoyándose en FoxBridge.dll, Nexum.dll y los dos .json que van a su lado. Los cinco ficheros de esa subcarpeta viajan juntos.

Activar el puente y crear un objeto .NET
* Inicializar y activar (las dos lineas van juntas)
loBridge = NEWOBJECT("FoxBridge", "FoxBridge.prg")
IF !loBridge.Activate(lcJwt)
    ? loBridge.GetLastError()
    RETURN
ENDIF

* Y a partir de aqui, .NET con sintaxis de punto
loSB = loBridge.Create("System.Text.StringBuilder", "Hola ")
loSB.Append("desde .NET!")
? loSB.ToString()   && "Hola desde .NET!"
La licencia se exige siempre En el IDE y en el EXE compilado, igual. Es un JWT que le pasas tú a loBridge.Activate() al arrancar, y la comprobación está al principio de los cincuenta puntos de entrada del motor: sin activar, ni un StringBuilder. Si el mantenimiento ha vencido, el producto sigue funcionando; lo que caduca es el derecho a versiones nuevas.

Lo que trae

  • Instanciación de cualquier tipo de .NET, con hasta diez parámetros en el constructor
  • Colecciones genéricas: List<T>, Dictionary<K,V> y arrays, con índice base 1 como en VFP
  • Miembros estáticos: métodos, propiedades y campos de clase, con Static()
  • Enums leídos por su nombre desde el proxy estático (loFileMode.Create), no a base de recordar el número
  • Resolución automática de sobrecargas y conversión de tipos de VFP a .NET
  • async/await de forma transparente: la tarea se espera y devuelve su resultado
  • Carga de tus propias DLL compiladas, con LoadAssembly()
  • Nueve satélites ya escritos y un tutorial con ClosedXML e iText, en el propio paquete (la tabla de abajo)

Los nueve satélites

Vienen dentro del paquete, en Satellites\, y son .prg de VFP que puedes leer y cambiar: cada uno envuelve una parte de .NET en funciones con nombre de FoxPro, para no escribir Create() a mano. Se cargan con SET PROCEDURE TO fb_http ADDITIVE y se les da el puente una vez, con FB_SET_INSTANCE(loBridge), que comparten todos.

SatéliteQué envuelve
fb_httpPeticiones con HttpClient: GET, POST, PUT y DELETE, el código de estado con HEAD y la descarga a fichero.
fb_jsonLeer JSON por ruta con puntos sobre System.Text.Json, validarlo y formatearlo; y construirlo con funciones de VFP puro.
fb_cryptoHashes de texto y de fichero, HMAC, AES (texto y ficheros), RSA (claves, cifrar, firmar y verificar), aleatorios seguros y Base64.
fb_emailCorreo por SMTP con SmtpClient: configurar el servidor y el remitente, enviar, y validar una dirección.
fb_ioZIP (crear, extraer, añadir y listar), ficheros (copiar, mover, borrar, tamaño), carpetas y rutas.
fb_processLanzar procesos y recoger su código de salida o lo que escriben, listarlos y matarlos, abrir un fichero o una URL con su programa, y variables de entorno.
fb_dialogsCuadro de mensaje, abrir y guardar fichero, elegir carpeta y el portapapeles. Es el único que necesita el .NET Desktop Runtime, porque usa WinForms.
fb_aixlEjecuta scripts de AIXL sobre cursores de VFP. Necesita la DLL y la licencia de AIXL, que hoy no se vende.
fb_aixl_easyLa misma capa de AIXL en funciones de una línea, como AIXL_CLASSIFY(). Mismo requisito que fb_aixl.

Requisitos

ComponenteRequisito
Visual FoxProVFP 9.0 SP2 (x86). El paquete trae también x64\ para VFP Advanced de 64 bits
WindowsWindows 10 u 11
.NETRuntime 8.0 o superior, en la arquitectura del proceso: con VFP 9, el de x86
COMNinguno. No hay registro, no hay instalador y no se toca el registro de Windows