豊田 孝
本連載ではこれまで,次のような技術項目を学習してきました。
- クラスはWebサービスとしてインターネットに公開できる
- Webサービスは,業界標準言語であるWSDLで表現されたクラスである
- HTTP,XML,SOAPなどの標準プロトコル技術は隠ぺいされる
- クラスの定義・実装ではVisual Studio .NETやVisual C# .NETなどの複数の言語が利用できる
- Exchanging messages(メッセージ交換機能)
- Describing Web services(Webサービスの説明機能)
- Publishing and discovering Web service descriptions(Webサービスの公開と発見機能)
これまでの連載では,これら3つの機能のうち,「Webサービスの公開と発見機能」については一切触れていませんでした。この機能は,一般にはUDDIと呼んでいます。UDDIは,Universal Description,Discovery and Integrationの頭文字からできています。具体的な説明は後ほど行います。
本日は,米国ではすでに開発が完了したといわれるWindows Server 2003プラットフォーム(評価コピービルド3718)にVisual Stuido .NET Version 2003開発環境(バージョン7.1.2235)をインストールし,Webサービスと米Microsoftの関係を具体的に検討してみることにします。開発環境には,バージョン1.1.4322という.NETフレームワークが組み込まれています。
ほとんどの方はこれらの環境をお持ちでないでしょうから,“Microsoft社はどんなことをことを考えているのか”程度の軽い気持ちでお読みください。
Windows .NET Server 2003について
もし,みなさんのお手元にWindows Server 2003があるようでしたら,こちらのページからNo9ListNameSpaces.exeというサンプル・コードをダウンロードし,実行してみるとよいでしょう。詳細な説明は省略いたしますが,表面的には,目を見張るような変更はありません。どちらかといえば,WebサーバーをはじめとするWeb関連サービス・プロセスをユーザーが自己責任でインストールする方針が打ち出されています。必要な機能をインストールしていくと,管理ツール(名前空間番号47)がどんどん増えていきます。ぜひダウンロードし,Windows 2000 ServerとWindows Server 2003それぞれの環境から返される情報を比較してみてください。比較する際には,表面上には見えない,オブジェクト数やメソッド数の増減に注目するとよいでしょう。
Visual Studio .NET 2003について
Visual Studio .NET 2003は,“.NETフレームワーク機能を効率的に利用するための開発ツール”という本質的な役割は変わりません。こちらも一見すると大きな変更がないような印象を受けますが,すでに言及した「Webサービスの公開と発見機能」と“Webサービスとはそもそも何なのか?”へのMicrosoft社の基本認識がより鮮明に表明されています。それでは,この基本認識を具体的なサンプル・プログラムを作りながら,検討してみましょう。
サンプル・プログラムの作成
ここでは,Webサービスを利用する単純なコンソール・アプリケーションを作成してみます。Visual Studio .NET 2003などの開発ツールを使用する最大の利点は,開発効率の向上です。自分のアプリケーションからインターネットに公開されているWebサービスを呼び出したい場合,使用している開発環境が利用できそうなWebサービス候補をリスト表示してくれると,アプリケーションの開発効率は大幅に改善します。Visual Studio .NET 2003は,「Web参照の追加」という機能を用意し,Webサービス発見プロセスを効率化しています(図1[拡大表示])。この画面は,「Web参照の追加」ボタンをクリックした直後の様子を示しています。ベータ版ということもあり,画面情報はまだ英文のままですが,この画面は「Webサービスの発見」を支援する機能を提供していることが分かります。注目して欲しいのは,ブラウズ対象カテゴリが4種類あることです。以前のVisual Studio .NETでは4種類のカテゴリは用意されていませんでした。
ブラウズ対象カテゴリを4種類用意しているということは,単純に考えると,Webサービスの利用方法や公開方法が4種類あるということを意味します。
最初のカテゴリは,ローカル・マシン上のWebサービスを発見する機能です。これはCOMクラスを呼び出すような感覚でWebサービスを使用する,と考えると分かりやすいと思います。
第2のカテゴリは,ローカル・ネットワーク上のUDDIサーバーに登録されているWebサービスを発見する機能です。こちらは,DCOM(分散COM)クラスのWebサービス化と考えると分かりやすいと思います。
第3と第4カテゴリは,インターネット上のUDDIサーバーに登録されているWebサービスを発見する機能です。考え方としては,UDDI Business Registryという表現が使われているように,WindowsシステムレジストリのCOMサーバー登録情報のインターネット空間への移し変え,と考えてしまうと分かりやすいと思います。
文章だけでは概要をつかみにくいでしょうから,まずは第1カテゴリ機能を起動してみます(図2[拡大表示])。ご覧のように,前回作成した2つのWebサービスを発見しました。それではここで,Visual C# .NETで定義・実装したWebサービスを選択してみます。画面は図3[拡大表示]のように変化します。
本連載をここまでお読みいただいている皆さんは,この画面の背後で行われている動作を理解できるはずです。それではここで「サービスの説明」リンクをクリックしてみましょう(図4[拡大表示])。以前は,WSDL定義情報が表示されてきましたね。
以前と異なり,WSDL定義情報でなく,その解析結果が返されてきます。この画面でマウスを右クリックすると,ソース・コード表示機能が選択可能となり,WSDL定義情報を見ることができます。このあたりで画面右側にある「参照の追加」ボタンをクリックしておきます。
今度は,インターネット空間に公開されているWebサービスを発見する第3カテゴリをクリックしてみましょう。いくつかの操作を行っていくと,最終的に図5[拡大表示]のような画面が表示されます。
画面には「Service Description」リンクがありますから,クリックすると図6[拡大表示]のような画面が表示されます。メソッド・シグネチャのLoadColors() As ArrayOfStringなどから推測すると,このWebサービスはVisual Basic .NETで実装されているような印象を受けます。ここではこれ以上の技術的な詳細は省略しますので,UDDI登録経由でのWebサービス公開と発見の大きな流れを把握するとよいでしょう。それではここで,「参照の追加」ボタンを押しておきましょう。
以上の操作により,プロジェクトには2つのWebサービスへの参照が設定されたことになります。それではここで,開発環境が用意している“クラスビュー”という機能を呼び出してみます(図7[拡大表示])。
ご覧のように,インターネット空間に公開されているTextToImageクラスとローカル・マシン内のNo9ServiceCSクラスへの参照が設定されています。すでに説明したように,UDDIはインターネット上に公開されているWebサービス記述を発見し,統合するための機能です。図7を見ると分かるように,きちんと統合されています。TextToImageクラスを使用する場合,例えば,次のようなコードを記述します。
リスト1●公開するNo9csClassクラスをASMXファイルとは別のファイルに実装する |
using System; using ITPro10.com.teachatechie; namespace ITPro10 { /// <summary> /// Class1 の概要の説明です /// </summary> class Class1 { /// <summary> /// アプリケーションのメイン・エントリ・ポイントです /// </summary> [STAThread] static void Main(string[] args) { TextToImage ttm = new TextToImage(); string[] str = ttm.LoadColors(); foreach(string strout in str) { Console.WriteLine(strout.ToString()); } Console.ReadLine(); // // TODO: アプリケーションを開始するコードをここに追加してください // } } } |
図8●サンプル・プログラムの実行画面 |
私のシステム内で利用できる色名が表示されてきます。後日いろいろ試してみてください。なお,UDDIの仕様や実際の登録・運営に関しては,こちらのサイトを参照するとよいでしょう。IBMなどのUDDIサーバーのリンクも張ってあります。
本連載は以上で終了です。ご閲覧ありがとうございました。またどこかでお会いいたしましょう。失礼いたします。