特集

ノータッチ・デプロイメント

―― Web+Windowsという新たな可能性 ――

一色 政彦
2003/08/12
Page1 Page2 Page3 Page4 Page5 Page6

 Webアプリケーションは広く普及し、多くのビジネス・シーンで使われるようになった。その理由のひとつとして、アプリケーションのセットアップおよびアップデートが容易なことが挙げられる。通常のデスクトップ・アプリケーションは、すべてのクライアント・マシンに対してセットアップやアップグレードを行わなければならないため、運用および管理のコストが膨大になるという欠点がある。しかし、Webアプリケーションは、サーバでアプリケーションを集中管理できるので、管理コストを抑えられる。

 運用、展開といった面で強力なWebアプリケーションだが、問題点もある。Webページをベースとしているため、ユーザー・インターフェイスの表現力、応答速度とパフォーマンス、機能などが、デスクトップ・アプリケーションに比べ貧弱な場合が多い。このため、WindowsアプリケーションからWebアプリケーションに乗り換えた場合、ユーザーから見るとアップグレードではなく、ダウングレードになってしまうことがある。ユーザーにすれば、リッチ・クライアントのユーザー・インターフェイスや機能、パフォーマンスはそのままにWebアプリケーションに移行してほしいというのが本音だろう。

 そのようなニーズにこたえる機能が、Visual Studio .NET 2003(正確には.NET Framework 1.1)でサポートされている。「ノータッチ・デプロイメント」という機能だ。Webブラウザ上のリンクから、リッチ・クライアントのWindowsアプリケーションを直接起動できる機能である。この機能はもともと.NET Framework 1.0よりサポートされていたが、.NET Framework 1.0 SP1/SP2ではデフォルトで機能しないように仕様が変更されてしまったため(理由は不明)、ほとんど活用されていなかったといえるだろう。しかしVisual Studio .NET 2003では、この機能が再びデフォルトのままで動作するようになったため、.NET Framework 1.1の主要な機能として大きく取り上げられるようになっている。

ノータッチ・デプロイメントとは

 ノータッチ・デプロイメントの機能を利用すれば、WindowsアプリケーションでWebアプリケーションを置き換えることができる。つまり、運用・管理コストを軽減できるWebアプリケーションの良さを失わずに、ユーザー・インターフェイス、応答速度とパフォーマンス、機能、サーバへの負荷などにおけるWebアプリケーションの欠点を解消できるのである。

 ノータッチ・デプロイメントを行うには、Visual Studio .NET 2003で作成したプログラム(exeファイル)をWebサーバ上に配置し、そのプログラムへのリンクをWebページに張るだけである。なお、プログラムはWebサーバ上で動作するわけではないので、WebサーバはIISである必要はない。それどころか、サーバはWindows以外のOSで動作していてもよい。

 exeファイルへのリンクをクリックすると、従来ならば「ファイルのダウンロード」ダイアログが表示され、「開く」か「保存する」かを選択するが、ノータッチ・デプロイメントではそのままプログラムを実行できる。セキュリティ制限された状態でプログラムが実行されるので、このプログラムがローカル・ディスクやレジストリへアクセスすることはできない。よって、それがウィルスやトロイの木馬といった悪意のあるプログラムであったとしても、攻撃を受ける心配はない。このセキュリティ制限は、.NET Framework 1.1の「コード・アクセス・セキュリティ」によるものだ。コード・アクセス・セキュリティについては、後に詳しく解説する。

 ノータッチ・デプロイメントがどのようなものか確認するためのサンプルを用意した。このサンプルへのリンクをクリックすると、Windowsのリッチ・クライアントのプログラムが実行される(ダウンロードの時間が多少かかる場合がある)。なお、ノータッチ・デプロイメントを実行するには、次のクライアント要件を満たす必要がある。

Microsoft .NET Framework 1.1(Windows Updateで入手できる)
.NET Framework 1.1 が動作するOS
 ・Windows Server 2003
 ・Windows 2000 Service Pack 3 以上
 ・Windows XP
 ・Windows NT 4.0 Service Pack 6.0a 以上
 ・Windows Millennium EditionおよびWindows 98
Microsoft Internet Explorer 5.01 以上
ノータッチ・デプロイメントに必要なクライアント要件
なお、ノータッチ・デプロイメントをするには、Internet Explorerの「インターネット オプション」の「セキュリティの設定」で、「.NET Framework依存コンポーネントの実行」を有効にしておく必要がある。デフォルトでは、これは[有効にする]になっている。

 このハイパーリンクをクリックすると、ブラウザからプログラムが直接、起動する(下図参照)。

ノータッチ・デプロイメントのためのサンプル・プログラム
このアプリケーションは、セキュリティ制限のかかった環境下でも動作する。

 ノータッチ・デプロイメントでは、実行プログラムの.NETアセンブリがローカル・ディスクの.NETダウンロード・キャッシュ領域にダウンロードされ、ダウンロードされたアセンブリは.NET Frameworkが提供するIE実行シェル(IEExec.exe)上で動作される。これにより、プログラムは個別のプロセスを発生させることなく、IE実行シェルの強力なセキュリティ制限を受けて動作することになる。次の図はその一連の動作の仕組みを表したものである。

ノータッチ・デプロイメントの仕組み
  .NET FrameworkはWebブラウザ(Internet Explorer)をフックし、Webブラウザから.NETアセンブリが要求されるのを待機。
  ユーザーがプログラムへのリンクをクリック(.NETアセンブリを要求)。
  .NETダウンロード・キャッシュ領域に.NETアセンブリをダウンロード。
  IE実行シェル(IEExec.exe)がアセンブリのダウンロード元のサイトに基づきセキュリティ制限のレベルを決定して、アセンブリをロードし、IE実行シェル上でプログラムを起動する。

 次に、.NETアセンブリのセキュリティ制限を行う.NET Frameworkのコード・アクセス・セキュリティについて詳しく見ていこう。

 

 INDEX
  [特集]ノータッチ・デプロイメント
   1.ノータッチ・デプロイメントとは何か
     2. .NETアセンブリのコード・アクセス・セキュリティ
     3.インターネット・ゾーンのセキュリティ・ポリシー
     4.ノータッチ・デプロイメントのプログラミング(1)
     5.ノータッチ・デプロイメントのプログラミング(2)
     6.ノータッチ・デプロイメントのコンテスト開催!
 


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 記事ランキング

本日 月間