RubyのWebサービスアプリケーション - SOAP4R2024 年の最新の入門チュートリアル。このコースでは SOAPとは何ですか?,SOAP4Rインストール,SOAP4Rサービス,SOAP4Rクライアント, について学習できます。
シンプルオブジェクトアクセスプロトコル(SOAP、シンプル・オブジェクト・アクセス・プロトコルのために書かれたすべて)は、データを交換するためのプロトコル仕様です。
SOAPは、アプリケーションがHTTP経由で情報を交換することができるシンプルなXMLベースのプロトコルです。
シンプルオブジェクトアクセスプロトコルは、データを交換するためのプロトコル仕様で、WEB上で構造化された交換するように設計されたプロトコル、(下の標準一般化マークアップ言語のサブセット)、軽量、シンプルなXMLに基づいています情報を硬化させます。
:より多くのSOAPチュートリアルを参照してください/soap/soap-tutorialを 。
RubyアプリケーションのためのSOAPの実装によって開発されたSOAP4R中村宏。
SOAP4Rダウンロード: http://raa.ruby-lang.org/project/soap4r/ 。
注:あなたのルビー環境はすでにコンポーネントをインストールすることができます。
Linuxでは、あなたが宝石、次のコマンドを使用してコンポーネントをインストールすることができます。
$ gem install soap4r --include-dependencies
あなたは窓の開発環境下にある場合は、install.rbを実行することにより、zipファイルをダウンロードし、インストールする必要があります。
SOAP4Rは、サービスの二つの異なるタイプをサポートしています。
このチュートリアルでは、独立したSOAPサービスを構築する方法を紹介します。 以下のように実行します。
自分の別のサーバーを達成するために、あなたはSOAPで新しいクラスを記述する必要があります:: RPC :: StandaloneServerサブカテゴリー:
class MyServer < SOAP::RPC::StandaloneServer jajajajajajaja. end
注:サーバーベースのFastCGIを書きたい場合は、SOAP :: RPC ::のCGIStubクラスを拡張する必要があり、プログラムの残りの部分は変更されません。
次に我々は、Webサービスのアプローチを定義し、我々は次の2つのメソッドを定義し、1は、2つの数の和である、1番号2によって分割されています。
class MyServer < SOAP::RPC::StandaloneServer jajajajajajaja. # 处理方法 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&
ルビーは、SOAP :: RPC ::ドライバー・クラスの開発SOAPクライアントを使用します。 次に、SOAP :: RPC :: Driverクラスを用いて詳細に見えます。
コールSOAPサービスは、次の情報が必要です。
次に、我々は、上記のSOAPメソッドを呼び出すために、SOAPクライアントを作成するためのステップを取る:、div要素を追加します。
次のように私たちは、それをSOAP :: RPC :: Driverクラスをインスタンス化するための新しいメソッドを呼び出すことができます。
SOAP::RPC::Driver.new(endPoint, nameSpace, soapAction)
以下はパラメータの説明です:
パラメータ | 説明 |
---|---|
なendPoint | SOAPサービス接続URLアドレス |
名前空間 | SOAP :: RPC ::ドライバオブジェクトのすべてのRPCの名前空間。 |
soapAction | SOAPAction HTTPヘッダーフィールド値について。 文字列は""デフォルトはnilですされている場合 |
SOAP :: RPC ::ドライバーSOAPサービスメソッドを追加するために、我々は、例えば、SOAP :: RPC ::ドライバーを経由して、次のメソッドを呼び出すことができます。
driver.add_method(name, *paramArg)
以下はパラメータの説明です:
パラメータ | 説明 |
---|---|
名前 | リモートWebサービスのメソッド名 |
paramArg | リモートプログラムを指定するためのパラメータ |
最後に、我々は、SOAPサービスを呼び出すために、SOAP :: RPC ::ドライバー・インスタンスを使用することができます。
result = driver.serviceMethod(paramArgja.)
実際のメソッド名は、メソッドのパラメータリストのため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サービスのルビーを