トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション
株式会社ヤザワ
矢沢久雄
第5回 XML Webサービスは、.NETの目玉商品なんです!
はじめに
XML Webサービスとは?
シンプルなXML Webサービスのサンプル
XML Webサービスを呼び出すWindowsアプリケーションの作成
SOAPプロキシの役割
おわりに

はじめに

マイクロソフトのWebページで「.NETとはXML Webサービスのためのプラットフォームである」と定義していることからもわかるように、XML Webサービスは.NETの目玉商品です。Visual Studio .NETを使って作成できるプログラムの種類の中で、XML Webサービスだけが唯一これまでにない新しいものです。今回は、XML Webサービスの作成方法と、それをWindowsアプリケーションから利用する方法を説明します。

XML Webサービスとは?

Webサーバーによって提供されるサービス全般を「Webサービス」と呼びます。WebページもWebサービスの一種です。Webサービスの中で、他のマシンから呼び出せるプログラムを提供するものをマイクロソフトの用語で「XML Webサービス」と呼びます。XML Webサービスによって、インターネットで接続されたコンピュータがプログラム的に連携できるようになります。他社のWebページを人間が閲覧し、その情報を自社のコンピュータに手作業で入力するのではなく、他社のコンピュータの情報を自社のコンピュータのプログラムが直接取得できるのがXML Webサービスです。
XML Webサービスは、SOAP(Simple Object Access Protocol、ソープ)と呼ばれる新しい汎用プロトコルで呼び出されます。SOAPは、XML Webサービスの呼び出しと戻り値の情報をXML形式で表す仕様です。SOAPは、下位のプロトコルに非依存ですが、Webページと同じHTTPが使われるのが一般的です。Webページを閲覧できる企業間であれば、SOAPを使ってXML Webサービスを呼び出すことができます(図1)。

図1 XML Webサービスによる企業間の連携

シンプルなXML Webサービスのサンプル

.NETでは、インターネットで呼び出せる関数(メソッド)を持ったクラスとしてXML Webサービスを作成します。Visual Studio .NETを使えば高機能なXML Webサービスを効率的に作成でき、ステップ実行してデバッグできますが、シンプルなXML Webサービスならテキストエディタだけを使って作成できます。
リスト1は、パラメータに与えられたテキストファイルの内容を戻り値として返すGetTextFileメソッドを持ったMyWebServiceクラスというXML Webサービスです。ここでは、プログラミング言語としてVisual Basic .NETを使っています。.NETに対応した他のプログラミング言語でXML Webサービスを作成することもできます。

リスト1 テキストファイルの内容を返すXML Webサービス(こちらをクリック)

リスト1をMyWebService.asmxのようにファイル名の拡張子を.asmxとして保存し、それを.NET FrameworkがインストールされたWebサーバーの仮想ディレクトリに配置すれば、XML Webサービスを公開できます。.NETではレジストリが使われないので、XML Webサービスの配布も簡単なものです。まるでHTMLファイルを配置するような手軽さです。
参考までにSOAPの構造もお見せしておきましょう。リスト2は、パラメータに“C:\MyFile.txt”を与えてGetTextFileメソッドを呼び出したときのHTTPリクエストの内容です。リスト2は、それに対するHTTPレスポンスです。XML形式のテキストになっていることがわかりますね。この構造を取り決めている仕様が、すなわちSOAPです。

リスト2 XML Webサービスの呼び出し(こちらをクリック)

リスト3 XML Webサービスの戻り値(こちらをクリック)

XML Webサービスを呼び出すWindowsアプリケーションの作成

先に作成したXML Webサービスを呼び出すWindowsアプリケーションを作成してみましょう。Visual Studio .NET を使えば、あたかもXML Webサービスが同じマシン上に存在するクラスライブラリであるかのように呼び出せます。
「プロジェクト」メニューから「Web参照の追加」を選択すると図2に示したウインドウが表示されます。「アドレス」欄にXML WebサービスのURLを指定して[Enter]キーを押し、[参照の追加]ボタンをクリックすれば、XML Webサービスを呼び出す準備は完了です。フォームにテキストボックスとボタンを貼り付け、ボタンをダブルクリックしてリスト4に示したコードを記述してアプリケーションの完成です(localhostはMyWebServiceのネームスペースです)。SOAPを意識する必要などありません。驚くほど簡単ですね! 実行結果を図3に示します。

図2 XML Webサービスへの参照設定

リスト4 XML Webサービスを呼び出すコード(こちらをクリック)

図3 Windowsアプリケーションの実行結果

●SOAPプロキシの役割

簡単にXML Webサービスを呼び出せるのは、SOAPプロキシと呼ばれるコードのお陰です。Visual Studio .NETでXML Webサービスへの参照設定を行うと、SOAPプロキシが自動生成されます。SOAPプロキシは、XML Webサービスと同じクラス名で同じメソッドを持ったクラスです。プログラマは、同じマシンに存在するSOAPプロキシをXML Webサービスだと思って呼び出せばよいのです。SOAPの仕様に従った実際のXML Webサービスの呼び出しは、SOAPプロキシが行ってくれます。プロキシとは、「代理」という意味です。SOAPプロキシは、XML Webサービスの代理です(図4)。

図4 SOAPプロキシが間接的にXML Webサービスを呼び出す

参考までに、SOAPプロキシのコードを見ておきましょう(リスト5)。確かにXML Webサービスと同じGetTextFileメソッドを持ったMyWebServiceクラスとなっていることがわかりますね。

リスト5 自動生成されたSOAPプロキシの内容(一部抜粋)(こちらをクリック)

●おわりに

この連載は、今回で最終回です。PASSJ会員の皆さんに「.NETがわかった!」とか「.NETを活用したシステムのアイディアを思いついた!」などと言っていただけたなら、筆者として至上の喜びです。.NETは登場したばかりのテクノロジーであり、皆さんの参考となる事例がまだまだ少ないかもしれません。そうであっても「.NETの実績を待ってから採用を検討したい」などと悠長に考えていてはいけないと思います。これまでに登場した様々なテクノロジーに対して常に後を追っていたというのは、もうウンザリでしょう。今すぐに.NETに取り組めば最先端の技術者になれます。その方が楽しいに決まってます。
連載をお読みいただき、ありがとうございました。またお会いしましょう!

PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.