WebService WSDL - SOAP - DatenModell

  • VB.NET (ASP)
  • Web Services

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von GerhardW.

    WebService WSDL - SOAP - DatenModell

    Guten Morgen!

    Ich bräuchte zu einem aktuellen Projekt eure Meinung bzw. Hilfe zu meinen Fragen. Worum geht es?

    Ich soll für einen Kunden eine Applikation entwicklen, welche von einem externen WebService (WSDL - SOAP) Daten einliest bzw. Daten schreibt. Dazu habe ich von der externen Firma eine Doku bekommen, wie die Services (WSDL) heißen bzw. wie der Link dazu ist. Die Doku der Schnittstelle (Excel Datei) liegt bei.
    In meinem Projekt habe ich die WebServices (WSDL) eingebunden.

    Die externe Firma hat freundlicherweise einen Beispielcode (Beispiel-Code.Png) zur Verfügung gestellt, wie z.B. in C# auf die Schnittstelle zugegriffen werden kann.
    Was mir hier auffällt ist, dass ich die Abfrageparameter zuerst in eine XML Datei speichern muss, diese dann Serialisieren in das DatenModell der Schnittstelle und danach an die Schnittstelle übergen kann.
    Frage: Wieso kann ich nicht direkt die Abfrageparameter in eine Variable vom entsprechenden DatenTyp schreiben und diese dann an die Schnittstelle übergeben? Ich war der Meinung, dass eine WSDL Schnittstelle dies zur Verfügung stellt.

    Ich habe dann versucht eine XML Datei für die Abfrageparameter zu erstellen. Als Grundlage habe ich die Doku verwendet. In meinem Beispiel wollte ich das WDSL Service "GetCustomer" verwenden.

    Die Doku seht ihr im Bild GetCustomer-Doku.png
    Meine XML Datei dazu:

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <GetCustomer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    3. <Choice>
    4. <KeyAccountGroup>06924</KeyAccountGroup>
    5. </Choice>
    6. </GetCustomer>


    Die Abfrage hat leider nicht funktioniert. Nachdem ich nach etlichen Versuchen nicht weiterkam, sah ich mir einmal im Objektkatalog die Schnittstelle bezüglich Datenmodell und Methoden an. Dabei stellt ich fest, dass die Doku mit den Methoden/DatenModellen der Schnittstelle nicht übereinstimmt. Bild GetCustomer.png
    Ich habe dann die anderen Methoden laut Doku mit dem Objektkatalog verglichen und es ist tatsächlich so, dass die Doku teilweise nicht mit dem DatenModell des WebServices übereinstimmt.

    Was mir noch aufgefallen ist, dass die Bezeichnungen diverser DatenTypen eine unübliche Bezeichnung haben. Siehe Bild DatenTypen-Bezeichnung.png
    z.B.
    ArrayOfGetCustomerResponseCustomerCustomer
    Das schaut mir ganz nach einer Bezeichnung aus, als ob diese von einem Tool generiert wurden. Aber das ist eine reine Vermutung. Ich würde so eine Bezeichnung jedenfalls nicht verwenden.

    Nachdem ich Ende Juni eine TelKo mit der externen Firma habe, möchte ich mich entsprechend auf das Gespräch vorbereiten. Nun meine Fragen an euch:

    1) Was macht ihr, wenn z.B. wie in meinem Fall die Doku mit der Schnittstelle nicht übereinstimmt. Die externe Firma aber immer wieder darauf hinweist, dass die Schnittstelle schon erfolgreich bei anderen Kunden im Einsatz ist.
    2) Eure Meinung generell zu einem WebService? Können die Datentypen nicht direkt verwendet werden, also nicht über eine XML Datei, Serialisieren und dann übergeben. Meine Erfahrungen waren bisher immer so, dass die Datentypen direkt verwendet werden konnten.
    3) Wie seht ihr das mit den Bezeichnungen der DatenTypen?


    Ich danke euch für die Unterstützung. Falls jemand bereit ist sich die Schnittstelle genauer anzusehen, kann ich gerne mein Testprojekt zur Verfügung stellen.
    Bilder
    • Beispiel-Code.png

      215,03 kB, 830×913, 63 mal angesehen
    • GetCustomer.png

      77,72 kB, 1.032×922, 60 mal angesehen
    • GetCustomer-Doku.png

      94,95 kB, 1.232×988, 62 mal angesehen
    • DatenTypen-Bezeichnung.png

      99,16 kB, 1.084×921, 62 mal angesehen
    Dateien

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „GerhardW“ ()

    Danke für die Antwort.

    Das habe ich in meinem Testprojekt gemacht. So konnte ich mir über den Objektkatalog die DatenTypen, Methoden und Evetns ansehen. Worum es mir geht ist, dass die Doku, welche mir zur Verfügung gestellt wird von der eigentlichen Schnittstelle abweicht. Der externe Anbieter als Beispiel die Abfragen über den Schritt einer XML Datei vorgibt. Muss das wirklich bei WSDL wirklich sein? In dem Beispiel vom externen Anbieter macht er es doch für den Response auch nicht.

    Ich habe es jetzt geschafft, dass ich eine Anfrage absetzen kann, jedoch habe ich die Anfrage direkt über den DatenTyp der Schnittstelle befülle. Siehe GetCustommer Bild.

    Beim Response sind die Bezeichnungen (siehe Bild) der DatenTypen/Klassen mehr als dubios ?(
    Bilder
    • DatenTypen-Bezeichnung.png

      104,98 kB, 1.084×921, 64 mal angesehen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „GerhardW“ ()

    Der Anbieter erstellt in seinem Beispiel die XML halt zu Fuß. In deinem Visual Studio Projekt geschieht das im Hintergrund. Also am Ende wird eine XML an den SOAP Endpont gesendet.

    Und wie man sieht, kann Doku auch mal daneben gehen, aber wenn du die WSDL hast, dann hast du die genauen Vorgaben zur Hand.

    Das wäre die einzige Datei die ich interessant finde.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Ja, ich halte mich jetzt an den Objektkatalog. Aber ohne Doku komme ich nicht ganz aus, weil ich die Felder vom Response auswerten muss. In der Doku steht teilweise für was das Feld ist. Leider wurden die Feldnamen in den verschiedenen Responses teilweise anders benannt. ?( Es ist echt mühsam.

    Aber trotzdem einen Dank an Euch.