Silverlight をインストールするには、ここをクリックします*
Japan変更|すべてのMicrosoft のサイト|サインイン
MSDN
|MSDN ライブラリ|デベロッパー センター|ダウンロード情報|開発ツール製品|コミュニティ|ご意見・ご要望|サイトマップ
MSDN Home > MSDN アカデミック アライアンス > 第 5 回:Visual C# による XML Web サービス入門

第 5 回:Visual C# による XML Web サービス入門

〜 Visual C# による .NET Framework プログラミング入門 〜

5.1 はじめに

2000 年 6 月に Microsoft 社から 「Microsoft .NET」 が発表されました。「Microsoft .NET」 は、Windows などの OS だけでなく、Microsoft 社が持つパッケージソフトやアプリケーションからインターネットサービスに至るまでを統合する環境です。「Microsoft .NET」 では、全ての情報機器がインターネットにつながっていることを前提とし、従来の単体のパソコンではなく、インターネット全体のアプリケーションやデータを必要に応じて利用できます。また、「Microsoft .NET」 においてサービス指向という概念が大きく取り入れられます。サービス指向とは、ユーザがいつでも、どこでも、どの端末からでも同様のサービスが受けられる環境を提供することです。サービス指向において、Microsoft 社は、XML を基盤とした XML Web サービスの展開を次世代 Web サービスとして掲げています。前章では、Visual C# を利用した ASP.NET による Web アプリケーションの作成を紹介しました。 ASP.NET は、Web アプリケーションの開発だけでなく、XML Web サービスの開発においても高い開発効率とハイパフォーマンスを実現します。そこで、本章では、XML Web サービスの概念から簡単な XML Web サービスの作成までを紹介します。また、XML Web サービスを理解する上で重要となる SOAP の概念を解説します。

5.2 XML Web サービスとは

5.2.1 Web サービスの概要

Web サービスとは、Web 上で利用可能なアプリケーションやサービスです。ポータルサイトは、Web サービスの代表例です。従来の Web サービスにおけるデータのやりとりは、利用者と Web サーバ間のみで行われます。結果は、HTML 形式でサービス利用者に返されるため、他の Web サービスと連携を取るのが困難でした。従来の Web サービスが、他の Web サービスと連携を取るには、サイト管理者が定期的に他のサイトから情報をもらい、更新するなどといった人間を介す必要がありました。そのため、他の Web サービスと連携を取るのが困難でした。従来の Web サービスの概念図を図 1 に示します。

図 1 従来の Web サービスの概念図

図 1 従来の Web サービスの概念図

5.2.2 XML Web サービスの概念

XML Web サービスとは、XML を基盤とした、Web 上で利用可能なサービスコンポーネントです。前項で解説したように従来の Web サービスでは、他の Web サービスとの連携が困難であったのに対し、XML Web サービスでは、データ記述言語である XML を利用することにより、他の XML Web サービスの連携が容易にできるようになりました。XML Web サービスが連携することにより、プログラム同士で自動的にやりとりができるようになり、人間を介す必要がなくなるため、維持管理コストが大幅に削減できます。また、XML Web サービスは、様々なWeb サービスと組み合わせることにより、サービス利用者に高品質かつ高精度な情報を提供できます。さらに、XML Web サービスの特徴には、プラットフォームに依存しないため、様々なハードウェア (PC、PDA など) で利用可能という点が挙げられます。XML Web サービスの概念図を図 2 に示します。

図 2 XML Web サービスの概念図

図 2 XML Web サービスの概念図

(1) XML Web サービスの活用例

XML Web サービスは、様々な場面で利用できます。例えば、レストランで食事を行う場合、従来の Web サービスでは、利用者は、まずレストラン予約サービスで目的のレストランに予約します。次に、目的のレストランまでの地図を地図表示サービスで取得します。最後に、交通量表示サービスにより、どの道路が目的地まで一番早く着くことができるかという情報をそれぞれ取得する必要がありました。しかし、XML Web サービスでこれらのサービスが実装されていれば、これらのサービスを統合した新しいお出かけサービスなどのサービスを開発することができます。つまり、XML Web サービスは、複数の XML Web サービスで取得したそれぞれの XML データを組み合わせて利用することにより、利用者は、単体の Web サービスでは不可能であったサービスまで受けることができます。そのため、利用者は、快適にサービスを受けることができるようになります。図 3 に XML Web サービスによる複数の Web サービスの利用例を示します。

図 3 複数の XML Web サービスの利用例

図 3 複数の XML Web サービスの利用例

5.2.3 XML Web サービスを実現する技術

XML Web サービスを実現する技術は、UDDI、WSDL、SOAPなどが挙げられます。 UDDI については、本項の (1) 、WSDL については本項の (2) 、SOAPについては本項の (3) で解説します。

(1) UDDI

UDDI (Universal Description, Discovery, and Integration) とは、XML Web サービスの登録や検索をするためのディレクトリサービスを提供するフレームワークです。Web 上には、XML Web サービスを検索するために、UDDI を利用し構築した UDDI レジストリやディレクトリサービスが存在します。ディレクトリサービスとは、Web サービスを検索するための仕組みの総称です。UDDI レジストリは、XML Web サービスが Web 上のどこにあるのかなどを管理します。そのため、ユーザは、UDDI レジストリやディレクトリサービスに登録された情報を利用することで目的とする XML Web サービスを容易に見つけ出すことができます。つまり、UDDI は、サービス利用者とサービス提供者の仲介役といえます。例えば、Web 上に存在する複数の XML Web サービスを組み合わせて、より高品質なサービスを構築する場合、部品となる XML Web サービスを検索するために UDDI を利用します。UDDI は、図 4 に示すような仕組みで Web 上の様々な XML Web サービスの情報を管理します。図 4 に UDDI の仕組みを示します。

図 4 UDDI の仕組み

図 4 UDDI の仕組み

(2) WSDL (Web Service Description Language)

WSDL (Web Service Description Language) とは、XML Web サービスの呼び出し規約を記述するために定義された XMLベースの言語です。WSDL は、Web サービス記述言語とも言われます。XML Web サービス提供者は、WSDL を使用して、XML Web サービスのインタフェースや提供場所、接続方法などの情報を定義した WSDL 文書を作成します。この WSDL 文書は、サービス利用者が XML Web サービス提供者の情報を取得するために利用します。WSDL 文書の内容を説明 (Description) と呼びます。WSDL 文書を使用することで、目的の Web サービスの情報を取得、接続や実行ができます。図 5 に WSDL の概念図を示します。

図 5 WSDL の概念図

図 5 WSDL の概念図

(3) SOAP の概要

SOAP (Simple Object Access Protocol) とは、アプリケーション間や Web サービス間の情報のやりとりを円滑に行うための XML を基盤とした通信プロトコルです。現在の SOAP のバージョンは、SOAP 1.1 です。 SOAP 1.1 は、Web システムで利用する HTTP の他に、FTP や SMTP などの下位のプロトコル上で利用できます。また、SOAP は、HTTP 上で動作可能なため、インターネット上に公開されている Web サービスをファイヤウォール経由で容易に接続できる特徴および利点があります。SOAP を利用した Web サービスのやりとりのイメージを図 6 に示します。

図 6 SOAP を利用した Web サービスのやりとりのイメージ

(4) まとめ

XML Web サービスは、これまで解説した SOAP、WSDL や UDDI などの様々な XML を基盤とした技術を駆使して、プラットフォームやプログラミング言語を超えてより高品質な XML Web サービスの提供を実現します。XML Web サービスの処理の流れは、まず、サービス提供者が、サービス内容を UDDI レジストリに登録します。次に、サービス利用者が UDDI にサービスを検索します。UDDI レジストリは、Web サービスの検索結果をサービス利用者に返します。そして、サービス利用者は、検索結果をもとに XML Web サービスに検索ドキュメントを要求します。要求を受けた XML Web サービスは、WSDL で記述された情報をサービス利用者に返します。サービス利用者は、WSDL で記述された情報より、SOAP を利用してサービスを呼び出し、最後に呼び出したサービスの結果を XML 形式で表示します。XML Web サービスの処理の流れを図 7 に示します。

図 7 XML Web サービスの流れ

図 7 XML Web サービスの流れ

5.3 Visual C# による XML Web サービスの作成

本節では、Visual C# による簡単な XML Web サービスを作成します。本節の前半では、ASP.NET と XML Web サービスの関係から Visual C# による XML Web サービスの作成手順について解説します。また、後半では、Visual C# を利用し、XML Web サービスから他の XML Web サービスを利用する簡単なプログラムを作成します。今回作成するプログラムの概要図を図 8 に示します。

図 8 作成するプログラムの概要図

図 8 作成するプログラムの概要図

5.3.1 ASP.NET と XML Web サービス

XML Web サービスは、Web アプリケーションの作成と同様、ASP.NET を利用することにより、デスクトップアプリケーションを作成するような感覚で作成できます。前章でも、解説したように ASP.NET は、Visual C# などの開発言語を利用して開発できます。また、Visual C# では、自動的に WSDL、SOAP などの概念的な部分の処理を行ってくれるため、ユーザは、難しい概念などを気にせず、XML Web サ−ビスの作成ができます。

5.3.2 XML Web サービスの新規作成

XML Web サービスの作成には、Windows アプリケーションの作成と同様、最初にプロジェクトの新規作成を行う必要があります。プロジェクトの新規作成を行うには、まず、メニューから【ファイル】→【新規作成】→【プロジェクト】を選択します。次に、【新しいプロジェクト】ダイアログボックスの左ペインの【プロジェクトの種類】から【Visual C#プロジェクト】を選択します。そして、右ペインの【テンプレート】から【ASP.NET Web サービス】を選択します。最後に【OK】ボタンをクリックします。【新しいプロジェクトの作成】ダイアログボックスを図 9 に示します。

図 9 【新しいプロジェクト】ダイアログボックス

図 9 【新しいプロジェクト】ダイアログボックス

上記の操作で Visual C# による ASP.NET Web サービスの作成するための準備ができます。

5.3.3 WebService 名前空間の利用

.NETのクラスライブラリには、Web サービスを作成するためのクラスが用意されています。クラスライブラリに用意されたクラスを利用することにより、高度な機能を持った Web サービスを簡単に作成することができます。

これらのクラスを利用するには、WebService 名前空間を参照する必要があります。WebService 名前空間とは、Web サービスを容易に作成するために .NET Framework から提供されているクラス群のことです。WebService 名前空間を参照するための構文を次に示します。

using System.WebService;

5.3.4 コードの記述

まず、ASP.NET Web サービスプロジェクトを新規作成します。このプロジェクトをここでは、WebService1 とします。WebService1 には、2 つの数値を加算する XML Web サービスの Web メソッドを定義します。Web メソッドの定義方法を次に示します。

[WebMethod]
public int Add(int x, int y)
{
return x + y; // 戻り値の設定
}

次に、ASP.NET Web サービスプロジェクトを新規作成します。このプロジェクトをここでは、WebService2 とします。WebService2 では、WebService1 で定義した Web メソッドを呼び出し、加算プログラムを実行します。

WebService2 から WebService1 の Web メソッドを呼び出すためには、Web 参照の追加をする必要があります。Web 参照の追加方法は、【プロジェクト】→【Web 参照の追加】を選択します。この操作により、【Web 参照の追加】ダイアログボックスが表示されます。

【Web 参照の追加】ダイアログボックスでは、他の XML Web サービスと連携させるため、【アドレス】に対象の XML Web サービスの URL を入力します。今回は、次に示す URL を設定します。

http://localhost/Webservice1/Service1.asmx

【Web 参照の追加】ダイアログボックスの表示例を図 10 に示します。

図10 【Web 参照の追加】ダイアログボックスの表示例

図 10 【Web 参照の追加】ダイアログボックスの表示例

上記の操作により、WebService2 のソリューション エクスプローラに Web Reference フォルダが追加されます。WebService2 のソリューション エクスプローラを図11に示します。

図 11 WebService2 のソリューション エクスプローラ

図 11 WebService2 のソリューション エクスプローラ

ここまでの操作で、Web Service1 と Web Service2 を連携させる用意ができました。次に、実際にプログラムで Web Service1 で定義した Web メソッドを呼び出します。そのためには、現在のプロジェクトの localhost 名前空間を参照する必要があります。現在のプロジェクトの localhost 名前空間を参照する方法を次に示します。

using WebService2.localhost;

Web Service2 には、Web Service1 の Web メソッドを呼び出すためのWeb メソッドを定義します。Web メソッドの定義方法を次に示します。

[WebMethod]
public string Service2()
{
localhost.Service1 mywebservice = new localhost.Service1(); // mywebserviceオブジェクト生成 int iResult = mywebservice.Add(10,20); // Web Service1のWeb メソッドの利用 return iResult.ToString(); // 戻り値の設定
}

5.3.5 実行結果

Web Service2 を実行します。サービスを実行することにより、ブラウザがクライアントとなり、XML Web サービスで定義した Web メソッドの一覧が HTML 形式で表示されます。作成したプログラムの Web メソッドの一覧を図 12 に示します。

図 12 Web メソッドの一覧

図 12 Web メソッドの一覧

【Service2】を選択することで Web メソッドを呼び出すことができます。Web メソッドを呼び出した結果を図 13 に示します。

図 13 Web メソッドを呼び出した結果

図 13 Web メソッドを呼び出した結果

【起動】ボタンをクリックし、Web Service2 の Web メソッドを実行することにより、Web Service1 と連携できます。XML 形式で戻り値が返されます。今回のプログラムでは、引数をそれぞれ 10 および 20 としたため、実行結果は 30 が戻り値として返されます。XML Web サービスの連携による実行結果を図 14 に示します。

図 14 XML Web サービスの連携による実行結果

図 14 XML Web サービスの連携による実行結果

このように Visual C# を利用することで XML Web サービス同士の連携が容易に実現できます。また、ユーザは、Visual C# の機能により、理解し難い SOAP や WSDL、UDDI などの概念をほとんど気にせず、XML Web サービスを作成できます。

5.4 まとめ

本章では、XML Web サービスの概念や XML Web サービスを理解する上で重要となる UDDI、WSDL と SOAP などを解説しました。また、本章の後半では、Visual C# による XML Web サービスの作成手順を紹介しました。ASP.NET を利用することでデスクトップアプリケーションと同様の手順で XML Web サービスが作成できます。ASP.NET は高度な XML Web サービスを容易に作成できるため、様々なシステム開発や研究に利用できます。例えば、XML Web サービスにエージェント技術する研究が行われています。このような研究では、XML Web サービスにおいて、利用者に対して最適なサービスを提供することが求められています。XML Web サービスにエージェント技術を適用し、インターネットの利便性を飛躍的に向上させることを目指しています。そこで、XML Web サービスの基本技術である XML や SOAP、UDDI をエージェント指向の枠組みで扱う研究が進められています。この研究では、エージェントとして Web サービス・エージェントと呼ばれるものを開発します。Web サービス・エージェントとは、利用者が求めるサービスを探し出し、処理手順や呼び出し結果の組み合わせ方法を考えながら適切に処理を進めてくれるものです。また、この他にも、XML Web サービスは、複数の XML Web サービスの情報を利用できることから分散協調システムの研究にも利用されています。分散協調システムとは、1 つのシステムを複数のパソコンに処理を分散させることにより、1 つのパソコンにかかる負荷を少なくするシステムです。

本章で解説したように Visual C# を利用することで XML Web サービスが容易に作成できます。そのため、XML Web サービスは、これからの研究や企業のサービスの場面で幅広く取り上げられることが期待されています。


著者紹介

田中 成典 (たなか しげのり)

1986年関西大学工学部土木工学科卒業
1988年関西大学大学院工学研究科 土木工学専攻博士課程前期課程修了
1996年博士 (工学) 授与,関西大学
1997年関西大学総合情報学部助教授 (現在に至る)
主な著書:やさしいCのはじめかた,オーム社,1993年
 建設技術者のための知識情報処理の実践,関西大学出版部,1999年
 DirectX8,工学社,2001年
 ステップアップXML,工学社,2002年
 Linuxアプリケーション入門,森北出版,2002年    ほか

中山 浩太郎 (なかやま こうたろう)

2001年3月関西大学総合情報学部卒業
2001年4月関西大学大学院総合情報学研究科入学 (現在に至る)
2002年4月同志社女子大学非常勤講師 (現在に至る)
主な著書:Web工房シリーズ Perlの達人,森北出版,1999年
 DirectX8,工学社,2001年
 Linuxアプリケーション入門,森北出版,2002年    ほか

石井 健一 (いしい けんいち)

1999年4月関西大学総合情報学部総合情報学科入学 (現在に至る)
主な著書:ステップアップXML活用法,工学社,2002年

野中 一希 (のなか かずき)

1999年4月関西大学総合情報学部総合情報学科入学 (現在に至る)
2002年1月株式会社関西総合情報研究所入社 (現在に至る)

中村 健二 (なかむら けんじ)

2000年4月関西大学総合情報学部総合情報学科入学 (現在に至る)
2002年4月株式会社関西総合情報研究所入社 (現在に至る)


Microsoft