Pues mira, así como lo he visto yo, en Visual FoxPro, dado que los datos se obtienen directamente de los archivos en donde se guardan (sin ningún motor o servicio), para que una aplicación pueda funcionar como multi-usuario, sólo basta con hacer que dichos archivos (las tablas) puedan ser accedidas desde varias computadoras (dentro de una red por ejemplo), lo cual se puede hacer a través del mecanismo para compartir archivos de "Windows".
Un ejemplo podría ser:
Tienes la aplicación de vfp en tu máquina, tienes el ejecutable, las tablas y demás recursos que la misma pudiera utilizar. Quieres que esa aplicación pueda ser usada por otras personas en tu red.
Lo que haces es compartir la carpeta completa, donde se encuentra tu aplicación. Suponiendo que tu máquina tenga la ip "10.10.1.1", compartes la carpeta con el nombre "vfpComp" y el ejecutable se llama "Comp.exe". Cualquier otro usuario en la red podría abrir la aplicación y conectarse a los mismo datos que tú abriendo el ejecutable de tu carpeta compartida desde su máquina. Por ejemplo:
\\10.10.1.1\vfpComp\Comp.exe
Eso haría que tu aplicación se abra en la máquina del usuario y pueda trabajar al mismo tiempo que tú y más personas sobre los mismos datos, creando así, un entorno mult-usuario.
En este caso, la máquina en donde reside la aplicación actuaría como el servidor de datos y las otras máquinas actuarían como clientes. Aunque el mismo servidor se puede usar también como cliente, muchas veces y dependiendo de las circunstancias, la aplicación no se ejecuta en él y solamente se utiliza como servidor, tanto de los datos como de la aplicación.
Según lo que he visto, esta es la forma más común de utilizar una aplicación de Visual FoxPro en un entorno multi-usuario.
Otra forma podría ser que la aplicación se instale en la máquina de cada usuario y que los datos sean los únicos que se obtengan del recurso compartido, es decir, compartir las tablas en la red y que cada usuario se conecte a dichas tablas en vez de usar tablas locales.
Cuándo se quiere utilizar una aplicación en un entorno compartido, se deben tener ciertas consideraciones al desarrollarla. Menciono algunas de ellas.
- Las rutas para acceder a las tablas y demás recursos deben ser preferentemente relativas a la carpeta del ejecutable. Si se abren las tablas con un ruta directa como "C:\vfpComp\Datos\Tabla1.dbf", un "cliente" no podría acceder a dicho archivo ya que esa ruta es del "servidor", la ruta en el "cliente" sería "\\10.10.1.1\vfpComp\Datos\Tabla1.dbf".
Para conseguir este efecto, cuando compiles, puedes incluir algo así en el prg de inicio. Pensando que en la carpeta del ejecutable están las carpetas "Datos" e "Imagenes":
SET DEFAULT TO
SET PATH TO Datos, Formularios, Programas, Reportes, Imagenes
** Para abrir una tabla que está dentro de la carpeta "Datos" sólo bastaría poner
USE NombreDeLaTabla
- Las tablas se deben abrir en modo compartido para que varios usuarios puedan acceder a ellas al mismo tiempo.
** Comando para el prg de inicio
SET EXCLUSIVE OFF
** o al abrir la tabla
USE NombreDeLaTabla SHARED
- Como dos o más usuarios pueden estar trabajando sobre la misma tabla e incluso sobre el mismo registro, es recomendable tomar en cuenta algunos aspectos como el desempeño y el bloqueo, que vfp ya lo hace implícitamente, pero al considerar estos aspectos, se tiene un mejor control sobre la aplicación, se pueden evitar "colisiones" que traben la aplicación, evitar errores inesperados así como evitar dañar las tablas.
Para esto existen varias funciones. Te recomiendo leer la ayuda de Visual FoxPro que te puede ser muy útil para saber cómo utilizarlas. Busca funciones como "RLOCK()", "LOCK()", "FLOCK()", "CURSORSETPROP()", "TABLEUPDATE()". También te paso un enlace referente de la página de "msdn" (está en inglés).
http://msdn.microsoft.com/en-us/library/aa975797%28v=vs.71%29.aspx