Credo che quello che stai cercando è: svcutil.exe /r your-dtos.dll
/di riferimento: - tipi riferimento nel assembly specificato. Quando si generano client, utilizzare questa opzione per specificare gli assembly che potrebbero contenere tipi che rappresentano i metadati importati.(Short: /r)
A mio parere il forte accoppiamento del proxy WCF, canale di endpoint, le operazioni di servizio e carichi utili DTO nello stesso proxy client generato è un importante difetto di progettazione.
Questo è ciò che mi ha spronato a risolvere nel mio open web services framework dove ho disaccoppiare il punto finale e del carico utile che permette di:
- Il cliente stesso servizio web (es Soap11, Soap12, XML, JSON) per essere in grado di chiama qualsiasi servizio web.
- Mi consente inoltre di utilizzare la stessa istanza dto DataContract in qualsiasi client del servizio Web
- Questo ha molti vantaggi, tra cui la possibilità di esporre lo stesso servizio Web su un numero di endpoint diversi senza alcuna configurazione aggiuntiva. Fornendo così endpoint di servizi Web ottimizzati per ciascun utente del mio servizio. Per esempio.
- XML per i clienti di interoperabilità e fortemente tipo,
- JSON per i clienti Ajax,
- WSDL di per ambienti che preferiscono generato il codice (ad esempio Flex Builder, VS.NET 'Aggiungi riferimento al servizio' ecc)
Nella mia azienda abbiamo sviluppato centinaia di servizi web chiamati da un certo numero di clienti diversi, vale a dire l'Ajax, Flash/ActionScript, C++, Silverlight, ASP.NET e di essere in grado di chiamare lo stesso servizio web attraverso diversi punti finali ha ti ho salvato s innumerevoli ore.
c'è un modo per controllarlo durante l'esecuzione di wsdl/svcutil.exe? Ho un wsdl che importa alcuni xsds e voglio generare un'interfaccia di servizio usando wsdl.exe o svcutil.exe da un prompt dei comandi. durante l'esecuzione di wsdl.exe/svcutil.exe, posso controllare di non generare classi per i tipi negli xsds? –
Parte del motivo per cui i WSDL esistono consiste nel definire lo schema dell'oggetto necessario per comunicare con essi. Wsdl.exe e svcutil.exe sono progettati per generare classi per questi oggetti, non penso che ci sia un modo per prevenirli. –
Jeremy, questo è vero se il client non sa come comunicare con il servizio. Se gli sviluppatori hanno accesso alle dll di contratto effettive, non hanno affatto bisogno del WSDL. Sono d'accordo sul contratto usando le stesse dll. –