2016-05-06 10 views
2

Wir diskutieren eine XML-Schnittstelle mit einem Lieferanten und debattieren, ob es mehrere Endpunkte für verschiedene Objekttypen oder nur einen umfassen sollte - das Argument für mehrere ist, ein großes XSD zu vermeiden.Erstellen eines XML/SOAP-Clients von mehreren XSDs?

Ich weiß. Net hat großartige Werkzeuge zum Schreiben eines Client/Servers von einem XSD - automatische Generierung von Klassen usw., wenn wir mehrere XSDs für mehrere Endpunkte geliefert wird, macht dies erheblich schwieriger oder tun die Visual Studio-Tools Mach das einfach? Ich habe SOAP für einige Zeit nicht gemacht, und nicht in C#, also weiß ich nicht die Details, aber muss versuchen, zu führen, was zu unseren besten Interessen geliefert wird!

Auch: sollte ich eine WSDL oder XSD anfordern ... lange Zeit seit ich dies getan habe!

+0

Sind Sie der Verbraucher oder der Anbieter des Dienstes? –

+0

Wir werden Daten von ihrem Server so Verbraucher ziehen. So viel wie möglich möchte ich VS die Arbeit für mich tun lassen :) –

Antwort

1

Wenn Sie den Dienst über Soap anrufen, bin ich mir nicht sicher, warum Sie sich Sorgen machen, dass Sie Klassen direkt aus XSD generieren müssen.

Bitten Sie Ihren Dienstanbieter, einen Soap-Endpunkt mit einer WSDL-Adresse anzuzeigen, und Sie können den gesamten clientseitigen Code mithilfe von Visual Studio generieren, einschließlich Dienstproxys, Typen und Bindungen.

Dies ist unabhängig davon, wie detailliert die Dienstvorgänge und die XSD-Dateien sind, die die Diensttypen definieren.

Ich sehe Verweise auf „wir werden eine XSD bieten“ und fragen, ob sie einfach WSDL bedeuten, oder wenn es eine andere Möglichkeit ist, könnte sie dies als SOAP

gut tun, Vielleicht erwägen sie, HTTP-Operationen auf Ressourcen in einem REST-Stil-Dienst mit xml statt json offenzulegen. In diesem Fall wären die XSDs meistens ausreichend, vorausgesetzt, sie haben Ihnen gesagt, welche Operationen für welche Typen verfügbar waren. Ich würde dies jedoch als unwahrscheinlich einstufen. Alternativ können sie einen POX-Stil-Dienst verfügbar machen, aber das ist auch unwahrscheinlich.

Wenn sie einen Soap-Service planen, wird es ziemlich schwierig werden, sie anzurufen, wenn sie Ihnen nur die XSDs geben, außer sie geben Ihnen auch die Definition der Service-Schnittstelle Verträge, sonst wissen Sie, welche Operationen unterstützt werden.

Auch wenn sie Ihnen die Dienstdefinition mitteilen, können Sie immer noch Probleme beim Aufruf eines über SOAP 1.2 offengelegten Dienstes bekommen, der weniger interoperabel ist. Wenn Sie also eine Kontrolle haben, sollten Sie einen SOAP 1.1-Dienst anfordern (außer Sie verwenden beide die gleichen Technologie-Stacks, in diesem Fall sollte es nicht zu viel bedeuten).

+0

Ich bin ein Grad von der direkten Konversation entfernt _and_ rostig mit Web-Services. Ich sehe Referenzen zu "Wir stellen eine XSD bereit" und fragen uns, ob sie nur WSDL meinen, oder ob es etwas anderes als SOAP gibt - scheint das wahrscheinlich? –

+0

@ Mr.Boy Ich habe meine Antwort aktualisiert. –

1

XSD definiert ein Schema, das definiert, wie ein XML-Dokument strukturiert werden kann. Sie können damit überprüfen, ob ein bestimmtes XML-Dokument gültig ist und den Regeln folgt, die Sie im Schema festgelegt haben.

WSDL ist ein XML-Dokument, das einen Webdienst beschreibt. Es zeigt an, welche Operationen verfügbar sind und wie Daten strukturiert sein sollten, um diese Operationen zu senden.

WSDL-Dokumente verfügen über eine verknüpfte XSD, die angibt, was für ein WSDL-Dokument gültig ist.

Sie müssen sowohl WSDL als auch XSD anfordern, damit Sie Ihre Webreferenz mit einem Tool/einer Software wie svcutil.exe erzeugen können. Es generiert Referenzcode und Web-Konfigurationsdatei und Sie können mit Ihrem Projekt zusammenführen. Normalerweise speichere ich WSDL und XSD (s) in einem Ordner, damit svcutil nachsehen kann.

svcutil /wrapped /serializer:XmlSerializer /out:MyCode.cs /config:MyConfig.config /namespace:*,MyNameSpace "PathForWsdlAndXsd\Mywsdl.wsdl" 
Verwandte Themen