Latest web development tutorials

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: ServiceNameTutajurn: 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