Ruby-Web-Services-Anwendungen - SOAP4R
Was ist SOAP?
Simple Object Access Protocol (SOAP, die alle für das Simple Object Access Protocol geschrieben) ist ein Protokoll-Spezifikation für den Datenaustausch.
SOAP ist ein einfaches XML-basiertes Protokoll, das Anwendungen Informationen über HTTP austauschen.
Simple Object Access Protocol ist ein Protokoll-Spezifikation für den Austausch von Daten, eine ist leicht, einfach, basiert auf XML (eine Teilmenge der Standard Generalized Markup Language unter) Protokoll, das auf dem Internet austauschen strukturiert ausgebildet ist und Heilung von Informationen.
Bitte lesen Sie mehr SOAP Tutorial: http://www.w3cschool.cc/soap/soap-tutorial.html .
SOAP4R Installation
SOAP4R Hiroshi Nakamura durch die Implementierung von SOAP für Ruby-Anwendungen entwickelt.
SOAP4R Download: http://raa.ruby-lang.org/project/soap4r/ .
Hinweis: Ihr rubin Umgebung , um die Komponente bereits installiert werden.
Unter Linux können Sie die Komponente mit dem Edelstein, den folgenden Befehl installieren:
$ gem install soap4r --include-dependencies
Wenn Sie unter dem Fenster Entwicklungsumgebung sind, müssen Sie die Zip-Datei herunterladen und installieren von install.rb ausführt.
SOAP4R-Service
SOAP4R unterstützt zwei verschiedene Arten von Diensten:
- Basierend auf CGI / FastCGI-Services (SOAP :: RPC :: CGIStub)
- Unabhängige Service (SOAP :: RPC: StandaloneServer)
Dieses Tutorial zeigt Ihnen, wie eine unabhängige SOAP-Dienste zu bauen. Gehen Sie wie folgt vor:
Schritt 1 - Vererbung SOAP :: RPC :: StandaloneServer
Um ihre eigenen separaten Server zu erreichen, müssen Sie eine neue Klasse zu schreiben, die SOAP ist :: RPC :: StandaloneServer Unterkategorien:
class MyServer < SOAP::RPC::StandaloneServer ............... end
Hinweis: Wenn Sie eine serverbasierte FastCGI schreiben wollen, dann müssen Sie SOAP erweitern :: RPC :: CGIStub Klasse, wird der Rest des Programms bleiben unverändert.
Schritt zwei - Verarbeitungsverfahren definieren
wir Web Services-Ansatz Als nächstes definieren wir die folgenden zwei Methoden definieren, ist eine die Summe von zwei Zahlen, eine durch die Nummer zwei geteilt:
class MyServer < SOAP::RPC::StandaloneServer ............... # 处理方法 def add(a, b) return a + b end def div(a, b) return a / b end end
Der dritte Schritt - Veröffentlichung Verarbeitungsverfahren
Als nächstes fügen wir auf dem Server definierten Methoden, initialisieren Verfahren für externe Verbindungen offenbart:
class MyServer < SOAP::RPC::StandaloneServer def initialize(*args) add_method(receiver, methodName, *paramArg) end end
Hier ist eine Beschreibung der einzelnen Parameter:
Parameter | Beschreibung |
---|---|
Empfänger | Ein Objekt, das den Namen der Methode des Verfahrens enthält. Wenn Sie Service - Methode in derselben Klasse zu definieren, ist der Parameterselbst. |
methoden | RPC Methodenaufruf Anfrage Namen. |
paramArg | Parametername und Parametermodus |
inoutundout- Parameter, die folgenden Service - Methoden zu verstehen, müssen Sie zwei Parameter eingeben: InParam und inOutParam, gibt die Funktion drei Werte nach dem Abschluss der Umsetzung: retVal, inOutParam, outParam:
def aMeth(inParam, inoutParam) retVal = inParam + inoutParam outParam = inParam . inoutParam inoutParam = inParam * inoutParam return retVal, inoutParam, outParam end
Veröffentlichung der Aufruf wie folgt:
add_method(self, 'aMeth', [ %w(in inParam), %w(inout inoutParam), %w(out outParam), %w(retval return) ])
Der vierte Schritt - offener Dienst
Schließlich instanziiert wir die abgeleitete Klasse, und die Startmethode aufrufen, den Dienst zu starten:
myServer = MyServer.new('ServerName', 'urn:ruby:ServiceName', hostname, port) myServer.start
Es folgt eine Beschreibung des Anforderungsparameter:
Parameter | Beschreibung |
---|---|
Server | Servicename, können Sie Ihre Lieblings-nehmen |
urn: Rubin: Service | Hierurn: Rubin ist fest, aber Sie können einen einzigartigenServicefür Ihren Service in Anspruch nehmen |
Host - Namen | Geben Sie den Host-Namen |
Hafen | Web-Service-Port |
Beispiele
Als nächstes Durch wir die obigen Schritte, um eine Stand-alone-Dienst zu erstellen:
require "soap/rpc/standaloneserver" begin class MyServer < SOAP::RPC::StandaloneServer # Expose our services def initialize(*args) add_method(self, 'add', 'a', 'b') add_method(self, 'div', 'a', 'b') end # Handler methods def add(a, b) return a + b end def div(a, b) return a / b end end server = MyServer.new("MyServer", 'urn:ruby:calculation', 'localhost', 8080) trap('INT){ server.shutdown } server.start rescue => err puts err.message end
Nachdem das obige Programm ausgeführt wird, wird ein Listener auf Port 8080 der lokalen Dienste zu starten, und stellt zwei Methoden: add und div.
Sie können dann den Hintergrund dieser Leistungen zu erbringen:
$ ruby MyServer.rb&
SOAP4R Client
Rubin SOAP verwenden :: RPC :: Treiberklasse Entwicklung SOAP-Client. Als nächstes schauen wir uns im Detail unter Verwendung von SOAP :: RPC :: Treiberklasse.
Rufen Sie SOAP-Dienst erfordert die folgenden Informationen:
- SOAP-Service-URL-Adresse (SOAP Endpoint URL)
- Namespace (Methode Namespace URI) Service-Methode
- Service-Methodennamen und Parameterinformationen
Als nächstes nehmen wir einen Schritt einen SOAP-Client zu erstellen, die über SOAP-Methode aufzurufen: add, div:
Erster Schritt - Erstellen Instanz SOAP-Treiber
Wir können sie eine neue Methode aufrufen, um SOAP-instanziiert :: RPC :: Treiberklasse, wie folgt:
SOAP::RPC::Driver.new(endPoint, nameSpace, soapAction)
Nachfolgend finden Sie eine Beschreibung der Parameter:
Parameter | Beschreibung |
---|---|
endPoint | SOAP-Service-Verbindung URL-Adresse |
namespace | Namensraum für SOAP :: RPC :: Treiberobjekt alle RPC. |
Soapaktion | Für SOAP-Aktions-HTTP-Header-Feld Werte. Wenn die Zeichenfolge "" der Standardwert istgleich Null |
Schritt zwei - fügen Sie Service-Methode
SOAP :: RPC :: Driver auf SOAP-Service-Methode hinzugefügt haben, können wir die folgende Methode beispielhaft SOAP-Aufruf :: RPC :: Driver:
driver.add_method(name, *paramArg)
Nachfolgend finden Sie eine Beschreibung der Parameter:
Parameter | Beschreibung |
---|---|
Name | Der Name der Methode der Remote-Web-Dienste |
paramArg | Parameter, um die Remote-Programm angeben |
Der dritte Schritt - Aufruf SOAP-Dienste
Schließlich können wir SOAP :: RPC :: Treiber-Instanz verwenden, um SOAP-Dienste aufzurufen:
result = driver.serviceMethod(paramArg...)
Die eigentliche Methode Name serviceMethod SOAP-Dienste, paramArg für die Parameterliste der Methode.
Beispiele
Basierend auf den obigen Schritten können wir folgende SOAP-Client schreiben:
#!/usr/bin/ruby -w require 'soap/rpc/driver' NAMESPACE = 'urn:ruby:calculation' URL = 'http://localhost:8080/' begin driver = SOAP::RPC::Driver.new(URL, NAMESPACE) # Add remote sevice methods driver.add_method('add', 'a', 'b') # Call remote service methods puts driver.add(20, 30) rescue => err puts err.message end
Oben haben wir einfach Ruby Web Services einzuführen. Wenn Sie mehr wissen wollen , können Sie das offizielle Dokument anzuzeigen: die Ruby - von Web Services