Latest web development tutorials

RubyのWebサービスアプリケーション - SOAP4R

SOAPとは何ですか?

シンプルオブジェクトアクセスプロトコル(SOAP、シンプル・オブジェクト・アクセス・プロトコルのために書かれたすべて)は、データを交換するためのプロトコル仕様です。

SOAPは、アプリケーションがHTTP経由で情報を交換することができるシンプルなXMLベースのプロトコルです。

シンプルオブジェクトアクセスプロトコルは、データを交換するためのプロトコル仕様で、WEB上で構造化された交換するように設計されたプロトコル、(下の標準一般化マークアップ言語のサブセット)、軽量、シンプルなXMLに基づいています情報を硬化させます。

:より多くのSOAPチュートリアルを参照してくださいhttp://www.w3cschool.cc/soap/soap-tutorial.htmlを


SOAP4Rインストール

RubyアプリケーションのためのSOAPの実装によって開発されたSOAP4R中村宏。

SOAP4Rダウンロード: http://raa.ruby-lang.org/project/soap4r/

注:あなたのルビー環境はすでにコンポーネントをインストールすることができます。

Linuxでは、あなたが宝石、次のコマンドを使用してコンポーネントをインストールすることができます。

$ gem install soap4r --include-dependencies

あなたは窓の開発環境下にある場合は、install.rbを実行することにより、zipファイルをダウンロードし、インストールする必要があります。


SOAP4Rサービス

SOAP4Rは、サービスの二つの異なるタイプをサポートしています。

  • CGI / FastCGIのサービス(SOAP :: RPC ::のCGIStub)に基づき、
  • 独立したサービス(SOAP :: RPC:StandaloneServer)

このチュートリアルでは、独立したSOAPサービスを構築する方法を紹介します。 以下のように実行します。

ステップ1 - 継承SOAP :: RPC :: StandaloneServer

自分の別のサーバーを達成するために、あなたはSOAPで新しいクラスを記述する必要があります:: RPC :: StandaloneServerサブカテゴリー:

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

注:サーバーベースのFastCGIを書きたい場合は、SOAP :: RPC ::のCGIStubクラスを拡張する必要があり、プログラムの残りの部分は変更されません。

ステップ二 - の処理方法を定義します。

次に我々は、Webサービスのアプローチを定義し、我々は次の2つのメソッドを定義し、1は、2つの数の和である、1番号2によって分割されています。

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

ここで、各パラメータの説明は次のとおりです。

パラメータ 説明
受信機 メソッドのメソッド名を含むオブジェクト。 あなたが同じクラスにサービス・メソッドを定義する場合、パラメータが自己です
methodNameの RPCメソッド呼び出し要求名。
paramArg パラメータ名とパラメータ・モード

あなたは二つのパラメータを入力する必要があり、次のサービス方法を検討し、inoutのパラメータおよびoutパラメータを理解するには:RETVAL、inoutParam、外部パラメータ:inParamとinoutParamを、機能は実装が完了した後に3の値を返します。

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)
])

第四段階 - オープンサービス

最後に、我々は派生クラスをインスタンス化し、サービスを開始するには、startメソッドを呼び出します。

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

myServer.start

次は、リクエストパラメータの説明です:

パラメータ 説明
サーバー名 サービス名は、あなたのお気に入りを取ることができます
骨壷:ルビー:ServiceNameはここ骨壷:ルビーは固定されていますが、あなたのサービスのためのユニークなのServiceNameを取ることができます
ホスト名 ホスト名を指定します
ポート Webサービスのポート

次に、スタンドアローンのサービスを作成するには、以上の工程を経ます:

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でリスナーを起動し、2つの方法公開しています。追加し、div要素を。

その後、これらのサービスの背景を行うことができます。

$ ruby MyServer.rb&

SOAP4Rクライアント

ルビーは、SOAP :: RPC ::ドライバー・クラスの開発SOAPクライアントを使用します。 次に、SOAP :: RPC :: Driverクラスを用いて詳細に見えます。

コールSOAPサービスは、次の情報が必要です。

  • SOAPサービスのURLアドレス(SOAPエンドポイントURL)
  • 名前空間(メソッド名前空間URI)サービスメソッド
  • サービスメソッド名とパラメータ情報

次に、我々は、上記のSOAPメソッドを呼び出すために、SOAPクライアントを作成するためのステップを取る:、div要素を追加します。

ステップ1 - インスタンスSOAPドライバを作成

次のように私たちは、それをSOAP :: RPC :: Driverクラスをインスタンス化するための新しいメソッドを呼び出すことができます。

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

以下はパラメータの説明です:

パラメータ 説明
なendPoint SOAPサービス接続URLアドレス
名前空間 SOAP :: RPC ::ドライバオブジェクトのすべてのRPCの名前空間。
soapAction SOAPAction HTTPヘッダーフィールド値について。 文字列は""デフォルトはnilですされている場合

ステップ2 - サービス・メソッドを追加

SOAP :: RPC ::ドライバーSOAPサービスメソッドを追加するために、我々は、例えば、SOAP :: RPC ::ドライバーを経由して、次のメソッドを呼び出すことができます。

driver.add_method(name, *paramArg)

以下はパラメータの説明です:

パラメータ 説明
名前 リモートWebサービスのメソッド名
paramArg リモートプログラムを指定するためのパラメータ

第三段階 - SOAPサービスを呼び出します

最後に、我々は、SOAPサービスを呼び出すために、SOAP :: RPC ::ドライバー・インスタンスを使用することができます。

result = driver.serviceMethod(paramArg...)

実際のメソッド名は、メソッドのパラメータリストのためparamArg、SOAPサービスをserviceMethod。

上記の手順に基づいて、我々は次の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のWebサービスを導入の上。 :あなたがもっと知りたい場合は、正式な文書閲覧できますWebサービスのルビーを