XML
Dev魂(でぶこん)
Microsoft.NETとXMLの関係について教えてください!!
(有)サイラス
梅原 伸行
<この記事はDigital
Xpress 2001 Vol.5(10-11月号)に掲載されたものです>
Q.Microsoft.NETとXMLの関係について教えてください!! |
マイクロソフト社(以下、MS)は、これまで自社の方向性を指し示す「ビジョン」を打ち出してきました。最近ですと、1997年10月に発表された「WindowsDNA(注1)」
が記憶に新しいと思います。「Microsft.NET(注2)」 は、MSの最新の「ビジョン」ということができます。そして、その「ビジョン」を実現する基盤となるのが「XML」です。
2000年6月22日米国ワシントン州レドモンドで開催された「Forum 2000」において「Microsoft.NET」構想が発表されてから1年余り経ちましたが、この間、徐々にそのディテールが明らかにされ、同時に製品群も着々と準備されてきました。その中核をなす「Microsoft
.NET Framework SDK」(日本語版)は7月27日に「ベータ2」がリリースされ、また、開発環境である「Microsoft
Visual Studio .NET」も「ベータ2」が8月末の「Tech*Ed 2001 Tokyo Technical
Days」より配布され、今後もMSの全製品が「.NET」化されていくものと思われます。(注3)
それで、これまでWindowsベースでシステムを構築されてきた方々にとっては、MSのこの最新のビジョンに従い「.NET」にシフトするかどうか、悩ましいところだと思います。
では、「Micorosoft.NET」と従来の「Windows」とでは、どこが違うのでしょうか?
簡潔に言えば、従来の「Windows」が「Windows APIを基盤としたフレームワーク」であったのに対し、「Micorosoft.NET」は、
「Webサービスを基盤としたフレームワーク」
であるということです。これだけではたいして変わってないように思えるかもしれませんが、ビル・ゲイツMS会長いわく「DOSからWindowsへの移行に次ぐ、非常に大きな岐路(注4)」
と述べるほど、大きな違いがあるのです。(コラムも参照)
この理解のカギを握っているのが「Webサービス」です。では、「Webサービス」とは何でしょうか?本誌をはじめ、業界各誌で詳しい説明がなされていますが、ある定義は以下のようになっています。(注5)
「Webサービスとは、特定のユーザニーズに対応した
情報サービスを提供するためのメッセージにより伝えられる
コンテンツとソフトウェアのプロセスである」
これでは良く分かりませんね。(^-^; この定義を少しずつ、紐解いていきましょう。
まず、「Webサービスとはコンテンツとソフトウェアのプロセスである」ということです。つまり、通常のWebと同様、「コンテンツ(データ)」と「ソフトウェア(プログラムやスクリプト)」を処理することによってシステムが構成されるということです。
どこが違うのかというと、「メッセージにより伝えられる」という点です。ここで注目できるのは、「GUIにより伝えられる」とは言っていないことです。つまり、「Webサービス」ではサーバ上の「コンテンツ」や「ソフトウェア」を「人」以外にも「サービス」することを意図しているのです。この点が画期的であるといえます。なぜなら、ユーザは複数のサイトが提供する「サービス」を必要なら束ねてアクセスすることができるからです。
加えて、「Webサービス」は、「特定のユーザニーズに対応した情報サービスを提供」することを目的としています。これは、「Webサービス」にアクセスしている人がどんな背景を持つ人かによってユーザの必要としている情報の提供の仕方を変えることを意味しています。例えば、同じ人がレストランを探しているとしても、その人が会社にいる場合は接待で使えるものを、自宅にいる場合なら家族で楽しめるものを求めているかもしれません。「Webサービス」ならこのようなことを実現することも夢ではありません。
では、ここで「海外旅行の手配」を例に「現状のWeb」と「Webサービス」を比較してみましょう。
現状のWebでは、以下のようなステップを取る必要があるかもしれません。
『忍たま証券会社勤務の乱太郎さんは出張でロンドンへ行くことになりました。乱太郎さんは、フライトの予約をするために、すばやく「第三協栄丸航空」のサイトを訪れ、渡航の日程や個人情報を入力します。その後、現地ホテルを予約するために「きり丸トラベル」のサイトを開き、宿泊の日程や個人情報を入力します。現地ではレンタカーを借りて移動することにしていたので、今度は「しんべヱレンタカー」のサイトに移動し、車の車種やレンタル期間、個人情報を入力します。ここで、保険に入るのを忘れていたので、「ヘムヘム損保」のサイトに移り、やはり渡航の日程や個人情報を入力します・・・』(注6) |
やれやれですね。「フライトの予約」「ホテルの予約」「レンタカーの予約」「旅行保険申し込み」は、それぞれ別々のサイトに存在する別々のタスクですが、互いに重なり合う情報を共有しています。しかし、現状では、お客さんは忍耐強くキーボードを叩きつづけなければならないでしょう。
では、「Webサービス」を組み合わせたシステムの場合はどうでしょうか?
『忍たま証券会社勤務の乱太郎さんは出張でロンドンへ行くことになりました。乱太郎さんは、フライトの予約をするために、すばやく「第三協栄丸航空」の自分用のポータルサイトを訪れます。乱太郎さんは、すでに何度かこの航空会社を利用しているのでパスポート番号などの個人情報を一切入力する必要はなく、渡航先と日程を入力し、いくつかのオプション(ホテル・レンタカー・保険などが必要かどうかなど)を選択するだけで申し込みができるので、とても気に入っています。オプションに関しては以前に利用した「きり丸トラベル」「しんべヱレンタカー」「ヘムヘム損保」が推奨され、乱太郎さんはそれを受け入れます。』 |
このように、「Webサービス」では、ちょうど「Amazon.com」において「ワンクリック」でキャッシュカード番号や届け先を入力することなく買い物ができるように、複数のサイトをシームレスに束ね、サービスを組み合わせることによりソリューションを実現することができます。平たく言えば、「Webサービス」は「インターネットにおけるプラグアンドプレイ」なのです。そして、これを実現するために、XMLが「ユーザとサービス間」また「サービスとサービス間」を繋ぐための「メッセージ」として使われているのです。
さて、話がだいぶ膨らんでしまいましたが、まとめると「Microsoft.NET」は、
「XMLをベースとしたWebサービスをサポートするフレームワーク」
ということになります。ほとんどすべてのマシンがネットにつながれ、通信プロトコルが標準化された今日、サーバにおいてどのOSを使用するかということはあまり重要ではなくなってきました。実際、「Microsoft.NET」では、カーネルこそ他社と異なりますが、SOAP・WSDL・UDDIといったオープンな標準規格を採用し、他の「Webサービス」(Sun
ONE、IBM Alpha work、ApacheSOAP、Fujitsu Interstageなど)とのインターオペラビリティ(相互運用性)を重視しています。次に来るであろう「Webサービス時代」では、「繋がらない」ことは命取りになるからです。
現時点において、ApacheSOAP(注7)が一歩先んじている感がありますが、各ベンダーはまさに「ゼロからのスタート」であり、誰が勝者となるかはまったく分かりません。しかし、一つ言えることがあるとすれば、
「コンポーネント指向」から「サービス指向」へのシフト
が始まっており、コンピューティングのあり方も今後変わっていくであろうということです。
「ドラえもん」(注8)のように便利なサービスが提供される日もそんなに遠い将来ではないかもしれませんね(注9)。
■コラム:.NETにおけるWindowsの変更点について
.NETは技術的に言えば既存のWindowsと別物になります。大きな相違の一つは、「ガベージコレクションをOSでサポートするようになった」ということです。
「ガベージコレクション」というのは、字義どおりには「ごみ回収」ということですが、メモリ上に生じた「ごみ」のような使われていない領域を探し出して開放し、連続した領域に再配置する機能のことです。この機能は、高等なOSであれば通常サポートされているものですが、Windows系では.NETになって始めて搭載されることになりました。(MSの説明によると、「ガベージコレクションのアルゴリズムに関しては各種論議があり、近年になって実用レベルになってきたから」とのこと。)
この変更による影響は大きく、基本的には「VisualStudio.Net」を使用し、VCやVBで作成したものはコンパイルしなおす必要があります。また、VBおよびASPに関しては言語仕様に若干変更が加えられたため、既存のコードを修正する必要が生じるかもしれません。
.NETにおける別の大きな変更点として、「AppDomainの導入」というのがあります。これは、従来のIISのように「プロセス単位」でWebアプリを実行するのではなく、「AppDomain」と呼ばれるプロセス内スレッド単位で行うものです。なぜ、このような変更が行われたかというと、プロセスの生成には時間とリソースがかかるため、現状のIISではユーザ数の増加に合わせてメモリを適切に増やしていかなければ、破綻してしまう可能性があったからです。
簡潔に述べるなら、Windowsは.NETにバージョンアップすることで、やっと過酷なWeb環境に耐えうるOSになった、ということになるでしょうか。 |
関連キーワード: IIS
関連キーワード: XML
関連キーワード: コラム
|