21 de junio de 2002

Como Obtener la Fecha del Servidor Utilizando Componentes COM

Visual FoxPro permite crear servidores de Automatizaciòn (componenente COM) con la finalidad de empaquetar el còdigo para realizar procesos comunes a muchas aplicaciones.

En la Seccion de articulos de la Web de Davphantom (www.davphantom.cjb.net/) se encuentran dos documentos valiosos que permiten asimilar de forma sencilla la teoria y la manipulacion de un Componente COM.

Para crear un servidor de Automatizacion se necesita crear un proyecto que incluya clases definidas como OLEPUBLIC, las cuales se pueden definir en un programa(.prg) o en bibliotecas de clases.

Por ejemplo, la definicion de la clase siguiente en un archivo de programa que llamaremos MAIN.PRG crea una clase public OLE personalizada que retorna la fecha del sistema.

Define class SERVERLIB as custom olepublic
name ="SERVERLIBUNO"
  function fecha_sys
           fecha_sys=date()
  returm fecha_sys
enddefine

EL programa MAIN.PRG se vincula a un proyecto que denominaremos SERVICIO.PJX

Cuando estemos compilando el proyecto en el cuadro de dialogo opciones, elijimos (*) Ejecutable WIn32 o Servidor COM (EXE)

Una vez creado el proyecto con clases OLE pùblicas, se crean tres archivos :

1.- El archivo .dll o .exe
2.- Un archivo de bibliotecas de tipos (.tbl)
3.- Un archivo de registro (.vbr)

Para poner en funcionamiento el componente realizamos los siguientes pasos:

release all
close all
run SERVICIO.exe /regserver    &&  Registrar el componente
oCom = createobject("SERVICIO.SERVERLIB") &&  Crea el COM
?oCom.feh_sys()                           &&  Ejecuta  la funcion
run SERVICIO.exe /unregserver             &&  Descarga el COM de memoria
release all
close all

El proceso anterior nos devuelve la fecha del cliente desde donde se ejecuta el componente.

Recuerdan ustedes el problema que existia para obtener la fecha del servidor cuando trabajamos con la base de Datos Nativas de Visual FoxPro utilizando clientes Windows 98.

En lo personal recurri a toda una serie de artificios entre los que figuran :

1.- Permitir que el usuario digite la fecha.

2.- Crear una tabla de configuracion con un campo fecha, la cual era accesada por todas la aplicaciones. La actualizacion de esta tabla era responsabilidad del administrador y la debia realizar todos las mañanas.

3.- La misma tabla del numeral anterior pero esta vez la actualizacion se realizaba por medio de un ejecutable que corria en el servidor, lo que implicaba apagar y preder todas las mañanas el servidor.

4.- La mas original y mas utilizada que es sincronizando el cliente con el servidor por medio del comando NET TIME. Este proceso se realiza al inicio de la aplicacion pero resulta que hay usuarios que no apagan los PC y es muy dispendioso estar realizando el NET TIME constantemente.

El uso de la Automatizacion (Componentes COM) nos brinda otra alternativa para solucionar este problema de una manera mas paractica, para esto utilizaremos el COM desarrollado anteriormente (SERVICIO.EXE).

Pero antes se deben realizar los siguientes pasos:

1.- Asignar direcciones estatica IP a todos los equipos incluyendo el servidor.

2.- Copiar el archivo ejecutable del servidor de automatizacion (.EXE) en el servidor (en nuestro caso SERVICIO.EXE) y ejecutarlo en el servidor para registrarlo en el registro de Windows (Windows 2000 o Windows NT).

run SERVICIO.exe /regserver

oCom = createobject("SERVICIO.SERVERLIB") && O lo ejecutamos desde el explorador


3.- En el equipo Servidor, ejecute RACMGR32.EXE, el Administrador de para conexiones :

* Selecciones la clase en la lista (SERVICIO.SERVERLIB).

* En la pestaña "Acceso de Cliente", elija "Permitir creaciones remotas mediante clave".

* Compruebe que la opcion "Permitir activacion remota" este activada.

4.- Una vez activado el acceso al cliente en el Administrador de Conexiones de Automatizacion Remota , agrege en la barrad de menu "Programasinicio" un acceso directo al programa AUTMGR32.exe el cual se encuentra en la carpeta System32 en Windows NT y paso seguido reiniciar servidor.

Estos pasos solo se repiten cada vez que se actualize el componente.

Una vez configurado el equipo servidor y cargado el Administrador de Conexiones de Automatizacion Remota (AUTMGR32.exe) procedemos a ejecutar el componente.

En la carpeta donde estemos ubicados deben exitir "obligatoriamente" los siguientes archivos:

1.- SERVICIO.VBR
2.- CLIREG32.EXE el cual viene con Visual FoxPro.

El codigo que permite ejecutar el componente es el siguiente :

  id_ip =" 192.168.0.200 "  && Asigna la Ip del servidor a una variable
  ord   ="run /n7 clireg32 SERVICIO.VBR -s"+ID_IP+; 
          "-p ncacn_ip_tcp -q -nologo"  
  wait window ord  && Esta la sintaxis que se ejecuta para registrar el COM
  &ord                             
  oCOm=createobject("servicio.serverlib") 
  ?oCom.fecha_sys()
  close all  
  ord="run /n7 clireg32 -u SERVICIO.vbr -q -nologo" 
  wait window ord && Sintaxis que descarga el COM del cliente
  &ord

Espero que este truco le sirva a todos ..!!!!!

Atentamente

William Cañas

No hay comentarios. :

Publicar un comentario