it-swarm.com.de

Unterschied zwischen Webreferenz und Servicereferenz?

Was ist der Unterschied zwischen einer Webreferenz und einer Dienstreferenz in WCF? Was ist in WCF vorzuziehen?

130
Nirmal

Die einfache Antwort lautet, dass ein Webverweis 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 (other) kommuniziert Poster weisen darauf hin, dass es sich nur um ASMX handelt, Web-Referenzen können jedoch auch mit Java-basierten Web-Services oder Python-basierten oder Ruby) - Diensten kommunizieren, sofern sie alle WSDL-fähig sind und der WS-I-Interoperabilität entsprechen Standard).

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.

98
Kevin Hoffman

Mit einer Webreferenz können Sie mit jedem Dienst kommunizieren, der auf einer beliebigen Technologie basiert, die das WS-I Basic Profile 1.1 implementiert, und die relevanten Metadaten als WSDL verfügbar machen. Intern verwendet es den ASMX-Kommunikationsstapel auf der Clientseite.

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 verwendet es den WCF-Kommunikationsstapel auf der Clientseite.

Beachten Sie, dass beide Definitionen ziemlich umfangreich sind und Dienste enthalten, die nicht in .NET geschrieben wurden.

Es ist durchaus möglich (jedoch nicht empfohlen), einen Webverweis hinzuzufügen, der auf einen WCF-Dienst verweist, sofern der WCF-Endpunkt basicHttpBinding oder 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, Sie sollten immer eine Servicereferenz verwenden einfach, weil dieser flexibler und zukunftssicherer ist.

66

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 in Servicereferenz hinzufügen auf Webreferenzen zugreifen (wenn ich mich richtig erinnere).

Ich würde eine Servicereferenz verwenden, da dies meines Wissens der neuere Mechanismus der beiden ist.

16
DavidWhitney

Service-Referenzen befassen sich mit Endpunkten und Bindungen, die vollständig konfigurierbar sind. Sie können 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 einen WebProxy verwenden, sind Sie so gut wie an die Verwendung von WCF über HTTP gebunden

7
Brian Genisio

Ein weiterer zu berücksichtigender Punkt ist, dass die neue Benutzeroberfläche für die Service-Schnittstelle Ihnen viel mehr Flexibilität beim Erstellen Ihrer Proxy-Klasse bietet. Beispielsweise können Sie Datenverträge vorhandenen DLLs zuordnen, wenn sie übereinstimmen (dies ist eigentlich das Standardverhalten).

5
Wagner Silveira