Creación de Webservices en Visual Foxpro


VFP9 es capaz de crear Webservices, haciendo uso del Microsoft SOAP Toolkit v 3.0.
La forma más fácil de iniciarse en FOX con los Webservices, es ir al Task Manager, y buscar la opción del XML. Allí se puede dar de alta un servicio web, así como consumirlo, previa configuración. En caso de consumirlo, tiene la ventaja de que se puede usar un pequeño formulario que facilita crear casos de ejemplo de peticiones web, siempre que la función llamada disponga de pocos parámetros. Por supuesto, la ayuda del Help del producto es muy recomendable leerla.
En el Task Manager, se puede publicar el webservice, aunque yo soy más partidario de hacerlo directamente con el Soap toolkit, ya que seguramente sea la herramienta que se use para hacer las instalaciones a los clientes.
Para empezar, hay que crear una clase custom, y añadirle los métodos que queramos publicar. Básicamente, este paso es exactamente el mismo que cuando generamos cualquier COM+. (aquellos que luego se invocan con instrucciones tipo Createobject). Hecha la clase, hay que generar la DLL, preferiblemente Multithead.
En el equipo servidor, habrá que instalar IIS y deberá registrar la librería que hemos desarrollado con Regsvr32. En algunos casos, también es necesario configurar en IIS la compatibilidad con la extensión .WSDL. Es recomendable configurar la DLL en el administrador de componentes de Windows, para poder pararla cuando sea necesario, así como configurar el número de instancias concurrentes y el tiempo de espera a finalizar la DLL cuando no se usa.
Con el soap toolkit, seleccionamos la DLL creada, y activamos los métodos de la clase que han de aparecer en el servicio. Se le puede ir siguiendo la corriente al resto del asistente.
El nombre de servicio que se configure en el asistente, debe contener la IP o nombre del equipo donde se publica el WSDL. Es recomendable que el nombre o IP sea el mismo desde la Intranet, como en peticiones provenientes de Internet.
Qué devolver en el webservice?
Lo más aconsejable por mi experiencia, es devolver un DATASET, con lo que podemos usar funciones nativas como CURSORTOXML, que son compatibles con ADO Dataset, por lo que es fácilmente manipulable con .NET.
Cursortoxml() convierte una tabla o cursor, en formato XML. También es interesante dar un vistazo a la clase XMLDATASET, que nos permitirá añadir varias tablas relacionadas entre sí, en lugar de devolver una sola tabla, como hace cursortoxml().

Anuncios

7 comentarios en “Creación de Webservices en Visual Foxpro

  1. Hola David,

    Comentas un panorama muy general de los Web Services con vfp9 y te pregunto si tienes un ejemplo muuuy detallado de como generarlo y otr de como consumirlo.
    Es un tema muy importante para los que desarrollamos en vfp9 pues con los web services nos volvemos a rejuvenecer y nos mantenemos en la pelea.

    En lo particular estoy desarrollando un sistema relacionado con la facturacion electronica y me vendria muy bien generar y consumir web services con vfp9.

    Puedes proporcionarme tu apoyo al respecto.

    Saludos

    Joaquinlr@hotmail.com

  2. Hola, Se crear y consumir WS hechos en VFP mi problema se presenta al momento d configurar el IIS 7.5 bien sea d Win / o Server 2008 R2 o superior, instalo SOAP 3.0 Tool Kit, XML 4.0 con SP3 y esto se combierte 1 dolor d cabeza para mi ya q el WS no funciona (solo he tenido exito en 2 equipos con Win 7, uno d 32 Bit y el otra d 64 Bit) dan error Hresult: 0x800A13BE, sino el 0x80070005, sabras como configurarlo en estos excenarios ?

    saludos

    • Hola,
      Ten en cuenta que el webservice se ve afectado por los permisos de ejecución de las DLL de VFP y cómo autentifica IIS al usuario. Por lo que dices podrían ser varias cosas, pero yo iría por pasos:
      1. Asegúrate que existan los directorios temporales y que el usuario IUSR tenga permisos de escritura y lectura en el directorio.
      2. Asegúrate que el grupo de aplicaciones de IIS que usa tu Webservice se ejecute con 32 bits. Por defecto en sistemas operativos de 64 bits no te funcionaría el serviicio si no lo tienes en cuenta.
      3. Posiblemente tu webservice use ODBC, recuerda que debe estar perfectamente configurado.
      4. Los directorios de la base de datos de tu aplicación deben tener permisos de escritura y lectura para el usuario IUSR.
      5. La dirección de respuesta del WSDL puede que esté mal. Es un fallo bastante común. Abre con el navegador el archivo nombreservicio.WSDL y deberás ver su contenido como archivo de texto en el navegador. El link que aparece en la línea soap:address location= debe ser accesible desde el propio equipo (por si lo pruebas en local) y desde el exterior.
      6. Quizás tienes activo un Firewall. Desactívalo momentáneamente para ver si es el motivo de que no te funcione. Posiblemente el puerto 80 no lo tengas abierto para conexiones externas al equipo.
      7. Prueba IIS que funcione con una página HTML básica de texto, quizás algo no lo tengas bien configurado en IIS y no esté operativo.
      8. Si usas el administrador de componentes, puede que los privilegios del usuario encargado de la ejecución de la DLL no sean suficientes.

      Supongo que se pueden mirar más cosas, pero yo empezaría por aquí. Espero que tengas suerte.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s