Ruby-web-services
Rubyを使用したWebサービス-SOAP4R
SOAPとは何ですか?
Simple Object Access Protocol(SOAP)は、XMLおよび通常(必ずしもではないが)HTTPに基づくクロスプラットフォームで言語に依存しないRPCプロトコルです。
XMLを使用してリモートプロシージャコールを行う情報をエンコードし、HTTPを使用してその情報をネットワークを介してクライアントからサーバーに、またはその逆に転送します。
SOAPには、COMやCORBAなどの他のテクノロジーに比べていくつかの利点があります。たとえば、比較的安価な展開とデバッグのコスト、拡張性と使いやすさ、さまざまな言語とプラットフォームの実装の存在などです。
詳細については、簡単なチュートリアルリンク:/soap/index [SOAP]を参照してください。
この章では、RubyのSOAP実装(SOAP4R)に精通しています。 これは基本的なチュートリアルであるため、詳細が必要な場合は、他のリソースを参照する必要があります。
SOAP4Rのインストール
SOAP4Rは、中村浩によって開発されたRubyのSOAP実装であり、以下からダウンロードできます-
注-このコンポーネントが既にインストールされている可能性があります。
Windowsで作業している場合は、上記の場所からzipファイルをダウンロードし、_ruby install.rb_を実行して標準のインストール方法を使用してインストールする必要があります。
SOAP4Rサーバーの作成
SOAP4Rは2種類のサーバーをサポートしています-
- CGI/FastCGIベース(SOAP :: RPC :: CGIStub)
- スタンドアロン(SOAP :: RPC:StandaloneServer)
この章では、スタンドアロンサーバーの記述について詳しく説明します。 以下のステップは、SOAPサーバーの作成に関係しています。
ステップ1-SOAP :: RPC :: StandaloneServerクラスを継承する
- 独自のスタンドアロンサーバーを実装するには、次のように_SOAP
- StandaloneServer_の子になる新しいクラスを作成する必要があります-
- 注-FastCGIベースのサーバーを作成する場合は、_SOAP
- RPC :: CGIStub_を親クラスとして使用する必要があります。残りの手順は同じです。
ステップ2-ハンドラーメソッドの定義
2番目のステップは、Webサービスメソッドを作成することです。これを外部に公開したいです。
これらは、単純なRubyメソッドとして作成できます。 たとえば、2つの数字を追加し、2つの数字を分割する2つの方法を書きましょう-
ステップ3-ハンドラーメソッドの公開
次のステップは、定義済みのメソッドをサーバーに追加することです。 _initialize_メソッドは、次の2つのメソッドのいずれかでサービスメソッドを公開するために使用されます-
ここにパラメータの説明があります-
Sr.No. | Parameter & Description |
---|---|
1 |
receiver methodNameメソッドを含むオブジェクト。 methodDefメソッドと同じクラスでサービスメソッドを定義します。このパラメーターは_self_です。 |
2 |
methodName RPC要求のために呼び出されるメソッドの名前。 |
3 |
paramArg 与えられた場合、パラメーター名とパラメーターモードを指定します。 |
inout_または_out_パラメーターの使用方法を理解するには、2つのパラメーター(inParamおよびinoutParam)を取り、1つの通常の戻り値(retVal)と2つの追加パラメーターを返す次のサービスメソッドを検討してください:_inoutParam_および_outParam-
今、私たちは次のようにこのメソッドを公開することができます-
手順4-サーバーの起動
最後のステップは、派生クラスのインスタンスを1つインスタンス化し、 start メソッドを呼び出してサーバーを起動することです。
ここに必要なパラメータの説明があります-
Sr.No. | Parameter & Description |
---|---|
1 |
ServerName サーバー名、最も好きなものを与えることができます。 |
2 |
ここで、_urn:ruby_は定数ですが、このサーバーに一意のServiceName名を付けることができます。 |
3 |
hostname このサーバーがリッスンするホスト名を指定します。 |
4 |
port Webサービスに使用される使用可能なポート番号。 |
例
さて、上記の手順を使用して、1つのスタンドアロンサーバーを記述しましょう-
実行されると、このサーバーアプリケーションは_localhost_でスタンドアロンSOAPサーバーを起動し、port 8080でリクエストをリッスンします。 _add_と_div_という1つのサービスメソッドを公開します。これらのメソッドは2つのパラメーターを取り、結果を返します。
今、次のようにバックグラウンドでこのサーバーを実行することができます-
SOAP4Rクライアントの作成
- _SOAP
- RPC :: Driver_クラスは、SOAPクライアントアプリケーションの作成をサポートします。 この章では、このクラスについて説明し、アプリケーションに基づいてその使用方法を示します。
以下は、SOAPサービスを呼び出すために必要な最低限の情報です-
- SOAPサービスのURL(SOAPエンドポイントURL)。
- サービスメソッドの名前空間(メソッド名前空間URI)。 *サービスメソッドとそのパラメーターの名前。
次に、上記の例で定義された_add_および_div_という名前のサービスメソッドを呼び出すSOAPクライアントを作成します。
SOAPクライアントを作成する主な手順は次のとおりです。
手順1-SOAPドライバーインスタンスの作成
- 次のように新しいメソッドを呼び出して、_SOAP
- RPC :: Driver_のインスタンスを作成します-
ここに必要なパラメータの説明があります-
Sr.No. | Parameter & Description |
---|---|
1 |
接続するSOAPサーバーのURL。 |
2 |
nameSpace
|
3 |
soapAction HTTPヘッダーのSOAPActionフィールドの値。 nilの場合、これはデフォルトで空の文字列 ""になります。 |
ステップ2-サービスメソッドの追加
- SOAPサービスメソッドを_SOAP
- RPC :: Driver_に追加するには、_SOAP :: RPC :: Driver_インスタンスを使用して次のメソッドを呼び出します-
ここにパラメータの説明があります-
Sr.No. | Parameter & Description |
---|---|
1 |
name リモートWebサービスメソッドの名前。 |
2 |
paramArg リモートプロシージャのパラメータの名前を指定します。 |
ステップ3-SOAPサービスを呼び出す
- 最後の手順は、次のように_SOAP
- RPC :: Driver_インスタンスを使用してSOAPサービスに請求することです-
ここで、_serviceMethod_は実際のWebサービスメソッドであり、_paramArg …_はサービスメソッドを渡すために必要なリストパラメーターです。
例
上記の手順に基づいて、次のようにSOAPクライアントを作成します-
さらに読む
Rubyを使用したWebサービスの非常に基本的な概念だけを説明しました。 さらにドリルダウンする場合は、https://www.ruby-doc.org/stdlib/libdoc/soap/rdoc/indexl [Rubyを使用したWebサービス]で詳細を確認できる次のリンクがあります。