2010-01-28 20 views
95

Ho appena colpito un enorme muro di mattoni con Paypal. Ho creato un progetto C# regolare per creare alcune classi wrapper usando il loro WSDL.Riferimento Web vs Service Reference

Se si crea un progetto non Web, l'unica opzione che si ottiene per aggiungere un wsdl è un riferimento al servizio Web. E questo crea un po 'lo stesso insieme di classi proxy di un riferimento Web, ma non in realtà. Aggiunge altro che nemmeno i ragazzi di PayPal non ne sono a conoscenza.

Quindi, per tutto il tempo, ho cercato l'interfaccia corretta in questo elenco di classi proxy da utilizzare come servizio (SoapBinding) e il numero PayPalAPIAASoapBinding non era presente che ho continuato a comunicare al nostro PayPal il punto di contatto.

ho potuto vedere solo le seguenti 2 interfacce che sembrava a me quello che avevo bisogno di usare in quanto non ho visto un PayPalAPIAASoapBinding, che si può vedere in un riferimento al servizio basato sul Web di riferimento:

PayPalAPIAAInterfaceClient 
PayPalAPIInterfaceClient 

così ho pensato fuori oh, probabilmente avevo creato un riferimento di servizio rispetto a un riferimento Web quale riferimento Web è un'opzione in un progetto Web. Ma non voglio che il mio servizio di riferimento sia strettamente collegato al mio progetto web. Ecco perché ho creato il progetto C#.

Quindi cosa diavolo è un riferimento di servizio rispetto a un riferimento Web? E come dovrei separarlo in un altro progetto se il Service Reference mi getterà un ciclo e mi fornirà un insieme di interfacce differenti rispetto a un riferimento Web?

Inoltre, per rendere le cose ancora più confuse, VS 2008 ha un progetto di applicazione di servizio Web.

Quindi cosa devo usare? Stiamo utilizzando il framework .NET 3.5 e siamo non pronti per passare a WCF. Quindi posso ancora utilizzare il nuovo servizio di riferimento anche se non si utilizza WCF o cosa? Se si sta utilizzando .NET 3.5 e non ancora WCF e si desidera continuare a eseguire servizi Web di base, si continua a utilizzare il percorso di riferimento del servizio e non si utilizza il framework WCF? Il significato può ancora essere usato come un riferimento Web. NET 2.0, solo che avrai una generazione completamente diversa del WSDL?

+0

Possibile duplicato di [Differenza tra riferimento web e riferimento servizio?] (Http://stackoverflow.com/questions/308454/difference-between-web-reference-and-service-reference) –

risposta

187

Aggiungi riferimento Web è ASP vecchio stile obsoleto.Tecnologia webservices NET (ASMX) (utilizzando solo XmlSerializer per le tue cose) - se lo fai, ottieni un client ASMX per un servizio web ASMX. Puoi farlo in quasi tutti i progetti (Web App, Sito Web, Console App, Winforms - tu lo chiami).

Aggiungi riferimento servizio è il nuovo modo di farlo, aggiungendo un riferimento al servizio WCF, che offre un modello di servizio molto più avanzato e molto più flessibile rispetto alle semplici vecchie funzionalità ASMX.

Dato che non sei pronto per passare a WCF, puoi anche aggiungere il riferimento Web vecchio stile, se proprio devi: quando fai un "Aggiungi riferimento servizio", nella finestra di dialogo visualizzata, fai clic su sul pulsante [Avanzate] nell'angolo sinistro tasto:

alt text

e sulla prossima finestra di dialogo che si apre, selezionare il pulsante [Aggiungi riferimento Web] in fondo.

+0

interessante, da quando possiamo aggiungere foto ai post! simpatico! Devi averlo fatto tramite url? – PositiveGuy

+5

Quanto è stupido che MS lo nasconda in una finestra di dialogo WCF! Non ha alcun senso con il posizionamento qui – PositiveGuy

+9

@coffeeaddict: beh, penso che MS stia cercando di influenzarti in modo sottile verso l'utilizzo di WCF di default - e solo ASMX vecchio stile se sei veramente determinato :-) –

4

L'aggiunta di un riferimento al servizio consente di creare un client WCF, che può essere utilizzato per parlare con un normale servizio Web purché si utilizzi l'associazione appropriata. L'aggiunta di un riferimento Web ti consentirà di creare solo un riferimento al servizio Web (ad esempio SOAP).

Se si è assolutamente certi di non essere pronti per WCF (non si sa davvero perché), è necessario creare un riferimento regolare al servizio Web.

+3

Perché WCF NON è facile per neofiti. E inoltre il mio capo non mi lascerà passare è la vera ragione. È il codice e funziona qui. Quando hai questa situazione, non posso farci niente. – PositiveGuy

+7

@coffeeaddict Penso che tu e il tuo capo non siate informati correttamente. Entrambi i tipi di riferimenti creeranno una classe che fornisce metodi per chiamare le operazioni di servizio. In che modo è rilevante che la classe creata da un riferimento al "servizio" capiti di ereditare da una classe base che si trova in una libreria che Microsoft considera parte di una tecnologia che chiama WCF? –

+1

Ciò richiederà anche .NET 2.0 sul computer? Oppure .NET 4.0 sarà in grado di gestire la tecnologia "Web Reference" basata su .NET 2.0? Voglio sapere perché sto distribuendo un webservice SOAP come "Web Reference" in un'applicazione .NET 4.0. –

6

Se ho capito la tua domanda giusta:

Per aggiungere un .net 2.0 Web Service di riferimento invece di un servizio WCF di riferimento, fare clic destro sul progetto e fare clic su 'Add Service Reference.'

Quindi fare clic su "Avanzate .." nella parte inferiore sinistra della finestra di dialogo.

Quindi fare clic su "Aggiungi riferimento Web" nella parte inferiore sinistra della finestra di dialogo successiva.

Ora è possibile aggiungere un normale riferimento Web SOAP come si sta cercando.

+0

Ciò richiederà anche .NET 2.0 sul computer? Oppure .NET 4.0 sarà in grado di gestire la tecnologia "Web Reference" basata su .NET 2.0? Voglio sapere perché sto distribuendo un webservice SOAP come "Web Reference" in un'applicazione .NET 4.0. –

2

Alla fine, entrambi fanno la stessa cosa. Ci sono alcune differenze nel codice: i servizi Web non aggiungono uno spazio dei nomi di root del progetto, ma il riferimento di servizio aggiunge le classi di servizio allo spazio dei nomi del progetto. La classe ServiceSoapClient riceve una denominazione diversa, che non è importante. Lavorando con TFS preferisco usare Service Reference perché funziona meglio con il controllo del codice sorgente. Entrambi funzionano con i protocolli SOAP.

Trovo preferibile utilizzare il riferimento di servizio perché è nuovo e sarà quindi mantenuto meglio.