c# - Web Referenz vs. Service Referenz




.net-3.5 paypal (3)

Ich habe gerade eine riesige Mauer mit Paypal geschlagen. Ich hatte ein reguläres C # -Projekt erstellt, um einige Wrapperklassen mit ihrer WSDL zu erstellen.

Wenn Sie ein Nicht-Web-Projekt erstellen, ist die einzige Option, die Sie zum Hinzufügen einer WSDL erhalten, eine Webdienst-Referenz. Und das baut irgendwie die gleichen Proxy-Klassen auf wie ein Web Reference, würde aber nicht wirklich ... es fügt mehr hinzu, was selbst den PayPal-Leuten nicht bewusst ist.

So war ich die ganze Zeit auf der Suche nach der richtigen Schnittstelle in dieser Liste von Proxy-Klassen, um als Service (SoapBinding) zu verwenden und die PayPalAPIAASoapBinding war nicht da, erzählte ich unserem PayPal-Punkt in Kontakt.

Ich konnte nur die folgenden 2 Schnittstellen sehen, die mir erschienen, was ich verwenden musste, da ich kein PayPalAPIAASoapBinding das Sie in einer Web Reference basierten Service Referenz sehen können:

PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient 

Also habe ich herausgefunden, dass ich wahrscheinlich eine Service Reference vs. eine Web Reference erstellt habe, welche Web Reference eine Option in einem Web Projekt ist. Aber ich möchte nicht, dass meine Service-Referenz eng an mein Web-Projekt gekoppelt ist. Deshalb habe ich das C # -Projekt erstellt.

Also was zum Teufel ist eine Service-Referenz vs. Web-Referenz? Und wie soll ich das in ein anderes Projekt aufteilen, wenn Service Reference mir eine Schleife geben und mir eine Reihe verschiedener Schnittstellen geben wird, als ein Web Reference?

Um das Ganze noch verwirrender zu machen, hat VS 2008 ein Web-Service-Anwendungsprojekt.

Also, was benutze ich? Wir verwenden das .NET 3.5-Framework und sind nicht bereit, zu WCF zu wechseln . Kann ich die neue Service-Referenz auch verwenden, wenn Sie WCF nicht verwenden oder was? Wenn Sie .NET 3.5 und noch nicht WCF verwenden und immer noch grundlegende Webdienste ausführen möchten, sollten Sie weiterhin die Service-Referenzroute verwenden und das WCF-Framework nicht verwenden? Soll es wie ein .NET 2.0 Web Reference verwendet werden, nur dass Sie eine komplett andere Generation der WSDL bekommen?


Am Ende machen beide das Gleiche. Es gibt einige Unterschiede im Code: Web Services fügt keinen Root-Namespace des Projekts hinzu, aber Service Reference fügt dem Namespace des Projekts Serviceklassen hinzu. Die ServiceSoapClient Klasse erhält eine andere Bezeichnung, was nicht wichtig ist. Bei der Arbeit mit TFS würde ich lieber Service-Referenz verwenden, da es besser mit der Quellcodeverwaltung funktioniert. Beide arbeiten mit SOAP-Protokollen.

Ich finde es besser, die Service-Referenz zu verwenden, weil sie neu ist und daher besser gepflegt wird.


Durch das Hinzufügen einer Dienstreferenz können Sie einen WCF-Client erstellen, der für die Kommunikation mit einem regulären Webdienst verwendet werden kann, sofern Sie die entsprechende Bindung verwenden. Wenn Sie eine Webreferenz hinzufügen, können Sie nur einen Webdienst (dh SOAP-Referenz) erstellen.

Wenn Sie absolut sicher sind, dass Sie nicht bereit für WCF sind (wirklich nicht wissen, warum), dann sollten Sie eine regelmäßige Web-Service-Referenz erstellen.


Add Web Reference ist die alte, veraltete ASP.NET-Webservices (ASMX) -Technologie (die nur den XmlSerializer für Ihre Sachen verwendet) - wenn Sie dies tun, erhalten Sie einen ASMX-Client für einen ASMX-Webdienst. Sie können dies in fast jedem Projekt (Web App, Web Site, Konsolen App, Winforms - Sie nennen es) tun.

Add Service Reference ist die neue Möglichkeit, dies zu tun, indem eine WCF-Service-Referenz hinzugefügt wird, die Ihnen ein viel fortgeschritteneres, viel flexibleres Service-Modell als einfach nur alte ASMX-Sachen bietet.

Da Sie nicht bereit sind, zu WCF zu wechseln, können Sie auch die Webreferenz im alten Stil hinzufügen, wenn Sie wirklich Folgendes tun müssen: Wenn Sie eine "Serviceverweis hinzufügen" ausführen, klicken Sie im angezeigten Dialogfeld auf [Erweitert ] Taste in der Taste linke Ecke:

und wählen Sie im nächsten Dialogfeld die Schaltfläche [Web-Referenz hinzufügen] unten.







paypal