Ruby Web Services Aplikacje - SOAP4R
Co to jest mydło?
(SOAP, napisane dla Simple Object Access Protocol) Simple Object Access Protocol to specyfikacja protokołu wymiany danych.
SOAP jest prosta Protokół A oparty na języku XML, który umożliwia aplikacji do wymiany informacji za pośrednictwem protokołu HTTP.
Simple Object Access Protocol, to specyfikacja protokołu wymiany danych, jest lekki, prosty, oparty na XML (podzbiór SGML mocy) Protokół, który jest przeznaczony do wymiany skonstruowany w internecie i utwardzania informacji.
Proszę zobaczyć więcej SOAP Tutorial: http://www.w3cschool.cc/soap/soap-tutorial.html .
instalacja SOAP4R
SOAP4R Hiroshi Nakamura opracowany przez realizację SOAP dla aplikacji Ruby.
SOAP4R Pobieranie: http://raa.ruby-lang.org/project/soap4r/ .
Uwaga: Twoje środowisko Ruby może już zainstalowany komponent.
Pod Linuksem można zainstalować komponent używając gem, następujące polecenie:
$ gem install soap4r --include-dependencies
Jeśli jesteś w środowisku programistycznym okna, należy pobrać plik zip i zainstalować poprzez wykonanie install.rb.
SOAP4R usługi
SOAP4R obsługuje dwa różne rodzaje usług:
- W oparciu o CGI / FastCGI usług (SOAP :: RPC :: CGIStub)
- Niezależny Serwis (SOAP :: RPC: StandaloneServer)
Ten poradnik pokaże Ci, jak zbudować niezależne usługi SOAP. Procedura jest następująca:
Krok 1 - Dziedziczenie SOAP :: RPC :: StandaloneServer
Aby osiągnąć swój oddzielny serwer, trzeba napisać nową klasę, która jest SOAP :: RPC :: StandaloneServer podkategorii:
class MyServer < SOAP::RPC::StandaloneServer ............... end
Uwaga: Jeśli chcesz napisać FastCGI na serwerze, a następnie trzeba rozszerzyć SOAP :: RPC :: klasę CGIStub, reszta programu pozostanie niezmieniona.
Krok drugi - Definiowanie metod przetwarzania
Następnie określają podejście Web Services, możemy zdefiniować następujące dwa sposoby, jeden jest sumą dwóch liczb, jeden podzielony przez liczbę dwóch:
class MyServer < SOAP::RPC::StandaloneServer ............... # 处理方法 def add(a, b) return a + b end def div(a, b) return a / b end end
Trzeci krok - metoda przetwarzania publikacje
Następnie dodajemy metody zdefiniowane na serwerze, zainicjować ujawniono sposób połączeń zewnętrznych:
class MyServer < SOAP::RPC::StandaloneServer def initialize(*args) add_method(receiver, methodName, *paramArg) end end
Oto opis każdego parametru:
parametry | opis |
---|---|
odbiornik | Obiekt, który zawiera nazwę metody metody. Jeśli zdefiniujemy metodę usługi w tej samej klasie, parametr jestsamo. |
methodName | Metoda RPC Nazwa żądania wywołania. |
paramArg | Parametr nazwa i tryb parametr |
Aby zrozumiećinoutiz parametrów, należy rozważyć następujące sposoby świadczenia usług, trzeba wprowadzić dwa parametry: inParam i inoutParam, funkcja zwraca trzy wartości po zakończeniu realizacji: retval, inoutParam, outParam:
def aMeth(inParam, inoutParam) retVal = inParam + inoutParam outParam = inParam . inoutParam inoutParam = inParam * inoutParam return retVal, inoutParam, outParam end
Publikacja zaproszenia, co następuje:
add_method(self, 'aMeth', [ %w(in inParam), %w(inout inoutParam), %w(out outParam), %w(retval return) ])
Czwarty etap - Serwis otwarty
Wreszcie mamy instancję klasy pochodnej i wywołać metodę start, aby uruchomić usługę:
myServer = MyServer.new('ServerName', 'urn:ruby:ServiceName', hostname, port) myServer.start
Poniżej znajduje się opis parametru żądania:
parametry | opis |
---|---|
ServerName | Nazwa usługi, można wziąć swój ulubiony |
Urna: Ruby: ServiceName | Tutajurn: Ruby jest ustalona, ale można wziąć unikalnyServiceNameza usługi |
hosta | Określ nazwę hosta |
port | Port serwis internetowy |
Przykłady
Następnie Poprzez powyższe kroki, aby utworzyć usługę autonomicznego:
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
Po wykonaniu powyższego programu, rozpocząć słuchacza na porcie 8080 z lokalnych usług i naraża na dwa sposoby: dodawanie i div.
Następnie można wykonać tle tych usług:
$ ruby MyServer.rb&
klient SOAP4R
Ruby używać SOAP :: RPC :: klienta klasy sterownika SOAP rozwoju. Dalej przyjrzymy się szczegółowo z wykorzystaniem protokołu SOAP :: RPC :: Klasa sterownika.
Usługa połączeń SOAP wymaga następujących informacji:
- SOAP usługi Adres URL (SOAP Endpoint URL)
- Przestrzeń nazw (Metoda nazw URI) Metoda usługi
- Nazwa metody obsługi i parametr informacyjny
Następnie możemy zrobić krok do stworzenia klienta SOAP do powoływania się na powyższą metodę SOAP: add, Gr:
Krok pierwszy - Tworzenie instancji sterownika SOAP
Możemy to nazwać nową metodę instancję SOAP :: RPC :: klasy kierowcy, co następuje:
SOAP::RPC::Driver.new(endPoint, nameSpace, soapAction)
Poniżej znajduje się opis parametrów:
parametry | opis |
---|---|
Endpoint | Usługa SOAP adres URL połączenia |
namespace | Nazw dla SOAP :: RPC :: obiektu kierowcy wszystkie RPC. |
SoapAction | Dla wartości pól nagłówka SoapAction HTTP. Jeśli łańcuch jest "" domyślnie jestzerowa |
Krok drugi - dodaj metodę usługi
SOAP :: RPC :: Kierowca dodać metodę usługi SOAP, możemy wywołać następujące metody tytułem przykładu SOAP :: RPC :: Kierowca:
driver.add_method(name, *paramArg)
Poniżej znajduje się opis parametrów:
parametry | opis |
---|---|
nazwa | Nazwa metody zdalnych usług internetowych |
paramArg | Parametr określić zdalnego programu |
Trzeci etap - wywołanie usługi SOAP
Wreszcie, możemy użyć SOAP :: RPC :: instancji sterownika do wywoływania usług SOAP:
result = driver.serviceMethod(paramArg...)
Rzeczywiste usługi SOAP nazwa metody serviceMethod, paramArg dla lista parametrów metody.
Przykłady
Na podstawie powyższych kroków, możemy napisać następujący klienta SOAP:
#!/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
Przede po prostu wprowadzić Web Services Ruby. Jeśli chcesz wiedzieć więcej można zobaczyć oficjalny dokument: Ruby z Web Services