Comments
Description
Transcript
SOAP over SMTP を用いた 非同期型メッセージングの提案と評価
情報処理学会第68回全国大会 3K-6 SOAP over SMTP を用いた 非同期型メッセージングの提案と評価 森 晃† 南山大学 大学院 数理情報研究科† 青山 幹雄‡ 南山大学 数理情報学部 情報通信学科‡ 1. はじめに 2.2. SOAP メッセージの識別 Web サービスは同期型双方向メッセージングを 基本とする.長時間処理が必要なサービスでは,サ ービス要求のメッセージを送信後に長時間の待ち合 わせが必要となる.本研究では,SOAP (Simple Object Access Protocol) over SMTP (Simple Mail Transfer Protocol)により,要求に対する応答を待 機することなく連続して要求が送信可能な一方向と 双方向の非同期型メッセージングの方法を提案する. 非同期型のメッセージングでは,要求と応答の対 応関係がないため,SOAP メッセージに ID を付加 し対応関係を明確にする以下の方法が考えられる. (1) SMTP ヘッダへの Message-ID の付加 (2) SOAP ヘッダへの ID 要素の付加 識別方法の特徴を表 1 に示す.本稿では,(2)の SOAP ヘッダへの ID 付加を用いる.(2)には,トラ ンスポートの問題であるメッセージの識別を上位プ ロトコルである SOAP 内で管理しなければならな いという短所はあるが,リクエスト/レスポンス以 外の任意の対応関係を表現できる. 表 1:メッセージ識別方法の性質 2. 非同期型 Web サービスの実現 2.1. SOAP over SMTP による非同期型メッセ ージング 以下の理由により非同期型メッセージングのトラ ンスポートプロトコルに SMTP を用いる[1]. (1)SMTP ヘッダ (1) 一方向のメッセージングが可能 (2) 企業間などでファイアウォールを透過 (3) 既存のメールサーバを利用可能 (2)SOAP ヘッダ メール サーバ SOAP over SMTP プロトコルヘッダ (メールヘッダ) To:[email protected] SOAPエンベロープ SOAPヘッダ クライアント アプリケーション <From>○○○</From> <ID>△△△</ID> SOAPボディ Web サービ ス A Web サービ ス B Asynchronous Messaging with SOAP over SMTP and its Evaluation † Akira Mori, Graduate School of Mathematical Sciences and Information Engineering, Nanazan University ‡ Mikio Aoyama, Faculty of Mathematical Sciences and Information Engineering, Nanzan University HTTPSender SOAP over HTTP 同期型 Webサーバ SOAPoverSMTP Apache James TransportListener (Mailet) Axis Engine SMTPSender メール サーバ Axis Engine Apache Axis Web サービ ス C 図 1:非同期型 Web サービスアーキテクチャ Handler Webサービス クライアント メールサーバ SOAP over SMTP を用いた一方向メッセージン グとして Apache Axis を拡張した SMTPSender (Handler)を実装した. 図 2 の上段に既存の同期型メッセージング,下段 に提案する非同期型の一方向メッセージングを示す. プロバイダ ネット ワーク 短所 SOAP のセキュリテ ィメカニズムで保護 されない トランスポートの問 題であるメッセージ 識別を上位プロトコ ルで管理 3. 一方向メッセージングの実現 クライアントアプリケーション Web サービス間のメッセージ通信として SOAP over SMTP を実現する.SOAP over SMTP の非同 期メッセージングを図 1 に示すアーキテクチャで実 現する.Web サービスプロバイダとしてメールサ ーバを使用する.電子メールと同様に Web サービ ス用のメールアドレスを指定して SOAP メッセー ジを送信することで,プロバイダが提供するサービ スを利用する. クライアント 長所 SOAP と独立にトランス ポート上でメッセージ識 別が可能 一対多の対応関係,リク エスト/レスポンス以外の 関連のあるメッセージの 対応関係を表現可能 非同期型 図 2:一方向メッセージング SMTPSender は各 Handler で処理された SOAP メッセージのバインディングヘッダに SMTP ヘッ ダを付加し,Web サービスを提供するメールサー バにリクエストメッセージを送信する.SOAP メッ セージはメールサーバに配置した ApacheJames が 1-259 情報処理学会第68回全国大会 受信し,プロバイダ側の Axis に渡される.Axis は このメッセージを解読し Web サービスを利用する. 3 つの要素を含めたコールバック型の双方向型メ ッセージングのアーキテクチャを図 3 に示す. Apache James James Apache SMTPSender Transport Listener Handler 1)要求・応答 2)メッセージ受信 メッセージのIDの Handler 照合・発信元の特定 Axis Webサービス 要求メッセージ 情報を保持 Axis Engine 3)イベント駆動による 応答の返信 (Mailet) MailServer クライアントアプリケーション 4)要求メッセージの 情報を保存 応答 メッセージ の送信 3)イベント駆動による 2)応答メッセージの問合せ 応答の返信 Apache Axis Axis Webサービス 1) 要求と応答の対応関係を ID,送信者情報によ り特定する Handler 2) メッセージ受信 Handler 3) イベント駆動により応答をクライアントに返 信する Handler POP 受信 (Mailet) MailServer(プロバイダ) (1)を用いた双方向メッセージングの実現には次 の要素が必要となる. POP 失敗 POP 失敗 MailServer(クライアント) 双方向メッセージングの実現には,次の 2 つの方 法が考えられる. Transport Listener 要求メッセージの送信 Axis Engine クライアントアプリケーション 4. 双方向メッセージングの実現 (1) コールバック型:プロバイダからの応答メッ セージによってクライアントのメッセージ受 信ハンドラを起動 (2) POP(Post Office Protocol)型:クライアントが 周期的にサーバからの応答メッセージを受信 Apache James Apache Handler 1)SMTPSender 図 4:POP 型双方向メッセージング 5. 非同期メッセージングの評価 5.1. 一方向メッセージング Apache Axis を拡張して,一方向メッセージング を行う処理時間の長いサービスを同期型と非同期型 で利用したときの利用効率を比較した.非同期型に よって,連続でサービスを利用した場合にクライア ントのサービス処理時間を大幅に削減し,効率のよ いサービス利用を可能にした. 5.2. 双方向メッセージング 提案した双方向型のメッセージングにより,要求 と応答の対応関係を明確にした非同期型メッセージ ングが可能となる.しかし,コールバック型はリア ルタイムな受信が可能な一方で,クライアントへの サーバ機能の追加による複雑化が問題となる.また, POP 型はサーバに対し複数回の問合せが必要とな るが,クライアントの構造がシンプルなため,負荷 の軽減や構築の容易さの点で有効であると考える. 6. 関連研究 Apache Axis 図 3:コールバック型双方向メッセージング 送 信 時 に SOAP ヘ ッ ダ に WS-Addressing の MessageID,From 要素を付加し,4)で要求メッセ ージの情報を一時的に保存する.応答メッセージを 2)が受信し,1)で要求メッセージとの照合を行い, 3)で発信元へイベント駆動により応答を返信する. (2)を用いた双方向メッセージングの実現にはコ ールバック型の 3)の要素に加えて,応答メッセー ジが着信しているか否かをクライアント側のメール サーバに問い合わせる Handler が必要となる. (2)を用いた POP 型双方向メッセージングのアー キテクチャを図 4 に示す.クライアントは 1)で要 求メッセージを送信後,2)でメールサーバに対して 応答メッセージの有無を周期的に問い合わせる.送 信メッセージの ID に対応する応答メッセージが着 信している場合に 3)で発信元へイベント駆動によ り応答を返信する.未到着の場合は,POP により 周期的に問合せを繰り返す. 非同期型 Web サービスの実現方法として WSDL を拡張し,非同期型のトランスポートをバインディ ングしたスタブを生成する WSIF(Web Service Invocation Framework)がある[2].WSDL から直 接サービスを呼び出し SOAP に非依存な非同期型 メッセージングを実現しているが,独自のバインデ ィングを用いるため互換性が問題となる. 7. まとめと今後の課題 本稿では,非同期型 Web サービスを実現するた めに一方向,双方向のメッセージング方法を提案し た.今後は提案した 2 つの双方向メッセージング方 法を設計,実装しその利便性を評価する. 参考文献 [1] 森 晃, 青山 幹雄, SMTP を用いた非同期型 Web サ ービスの提案と評価, 情報処理学会ソフトウェア工 学研究会, Vol.2005-SE-147, Mar. 2005, pp.73-80. [2] M.Narayanan, Approaches to Asynchronous Web Services, 2003, http://www.128.ibm.com/ developeworks/webservices/library/ws-asoper. 1-260