Gibt es einen guten Grund, einen SOAP-Dienst bereitzustellen oder zu verwenden, ohne eine WSDL-Datei zu verwenden?
Erläuterung:
Ich bin in einer Situation, in der ein Drittanbieter einen SOAP-Dienst erstellt hat, der nicht der von ihnen erstellten WSDL-Datei folgt. Ich denke, ich bin gezwungen, die WSDL-Datei zu ignorieren, um diesen Dienst zu nutzen. Deshalb erforsche ich, wie man das macht.
Was mich wirklich interessiert ist, warum ist das überhaupt möglich? Was ist die Absicht?
Ist es so konzipiert, dass wir schlechte Dienste von schlechten Programmierern nutzen können? Sicherlich muss es einen besseren Grund geben. Ich wünschte fast, es wäre nicht möglich. Dann könnte ich verlangen, dass sie es richtig schreiben.
Die WSDL soll ein öffentliches Dokument sein, das den SOAP-Service beschreibt, also die Signaturen aller im Service verfügbaren Methoden beschreibt.
Natürlich kann es Dienstleister geben, die bestimmten Kunden einen Service anbieten wollen, die aber die Signatur des Service nicht öffentlich machen wollen, und sei es nur, um es Leuten, die sie nicht tun, etwas schwerer zu machen möchte den Dienst verwenden, um es zu finden oder zu versuchen, es zu verwenden. Die Signatur der Dienste könnte beispielsweise private Informationen über das Schema ihrer Daten offenlegen.
Aber ich sehe keine Entschuldigung dafür, eine WSDL zu schreiben, die nicht zum Service passt. Ich würde mir Sorgen machen, dass, wenn sie die WSDL nicht richtig bekommen, wie wird die Qualität des Dienstes aussehen?
Um die andere Frage zu beantworten, können Sie den Dienst ohne WSDL nutzen. Wenn Sie beispielsweise Visual Studio verwenden, können Sie VS basierend auf der falschen WSDL einen Proxy für Sie erstellen lassen und dann den richtigen Service-Methodensignaturen anpassen. Sie müssen lediglich sicherstellen, dass Ihre Datenverträge und Methodenverträge in Ihrem Proxy mit den tatsächlichen Service-Datenverträgen und Methodenverträgen übereinstimmen.