2009-08-03 20 views
12

Questa è forse una davvero semplice domanda, ma non riuscivo a trovare una risposta:Generare webservice da WSDL

Per un client ho bisogno di ospitare un webservice. Il client mi ha inviato un file wsdl che il webservice dovrebbe 'implementare'. Come faccio a farlo? Ho generato un numero qualsiasi di client-rpoxie ma questo è il contrario. Posso utilizzare entrambi i servizi Web ASP.NET 2.0 o Windows Communication Foundation.

+0

generare WSDL per classi esistenti = "strategia bottom-up" [versus] generare uno scheletro di classe dato WSDL esistente = "strategia top-down" (Wikipedia) – JohnB

risposta

15

wsdl.exe /server.

Genera una classe astratta per un servizio Web XML basato sui contratti. L'impostazione predefinita è generare le classi proxy del client . Quando si utilizza l'opzione /parameters, questo valore è un elemento che contiene "server".

Si può fare una cosa simile con svcutil.exe per WCF- qualcosa di simile:

svcutil.exe thewsdl.wsdl/lingua: C# /out:ITheInterface.cs (non ho provato questo) .

Modifica- John Saunders fa un buon punto nella sua risposta per favorire l'approccio della WCF- Raccomando anche questo.

+0

È davvero così semplice? Ho usato wsdl.exe numerose volte ma non conoscevo l'opzione/server. Verificherò e riferirò – edosoft

+1

Yeap. Il primo sviluppo di WSDL è un approccio valido: vedere questo articolo: http://blogs.msdn.com/dotnetinterop/archive/2008/09/24/wsdl-first-development-with-wcf.aspx – RichardOD

+0

Se si desidera il risultato in C# è semplice come questo: svcutil.exe thefile.wsdl –

0

È possibile utilizzare l'utilità di WSDL da Microsoft per generare le interfacce server e la loro attuazione

Ecco una breve descrizione del programma di utilità WSDL.

wsdl.exe - Utilità per generare il codice per i clienti di servizi Web XML e Web XML servizi utilizzando ASP.NET da file di contratto WSDL, schemi XSD e .discomap documenti di scoperta. Questo strumento può essere utilizzato insieme a disco.exe.

2

Si può fare molto con quel file WSDL (wissd'le).

Dal fare la WS Classe manualmente di utilizzare la Auto Generato classe da wsdl.exe

ha lasciati immaginare che, per il tuo esempio, si dispone di questo WDSL (tooked da WebServiceX.Net)


a creare un proxy generato automaticamente C# vai al prompt dei comandi e scrivi:

wsdl /language:cs /protocol:soap /out:C:\myProxyScripts http://www.webservicex.net/TranslateService.asmx?wsdl 

Nota: all'interno del vostro C: \ Program Files \ Microsoft SDK \ Windows \ v6.1 \ Bin troverete WSDL.exe o semplicemente fanno un dir/s all'interno della vostra C: \ Program Files \

se si desidera in Visual Basic, basta usare /lingua: vb o /l: vb

/lingua: La lingua da utilizzare per la classe proxy generata. Scegliere "CS", "VB", "JS", "VJS", "CPP" o fornire un nome completo per una classe che implementa System.CodeDom.Compiler.CodeDomProvider.

La lingua predefinita è "CS" (CSharp). La forma abbreviata è '/ l:'.

Questo comando inserirà in C: \ myProxyScripts il proxy generato automaticamente.

se la vostra utilizzando il file WSDL nel computer, basta modificare l'URL al percorso completo, ad esempio

wsdl /language:cs /protocol:soap /out:C:\myProxyScripts C:\myProxyScripts\myWsdlFile.wsdl 

Nota: il proxy generato sarà chiamato il Nome servizio, quello che hai specificato, nel nostro esempio, come:

<wsdl:service name="TranslateService"> 

Spero che questo ti aiuti, capire il WSDL, i proxy generati automaticamente e che ora puoi gestire tutto ciò che è necessario per soddisfare i desideri del cliente.

14

In realtà, si dovrebbe fare ciò con svcutil.exe, non con wsdl.exe. WSDL.EXE fa parte della tecnologia del servizio Web ASMX che Microsoft ora considera come codice "legacy", che non ha bug corretti.

+1

sii consigliabile che questo generi codice WCF, non ASMX :) – balexandre

+0

Questo è il punto. L'idea sarebbe quella di generare codice che il produttore non consideri "legacy", e in cui hanno ancora intenzione di migliorarlo e correggere i bug. –

+0

+1 da parte mia. Dovrei menzionare questo punto nella mia risposta. – RichardOD

Problemi correlati