激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Ruby - 利用Ruby的SOAP4R編寫SOAP服務器的教程

利用Ruby的SOAP4R編寫SOAP服務器的教程

2020-04-29 10:36腳本之家 Ruby

這篇文章主要介紹了利用Ruby的SOAP4R編寫SOAP服務器的教程,并且詳細介紹了添加驅動和調用服務的方法,需要的朋友可以參考下

 什么是SOAP ?

簡單對象訪問協議(SOAP)是一個跨平臺和語言無關的,基于XML的RPC協議,通常(但不一定)是HTTP。

它使用XML來編碼信息使遠程過程調用,HTTP在網絡上從客戶機到服務器來傳輸信息,反之亦然。

SOAP有幾個優勢超過其他技術,如COM,CORBA等為例,其相對廉價的部署和調試成本,它的可擴展性和易于使用,存在幾種不同的語言和平臺實現。

請參閱出簡單的教程了解 SOAP

本教程將熟悉SOAP實現Ruby(SOAP4R)。這是一個基本的教程,所以如果需要深入細節,那么需要參考其他資源。
安裝SOAP4R:

SOAP4R是由Hiroshi Nakamura編定,可以直接從網上下載Ruby的開發的SOAP實現:

注意:有可能已經安裝了這個組件。

Download SOAP

如果知道 gem 實用工具,那么可以使用下面的命令安裝SOAP4R和相關包。

$ gem install soap4r --include-dependencies

如果是在Windows上工作,那么需要下載一個壓縮文件,從上面的位置,需要安裝它使用標準的安裝方法運行Ruby的 install.rb.
編寫SOAP4R服務器:

SOAP4R支持兩種不同類型的服務器:

  1.     CGI/FastCGI based (SOAP::RPC::CGIStub)

  2.     Standalone (SOAP::RPC:StandaloneServer)

本教程將詳細編寫一個獨立的服務器。涉及編寫SOAP服務器有以下步驟:
第1步 - 繼承SOAP::RPC::StandaloneServer 類:

要實現自己的獨立服務器,需要編寫一個新類,這將SOAP::StandaloneServer 類的子類,如下:

 

復制代碼 代碼如下:
class MyServer < SOAP::RPC::StandaloneServer
  ...............
end

 

注意:如果想編寫一個基于FastCGI的服務器,那么需要繼承SOAP::RPC::CGIStub 類, 其余步驟將保持相同。
第2步 - 定義處理程序方法:

第二步是編寫Web服務方法,希望向外界公開。

它們可以寫成簡單的Ruby方法。例如,讓我們寫了兩個兩個兩個數相加,兩個數相除的方法:

?
1
2
3
4
5
6
7
8
9
10
11
class MyServer < SOAP::RPC::StandaloneServer
  ...............
 
  # Handler methods
  def add(a, b)
   return a + b
  end
  def div(a, b)
   return a / b
  end
end

第3步 - 暴露處理程序方法:

下一步是我們定義的方法添加到我們的服務器。 initialize方法用于暴露服務的方法,用以下兩種方法之一:

?
1
2
3
4
5
class MyServer < SOAP::RPC::StandaloneServer
  def initialize(*args)
   add_method(receiver, methodName, *paramArg)
  end
end

下面的參數說明:

利用Ruby的SOAP4R編寫SOAP服務器的教程

 To understand the usage of inout or out parameters, consider the following service method that takes two parameters (inParam and inoutParam), returns one normal return value (retVal) and two further parameters: inoutParam and outParam:

?
1
2
3
4
5
6
def aMeth(inParam, inoutParam)
  retVal = inParam + inoutParam
  outParam = inParam . inoutParam
  inoutParam = inParam * inoutParam
  return retVal, inoutParam, outParam
end

現在,我們可以公開這個方法如下:

?
1
2
3
4
5
6
add_method(self, 'aMeth', [
  %w(in inParam),
  %w(inout inoutParam),
  %w(out outParam),
  %w(retval return)
])

第4步 - 啟動服務器:

最后一步是通過實例的派生類的一個實例,并調用start方法來啟動服務器。

?
1
2
3
4
myServer = MyServer.new('ServerName',
            'urn:ruby:ServiceName', hostname, port)
 
myServer.start

這是必需的參數的描述:

利用Ruby的SOAP4R編寫SOAP服務器的教程

  例如:

現在使用上述步驟,讓我們寫一個獨立的服務器:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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

執行時,服務器應用程序開始一個獨立的SOAP服務在localhost上偵聽8080端口的請求。它暴露了一個服務方法:add 和 div ,這需要兩個參數并返回結果。

現在可以運行這個服務器后臺如下:

?
1
$ ruby MyServer.rb&

編寫SOAP4R客戶端:

SOAP::RPC::Driver 類用于寫入SOAP客戶端應用程序提供支持。本教程將介紹這個類,顯示其使用的應用程序的基礎。

以下是最低要求的信息,需要調用SOAP服務:

  •     SOAP服務(SOAP端點URL)

  •     service方法(方法命名空間URI)

  •     service方法的名稱及其參數

現在我們將編寫一個SOAP客戶端調用服務定義的方法在上面的例子名稱為add和div。

以下是主要的步驟來創建一個SOAP客戶端:
步驟1 - 創建一個SOAP驅動程序實例:

我們創建一個實例 SOAP::RPC::Driver 通過調用 new 方法如下:

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

這是必需的參數的描述:

利用Ruby的SOAP4R編寫SOAP服務器的教程

 第2步 - 添加服務的方法:

要添加到SOAP SOAP服務方法到 SOAP::RPC::Driver 我們可以調用下面的方法使用 SOAP::RPC::Driver 實例:

driver.add_method(name, *paramArg)

下面的參數說明:

利用Ruby的SOAP4R編寫SOAP服務器的教程

 第3步 - 調用SOAP服務:

最后一步是調用SOAP服務使用 SOAP::RPC::Driver 實例如下:

?
1
result = driver.serviceMethod(paramArg...)

這里serviceMethod是實際的Web服務方法和paramArg...是列表參數需要通過在服務方法。
例如:

根據上述步驟,我們將編寫一個SOAP客戶端如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/ruby -w
 
require 'soap/rpc/driver'
 
NAMESPACE = 'urn:ruby:calculation'
 
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

 

延伸 · 閱讀

精彩推薦
  • RubyRuby環境下安裝使用bundler來管理多版本的gem

    Ruby環境下安裝使用bundler來管理多版本的gem

    這篇文章主要介紹了Ruby環境下安裝使用bundler來管理多版本的gem的方法,舉了Ruby On Rails中的應用實例來進行演示,需要的朋友可以參考下 ...

    日拱一卒4332020-05-10
  • Ruby簡要說明Ruby中的迭代器

    簡要說明Ruby中的迭代器

    這篇文章主要介紹了Ruby中的迭代器,迭代器的概念在動態語言的編程中十分重要,文章中介紹了Ruby中的each迭代器和collect迭代器,需要的朋友可以參考下 ...

    goldensun2772020-04-25
  • Ruby剖析 Ruby 訪問控制

    剖析 Ruby 訪問控制

    前面,我們說 Ruby 沒有函數,只有方法.而且實際上有不止一種方法.這一節我們介紹 訪問控制 (accesscontrols). 想想當我們在最高層而不是在一個類的定義里定義...

    ruby教程網3572020-04-08
  • RubyCentOS中配置Ruby on Rails環境

    CentOS中配置Ruby on Rails環境

    經過一個上午的折騰,終于把ROR環境在CentOS中搞定,繞了很多彎路,把文章寫下來總結一下 ...

    可樂加糖4762020-04-12
  • RubyRuby簡潔學習筆記(一):字符串、數字、類和對象

    Ruby簡潔學習筆記(一):字符串、數字、類和對象

    這篇文章主要介紹了Ruby簡潔學習筆記(一):字符串、數字、類和對象,本文是學習筆記第一篇,需要的朋友可以參考下 ...

    腳本之家2472020-04-20
  • RubyRuby進行文件信息輸出實例代碼

    Ruby進行文件信息輸出實例代碼

    Ruby進行文件信息輸出實例代碼,數據是隨機的,所以每次的記錄都會不同。 ...

    ruby教程網2962020-04-10
  • RubyRuby設計模式編程中使用Builder建造者模式的實例

    Ruby設計模式編程中使用Builder建造者模式的實例

    這篇文章主要介紹了Ruby設計模式編程中使用Builder建造者模式的實例,建造者模式將一個復雜對象的構造與它的表示分離,使同樣的構建過程可以創建不同的表...

    范孝鵬2192020-05-07
  • RubyRuby迭代器的7種技巧分享

    Ruby迭代器的7種技巧分享

    這篇文章主要介紹了Ruby迭代器的7種技巧分享,Ruby中的迭代器非常人性化,本文既是講解了7個技巧也是講解了7種迭代器,需要的朋友可以參考下 ...

    腳本之家4782020-04-20
主站蜘蛛池模板: 国产成人网 | 91久久精品一二三区 | 日韩黄色av| 欧美一级高潮片免费的 | 精品一区二区免费视频视频 | 欧美性成人 | 中文字幕网在线 | 一级毛片真人免费播放视频 | 色视频在线播放 | 香蕉国产精品 | 蜜桃传媒视频麻豆第一区免费观看 | 久久久久久久久久亚洲精品 | 亚洲影视在线观看 | 欧美一级毛片大片免费播放 | 国产一区二区三区视频观看 | 色视频欧美 | 91久久国产露脸精品免费 | 免费一级在线视频 | av免费在线不卡 | 国产日韩在线视频 | 成人黄色短视频在线观看 | 日韩精品中文字幕在线播放 | 日韩精品免费一区二区三区 | tube69xxxxxhd| 久久国产精品久久久久久久久久 | 中文字幕亚洲视频 | 黄色试看视频 | 国产一级毛片国产 | 女人裸体让男人桶全过程 | 久久精品亚洲一区二区 | 激情在线免费观看 | 亚洲成人中文字幕在线 | 99精品国产视频 | 全网免费毛片 | 特级a欧美做爰片毛片 | 污视频在线免费播放 | 国产成人精品免费视频大全办公室 | 国产午夜亚洲精品午夜鲁丝片 | 91久久在线观看 | 黄色免费av网站 | 亚洲91精品|