2011-09-30 17 views
5

Tengo una aplicación VB6 que deseo comunicar con un Servicio WCF de Windows que he escrito y que importa certificados de seguridad. La única función en el servicio requiere dos argumentos de cadena. Sin embargo, he tenido muchas dificultades para comunicarme con los dos programas.¿Comunicarse con WCF Windows Service en VB6?

En VB.NET, es fácil, solo haga una referencia al servicio como lo haría con un servicio web. En VB6, sin embargo, parece que no es tan simple. La búsqueda solo muestra ejemplos de cómo ESCRIBIR un servicio de Windows en VB6.

¿Alguien sabe cómo se hace esto?

+0

¿Conoce http://social.msdn.microsoft.com/Forums/pl-PL/wcf/thread/d5c5ab13-bf07-4047-8be7-c697f8f4c564 y http://www.vbforums.com/showthread. php? t = 558239? – kroonwijk

+0

Sí, vi variaciones de ambos. He intentado utilizar el kit de herramientas SOAP, sin éxito. No pude averiguar cómo generar wsdl en tiempo de ejecución (ala ServiceModelSamples/service.svc? Wsdl) y wcf wsdl que se genera al ejecutar svcutil no tiene todo lo necesario para conectarse. Parecen estar dirigidos específicamente a los servicios web (aunque en este caso me he comunicado con el servicio de Windows casi exactamente como lo he hecho con los servicios web) ... – CodeWarrior

+0

.Net WCF no es realmente muy interoperable con otros kits de herramientas de Web Services en general. Una búsqueda en la Web de "interoperabilidad de WCF" ayuda a revelar la historia real. – Bob77

Respuesta

11

La manera más fácil que he encontrado para acceder a un servicio WCF desde VB6 es crear un contenedor .Net ComObject para el cliente de servicio. Entonces en VB6 todo lo que estás haciendo es crear un objeto y llamar a algunos métodos sobre el objeto. Todo el trabajo WCF se lleva a cabo en el objeto .Net com.

+0

Suena intrigante. ¿Cómo se hace eso? Nunca he hecho antes. – CodeWarrior

+0

Simplemente cree el cliente WCF para el servicio en un proyecto separado [como se describe en este enlace.] (Http://www.west-wind.com/weblog/posts/2007/Dec/16/WCF-Clients-and- COM-Interop) [Registrar el ensamblado de .NET] (http://blogs.msdn.com/b/jigarme/archive/2008/04/28/how-to-register-net-assembly-for-com-interop. aspx) como una biblioteca de tipos que luego vincularías desde la aplicación VB6. –

+0

Entonces, ¿la aplicación VB6 llamará al cliente, que a su vez llamará al servicio? En ese caso, creo que pondré la funcionalidad de los servicios en el ensamblado registrado y omitiré un paso. Honestamente, pensé que esto hubiera sido más fácil. – CodeWarrior