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. Если вы хотите узнать больше вы можете просмотреть официальный документ: Рубин веб - сервисов