2011-09-30 7 views
5

Ho un'applicazione VB6 che voglio comunicare con un servizio Windows WCF che ho scritto che importa i certificati di sicurezza. L'unica funzione nel servizio accetta due argomenti stringa. Ho avuto molte difficoltà a far comunicare i due programmi comunque.Comunicare con il servizio Windows WCF in VB6?

In VB.NET, è facile, basta fare un riferimento al servizio come si farebbe con un servizio web. In VB6, tuttavia, non è così semplice sembra. La ricerca sembra solo tirare su esempi di come scrivere un servizio Windows in VB6.

Qualcuno sa come è fatto?

+0

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

+0

Sì, ho visto variazioni di entrambi. Ho provato a utilizzare il toolkit SOAP, senza successo. Non riuscivo a capire come ottenere il wsdl generato in fase di esecuzione (ala ServiceModelSamples/service.svc? Wsdl) e il wcf wsdl che viene generato quando si esegue svcutil non ha tutto il necessario per connettersi. Sembrano essere adattati specificatamente ai servizi web (anche se in questo caso ho comunicato con il servizio Windows quasi esattamente come con i servizi Web) ... – CodeWarrior

+0

. WCF netto non è realmente molto interoperabile con altri toolkit di servizi Web in generale. Una ricerca del Web per "interoperabilità WCF" aiuta a rivelare la vera storia. – Bob77

risposta

11

Il modo più semplice che ho trovato per accedere a un servizio WCF da VB6 è creare un wrapper ComObject .Net per il client di servizio. Quindi in VB6 tutto ciò che stai facendo è un oggetto crea e chiama alcuni metodi sull'oggetto. Tutto il lavoro WCF si svolge nell'oggetto com .Net.

+0

Suoni intriganti. Come è fatto? Non l'ho mai fatto prima. – CodeWarrior

+0

Basta creare il client WCF per il servizio in un progetto separato [come descritto in questo collegamento.] (Http://www.west-wind.com/weblog/posts/2007/Dec/16/WCF-Clients-and- COM-Interop) [Registrare l'assembly .NET] (http://blogs.msdn.com/b/jigarme/archive/2008/04/28/how-to-register-net-assembly-for-com-interop. aspx) come una libreria di tipi che dovresti collegare dall'app VB6. –

+0

Quindi l'app VB6 chiamerà il client, che a sua volta chiamerà il servizio? In tal caso, penso che inserirò la funzionalità dei servizi nell'assieme registrato e salterò un passaggio. Onestamente ho pensato che sarebbe stato più facile. – CodeWarrior

Problemi correlati