Latest web development tutorials

Ruby-приложения веб-служб - SOAP4R

Что такое SOAP?

Простой протокол доступа к объектам (SOAP, все написанное для протокола Simple Object Access) является спецификацией протокол для обмена данными.

SOAP представляет собой простой XML на основе протокола, который позволяет приложениям обмениваться информацией через HTTP.

Простой протокол доступа к объектам, является спецификация протокола для обмена данными, представляет собой легкий, простой, основанный на XML (подмножество Стандартный обобщенный язык разметки внизу) протокола, который предназначен для обмена структурированной на WEB и отверждения информации.

Пожалуйста , смотрите больше SOAP Учебник: http://www.w3cschool.cc/soap/soap-tutorial.html .


установка SOAP4R

SOAP4R Хироси Накамура, разработанный реализации SOAP для приложений на Ruby.

SOAP4R Скачать: http://raa.ruby-lang.org/project/soap4r/ .

Примечание: Ваша среда рубин может уже установлен компонент.

Под Linux вы можете установить компонент, используя камень, следующую команду:

$ gem install soap4r --include-dependencies

Если вы находитесь в среде разработки окна, вам необходимо скачать файл ZIP, и установить, выполнив install.rb.


SOAP4R служба

SOAP4R поддерживает два различных вида услуг:

  • На основе CGI / FastCGI услуги (SOAP :: RPC :: CGIStub)
  • Независимая служба (SOAP :: RPC: СтандартныеПроблем)

Этот учебник покажет вам, как создать независимые сервисы SOAP. Выполните следующие действия:

Шаг 1 - Наследование SOAP :: RPC :: СтандартныеПроблем

Для того, чтобы достичь их собственный отдельный сервер, вам необходимо написать новый класс, который является SOAP :: RPC :: СтандартныеПроблем подкатегорий:

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

Примечание: Если вы хотите написать FastCGI на основе сервера, то вам необходимо расширить SOAP :: RPC :: класс CGIStub, остальная часть программы останется неизменной.

Шаг второй - Определить технологические методы

Далее мы определяем Web Services подход, мы определяем следующие два метода, один является суммой двух чисел, одно делится на номер два:

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

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

Третий этап - метод обработки публикации

Далее, мы добавим методы, определенные на сервере, проинициализировать раскрыт способ для внешних соединений:

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

Ниже приводится описание каждого параметра:

параметры описание
приемник Объект, который содержит имя метода метода. Если вы определяете метод сервиса в том же классе, параметрсамостоятельно.
имяМетода Метод RPC имя запроса вызова.
paramArg Имя параметра и режим параметров

Чтобы понятьINOUTиизпараметров, рассмотрим следующие методы обслуживания, необходимо ввести два параметра: inParam и inoutParam, функция возвращает три значения после завершения реализации: RetVal, inoutParam, outParam:

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

Публикация вызова следующим образом:

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

Четвертый шаг - открытый сервис

Наконец, мы создаем экземпляр производного класса, и вызовите метод запуска для запуска службы:

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

myServer.start

Ниже приведено описание параметра запроса:

параметры описание
ServerName Имя службы, вы можете взять ваш любимый
Урна: рубин: ServiceNameЗдесьурна: рубин фиксируется, но вы можете взять уникальныйServiceNameдля вашей службы
имя хоста Укажите имя хоста
порт Порт веб-сервис

примеров

Далее мы через описанные выше действия, чтобы создать автономное обслуживание:

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

После выполнения вышеуказанной программы, начните слушатель на порту 8080 местных услуг, а также предоставляет два метода: добавление и DIV.

После этого вы можете выполнить фоне этих услуг:

$ ruby MyServer.rb&

SOAP4R клиент

рубин использовать SOAP :: RPC :: клиента разработка SOAP класса Driver. Далее мы рассмотрим подробно с помощью SOAP :: RPC :: Драйвер класса.

Вызов службы SOAP требуется следующая информация:

  • SOAP Service URL-адрес (SOAP Endpoint URL)
  • Пространство имен (метод URI пространства имен) метод сервиса
  • имя метода обслуживания и информационный параметр

Далее, мы делаем шаг, чтобы создать клиента SOAP для вызова выше метод SOAP: добавить, отд:

Шаг первый - Создание экземпляра SOAP-драйвера

Мы можем назвать это новый метод для создания экземпляра SOAP :: RPC :: класс драйвера, следующим образом:

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

Ниже приводится описание параметров:

параметры описание
ENDPOINT SOAP служба адрес URL соединения
NAMESPACE Пространство имен для SOAP :: RPC :: Драйвер объекта все RPC.
SOAPAction Для получения значений полей заголовка HTTP SOAPAction. Если строка "" по умолчанию равнанулю

Шаг второй - добавить метод сервиса

SOAP :: RPC :: Драйвер для добавления метода службы SOAP, мы можем назвать следующий метод в качестве примера SOAP :: RPC :: Driver:

driver.add_method(name, *paramArg)

Ниже приводится описание параметров:

параметры описание
имя Метод имя удаленного веб-служб
paramArg Параметр для указания удаленной программы

Третий шаг - вызов службы SOAP

И, наконец, мы можем использовать SOAP RPC :: :: экземпляр драйвера для вызова служб SOAP:

result = driver.serviceMethod(paramArg...)

Фактическое имя метода serviceMethod SOAP услуги, paramArg для списка параметров метода.

примеров

На основании приведенных выше шагов, мы можем написать следующий клиент 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

Выше мы просто ввести веб-служб в Ruby. Если вы хотите узнать больше вы можете просмотреть официальный документ: Рубин веб - сервисов