Frage

Wir versuchen, einen Webdienst zu erstellen, an den wir eine variable Anzahl von Variablen übergeben möchten.

Kann das gemacht werden?

Anstatt alle möglichen Parameter zu übergeben, möchten wir grundsätzlich nur die eingestellten Werte übergeben und die im Webdienst festgelegten Standardwerte verwenden.

Hier ist ein Beispiel für das XML, das wir senden möchten. Abhängig von der benötigten Rückgabe würden wir eine unbekannte Anzahl von Funktionen senden.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <WebMethod xmlns="http://tempuri.org/">
      <domains>
        <function1>
        <title>Some Title</title>
        <type>25</type>
        </function1>
    <function2 />
    <function3>
        <param>13</param>
    </function3>
      </domains>
    </WebMethod>
  </soap:Body>
</soap:Envelope>

Wird das funktionieren oder sollten wir es anders machen?

War es hilfreich?

Lösung

Ich würde ein XML-Dokument übergeben, anstatt hierfür Concreate-Funktionen auszuführen.

Der Webservice in Ihrem Beispiel ist undicht – der Verbraucher muss zu viel über diese Schnittstelle und die interne Implementierung des Webservices wissen.

XML-Dokument und verknüpfen Sie es dann mit einer XSD.Auf diese Weise können Sie die Eingabe für den Webservice vorab validieren.

Schauen Sie sich diese an

IBM-Entwickler ASP.NET-Forum

Ich würde es auch zum Testen von Webdiensten empfehlen, da es kostenlos istWSStudio

Andere Tipps

Sie können einfach ein Array variabler Länge als Parameter übergeben.

Wenn Ihnen die Idee eines Arrays nicht gefällt (das ist nicht Konrads Antwort – Sie haben möglicherweise unterschiedliche Parametertypen), können Sie komplexe Objekte übergeben (z. B.Objekte, die Sie selbst hergestellt haben).Der Nachteil besteht darin, dass Sie den Test dann nicht über die ASMX-Seite durchführen können, sondern alles im Code erledigen müssten (was eigentlich keine schlechte Sache ist, insbesondere wenn Sie daran gewöhnt sind).

Ich stimme littlegeek zu.Machen Sie Ihren Webdienst nicht zu einer schwierigen Methode.Machen Sie es zu einem Empfangsendpunkt zum Empfangen Mitteilungen.Insbesondere eine Befehlsnachricht.

http://www.eaipatterns.com/CommandMessage.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top