スマートクライアントアーキテクチャ設計ガイド
Chapter 7 - Deploying and Updating Smart Client Applications
・.NETフレームワークのデプロイ
・スマートクライアントアプリケーションのデプロイ
・適切なデプロイ方法の選択
・スマートクライアントアップデートのデプロイ
・アップデート方法の選択
・まとめ
スマートクライアントアプリケーションはクライアントコンピュータ上でローカルプロセスを処理する。そのため、クライアントコンピュータ上にデプロイされる必要がある。昔、クライアントコンピュータ上で時間のかかるアプリケーションのデプロイ、アップデート、メンテナンス、アンインストールをすることは、とても困難で問題をはらんでいた。COMにより発生する以下のようないくつかの問題はクライアントコンピュータへアプリケーションをデプロイするのをとても難しくした。
* レジストリと密結合であるアプリケーション。COMアプリケーションをインストールするためにはクラスやライブラリのタイプをレジストリに登録する必要があった。
* 自己完結していないアプリケーション。レジストリにクラスやタイプを登録するだけなく、レジストリに格納された構成設定値はもちろん、通常のアプリケーションはディスク上に配置された共有ファイルを含んでいた。アプリケーションが自己完結していなかったのである。それどころか、そういった構成になっている部分はコンピュータ上の別々の領域へ配布されていた。
* 並列に(side by side)デプロイすることができなかったコンポーネント。同じディレクトリに同じDLLの2つの異なるバージョンをデプロイするのは不可能だった。
これらの問題はクライアントアプリケーションの効率的なデプロイとメンテナンスに対する大きな障害だった。
Microsoft .NETフレームワークは.NETフレームワークアプリケーションの処理やデプロイを簡単にする多くの機能を持っている。以下のような機能である。
* 自己記述的(Self-describing)なアセンブリ。.NETフレームワークのアセンブリは、(数ある中でも)バージョン情報、タイプ、リソース、全ての参照アセンブリの詳細を記述しているメタデータを含む。これはレジストリに依存していないことを意味する。
* バージョニングとサイドバイサイド(side-by-side)のサポート。.NET Frameworkは、並列(side by side)で実行できるようにバージョニングを広範囲に渡ってサポートしている。それにより、アプリケーションの複数のバージョンや.NETフレームワークの複数のバージョンをインストールすることができる。
* 分離されたアプリケーション。特定のアプリケーションでの利用や初期設定を保ったままでの利用のために、.NETフレームワークのアセンブリを他のアプリケーションから分離されたアプリケーションディレクトリにデプロイすることができる。これにより、アセンブリをWindowsディレクトリに登録する必要がない、又は明確にレジストリに登録する必要がない。そして他のアプリケーションをインストールした時、上書きされたり消される可能性が減少する。
* グローバルアセンブリキャッシュ。同じコンピュータ上で異なるアプリケーション間のコードを共有したい場合、グローバルアセンブリキャッシュにコンポーネントをデプロイすれば良い。グローバルアセンブリキャッシュは同一アセンブリの異なるバージョンが同時に存在することを許可している。グローバルアセンブリキャッシュのアセンブリを参照したい時は、Publicキートークンとバージョン番号を含むアセンブリの完全限定名を指定しなければならない。これは、気づかずに違うバージョンのコンポーネントを利用してしまう防ぐのに役立つ。
* 厳密名アセンブリのビルド時間に対するデフォルトの実行時間(Default run-time binding against build-time assemblies for strong-named assemblies.)。デフォルトでアセンブリを厳密名で指定している場合、.NETフレームワークは依存するアセンブリの正確なバージョンをバインドする。これにより、.NETフレームワークはビルド・テストされたアセンブリの適切なバージョンを読み込むため、アプリケーションの脆弱性が減る。もし必要ならばこの振る舞いを(明確に(explicitly))上書きすることができる。
これらはリッチクライアントアプリケーションのデプロイとメンテナンスで過去に悩まされたたくさんの潜在的な問題を解決するのに役立つ。.NETフレームワークのデプロイを簡単にする方法についてのより詳細な情報は「.NETフレームワークでデプロイを簡単にしDLL地獄を解決する」を参照。
本章は.NETフレームワークのデプロイのオプションについて解説し、.NETフレームワークに基づくスマートクライアントアプリケーションのデプロイ方法を検証する。アプリケーションをデプロイするためには数多くのオプションがあり、その各々について論ずる。
それを受けて、あなたは環境に最も適切な方法を選択することができるだろう。最後にアプリケーションアップデートのデプロイオプションを詳細に検証する。
スマートクライアントアーキテクチャ設計ガイドトップへ戻る