Differenza tra riferimento web e riferimento al servizio?


Risposte:


102

La risposta di basso livello qui è che un riferimento Web creerà una classe proxy client che consente al codice di comunicare con un servizio Web descritto tramite WSDL e che comunica tramite SOAP o HTTP GET (altri poster indicano che è solo ASMX, ma I riferimenti Web possono anche parlare con servizi Web basati su Java o basati su Python o Ruby purché parlino tutti WSDL e siano conformi allo standard di interoperabilità WS-I).

Un riferimento di servizio creerà una classe proxy client che comunica con un servizio basato su WCF: indipendentemente dal fatto che quel servizio WCF sia o meno un servizio Web.


1
+1 per aver aggiunto che qualsiasi servizio web standard con un WSDL correttamente formattato soddisfa i criteri
sidney.andrews

Quindi posso aggiungere un riferimento di servizio a un servizio Web basato su Java? Avrebbe ancora senso? poiché Java non sa nulla dello stack wcf ...
user20358

Sì, è possibile aggiungere un riferimento al servizio a un servizio Web Java ecc., se ha un wsdl. In questo caso il riferimento al servizio lo tratterà come un riferimento web "classico".
Brady Moritz,

+1 per indicare che il servizio Web può utilizzare i servizi Web descritti da WSDL, nonché ASMX. È un dato di fatto, ho un livello aziendale che ha un riferimento web e un riferimento al servizio. Il riferimento Web utilizza un servizio Web WSDL, mentre il riferimento al servizio utilizza un servizio ASMX.
Jagd,

67

Un riferimento Web consente di comunicare con qualsiasi servizio basato su qualsiasi tecnologia che implementa il profilo base WS-I 1.1 ed espone i relativi metadati come WSDL. Internamente, utilizza lo stack di comunicazione ASMX sul lato client.

Un riferimento di servizio consente di comunicare con qualsiasi servizio basato su qualsiasi tecnologia che implementa uno dei numerosi protocolli supportati da WCF (incluso ma non limitato al profilo di base WS-I). Internamente, utilizza lo stack di comunicazione WCF sul lato client.

Si noti che entrambe queste definizioni sono piuttosto ampie ed entrambe includono servizi non scritti in .NET.

È perfettamente possibile (anche se sconsigliato) aggiungere un riferimento Web che punta a un servizio WCF, purché l'endpoint WCF utilizzi basicHttpBindingo una variante personalizzata compatibile.

È anche possibile aggiungere un riferimento di servizio che punta a un servizio ASMX. Quando si scrive un nuovo codice, è necessario utilizzare sempre un riferimento di servizio semplicemente perché è più flessibile e a prova di futuro.


1
Qualcuno può farmi iniziare su come consumare un servizio tramite Service Reference? Con Web Reference, mi sembra sempre di trovare le funzioni principali in una sorta di oggetto di servizio. Con un riferimento al servizio, non tanto. Ad esempio, sto cercando di utilizzare il servizio di tariffe FedEx per ottenere i prezzi per le varie opzioni di spedizione FedEx. So che c'è una chiamata getRates () lì da qualche parte, ma non riesco a trovarla con un riferimento di servizio.
Ben Mills,

@BenMills: cerca una classe con un Clientsuffisso.
Christian Hayter,

17

Il riferimento al servizio è la più recente interfaccia per l'aggiunta di riferimenti a tutti i tipi di servizi WCF (potrebbero non essere servizi Web) mentre il riferimento Web riguarda specificamente i riferimenti Web ASMX.

È possibile accedere ai riferimenti Web tramite le opzioni avanzate in Aggiungi riferimento al servizio (se ricordo bene).

Userei il riferimento al servizio perché, come ho capito, è il meccanismo più recente dei due.


8
Aggiungi riferimento al servizio -> Avanzate -> Aggiungi riferimento al web ... niente come soluzioni non intuitive.
Jagd,

7

I riferimenti di servizio riguardano gli endpoint e i binding, che sono completamente configurabili. Ti consentono di indirizzare il tuo proxy client a un WCF tramite qualsiasi protocollo di trasporto (HTTP, TCP, memoria condivisa, ecc.)

Sono progettati per funzionare con WCF.

Se usi un WebProxy, ti stai praticamente legando all'uso di WCF su HTTP


5

Un altro punto da considerare è che la nuova interfaccia utente per l'interfaccia di servizio ti darà molta più flessibilità su come vuoi creare la tua classe proxy. Ad esempio, ti consentirà di mappare i contratti di dati alle dll esistenti, se corrispondono (in realtà questo è il comportamento predefinito).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.