君の瞳はまるでルビー - Ruby 関連まとめサイト

xmlrpc モジュールについて - 各種サーバクラスの選択方法

最終更新: 2015-03-31 (火) 21:53:22 (2274d)

xmlrpc モジュールについて

xmlrpc モジュールにはサーバクラスがいくつかあります。それぞれの違いと、選択のポイントを説明します。

サーバクラス

以下の3つのサーバがあります。

  1. XMLRPC::CGIServer
  2. XMLRPC::ModRubyServer
  3. XMLRPC::Server

大きな違いは XMLRPC::CGIServer と XMLRPC::ModRubyServer は Apache などの別の Web サーバを必要とします。 それに対して XMLRPC::Server は Web サーバの機能を単独で持っており、単独で全ての動作を完結します。

XMLRPC::CGIServer と XMLRPC::ModRubyServer は Web API のリクエスト毎に Web サーバから呼び出されて動作します。 この2つのクラスの serve メソッドは1つのリクエストだけを処理して終了します。

それに対して XMLRPC::Server クラスの serve メソッドは1度呼び出したら SIGHUP シグナルが飛んでくるまで停止しません。 動作中、いくつものリクエストを受け取り、その全てを処理します。

XMLRPC::CGIServer と XMLRPC::ModRubyServer の違いは、Web サーバへのプログラムの組み込み方の違いです。

選択のポイント

既存の Web サーバ上に配置して動作させるのか?単独で動作させるのか?

Web サーバをレンタルしていて、その Web サーバ上で稼動させようとしているのなら XMLRPC::CGIServer か XMLRPC::ModRubyServer を使うことになるでしょう。

独自の環境を作るとした場合は、2つの選択肢があります。

  1. Web サーバを立ててその上で動作させる。
  2. XMLRPC::Server を使って単独のプログラムとして動作させる。

XMLRPC::Server は WEBrick という Ruby 製のサーバ実装を使っています。テスト目的で使う分には良いと思いますが、よほどの理由が無い限り、Web サーバを立ててその上で動作させる方法が良いと思います。

どうしても単独のプログラムとして動作させたい場合は、必然的に XMLRPC::Server を使うことになります。

mod_ruby が使えるか?

Web サーバで動作させる場合、mod_ruby という モジュールを使えるかどうかが XMLRPC::CGIServer と XMLRPC::ModRubyServer のどちらを使うか の判断基準になります。

通常、CGI として Ruby を動かすと、リクエスト毎に ruby プロセスが起動します。しかし、mod_ruby を使うとリクエスト毎に ruby プロセスを起動せずに処理できるようになります。

mod_ruby が使える環境であれば XMLRPC::ModRubyServer を、使えない環境であれば XMLRPC::CGIServer を使うことになります。

コメント

本ページの内容に関して何かコメントがある方は、以下に記入してください。

コメントはありません。 コメント/xmlrpc/server/choise

お名前: