技術解説
DLL Hellを解消する新しいWindowsインストーラとアセンブリ

3.新しいサイド・バイ・サイド・コンポーネントのサポート

Peter Pawlak
2003/03/13
Copyright(C) 2003, Redmond Communications Inc. and Mediaselect Inc.

 Windows XPとWindows Server 2003では、Win32アセンブリのサイド・バイ・サイド共有という新機能が利用できる。これにより、新しいWin32アプリケーションは.NET Frameworkと似たような方法で、専用のWin32コンポーネントと共有のWin32コンポーネントの異なるバージョンを利用でき、DLL Hellのもう1つの原因を解消できる。

 ただし、この機能はWindows XPで初めて導入されたものであるため、既存のWin32アプリケーションはこの機能をそのまま活用することはできず、Win32アセンブリとして再構築する必要がある。

 Win32アセンブリとは、マニフェストを備えるWin32 EXEとDLLのこと(.NETアセンブリマニフェストと同様)。複数のアプリケーションによって共有される場合には、WinSxS(“サイド・バイ・サイド”)と呼ばれる専用のシステムフォルダ(GACと同様)にインストールされる(詳しくは、コラム「.NETとWin32のサイド・バイ・サイド・共有コンポーネント」を参照)。
 
 新しいサイド・バイ・サイド共有機能のおかげで、バグの修正や新機能の追加のためにアセンブリが更新されたとしても、こうしたコンポーネントを利用するアプリケーションに影響が及ぶ危険性はなくなる。

 サイド・バイ・サイド共有コンポーネントのメカニズムは、Windows 2000で導入された機能を改善したものである。Windows 2000では、1つのアプリケーションの専用コンポーネントに関して複数のバージョンを設定することしかできなかったため、グローバルに共有されるWin32コンポーネントは古い技術を使っていた。

 Windows XPとWindows Server 2003には、一般的な共有Win32ライブラリ向けのサイド・バイ・サイド・アセンブリがバンドルされている。Windows XPには、Shell Common Control(共通ユーザー・インターフェイス・コントロール)、GDI Plus(グラフィックルーチン)、Visual C++ Runtime Library用アセンブリがバンドルされ、Windows Server 2003にはさらにWinHTTP(クライアント・アプリケーションがHTTP経由でサーバとやりとりするためのもの)とMicrosoft Isolation Automationアセンブリが追加される(スクリプトがWin32アセンブリをコールするためのもの)。

 Microsoftは将来、共有Win32アセンブリを追加で提供するだろう。ISVやそのほかの開発者も、新しいアセンブリを追加するかもしれない。ただし、Microsoftはアセンブリの追加に関して、コンポーネントが以下の基準をすべて満たす場合に限るとしている。

  • 将来的に多くのアプリケーションが使用するであろうAPIを公開すること。

  • .NETアプリケーションとして再構築することが実際的ではない複数のアプリケーションによって共有されること。

  • Windows XPかWindows Server 2003以降のシステムでのみ動作すること(ただし、DLLは古いWin32 OSと基本的な互換性を備えること)。

  • ユーザー・モードで動作すること(つまり、カーネル・レベルのコンポーネントやデバイス・ドライバではないこと)。

 GACに共有.NETアセンブリを正しくインストールするためには、Windows Installer 2.0が必要。サイド・バイ・サイド・ディレクトリにWin32アセンブリをインストールするためにもWindows Installer 2.0が必要だ。

それでもインストールは簡単ではない

 Microsoft、ISV、企業がクライアント・サイドのアプリケーションを.NET Frameworkに移行するのに伴い、インストール問題も徐々に解消されていくはずだ。ただし、シック・クライアント・アプリケーションは、本質的にシン・クライアント版の同等アプリケーションよりもインストールや管理が難しい、という事実に変わりはない。

 MicrosoftのOSロードマップからは、シック・クライアントの管理がWebアプリケーションの管理と同じくらい容易になる兆候は読み取れない。だが、同社は.NET Frameworkの次のメジャー・リリースにおいて、アプリケーション・インストール機能のさらなる改善を予定している(次期バージョンの.NET Frameworkには、Visual Studio 2003に続くVisual Studioの新バージョンがバンドルされる見込み)。

 そうした努力により、Windows Installerを使わなくても、メニュー・ショートカットや「プログラムの追加と削除」のエントリ作成を自動実行できるようになれば、XCOPYやノー・タッチの実用性が拡大するだろう。

 シック・クライアントには配布、インストール、管理の手間が増大するという欠点はあるものの、それを補って余りあるほどの多くのメリットがある。無線ネットワーキングの人気がますます高まりを見せているとはいえ、サービスの利用可能範囲はユーザーの希望するレベルには達していない。だからこそ、オフラインでの機能性が必要とされ、シック・クライアント・アプリケーションが必要とされている。

 Microsoftが期待する展開は、既存のWebアプリケーションが、ローカル・デバイスの処理能力を活用しながらWebサービスも利用できるシック・クライアント・アプリケーションとして再構築されるというものだ。ただし、こうした動きが広まるほどWebサービスが成熟するまでには、まだ何年もかかるだろう。

参考資料

Directions on Microsoft日本語版
本記事は、(株)メディアセレクトが発行するマイクロソフト技術戦略情報誌『Directions on Microsoft日本語版』から、同社の許可を得て内容を転載したものです。『Directions on Microsoft 日本語版』は、同社のWebサイトより定期購読の申し込みができます。
 

 INDEX
  [技術解説]DLL Hellを解消する新しいWindowsインストーラとアセンブリ
    1.クライアント・ソフトウェアのインストールに関わる問題
    2.Windows Installer 2.0の新機能
  3.新しいサイド・バイ・サイド・コンポーネントのサポート
      コラム:アプリケーションのインストール時に何が起きているか?
      コラム:インストール技術の改善の歴史
      コラム:Windows Installerの概要
      コラム:.NETとWin32のサイド・バイ・サイド共有コンポーネント
?
 技術解説

Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

スキルアップ/キャリアアップ

.NET管理者虎の巻

- PR -
- PR -