Latest web development tutorials

Rubino Web Services Applicazioni - SOAP4R

Qual è il sapone?

Simple Object Access Protocol (SOAP, tutti scritti per il Simple Object Access Protocol) è un protocollo specifica per lo scambio di dati.

SOAP è un semplice protocollo basato su XML che permette alle applicazioni di scambiare informazioni su HTTP.

Simple Object Access Protocol, è una specifica protocollo per lo scambio di dati, è un peso leggero, semplice, basato su XML (un sottoinsieme del Standard Generalized Markup Language sotto), il protocollo, che è stato progettato per lo scambio strutturato sul WEB e curare le informazioni.

Si prega di vedere di più SOAP Tutorial: http://www.w3cschool.cc/soap/soap-tutorial.html .


installazione SOAP4R

SOAP4R Hiroshi Nakamura sviluppato dalla implementazione di SOAP per le applicazioni Ruby.

SOAP4R Download: http://raa.ruby-lang.org/project/soap4r/ .

Nota: L'ambiente rubino potrebbe essere già installato il componente.

Sotto Linux è possibile installare il componente con la gemma, il seguente comando:

$ gem install soap4r --include-dependencies

Se siete sotto l'ambiente di sviluppo della finestra, è necessario scaricare il file zip, e installarlo eseguendo install.rb.


Servizio SOAP4R

SOAP4R supporta due diversi tipi di servizio:

  • Sulla base di CGI / servizi FastCGI (SOAP RPC :: :: CGIStub)
  • Servizio indipendente (SOAP :: RPC: StandaloneServer)

Questo tutorial vi mostrerà come costruire un servizi SOAP indipendenti. Procedere come segue:

Fase 1 - Trasmissione SOAP RPC :: :: StandaloneServer

Al fine di raggiungere il proprio server separato, è necessario scrivere una nuova classe che è SOAP RPC :: :: StandaloneServer sub-categorie:

class MyServer < SOAP::RPC::StandaloneServer
  ...............
end

Nota: Se si vuole scrivere un FastCGI basata su server, quindi è necessario estendere SOAP RPC :: :: classe CGIStub, il resto del programma rimarrà invariato.

Fase due - definire i metodi di lavorazione

Poi definiamo approccio servizi Web, si definiscono i seguenti due metodi, uno è la somma di due numeri, uno è diviso per il numero due:

class MyServer < SOAP::RPC::StandaloneServer
   ...............

   # 处理方法
   def add(a, b)
      return a + b
   end
   def div(a, b) 
      return a / b 
   end
end

La terza fase - metodo di lavorazione pubblicazione

Poi, aggiungiamo metodi definiti sul server, inizializzare il metodo è indicato per le connessioni esterne:

class MyServer < SOAP::RPC::StandaloneServer
   def initialize(*args)
      add_method(receiver, methodName, *paramArg)
   end
end

Ecco una descrizione di ogni parametro:

parametri descrizione
ricevitore Oggetto che contiene il nome del metodo del metodo. Se si definisce metodo di servizio nella stessa classe, il parametro èauto.
nomeMetodo Metodo RPC nome richiesta di chiamata.
paramArg Nome del parametro e modalità parametri

Per capireinoutefuoriparametri, considerare i seguenti metodi di servizio, è necessario immettere due parametri: InParam e inoutParam, la funzione restituisce tre valori dopo il completamento della realizzazione: retVal, inoutParam, outParam:

def aMeth(inParam, inoutParam)
   retVal = inParam + inoutParam
   outParam = inParam . inoutParam
   inoutParam = inParam * inoutParam
   return retVal, inoutParam, outParam
end

Pubblicazione di chiamata come segue:

add_method(self, 'aMeth', [
    %w(in inParam),
    %w(inout inoutParam),
    %w(out outParam),
    %w(retval return)
])

Il quarto passo - servizio aperto

Infine, creare un'istanza della classe derivata, e chiamare il metodo start per avviare il servizio:

myServer = MyServer.new('ServerName',
                        'urn:ruby:ServiceName', hostname, port)

myServer.start

Quanto segue è una descrizione del parametro di richiesta:

parametri descrizione
ServerName nome del servizio, si può prendere il tuo preferito
urn: ruby: ServiceNameQuiurn: rubino è fisso, ma si può prendere unNomeServiziounico per il vostro servizio
hostname Specificare il nome host
porto porta di servizio web

Esempi

Poi abbiamo Attraverso i passaggi precedenti per creare un servizio stand-alone:

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

Dopo l'esecuzione del programma di cui sopra, avviare un ascoltatore sulla porta 8080 dei servizi locali, ed espone due metodi: aggiungi e div.

È quindi possibile eseguire lo sfondo di questi servizi:

$ ruby MyServer.rb&

cliente SOAP4R

rubino utilizzare SOAP RPC :: :: cliente classe del driver di sviluppo SOAP. Prossimo guardiamo in dettaglio utilizzando SOAP RPC :: :: classe del driver.

servizio SOAP chiamata richiede le seguenti informazioni:

  • SOAP Servizio indirizzo URL (SOAP endpoint URL)
  • Namespace metodo di servizio (metodo namespace URI)
  • Nome metodo di servizio e sui parametri

Quindi, facciamo un passo per creare un client SOAP per richiamare il metodo SOAP sopra: aggiungere, div:

FASE UNO - Creare esempio SOAP driver

Siamo in grado di chiamare un nuovo metodo per istanziare SOAP RPC :: :: classe del driver, come segue:

SOAP::RPC::Driver.new(endPoint, nameSpace, soapAction)

Quanto segue è una descrizione dei parametri:

parametri descrizione
endPoint servizio SOAP indirizzo URL di collegamento
nameSpace Namespace per SOAP :: :: RPC oggetto driver tutto RPC.
soapAction Per i valori dei campi di intestazione SOAPAction HTTP. Se la stringa è "" il valore predefinito èpari a zero

Fase due - aggiungere metodo di servizio

SOAP RPC :: :: driver per aggiungere metodo di servizio SOAP, si può chiamare il seguente metodo a titolo di esempio SOAP RPC :: :: guida:

driver.add_method(name, *paramArg)

Quanto segue è una descrizione dei parametri:

parametri descrizione
nome Il nome del metodo dei servizi Web remoti
paramArg Parametro per specificare il programma remoto

Il terzo passo - chiamando servizi SOAP

Infine, possiamo usare SOAP RPC :: :: esempio driver per invocare servizi SOAP:

result = driver.serviceMethod(paramArg...)

L'attuale servizi SOAP nome del metodo serviceMethod, paramArg per elenco di parametri del metodo.

Esempi

Sulla base dei punti di cui sopra, possiamo scrivere il seguente client 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

Sopra abbiamo semplicemente introdurre servizi Web di Ruby. Se volete saperne di più è possibile visualizzare il documento ufficiale: il Rubino di Web Services