Share via


Biblioteca de tiempo de ejecución VFP7R.DLL

Vfp7r.dll proporciona servicios para los siguientes tipos de aplicaciones generadas por Visual FoxPro:

  • Aplicaciones distribuidas (archivos .exe)
  • Documentos activos (archivos .app)
  • Servidores fuera de proceso (archivos .exe)
  • Servidores en proceso (archivos .dll)

Este es el tiempo de ejecución principal que Visual FoxPro utiliza para la mayoría de las aplicaciones.

El tiempo de ejecución de Visual FoxPro, vfp7r.dll, no atiende a múltiples servidores de automatización .dll en proceso. Ahora, cada .dll en proceso utiliza una instancia diferente del tiempo de ejecución vfp7r.dll. Las reglas siguientes determinan la manera en que las .dll en proceso utilizan el tiempo de ejecución Vfp7r.dll:

  • La .dll en proceso que se llama en primer lugar tiene el uso exclusivo de la biblioteca de tiempo de ejecución vfp7r.dll; normalmente, se instala en la carpeta System o en System32, según el sistema operativo instalado.

    Si una .dll en proceso ya tiene el uso exclusivo del tiempo de ejecución Vfp7r.dll, por cada nueva .dll en proceso que se llame se creará en el disco y se cargará en memoria una copia de Vfp7r.dll con un nombre diferente. El nombre asignado al tiempo de ejecución Vfp7r.dll se basa en el nombre de la .dll en proceso. Por ejemplo, si se llama a una .dll en proceso denominada Myserver.dll, se asignará a la copia de Vfp7r.dll el nombre myserverr.dll (observe la “r” anexada al nombre), y se cargará en la memoria para dar servicio a la .dll en proceso. Esto también puede ocurrir con un servidor .exe de Visual FoxPro que crea una instancia de un servidor .dll; en este caso, ambos compartirían el mismo tiempo de ejecución del mismo proceso.

  • Los tiempos de ejecución de Visual FoxPro sólo cambian de nombre para las .dll en proceso que se ejecutan en el mismo proceso. Esto significa que dos clientes independientes, cada uno ejecutándose en un proceso propio, pueden cargar dos .dll en proceso diferentes de Visual FoxPro sin cambiar el nombre del tiempo de ejecución. En este caso, ambas .dll en proceso de Visual FoxPro utilizarán Vfp7r.dll ya que los clientes se cargan en procesos separados.

  • Múltiples servidores de automatización (creados mediante la cláusula OLEPUBLIC en el comando DEFINE CLASS) en una misma .dll en proceso, comparten el mismo tiempo de ejecución Vfp7r.dll. En este caso, es posible que los servidores de automatización se afecten mutuamente al compartir variables de memoria PUBLIC, establecer los mismos comandos SET, etc., si residen en un subproceso común. Evite que varios servidores de automatización de una misma .dll en proceso interfieran entre sí. La nueva clase Session puede ayudar a eliminar algunos de estos conflictos.

Puede utilizar la biblioteca vfp7r.dll con servidores .dll en proceso. Debido a que existen limitaciones en la utilización de vfp7r.dll, debería considerar la posibilidad de utilizar en su lugar el tiempo de ejecución vfp7t.dll. El tiempo de ejecución vfp7r.dll no protege completamente los datos globales y los datos de cada instancia; por lo tanto, la biblioteca impide que varios objetos ejecuten el código al mismo tiempo. Si uno de los objetos está ejecutando código, todas las demás instancias deben esperar en la cola para ejecutarlo. En cuanto el objeto termine de ejecutar el código, otro objeto puede comenzar a ejecutar el tiempo de ejecución, tanto si es una asignación de propiedad como una invocación a un método. Aunque esto no es lo ideal para muchas aplicaciones, existen determinados tipos de aplicaciones de servidor para los que puede ser la solución óptima.

En una aplicación típica de Microsoft Transaction Server (MTS), los servidores .dll de Visual FoxPro se implementan en paquetes representados por un solo proceso de MTS. MTS genera, o reutiliza, un subproceso para cada cliente que pida una instancia (OLEPUBLIC) de un servidor de Visual FoxPro. Debido a que, con frecuencia, las aplicaciones de MTS requieren escalabilidad empresarial, existe la posibilidad de que varias instancias tengan acceso simultáneamente al servidor de Visual FoxPro. Si sólo se permite a un cliente (instancia) ejecutar código al mismo tiempo, todos los demás deben esperar. En un equipo con un solo procesador, esto puede ser válido, según la naturaleza y tiempos de ejecución de los métodos del servidor. Recuerde que un único procesador sólo puede ejecutar una línea de código al mismo tiempo.

Siempre debe considerar la posibilidad de utilizar el tiempo de ejecución vfp7t.dll en equipos con varios procesadores, ya que cada procesador puede ejecutar el código de diferentes objetos simultáneamente. Debido a que la técnica de bloqueos de vfp7r.dll evita la ejecución simultánea de código, utilice vfp7t.dll en la mayoría de los casos.

Vea también

Bibliotecas de tiempo de ejecución de Visual FoxPro | Biblioteca de tiempo de ejecución VFP7T.DLL | Interoperabilidad e Internet | Consideraciones y limitaciones para diseñar servidores | Escalabilidad y subprocesamiento múltiple