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.
* 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!"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/awaitde 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élite | Qué envuelve |
|---|---|
fb_http | Peticiones con HttpClient: GET, POST, PUT y DELETE, el código de estado con HEAD y la descarga a fichero. |
fb_json | Leer JSON por ruta con puntos sobre System.Text.Json, validarlo y formatearlo; y construirlo con funciones de VFP puro. |
fb_crypto | Hashes de texto y de fichero, HMAC, AES (texto y ficheros), RSA (claves, cifrar, firmar y verificar), aleatorios seguros y Base64. |
fb_email | Correo por SMTP con SmtpClient: configurar el servidor y el remitente, enviar, y validar una dirección. |
fb_io | ZIP (crear, extraer, añadir y listar), ficheros (copiar, mover, borrar, tamaño), carpetas y rutas. |
fb_process | Lanzar 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_dialogs | Cuadro de mensaje, abrir y guardar fichero, elegir carpeta y el portapapeles. Es el único que necesita el .NET Desktop Runtime, porque usa WinForms. |
fb_aixl | Ejecuta scripts de AIXL sobre cursores de VFP. Necesita la DLL y la licencia de AIXL, que hoy no se vende. |
fb_aixl_easy | La misma capa de AIXL en funciones de una línea, como AIXL_CLASSIFY(). Mismo requisito que fb_aixl. |
Requisitos
| Componente | Requisito |
|---|---|
| Visual FoxPro | VFP 9.0 SP2 (x86). El paquete trae también x64\ para VFP Advanced de 64 bits |
| Windows | Windows 10 u 11 |
| .NET | Runtime 8.0 o superior, en la arquitectura del proceso: con VFP 9, el de x86 |
| COM | Ninguno. No hay registro, no hay instalador y no se toca el registro de Windows |