@IT|@IT自分戦略研究所|QA@IT|イベントカレンダー+ログ | ||
Loading
|
@IT > Webサービスを実現するhp netaction > 第4回 BTPによるトランザクションの実現 |
|
|
|
2002/3/23
「Webサービスを実現するhp netaction」も最終回を迎えた。今回は、第1回「Webサービスの課題とその解決を探る」でも解説したWebサービスにおけるビジネストランザクションに再度触れることにしよう。この記事を読んでいただくことによって、「HP Web Services Transaction」のWebサービスにおける役割が、より具体的に見えてくるに違いない。
「トランザクション」は「処理」という意味である。 例えば、海外出張のための手配(飛行機、ホテル、レンタカーの予約)を例に説明しよう。
飛行機、ホテル、レンタカー予約という3つの予約処理の集合が1つのトランザクションということになる。 3つの予約処理がすべて正常に処理されることでビジネス的に意味のあるものになる。各処理がWebサービスとして実装されている場合に、この「海外出張のための手配」をトランザクション(ACID特性を持つ)として管理するためのプロトコルが、BTP(Business Transaction Protocol)である。BTPおよびトランザクションのACID特性に関しては「第1回 Webサービスの課題とその解決を探る」で詳細に解説しているので、こちらを参照していただきたい。
ビジネストランザクションは以下のような特徴、あるいは制約を持っている。
「確実に処理ができなければならない」という点では従来のトランザクションと共通するが、2.以降は異なる部分である。これらの点についてBTPがどのような形で対応しているのかについて具体例を交えて解説していこう。
最初にBTPを構成するコンポーネントについて説明しよう。ここでは、例として「海外出張のための手配」を使って説明をする。 ■Case1(Atomを使ったパターン)
ここで、Atomについては「第1回 Webサービスの課題とその解決を探る」に解説をゆずる。Case1の場合は、すべての予約処理が正常にできた場合のみトランザクションが成功する。また、1つでも予約が取れなかった場合にはトランザクションをロールバックさせる必要がある。 では、HP Web Services Transactionでこのビジネストランザクションを実装した場合について説明しよう。ポイントとなるのは、信頼性および原子性を確保するために2フェーズコミットを行うということである。HP Web Services Transactionは、5つの基本コンポーネントで構成され、2フェーズコミットを実現する。 では、基本的なコンポーネントおよびプロトコルについて、図示しながら説明しよう。 下図の右側がサービスを提供する(サーバ・サイド)だ。Case1の例を当てはめると、飛行機、ホテル、レンタカーの予約サイトということになる。 左側がサービスを利用する(クラアイント・サイド)であり、各サービスを利用し「海外出張のための手配」を実行する。
さて、ここまでかなり詳細に説明したが、要約するとSOAPのヘッダに埋め込んだ制御情報を使って2フェーズコミットを実現し、トランザクションの処理をより確実にするというのがHP
Web Services Transactionの機能である。 また、Webサービスのエリアに存在するオーケストレーション用の言語(WSCL*、WSFL、XLANG)と共存するプロトコルであるという点も理解していただきたい。 HPがW3Cに提唱中の言語。WSCLを使用してWebサービスのインターフェイスを指定し、サービス間で対話形式の処理を行うことができる。UDDIを使用しないでサービス間のインターフェイスを確立できる意味では、UDDIと技術的に補完関係にある。 ■Case2(Cohesionを使ったパターン)
実際のビジネスで「海外出張の手配」をする場合にはCase1のような単純なケースはむしろ稀であると思われる。実際には複数の航空会社、ホテル、レンタカーから最適でかつ可能な組み合わせの中から1つを選ぶという形が大半だ。このような場合には上図のようなCohesionを使ったパターンを使うことができる。 「海外出張の手配」をするという立場から見ると、TrueまたはFalseに一意に決まるのでAtomをコントロールすることになる。しかし、Atomを構成する各処理はCohesionとして実装される。つまり、条件に合うフライト、ホテルまたはレンタカーであれば最低どれか1つの予約ができればAtomはTrueということになるのである。 では、Cohesionを使ったパターンにおける、トランザクションが成立する場合、しない場合のHP Web Services Transactionのコンポーネントの役割を整理してみよう。 ●トランザクションが成立する場合 ●トランザクションが成立しない場合
いままでのケースでは基本的にトランザクションを管理するCoordinatorと参加するParticipantという2つの役割しか示さなかった。より、複雑なビジネストランザクションに対応する機能として、任意のParticipantが自らCoordinatorとしてAtomあるいはCohesionを管理することができる。 例えば、航空会社が航空券の決済にカード会社の決済サービスと連携するというような場合には有効なパターンだ。
最後に、今回を含め4回に渡って解説した内容を整理する意味でWebサービスの開発手順についてまとめておく。
◆ HP Web Services Transactionの製品リリースは 2002年5月を予定している。 それまでは、HPのWebサイトで詳細な情報を入手することができる。また、ユーザー登録すれば、e-mailで最新の情報を受け取ることができる。 ぜひ以下のWebサイトにアクセスして、HPのWebサービス構築のミドルウェア群の情報を入手してほしい。
|
|