Latest web development tutorials

Servicios de Aplicaciones Web Ruby - soap4r

Lo que es SOAP?

Sencilla Object Access Protocol (SOAP, todas escritas por el simple Object Access Protocol) es una especificación de protocolo para el intercambio de datos.

SOAP es un protocolo simple basado en XML que permite a las aplicaciones de intercambio de información a través de HTTP.

Simple Object Access Protocol, es una especificación de protocolo para el intercambio de datos, es un peso ligero, simple, basado en XML (un subconjunto del lenguaje de marcado generalizado estándar bajo) de protocolo, que está diseñado para intercambio estructurado en la WEB y el curado de la información.

Por favor, vea más jabón Tutorial: http://www.w3cschool.cc/soap/soap-tutorial.html .


instalación soap4r

Soap4r Hiroshi Nakamura desarrollado por la implementación de SOAP para aplicaciones Ruby.

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

Nota: El entorno de rubí puede ya instalado el componente.

En Linux se puede instalar el componente utilizando la gema, el siguiente comando:

$ gem install soap4r --include-dependencies

Si usted está bajo la ventana de entorno de desarrollo, es necesario descargar el archivo zip, e instalar ejecutando install.rb.


Servicio soap4r

Soap4r es compatible con dos tipos diferentes de servicio:

  • Sobre la base de CGI / FastCGI servicios (SOAP RPC :: :: CGIStub)
  • Servicio Independiente (SOAP :: RPC: StandaloneServer)

Este tutorial le mostrará cómo construir un servicios SOAP independientes. Proceder de la siguiente manera:

Paso 1 - Herencia de SOAP RPC :: :: StandaloneServer

Con el fin de lograr su propio servidor independiente, tiene que escribir una nueva clase que es SOAP RPC :: :: StandaloneServer sub-categorías:

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

Nota: Si desea escribir un FastCGI basado en servidor, entonces usted necesita para extender SOAP :: :: RPC clase CGIStub, el resto del programa se mantendrá sin cambios.

Segundo paso - Definir métodos de procesamiento

A continuación definimos enfoque de servicios web, definimos los siguientes dos métodos, uno es la suma de dos números, uno se divide por el número dos:

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

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

El tercer paso - método de procesamiento de la publicación

A continuación, añadimos los métodos definidos en el servidor, se da a conocer inicializar método para conexiones externas:

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

He aquí una descripción de cada parámetro:

parámetros descripción
receptor Objeto que contiene el nombre del método del método. Si define método de servicio en la misma clase, el parámetro esuno mismo.
methodName método RPC nombre de solicitud de invocación.
paramArg nombre del parámetro y el modo de parámetros

Para entenderinoutyfueraparámetros, considere los siguientes métodos de servicio, es necesario introducir dos parámetros: InParam y inoutParam, la función devuelve tres valores después de la finalización de la aplicación: RetVal, inoutParam, outParam:

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

Publicación de llamada como sigue:

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

El cuarto paso - servicio abierto

Por último, creamos una instancia de la clase derivada, y llamamos al método start para iniciar el servicio:

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

myServer.start

La siguiente es una descripción del parámetro de la petición:

parámetros descripción
ServerName Nombre de servicio, usted puede tener su favorito
urn: rubí: ServiceNameAquíurn: rubí es fijo, pero se puede tomar unServiceNameúnico para su servicio
nombre de host Especificar el nombre de host
puerto puerto de servicio Web

Ejemplos

A continuación través de los pasos anteriores para crear un servicio independiente:

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

Después de ejecutar el programa anterior, inicie un receptor en el puerto 8080 de los servicios locales, y expone dos métodos: sumar y div.

A continuación, puede realizar el fondo de estos servicios:

$ ruby MyServer.rb&

soap4r cliente

rubí utilizar SOAP :: :: RPC cliente de clase piloto de desarrollo SOAP. A continuación nos fijamos en detalle utilizando SOAP RPC :: :: clase controlador.

servicio SOAP llamada requiere la siguiente información:

  • Servicio de SOAP dirección URL (SOAP URL de punto final)
  • Espacio de nombres método de servicio (Método espacio de nombres URI)
  • Nombre del método de servicio y los parámetros

A continuación, damos un paso para crear un cliente SOAP para invocar el método de SOAP arriba: sumar, div:

Paso uno - Crear instancia de SOAP Conductor

Podemos decir que es un nuevo método para crear una instancia de SOAP RPC :: :: clase del controlador, de la siguiente manera:

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

La siguiente es una descripción de los parámetros:

parámetros descripción
Punto de llegada servicio SOAP dirección URL de conexión
nameSpace Espacio de nombres para SOAP RPC :: :: Conductor objeto de todo RPC.
soapAction Para valores de los campos de encabezado HTTP SOAPAction. Si la cadena es "" el valor por defecto esnulo

Paso dos - añadir método de servicio

SOAP :: :: RPC controlador para añadir método de servicio SOAP, podemos llamar al siguiente método a modo de ejemplo de SOAP RPC :: :: Conductor:

driver.add_method(name, *paramArg)

La siguiente es una descripción de los parámetros:

parámetros descripción
nombre El nombre del método de los servicios web remotos
paramArg Parámetro para especificar el programa remoto

El tercer paso - pidiendo servicios SOAP

Por último, podemos utilizar SOAP :: :: RPC instancia del controlador para invocar servicios SOAP:

result = driver.serviceMethod(paramArg...)

Los servicios reales de SOAP nombre del método ServiceMethod, paramArg para la lista de parámetros del método.

Ejemplos

Sobre la base de los pasos anteriores, se puede escribir la siguiente 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

Por encima de nosotros simplemente introducimos Servicios Web de Ruby. Si quieres saber más puedes ver el documento oficial: el Rubí de Servicios Web