XML Web サービスを使って航空券とホテルの擬似予約をしてみよう!
開発環境: Visual Studio 2003
XML Web サービス対応として、航空券とホテルの擬似予約をできる XML Web
サービスサイトを見つけました。(もう提供されていないようです。)
これは、次のような XML Web サービスを試験的に提供しているもので、インターネット上の XML Web
サービスにアクセスすることができます。
.NET での Windows.Forms
アプリケーションの作り方、メソッドの解説、サービス利用手順など丁寧に解説されているので、同じものを作るのであれば、30分程度でアプリの作成と動作確認までできると思います。(下図)
注意:
パイロット版ということなので、変更がある可能性があります。
このサイトで解説されているコードは基本的な動作のコードなので、エラー処理はカットされています。そのほうが理解するうえではわかりやすくていいのですが、そのままだと日時、名前などでフォーマットエラーなどの例外があがる可能性があります。
トラベル Ver. 1.0
初めてインターネット上の XML Web サービスにアクセスしたので、結構感動ものですね。
何しろ、XML も SOAP も うらのデータベースも気にすることなく、アプリが組めてしまうというのが、.NET のすごいところですね。
もうちょっと、この Web Service で遊んでみようと思っています。
試験運用しているサイトに感謝!
とりあえずはご報告まで。2002/07/03
トラベル Ver. 2.0 2002/07/07
航空券とホテルの擬似予約をできる XML Web
サービスサイトでサンプルコードとして解説されているものは、フライトだけだったので、ホテルの予約の確認も追加してみました。
処理のログはクライアント側でも確実に記憶しておかないとやばいので、普通ならクライアント側でもデータベースに書き込むのでしょうが、そこまでやる気はないのでとりあえずデータセットにオンメモリでデータを記憶するようにしました。
何も考えずに簡単に動作を確かめてみようと作り始めたので、提供されている XML Web
サービスのメソッドとデータ構造にべったりのつくりになっています。また、なるべく画面が複雑にならないようにしたため、実際の使い方と画面がマッチしてません。
やはり、分析して、画面設計からやらないと、だめってことでしょうね。
まあ、このアプリを作ることが目的ではなく、XML Web サービスって使えるの?を確かめてみるためのものなので、その辺は目をつぶっています。
とりあえず、次のようにある程度の機能を作りました。
この画面は、ツアー情報を扱います。また、ツアー情報の取得ボタンを押すことにより、ホテル情報、フライ情報のデータグリッドにツアー情報を表示してます。
無事、ハワイのホテルを予約して、予約確認をしたところです。
これはフライトの検索画面です。
フライト検索は、目的地を適当に選んでもそれなりに返してくれます。ただし、時刻を 12:00 で検索すると、08:00
のフライトはリストされないようです。出発時刻は 0時を指定しておくと引っかかりやすくなります。航空会社は指定せずで検索可能です。シカゴには結構飛んでるんですね。検索は、ほとんど一瞬で帰ってきます。
フライトも予約OK!これはフライトの予約確認画面です。
これは、ログインアカウント情報とこれまで登録したツアー情報の一覧を確認したところです。
ここまでの感想としては、XML Web サービスにアクセスするとこは非常に簡単に組めます。
ただ、これを作っていて感じたのは、ビジネスロジックの部分はやっぱり難しいってことですね。今回のバージョンでは、複数ホテル、複数フライトの同時予約は、画面設計が単純にできないので対応してません。これをやろうと思うと結構大変ですね。ましてや、実際のトラベルエージェントでは、複数のフライト、複数のホテルを扱えないとだめだし、さらにレンタカー、電車の予約、ビザ、保険、クレジットカードの扱いなどなど、こんな簡単な画面ですむはずはないので、やはりビジネスロジックを組む部分はXML
Web サービスになったとしても、それなりに面倒だと思います。あとは、このようなトラベルエージェントのユースケースに対していかにマッチするインターフェースを提供できるかどうか、XMLサービスの提供側の設計がかなり重要になるのではないでしょうか。
あと、当たり前のことですがクライアント側でプログラムを組む際に、注意しないと不要なクエリが発生してしまうので、なるべくサーバ側に負荷をかけないように作らないといけないでしょうね。
この程度のアプリを作って遊んでいる分にはほとんど即時に結果が返ってきますが、実際の世界では本当にそれなりのパフォーマンスを出せるかどうかですね。
ソースの公開は、エラー処理はさぼっているのと、同時複数予約対応してないのと、どうも画面が気に入らないので、もう少しまともになったらですね。。。。いつになることやら。。。。
1つ特筆するところは、同じことをVC++ で作っていたら死んでたでしょう。XML Web
サービスもろくに知らなかった私が2日ちょっとでこのぐらいのものを組めるというのは驚異的です。.NET・C#は、良くできている!