Latest web development tutorials

Rubi Web Services Applications - soap4r

O que é sabão?

Simple Object Access Protocol (SOAP, todos escritos para o Simple Object Access Protocol) é uma especificação de protocolo para troca de dados.

SOAP é um protocolo simples baseado em XML que permite que os aplicativos para trocar informações sobre HTTP.

Simple Object Access Protocol, é uma especificação de protocolo para troca de dados, é leve, simples, baseado em XML (um subconjunto do abrigo Standard Generalized Markup Language) protocolo, que é projetado para intercâmbio estruturado na WEB e curar informações.

Por favor, veja mais sabão Tutorial: http://www.w3cschool.cc/soap/soap-tutorial.html .


instalação soap4r

Soap4r Hiroshi Nakamura desenvolvido pela implementação de SOAP para aplicações Ruby.

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

Nota: O seu ambiente de rubi pode já instalou o componente.

No Linux, você pode instalar o componente usando a gema, o seguinte comando:

$ gem install soap4r --include-dependencies

Se você estiver sob o ambiente de desenvolvimento janela, você precisa baixar o arquivo zip, e instalar, executando install.rb.


Serviço soap4r

Soap4r suporta dois tipos diferentes de serviços:

  • Baseado em CGI / serviços FastCGI (SOAP :: RPC :: CGIStub)
  • Serviço independente (SOAP :: RPC: StandaloneServer)

Este tutorial irá mostrar-lhe como construir um serviços SOAP independentes. Faça o seguinte:

Passo 1 - Herança SOAP :: RPC :: StandaloneServer

A fim de alcançar o seu próprio servidor separado, você precisa escrever uma nova classe que é SOAP :: RPC :: StandaloneServer sub-categorias:

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

Nota: Se você quer escrever um FastCGI baseada em servidor, em seguida, você precisa estender SOAP :: RPC :: class CGIStub, o resto do programa permanecerá inalterada.

Segundo Passo - Definir métodos de processamento

Em seguida, definimos abordagem de serviços Web, que definem os dois métodos seguintes, uma é a soma de dois números, um é dividido pelo número de dois:

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

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

O terceiro passo - método de processamento de publicação

Em seguida, vamos adicionar métodos definidos no servidor, inicialize método é divulgado para conexões externas:

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

Aqui está uma descrição de cada parâmetro:

parâmetros descrição
recebedor Objeto que contém o nome do método do método. Se você definir método de serviço na mesma classe, o parâmetro éauto.
methodName método RPC nome do pedido de invocação.
paramArg O nome do parâmetro e o modo de parâmetro

Para entenderinouteforaparâmetros, considere os seguintes métodos de serviço, é necessário introduzir dois parâmetros: InParam e inoutParam, a função retorna três valores após a conclusão da implementação: retVal, inoutParam, outParam:

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

Publicação de chamada da seguinte forma:

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

A quarta etapa - serviço aberto

Finalmente, instanciar a classe derivada, e chamar o método start para iniciar o serviço:

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

myServer.start

O que se segue é uma descrição do parâmetro de solicitação:

parâmetros descrição
ServerName nome do serviço, você pode levar seu favorito
urn: ruby: ServiceNameAquiurn: ruby é fixo, mas você pode tomar umServiceNameexclusivo para o seu serviço
hostname Especifique o nome do host
porto porta de serviço web

Exemplos

Em seguida nós através dos passos acima para criar um serviço independente:

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

Depois de executar o programa acima, iniciar um ouvinte na porta 8080 dos serviços locais, e expõe dois métodos: Adicionar e div.

Você pode então executar o plano de fundo desses serviços:

$ ruby MyServer.rb&

cliente soap4r

ruby usar SOAP :: RPC :: cliente da classe do driver desenvolvimento SOAP. Próximo olhamos em detalhe usando SOAP :: RPC :: class driver.

serviço SOAP chamada requer as seguintes informações:

  • SABÃO Serviço de endereço de URL (SABÃO Endpoint URL)
  • Namespace (Namespace Método URI) método de serviço
  • Nome do método de serviço e de parâmetros

Em seguida, damos um passo para criar um cliente SOAP para chamar o método de SOAP acima: adicione, div:

Primeiro Passo - Criar instância SABÃO driver

Podemos chamá-lo de um novo método para instanciar SOAP :: RPC :: class Motorista, como segue:

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

O seguinte é uma descrição dos parâmetros:

parâmetros descrição
endPoint serviço SOAP conexão endereço URL
nameSpace Namespace para SOAP :: RPC :: Motorista objeto tudo RPC.
soapAction Para valores de campo de cabeçalho SOAPAction HTTP. Se a cadeia é "" o padrão énulo

Etapa dois - adicionar método de serviço

SOAP :: RPC :: Motorista para adicionar método de serviço SOAP, podemos chamar o método a seguir a título de exemplo SOAP :: RPC :: motorista:

driver.add_method(name, *paramArg)

O seguinte é uma descrição dos parâmetros:

parâmetros descrição
nome O nome do método dos serviços web remotos
paramArg Parâmetro para especificar o programa remoto

O terceiro passo - chamar serviços SOAP

Finalmente, podemos usar SOAP :: RPC :: instância do controlador para invocar serviços SOAP:

result = driver.serviceMethod(paramArg...)

Os serviços reais SABÃO nome do método ServiceMethod, paramArg para lista de parâmetros do método.

Exemplos

Com base nas etapas acima, podemos escrever a seguinte cliente 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

Acima de nós simplesmente introduzir serviços Web do Ruby. Se você quiser saber mais, você pode visualizar o documento oficial: o rubi de Web Services