Was ist der Unterschied zwischen Webreferenz und Dienstreferenz in WCF? Welches ist in WCF vorzuziehen?
Was ist der Unterschied zwischen Webreferenz und Dienstreferenz in WCF? Welches ist in WCF vorzuziehen?
Antworten:
Die Antwort auf niedriger Ebene lautet hier, dass eine Webreferenz eine Client-Proxy-Klasse erstellt, mit der Ihr Code mit einem Webdienst kommunizieren kann, der über WSDL beschrieben wird und über SOAP oder HTTP GET kommuniziert (andere Poster geben an, dass es sich nur um ASMX handelt, aber Webreferenzen können auch mit Java-basierten Webdiensten oder Python-basierten oder Ruby kommunizieren, sofern alle über WSDL sprechen und dem WS-I-Interoperabilitätsstandard entsprechen.
Eine Dienstreferenz erstellt eine Client-Proxy-Klasse, die mit einem WCF-basierten Dienst kommuniziert: unabhängig davon, ob dieser WCF-Dienst ein Webdienst ist oder nicht.
Mit einer Webreferenz können Sie mit jedem Dienst kommunizieren, der auf einer Technologie basiert, die das WS-I-Basisprofil 1.1 implementiert, und die relevanten Metadaten als WSDL verfügbar machen. Intern wird der ASMX-Kommunikationsstapel auf der Clientseite verwendet.
Mit einer Dienstreferenz können Sie mit jedem Dienst kommunizieren, der auf einer Technologie basiert, die eines der vielen von WCF unterstützten Protokolle implementiert (einschließlich, aber nicht beschränkt auf WS-I Basic Profile). Intern wird der WCF-Kommunikationsstapel auf der Clientseite verwendet.
Beachten Sie, dass beide Definitionen ziemlich weit gefasst sind und beide Dienste enthalten, die nicht in .NET geschrieben sind.
Es ist durchaus möglich (obwohl nicht empfohlen), eine Webreferenz hinzuzufügen, die auf einen WCF-Dienst verweist, sofern der WCF-Endpunkt basicHttpBinding
eine kompatible benutzerdefinierte Variante verwendet.
Es ist auch möglich, eine Dienstreferenz hinzuzufügen, die auf einen ASMX-Dienst verweist. Wenn Sie neuen Code schreiben, sollten Sie immer eine Servicereferenz verwenden, nur weil diese flexibler und zukunftssicherer ist.
Client
Suffix.
Die Dienstreferenz ist die neuere Schnittstelle zum Hinzufügen von Verweisen auf alle Arten von WCF-Diensten (möglicherweise keine Webdienste), während sich die Webreferenz speziell mit ASMX-Webreferenzen befasst.
Sie können über die erweiterten Optionen unter Dienstreferenz hinzufügen auf Webreferenzen zugreifen (wenn ich mich richtig erinnere).
Ich würde die Servicereferenz verwenden, da dies meines Wissens der neuere Mechanismus der beiden ist.
Dienstreferenzen befassen sich mit Endpunkten und Bindungen, die vollständig konfigurierbar sind. Mit ihnen können Sie Ihren Client-Proxy über ein beliebiges Transportprotokoll (HTTP, TCP, Shared Memory usw.) auf eine WCF verweisen.
Sie sind für die Arbeit mit WCF ausgelegt.
Wenn Sie ein WebProxy verwenden, sind Sie ziemlich an die Verwendung von WCF über HTTP gebunden
Ein weiterer zu berücksichtigender Punkt ist, dass die neue Benutzeroberfläche für die Serviceschnittstelle Ihnen viel mehr Flexibilität beim Erstellen Ihrer Proxy-Klasse bietet. Beispielsweise können Sie Datenverträge vorhandenen DLLs zuordnen, wenn diese übereinstimmen (tatsächlich ist dies das Standardverhalten).