2011-09-19 9 views
11

Così sembra come se avessi un paio di importanti opzioni quando ottiene servizio WCF codice proxy in un progetto in Visual Studio:Perché dovrei usare i riferimenti ai servizi di Visual Studio su svcutil?

  1. Usa Visual Studio integrato utensili per Service References

  2. Usa a Comando svcutil semplice, ad esempio svcutil http://[my endpoint] /namespace:[my namespace] /noconfig (poiché utilizzo alcuni collegamenti standard piuttosto che standard tra i progetti) e trascino il file risultante nel mio progetto (o aggiornamento in posizione).

Per essere chiari, l'opzione 2 si sente come il migliore, albiet senza utensili built-in per l'aggiornamento. Ma la finestra di dialogo di riferimento del servizio genera come un file di zillion. C'è qualche oscuro vantaggio per i riferimenti di servizio VS che mi manca?

+3

Sono praticamente la stessa cosa. –

+1

Visual Studio fondamentalmente chiama svcutil dietro le quinte. Molti programmatori hanno tuttavia paura di aprire un prompt dei comandi ed eseguire uno strumento da riga di comando - ecco perché Visual Studio ha la finestra di dialogo Aggiungi riferimento servizio .... –

+0

Sì, sapevo che erano uguali sotto le copertine, ma è usa qualche/awesome switch per generare tutti questi XSD e altri file a beneficio di qualcuno? –

risposta

14

Se si possiede anche il servizio, direi che non lo fanno utilizzare uno dei due. Invece, suddividere i contratti, le entità e i proxy client in diversi assembly che è possibile utilizzare sia sul servizio che sul client.

Un po 'come descritto in WCF The Manual Way... The Right Way.

+0

Sono assolutamente d'accordo! –

+0

L'ho sentito in molti posti, e penso che sia incluso in un documento di iDesign da qualche parte (e forse è una domanda separata), ma non ho bisogno anche di una strategia di gestione pesante per il download e l'aggiornamento di quegli assembly? Ho fatto svn: esterni e ho pensato a NuGet per questo, ma a parte la facilità di aggiornamento (e svn: gli esterni sono quasi troppo facili da introdurre inaspettatamente il codice in una build inaspettatamente), non sono sicuro di ciò che compro a parte codice leggermente più DRY. –

+1

Se possiedi tutto il codice, questo non dovrebbe essere un problema. Non è necessario fare riferimento agli assiemi; puoi fare riferimento agli stessi progetti ai riferimenti del servizio. Ogni volta che costruisci, anche il tuo cliente verrà aggiornato. –

21

Lo stesso motivo per cui si crea un progetto .net con VS e non si chiama il compilatore a mano dalla riga di comando. L'I di IDE sta per Integrated, fa cose per te, quindi non hai bisogno di fare le cose manualmente da molti posti e procedure separate.

di solito c'è un modo per fare molte di quelle cose a mano o con un editor di testo e prompt dei comandi, ma consente di essere produttivi :-)

+2

Concordato su strumenti di interfaccia utente v. Riga di comando. Quindi stai dicendo che l'usabilità è l'unico vantaggio? –