アプリケーション内に新しいアプリケーション ドメインを作成する場合のガイドラインとベスト プラクティスは何ですか?
また、アプリケーション内で複数のアプリケーション ドメインがどのように使用されるかの一般的な用途と例は何ですか?
アプリケーション内に新しいアプリケーション ドメインを作成する場合のガイドラインとベスト プラクティスは何ですか?
また、アプリケーション内で複数のアプリケーション ドメインがどのように使用されるかの一般的な用途と例は何ですか?
私が見た最も一般的なシナリオは、メイン プログラムとは異なるセキュリティ モデルで拡張性を提供できるようにすることです。
別の AppDomain にプラグインをロードすると、次の 2 つのことが可能になります。
AppDomains のもう 1 つの便利な使い方は、アセンブリを読み込んで検査することです。別の AppDomain でこれを行うと、別のアセンブリから情報を収集 (またはコードを実行) し、プロセスのスペースからアセンブリ全体をアンロードできます。アセンブリを直接ロードした場合、アンロードする方法はありません。これは、実行時に型を新しいバージョンに「アップグレード」できるようにする場合にも役立ちます (つまり、リモート アセンブリを読み込んで、後で再読み込みします)。
アプリケーション内で信頼できないサードパーティ コンポーネントをホストする必要がある場合、または信頼できない (プラグインなど) サードパーティ コンポーネントをホストする必要がある場合、またはそれらをアンロードできるようにする場合は、新しいドメインを作成することをお勧めします。
典型的な例は、プラグイン/アドインのようなケースです。必要に応じて DLL をアンロードできるようになるだけでなく、プラグインに許可されている操作に対するセキュリティ制御も強化されます。
また、再度アンロードしたい一時アセンブリ (コード生成) を作成する場合、これは良い方法です。(LCG は単一のメソッドの実装のみを許可します。完全なクラスを実装したい場合は、「実際の」アセンブリに発行する必要があります)。