Ich habe gerade mit Paypal eine riesige Mauer getroffen. Ich hatte ein reguläres C # -Projekt erstellt, um einige Wrapper-Klassen mit ihrer WSDL zu erstellen.
Wenn Sie ein Nicht-Webprojekt erstellen, ist die einzige Option, die Sie zum Hinzufügen einer WSDL erhalten, eine Webdienstreferenz. Und dies schafft ein bisschen den gleichen Satz von Proxy-Klassen wie eine Web-Referenz, aber nicht wirklich. Es fügt mehr hinzu, als selbst die PayPal-Leute nicht wissen.
Daher war ich die ganze Zeit auf der Suche nach der richtigen Schnittstelle in dieser Liste von Proxy-Klassen, die als Service verwendet werden kann (SoapBinding), und die PayPalAPIAASoapBinding
war nicht da. Ich teilte unserem PayPal-Kontaktpunkt immer wieder mit.
Ich konnte nur die folgenden 2 Schnittstellen sehen, die mir erschienen, was ich verwenden musste, da ich keine sah, PayPalAPIAASoapBinding
die Sie in einer Webreferenz-basierten Dienstreferenz sehen können:
PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient
Also habe ich herausgefunden, oh, ich habe wahrscheinlich eine Dienstreferenz im Vergleich zu einer Webreferenz erstellt, welche Webreferenz eine Option in einem Webprojekt ist. Ich möchte jedoch nicht, dass meine Servicereferenz eng mit meinem Webprojekt verknüpft ist. Deshalb habe ich das C # -Projekt erstellt.
Was zum Teufel ist eine Service-Referenz im Vergleich zu einer Web-Referenz? Und wie soll ich das in ein anderes Projekt aufteilen, wenn Service Reference mir eine Schleife wirft und mir eine Reihe anderer Schnittstellen gibt als eine Web Reference?
Um die Dinge noch verwirrender zu machen, verfügt VS 2008 über ein Webdienst-Anwendungsprojekt.
Also, was benutze ich? Wir verwenden das .NET 3.5-Framework und sind nicht bereit, auf WCF umzusteigen . Kann ich die neue Dienstreferenz auch dann noch verwenden, wenn ich WCF nicht verwende, oder was? Wenn Sie .NET 3.5 und noch nicht WCF verwenden und dennoch grundlegende Webdienste ausführen möchten, gehen Sie weiterhin die Route "Dienstreferenz" und verwenden Sie einfach nicht das WCF-Framework? Bedeutet das, dass es immer noch wie eine .NET 2.0-Webreferenz verwendet werden kann, nur dass Sie eine völlig andere Generation der WSDL erhalten?
Antworten:
In Web - Referenz ist der im alten Stil, deprecated ASP.NET Web Service (ASMX) Technologie (nur die XmlSerializer für Ihre Sachen verwenden) - wenn Sie dies tun, erhalten Sie ein ASMX - Client für einen ASMX Web - Service. Sie können dies in nahezu jedem Projekt tun (Web-App, Website, Konsolen-App, Winforms - Sie nennen es).
Dienstreferenz hinzufügen ist die neue Methode, mit der eine WCF-Dienstreferenz hinzugefügt wird, die Ihnen ein viel fortschrittlicheres und flexibleres Dienstmodell bietet als nur altes ASMX-Material.
Da Sie nicht bereit sind, zu WCF zu wechseln, können Sie auch weiterhin die alte Webreferenz hinzufügen, wenn Sie dies wirklich müssen: Wenn Sie eine "Dienstreferenz hinzufügen" ausführen, klicken Sie im daraufhin angezeigten Dialogfeld auf [Erweitert ] in der linken Ecke der Schaltfläche:
Wählen Sie im nächsten Dialogfeld unten die Schaltfläche [Webreferenz hinzufügen].
quelle
Wenn ich Ihre Frage richtig verstehe:
Um eine .net 2.0-Webdienstreferenz anstelle einer WCF-Dienstreferenz hinzuzufügen, klicken Sie mit der rechten Maustaste auf Ihr Projekt und klicken Sie auf "Dienstreferenz hinzufügen".
Klicken Sie dann unten links im Dialogfeld auf "Erweitert ..".
Klicken Sie dann unten links im nächsten Dialogfeld auf "Webreferenz hinzufügen".
Jetzt können Sie eine reguläre SOAP-Webreferenz hinzufügen, wie Sie suchen.
quelle
Durch Hinzufügen einer Dienstreferenz können Sie einen WCF-Client erstellen, mit dem Sie mit einem regulären Webdienst kommunizieren können, sofern Sie die entsprechende Bindung verwenden. Durch Hinzufügen einer Webreferenz können Sie nur eine Webdienstreferenz (dh eine SOAP-Referenz) erstellen .
Wenn Sie absolut sicher sind, dass Sie nicht für WCF bereit sind (ich weiß wirklich nicht warum), sollten Sie eine reguläre Webdienstreferenz erstellen.
quelle
Am Ende machen beide dasselbe. Es gibt einige Unterschiede im Code: Web Services fügen keinen Root-Namespace des Projekts hinzu, aber Service Reference fügt dem Namespace des Projekts Serviceklassen hinzu. Die
ServiceSoapClient
Klasse erhält eine andere Benennung, was nicht wichtig ist. Bei der Arbeit mit TFS würde ich lieber Service Reference verwenden, da dies mit der Quellcodeverwaltung besser funktioniert. Beide arbeiten mit SOAP-Protokollen.Ich finde es besser, die Servicereferenz zu verwenden, da sie neu ist und daher besser gewartet wird.
quelle