Qual è la differenza tra riferimento web e riferimento servizio in WCF? Qual è preferibile in WCF?
Qual è la differenza tra riferimento web e riferimento servizio in WCF? Qual è preferibile in WCF?
Risposte:
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.
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 basicHttpBinding
o 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.
Client
suffisso.
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.
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
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).