Microsoft.NETが目指す次世代情報環境とは?

4.Web ServiceとWeb Application、Microsoft.NETの関係


デジタルアドバンテージ 小川誉久
2000/11/15

Page1 Page2 Page3 Page4 Page5 Page6

 Microsoft.NETのビジョンは極めて大きなものだが、その出発点となるのは、インターネット上に存在し、ユーザーに何らかの情報サービスを提供するWeb Serviceであることが分かった。.NETビジョンを押し進めるための第一歩は、Windowsプラットフォームという「小さな」枠の中に存在している既存のWindowsアプリケーションや、これから新たに開発されるアプリケーションを、.NETプラットフォームという「大きな」枠に対応させ、それらをMicrosoft.NETビジョンの構成要素として機能させることにある。

Web Serviceの定義

 Web Serviceは、インターネット標準の各種Webプロトコルを利用してアクセス可能なプログラマブルなアプリケーション・コンポーネントである。これまで本稿では、人間に対する抽象的なサービス全般という意味を込めて、これまで「Web情報サービス」と表記してきたが、以下ではSOAP/XMLによるWeb情報サービスの実装を「Web Service」と表記することにする。ここでいう標準プロトコルには、先に述べたSOAP/XMLに加え、次のものがある。

■WSDL(Web Service Description Language)
 伝統的なアプリケーション・インターフェイスであるAPIを呼び出すには、そのAPIの機能を知ると同時に、それがどのようなパラメータを受け取るのか、どのような戻り値を返すのかという、ひと言でいえばAPIを呼び出すためのインターフェイスを理解しておく必要がある。それがWindows APIなら、APIリファレンスのヘルプ・ファイルを検索すれば、その答を得ることができるだろう。

 しかしインターネット上に無数に存在する(ようになるはずの)Web Serviceに対して、一元的なヘルプ・ドキュメントを用意することなど不可能だ。代わりにWeb Serviceでは、当該Web Serviceに対して、それがどのような機能を持っているのか、サービスを利用するために渡すべきパラメータは何かを問い合わせる。名前が示すとおり、WSDLは、Web Serviceの開発者(あるいは開発ツール)が、作成したWeb Serviceのインターフェイスを記述するための言語である。実体はXMLで定義されたマークアップ言語であり、開発者はこれにより、Web Serviceのインターフェイスを定義ファイルとして記述しておく。

■SOAP Discovery("Disco")
 Web Serviceのインターフェイスは、前出のWSDLによって記述され、定義ファイルとしてWebサイト内に保存される。このSOAP Discoveryは、こうして定義されたWSDLファイルの場所を見つけ出すための一連のルールを規定するものだ。これによりWeb Serviceの利用者(クライアント、あるいはコンシューマと呼ばれることもある)は、特定のWebサイト内でWSDL定義ファイルが存在する場所を自動的に見つけ出すためのルールを知ることができるようになる。

■UDDI(Universal Description, Discovery and Integration)
 UDDIは、インターネット上にどのようなWeb Serviceがあるのかを一覧にした、案内表示板のようなものである。初めて訪れたデパートを効率よく歩き回ろうと思えば、まずは入り口に用意された案内表示板を見て、どのフロアで何を売っているのかをあらかじめ調べるだろう。これと同じように、インターネット上にどのようなWeb Serviceが存在し、そのサービスを受けるための場所がどこなのかを一覧にしようとするのがUDDIである。UDDIの詳細については、UDDIのホームページが詳しいので参照されたい(UDDIのホームページ)。

Web ServiceとWeb Application、ビルディング・ブロック

 このようにWeb Service自身は、マイクロソフト独自のものではなく、標準プロトコルを使うかぎり、非マイクロソフト環境においてもWeb Serviceとしてサービスを提供することが可能である。インターネット上のWeb Serviceは、共通のプロトコルで会話できる別のWeb Serviceと協調動作できる。またクライアント側でも、Web Serviceが使用する共通プロトコルを用いることができれば(Web Serviceに直接アクセス可能なSOAP/XMLインターフェイスを備えれば)、これをダイレクトに呼び出すことが可能である。

 しかし.NETプラットフォームは、既存のWebインターフェイスをないがしろにするわけではない。自身はWeb Serviceのインターフェイスを備えて、他のWeb Serviceと連携可能である一方で、従来からのWebクライアントに対して、HTTP/HTMLによるレガシー・インターフェイスでサービスを提供するものは「Web Application」と呼ばれる。

Web ServiceとWeb Application

SOAP/XMLインターフェイスを備えたWeb Service同士は、互いに連携して協調動作することができる。またクライアント側でも、新しいSOAP/XMLインターフェイスに対応することで、直接Web Serviceにアクセスすることが可能だ。これに対し、自身はWeb Serviceとして他のWeb Serviceと協調可能でありながら、クライアントに対しては、既存のHTTP/HTMLインターフェイスを提供するものはWeb Applicationと呼ばれる。

 このように適当なWeb Applicationが用意されれば、Webブラウザをベースとする既存のクライアント環境でも、新しいWeb Serviceの機能を活用できるようになる。しかしすでにHTTP/HTMLベースのWeb情報サービスが広く提供されていることを考えれば、既存のWeb情報サービスに対して、新しいWeb Service の機能を追加するというケースのほうが現実には多いかもしれない。

既存のWeb情報サービスに対するWeb Service機能の追加

既存のHTTP/HTMLベースのWeb情報サービスが広く普及していることを考えると、現実には、そうした既存のシステムに対して、新しいWeb Serviceのインターフェイスを追加するケースのほうが多いのかもしれない。共通のサービス・エンジンを使いながら、一方では既存のHTTP/HTMLでのサービスを行い、他方ではSOAP/XMLによるWeb Serviceインターフェイスを持たせることが可能である。

 Microsoft.NETを語ったドキュメントでは、「ビルディング・ブロック」という言葉がよく使われている。すでに述べたとおり、広義のビルディング・ブロックは、何らかのサービスを実現するための、コンポーネント/オブジェクトを総称したもののようだが、実際にはほとんどWeb Serviceと同義語のように用いられているケースもある。しいて言えば、ユーザーからはあまり見えないところで、縁の下の力持ち的に単機能サービスを提供するWeb Serviceをビルディング・ブロックと呼んでいるケースもあるようだが、その一線は明確ではない。

 ビルディング・ブロックの中でも、Microsoft.NETが提案する情報環境を実現するうえで基本となるものは、特にコア・ビルディング・ブロックと呼ばれている。現時点で得られる資料の中には、マイクロソフトが提供を予定しているコア・ビルディング・ブロックとして、具体的に次のものが列挙されている。

機能 内容
認証 MSNの一環としてすでにサービスを提供しているMicrosoft Passportを進化させ、これとWindows OSが備える認証テクノロジを利用することで、どのようなデバイスを使っても、またどこにいてもユーザー認証を受け、認証に応じたカスタマイズや権限の取得ができるようになる。
通知、メッセージング インスタント・メッセージングや電子メール、FAX、ボイス・メールなど、現在はデバイスやアプリケーションごとに異なる手順で行われる通知やメッセージ・サービスを統一し、デスクトップPCや携帯端末、携帯電話など、ユーザーが状況に応じて、適当なデバイスを用い、共通した手順で通知サービスやメッセージング・サービスを受けられるようにする。
パーソナライゼーション 通知やメッセージなどの処理方法、複数デバイス間でのデータ同期など、ユーザーごとの設定を明示的ないし暗黙に定義可能にする。
XMLストア/SOAP XMLインターフェイスを備える情報の格納場所。インターネット・ワイドな情報の格納場所を提供する。
カレンダー ユーザーのスケジュールを記録・管理し、特定のデバイスによらないスケジュール情報へのアクセスを可能にする。ユーザーの許可があれば、他のソフトウェアなどがスケジュールを参照し、アポイント管理を自動化することも可能。
ディレクトリ・サービス、検索サービス インターネット上に存在するWeb Serviceのディレクトリ機能や検索機能を提供する。UDDIと連動することになるものと考えられる。
ダイナミック・デリバリ 開発者の要求に応じて、ユーザーが利用しているソフトウェアを自動的にアップグレードする。
マイクロソフトが提供を予定しているコア・ビルディング・ブロック

Visual Studio.NETと.NET Framework

 こうしたWeb ServiceやWeb Applicationなどを開発するために、マイクロソフトがプログラマに対して提供する開発プラットフォームが.NET Frameworkであり、開発環境がVisual Studio.NETである。.NET Frameworkには、特定のプロセッサ・アーキテクチャに依存せず、また異なる言語処理系で作成したコードを透過的に連携可能にするCLR(Common Language Runtime)や、Web Serviceの開発などを前提とする新しいクラス・ライブラリなどが含まれている(.NET Frameworkの詳細については、追って別稿でご紹介する予定である)。.NET Frameworkのための開発キットである.NET Framework SDKは、マイクロソフトのサイトから無償でダウンロードすることが可能だ(MSDN onlineにある.NET Frameworkのダウンロード・ページ)。

 Visual Studio.NETは、.NET Frameworkを包含したグラフィカルなプログラム開発環境であり、原稿執筆時点(2000年11月初頭)では、米国版のベータ1が開発者向けに公開されている(MSDNサブスクライバー・ダウンロード・サービスのページ)。なお、すでに提供されているアルファ版をベースとしたVS.NETのオーバービューを別稿として用意しているので参照されたい(「特集:Visual Studio.NETファースト・インプレッション」)。

Visual Studio.NET(アルファ版)

Visual Studio.NETでは、従来は独自の開発環境を使用していたVisual Basicを含め、すべての言語処理系を統合的に扱えるようにされた。話題の新言語処理系、C#サポートも追加されている。

 このVS.NETでは、話題の新言語処理系であるC#もサポートされている。マイクロソフトの説明では、C#はC/C++言語を発展させたものと位置づけているが、見た目にはJavaに近い部分も多いし、実際プログラマの間でも、Javaに相当するような位置づけの言語処理系として期待する向きが多いようだ(C#の第一報については別稿の「Windows 2000 Insider/Insider's Eye:.NET対応プログラム開発を容易にする新言語、C#登場」を参照)。

 また今回のVS.NETでは、開発環境が統合されると同時に、Visual Basicの言語仕様が大幅に強化され、C/C++やC#と同じく、一人前のオブジェクト指向言語としてクラスの定義や継承などが行えるようにされた。すでに述べたCLRの機能により、VS.NETでは異なる言語間でのクラスの継承などが可能になり、言語処理系を場面場面で使い分け、最終的にはそれらを組み合わせて、1つのアプリケーションを構成させるなどが容易になった。その代わりにVBは、機能制限はあるがコンパクトで使い勝手のよい言語処理系から、機能性は高いが少々敷居の高い言語処理系に生まれ変わった。実際にVS.NETにおけるVBのサンプル・コードを見ても、一見しただけではC/C++やC#のコードと見分けが付かないほどだ(これらの詳細についても、近いうちに記事を公開する予定である)。

 すでに述べたとおり、読者がMSDNの定期購読者なら、マイクロソフトのWebサイトに用意されたサブスクライバー・ダウンロード・ページからVS.NETのベータ1(米国版)をダウンロードして試用してみることができる。また正確な時期は未定ながら、まもなくすれば、日本語版も提供されるだろう。興味のある読者は、ぜひともダウンロードして試用してみていただきたい。また読者がプログラマで、まだMSDNの定期購読者でないなら、この機会に申し込むことをお勧めしたい。豊富なドキュメントやサンプル・コードを含むCD-ROMに加え、OSやSDKなどの提供を受けられるプロフェッショナル版で年会費9万4000円(初年度。2年目以降は7万4800円)と、決して安くはない買い物だが、それでも十分納得がいくサービスを受けることが可能である(マイクロソフトのMSDN定期購読の解説ページ)。

関連記事
関連記事
MSとIBMが手を組み推進する「Web Services」とは何か
 

 INDEX
  [特集]Microsoft.NETが目指す次世代情報環境とは?
     1.インターネットの過去・現在・未来
     2.HTTP/HTMLからSOAP/XMLへ
     3.マイクロソフトが提唱する次世代インターネット・ビジョン、Microsoft.NET
   4.Web ServiceとWeb Application、Microsoft.NETの関係
     5.次世代インターネットの主導権を握るのは誰か?


 



Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間