Microsoft.NETが対象とするクライアントは、以下の2種類が考えられる
- Thin Client(HTTP 3.2、ブラウザベース)… 携帯電話、PDA、旧PC(Win95+旧IE)、UNIX
- Fat Client … Windows 2000
「Thin Client」はHTTPでアクセスし、「Fat Client」は、SOAP(+XML)を使ってアクセスすることになる。この時、Thin Clientは今までと変わらないが、Fat ClientのSOAPを使ったアクセスは、XMLを使ったオブジェクト呼び出しなので、オブジェクトの生成と実行時に、プロキシとスタブが必要となる。ところが、今までのDCOMでは、プロキシとスタブを作るための方法として、オブジェクトを作った時に、「IDL(Interface Difinition Language)」を作ってコンパイルし、プロキシとスタブのDLLを作って、クライアントに配布しレジストリに登録する作業が必要であった。
そこで今回Microsoft.NETのなかで、シームレスなWeb連携を行なうための対応として、これまでの煩雑な手続きを省く、新しいテクノロジーが搭載された。「登録」という作業を考えた場合、インターネットの世界では、ユーザーがアクセスするWebサイトごとに登録を変更する必要があり、従来の手続きは原始的で煩雑あり、あらかじめ使うオブジェクトを知らないと、登録作業ができないことになる。この問題を解決するのが、「Service Discription Language(SDL)」というわけである。
ここで「SDL」の仕組みを考えてみよう。まず最初に、ユーザーがURLを入力し、HTTPでアクセスする。アクセス先のデフォルトページには、SDLファイル(中身はXML)があって、クライアントにダウンロードされる。
ここで登場するのが、現在配布サービスが行なわれている「SOAP Toolkit for Visual Studio6」である(詳細は、MSDN Magazine 日本語版 No.6の記事「Webサービスの開発:SOAP Toolkit for Visual Studioを使いこなす」を参照)。SOAP Toolkitは、あらかじめクライアントにインストールしておかなければならないが、このツールに付属する「ROPE.DLL」の正体は、「Remote Object Proxy Engine(ROPE)」というリモートオブジェクトのプロキシインターフェイスを動的に生成するエンジンだ。現在はまだROPEはインストールしなければならないが、将来はOSの一部として提供される予定だ(名称は変更されるかもしれないが、同じ機能を持つ予定)。
SDLファイルがクライアントにダウンロードされると、ROPEはSDLのなかを解釈して、リモートオブジェクトのプロキシインターフェイスを動的に作る。つまり、今までのDCOMの「IDL」とプロキシとスタブのDLLの配布、そしてクライアントへの登録作業をしなくてもよくなったわけである(Figure 3)。
Figure 3
- WebページのデフォルトページはSDL(中身はXML)で、クライアントへダウンロードする。あらかじめ「Visual Studio 6.0 SOAP ToolKit」をインストールしておくと、そのなかの「Remote Object Proxy Engine(ROPE)」(ROPE.DLL)がインストールされる。
- SOAPでアクセスするときに、ROPE.DLLがロードされて、COM+のオブジェクトができる。
- SDLがダウンロードされると、ROPEはSDLのなかを解釈して、クライアントに対してリモートオブジェクトのプロクシインターフェイスを動的に作成する。
- UI側では、自動的にSOAPを使ってXMLに変換して、オブジェクトのインターフェイス呼び出しが発生する。