Ruby-Web-Service-Anwendung - SOAP4R
Was ist SOAP?
Simple Object Access Protocol (SOAP) ist eine Protokollspezifikation zum Austausch von Daten.
SOAP ist ein einfaches XML-basiertes Protokoll, das Anwendungen ermöglicht, Informationen über HTTP auszutauschen.
Simple Object Access Protocol ist eine Protokollspezifikation zum Austausch von Daten. Es ist ein leichtgewichtiges, einfaches, XML-basiertes (eine Teilmenge der Standard Generalized Markup Language) Protokoll, das für den Austausch strukturierter und fester Informationen im Web konzipiert wurde.
Weitere SOAP-Tutorials finden Sie unter:http://www.w3cschool.cc/soap/soap-tutorial.html。
SOAP4R-Installation
SOAP4R wurde von Hiroshi Nakamura für Ruby-SOAP-Anwendungen entwickelt und implementiert.
SOAP4R-Download-Adresse:http://raa.ruby-lang.org/project/soap4r/。
Hinweis:In Ihrer Ruby-Umgebung ist diese Komponente möglicherweise bereits installiert.
Unter Linux können Sie auch gem verwenden, um diese Komponente zu installieren. Der Befehl lautet wie folgt:
Wenn Sie in einer Windows-Umgebung entwickeln, müssen Sie die ZIP-komprimierte Datei herunterladen und sie durch Ausführen von install.rb installieren.
SOAP4R-Dienst
SOAP4R unterstützt zwei verschiedene Diensttypen:
- CGI/FastCGI-basierter Dienst (SOAP::RPC::CGIStub)
- Standalone-Dienst (SOAP::RPC:StandaloneServer)
In diesem Tutorial wird gezeigt, wie Sie einen eigenständigen SOAP-Dienst einrichten. Die Schritte sind wie folgt:
Schritt 1 - Von SOAP::RPC::StandaloneServer erben
Um Ihren eigenen eigenständigen Server zu implementieren, müssen Sie eine neue Klasse schreiben, die eine Unterklasse von SOAP::RPC::StandaloneServer ist:
Hinweis:Wenn Sie einen FastCGI-basierten Server schreiben möchten, müssen Sie von der Klasse SOAP::RPC::CGIStub erben; der Rest des Programms bleibt unverändert.
Schritt 2 - Verarbeitungsmethoden definieren
Als Nächstes definieren wir die Web-Service-Methoden. Unten definieren wir zwei Methoden: Eine addiert zwei Zahlen, und die andere dividiert zwei Zahlen:
Schritt 3 - Verarbeitungsmethoden veröffentlichen
Als Nächstes fügen Sie die Methoden hinzu, die wir auf dem Server definiert haben. Die initialize-Methode ist öffentlich und wird für externe Verbindungen verwendet:
Das Folgende ist eine Erklärung der einzelnen Parameter:
| Parameter | Beschreibung |
|---|---|
| receiver | Das Objekt, das die Methode mit dem Methodennamen enthält. Wenn Sie die Service-Methode in derselben Klasse definieren, ist dieser Parameterself。 |
| methodName | Der Methodenname, der von der RPC-Anfrage aufgerufen wird. |
| paramArg | Parameternamen und Parametermodi |
Uminout- undout-Parameter zu verstehen, betrachten Sie die folgende Service-Methode, die zwei Eingabeparameter erfordert: inParam und inoutParam. Nachdem die Funktion die Ausführung abgeschlossen hat, gibt sie drei Werte zurück: retVal, inoutParam und outParam:
Die öffentliche Aufrufmethode lautet wie folgt:
Schritt 4 - Dienst starten
Schließlich instanziieren wir die abgeleitete Klasse und rufen die start-Methode auf, um den Dienst zu starten:
Das Folgende ist eine Erklärung der Anfrageparameter:
| Parameter | Beschreibung |
|---|---|
| ServerName | Dienstname, Sie können wählen, was Sie möchten |
| urn:ruby:ServiceName | Hier urn:rubyist fest, aber Sie können Ihrem Dienst einen eindeutigenServiceName geben |
| hostname | Geben Sie den Hostnamen an |
| port | Webdienst-Port |
Beispiel
Als Nächstes erstellen wir anhand der oben genannten Schritte einen eigenständigen Dienst:
Beispiel
Nach dem Ausführen des obigen Programms wird ein lokaler Dienst gestartet, der auf Port 8080 lauscht, und es werden zwei Methoden bereitgestellt: add und div.
Sie können den obigen Dienst im Hintergrund ausführen:
$ ruby MyServer.rb &
SOAP4R-Client
In Ruby wird die Klasse SOAP::RPC::Driver verwendet, um SOAP-Clients zu entwickeln. Als Nächstes sehen wir uns die Verwendung der Klasse SOAP::RPC::Driver im Detail an.
Zum Aufrufen eines SOAP-Dienstes sind die folgenden Informationen erforderlich:
- URL-Adresse des SOAP-Dienstes (SOAP-Endpunkt-URL)
- Methoden-Namespace des Dienstes (Method Namespace URI)
- Name der Dienstmethode und Parameterinformationen
Als Nächstes erstellen wir Schritt für Schritt einen SOAP-Client, um die oben genannten SOAP-Methoden aufzurufen: add und div:
Schritt 1 – Erstellen einer SOAP-Treiber-Instanz
Wir können die Klasse SOAP::RPC::Driver instanziieren, um ihre new-Methode aufzurufen, wie unten gezeigt:
SOAP::RPC::Driver.new(endPoint, nameSpace, soapAction)
Das Folgende ist eine Beschreibung der Parameter:
| Parameter | Beschreibung |
|---|---|
| endPoint | Die URL-Adresse zur Verbindung mit dem SOAP-Dienst |
| nameSpace | Der Namespace, der für alle RPCs des SOAP::RPC::Driver-Objekts verwendet wird. |
| soapAction | Der im HTTP-Header verwendete Wert des SOAPAction-Felds. Wenn es die Zeichenkette "" ist, ist der Standardnil |
Schritt 2 – Dienstmethoden hinzufügen
Um SOAP-Dienstmethoden zu SOAP::RPC::Driver hinzuzufügen, können wir über eine Instanz von SOAP::RPC::Driver die folgenden Methoden aufrufen:
driver.add_method(name, *paramArg)
Im Folgenden werden die Parameter erläutert:
| Parameter | Beschreibung |
|---|---|
| name | Der Methodenname des Remote-Webdienstes |
| paramArg | Geben Sie die Parameter des Remote-Programms an |
Schritt 3 - SOAP-Dienst aufrufen
Schließlich können wir die Instanz von SOAP::RPC::Driver verwenden, um den SOAP-Dienst aufzurufen:
result = driver.serviceMethod(paramArg...)
serviceMethod ist der tatsächliche Methodenname des SOAP-Dienstes, und paramArg ist die Parameterliste der Methode.
Beispiel
Basierend auf den oben genannten Schritten können wir den folgenden SOAP-Client schreiben:
Beispiel
Oben haben wir nur kurz Rubys Web Service vorgestellt. Wenn Sie mehr erfahren möchten, können Sie die offizielle Dokumentation einsehen:Rubys Web Service
Weitere Erweiterungen