Share via


Notas sobre la programación de servidores de automatización

En los siguientes lugares encontrará información adicional acerca de cómo escribir servidores de automatización.

El objeto Application

El objeto Application no se expone en una biblioteca del tipo servidor de automatización; por lo tanto, no tiene acceso a los métodos DoCmd y Eval del objeto Application. Puede exponer el objeto Application si crea una propiedad personalizada y le asigna como valor el objeto Application o si proporciona un método que tenga acceso al objeto Application.

Las propiedades de lectura y escritura del objeto Application, por ejemplo, AutoYield, son globales para el proyecto; por lo tanto, asegúrese de que los servidores de subprocesos múltiples no presupongan que los valores de esta configuración están protegidos entre subprocesos.

Ejemplos de servidores de automatización

Esta versión de Visual FoxPro incluye dos servidores de automatización ISAPI de ejemplo, FoxWeb y FoxIS. Estos ejemplos administran la devolución de los registros de Visual FoxPro seleccionados a un explorador de Internet como HTML. Para obtener más información acerca de estos ejemplos, vea FoxISAPI: ejemplo de servidor OLE.

Nota   El servidor FoxISAPI incluido en Visual FoxPro dispone de mejoras diseñadas específicamente para su uso con los nuevos servidores DLL de subprocesos múltiples. Los servidores DLL que se ejecutan mediante FoxISAPI no deben utilizar el Administrador de grupo integrado.

Archivos de configuración

En Visual FoxPro, durante la inicialización del tiempo de ejecución sólo se deben utilizar los archivos CONFIG.FPW enlazados dentro de los servidores EXE y DLL. Los archivos de configuración almacenan la configuración crítica que se establece cuando Visual FoxPro se inicia (tanto el producto como el tiempo de ejecución). Antes de Visual FoxPro 6, el archivo CONFIG.FPW podía existir como archivo independiente o enlazado a la aplicación (.app, .exe o .dll). Si se encuentra un archivo CONFIG.FPW enlazado a una aplicación, se utiliza; en caso contrario, Visual FoxPro busca un archivo CONFIG.FPW independiente en las rutas de acceso normales.

Seguirá teniendo una funcionalidad completa con las aplicaciones .app y .exe distribuidas normales.

Tratamiento de páginas de códigos

Las páginas de códigos se admiten en todos los servidores y son específicas de un proyecto determinado (.dll). La página de códigos predeterminada se puede establecer en el archivo CONFIG.FPW sólo durante la inicialización del tiempo de ejecución. La página de códigos es global para todos los proyectos. Todos los objetos que utilicen una instancia determinada del tiempo de ejecución compartirán la misma página de códigos. Debido a que existe la posibilidad de que varios servidores .dll modifiquen la página de códigos predeterminada de un tiempo de ejecución (es decir, cada servidor puede tener su propio archivo CONFIG.FPW con una página de códigos diferente), Visual FoxPro impide modificar este valor una vez iniciado el tiempo de ejecución. Por lo tanto, una vez establecida la página de códigos, es permanente hasta que se libera el tiempo de ejecución.

Los usuarios que necesiten tener servidores con páginas de códigos diferentes pueden situar estos servidores en una carpeta exclusiva, junto con una copia de la biblioteca de tiempo de ejecución vfp7t.dll. De forma predeterminada, un servidor siempre utilizará la biblioteca de tiempo de ejecución almacenada en esta carpeta.

Consideraciones especiales sobre el lenguaje

Hay varios comandos que debe tener en cuenta cuando trabaje con servidores de automatización porque su comportamiento difiere ligeramente del funcionamiento del producto normal.

SET DEFAULT

Establecer el directorio predeterminado mediante los comandos SET DEFAULT o CD afecta a todo el proceso. Es decir, si ha creado instancias de varios subprocesos y utiliza "CD MYDIR" en uno de ellos, afectará a todos los subprocesos y al proceso donde están cargados los objetos. El directorio de trabajo se controla mediante el sistema operativo; por lo tanto, modificar este valor afectará a todos los objetos.

SET PROCEDURE

Como este comando se guarda en un almacén local de subprocesos, es exclusivo de cada subproceso. Sin embargo, cuando se crea una instancia de un servidor COM .exe o .dll, de forma predeterminada, Visual FoxPro ejecuta implícitamente un comando SET PROCEDURE para todo el servidor. Por ejemplo:

? SET("PROCEDURE")
C:\VFP\MYSERVER.DLL

Esto permite tener acceso a cualquiera de los procedimientos almacenados en el servidor. Si un objeto que existe en el subproceso llama a SET PROCEDURE TO, la ruta de acceso del procedimiento se restablece como ninguna; sin embargo, un objeto nuevo creado en el mismo subproceso restablecerá automáticamente la ruta de acceso del procedimiento a todo el servidor.

SET CLASS

Este comando funciona de manera similar a SET PROCEDURE. Su valor se guarda en un almacén local de subprocesos; sin embargo, cuando se inicializa con todo el conjunto de bibliotecas de clases que hay en el servidor .exe o .dll. Por ejemplo:

? SET("CLASS")
C:\VFP\myClass.VCX ALIA

Vea también

Lenguajes admitidos en tiempos de ejecución | Seleccionar una biblioteca de tiempo de ejecución | FoxISAPI: ejemplo de servidor OLE | Interoperabilidad e Internet | Objeto Application | DoCmd | Eval