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: /soap/soap-tutorial .
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 eseseseseseses. 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 eseseseseseses. # 处理方法 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í: ServiceName | Aquí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(paramArges.)
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