AppDomainを特に作成しない場合でも、C#プログラムごとにAppDomainはありますか?なぜそれが必要ですか?私は、サードパーティ製のアセンブリについて、別のAppDomainにロードしなければ、アプリケーション全体がクラッシュすることについて読んできました。私はその点をうまく理解しませんでした。誰もこれを説明することができます。C#プログラムごとにAppDomainはありますか?
答えて
AppDomain
は、あなたのアプリケーションが実行するインフラストラクチャです。.NETアセンブリを実行するには、AppDomain
にロードする必要があります。サードパーティのアセンブリを個別のAppDomains
にロードする必要はありませんが、実行すると、2つの別々のプロセスのようにそれらの間の分離が行われ、一方では誤動作が他方には影響しません。アプリケーションドメインは独立してアンロードできます。
たとえば、SQL Serverでは、プロセスでCLRアセンブリを安全にロードするために、AppDomain
を使用します。
すべてのアプリケーションには少なくとも1つのアプリケーションドメインがあります。
サードパーティ製のアセンブリが意味することはわかりません。
すべてのプログラムに少なくとも1つのappdomainがありますが、好きな数だけ作成することはできますが、ほとんどの場合は1つ以上のappdomainは必要ありません。
基本的には、特定の信頼関係で実行されているコードが実行されているコンテナです。
アプリケーションがロードされるデフォルトのアプリケーションドメインがあります(すべてのインスタンスが独自のものを取得します)。
クラッシュは、別のアプリドメインにクラッシュされた場合に、サードパーティのアセンブリ(つまりプラグイン)がクラッシュしたときにクラッシュすることを意味します。したがって、別のアプリドメインにプラグインを読み込むことをお勧めします。これは、アプリドメインのクラッシュによってそのアプリドメインのみがクラッシュし、他のドメインはクラッシュしないためです。 CLR Add-In blogにはこれに関するいくつかの記事があります。
重要な点は、アプリドメインは必ずしも同じプロセスまたは同じシステムにある必要はないため、リモーティングには基本的に必要になることです。
我々はAppDomainの
を使用しない場合、私は、私はあなたが別のアプリケーションドメインにして他のアセンブリをロードについて話していると思うのクラッシュの原因となるサードパーティのアセンブリについて読んだことがあります。こうすることで、自分のアドレススペースから分離して、コードにクラッシュを起こさせないようにすることができます。すべての呼び出しをアプリのドメイン境界全体に分散させる必要があるため、別個のアプリドメイン内のアセンブリとの通信は難しく、ペナルティがあります。
これはかなり先進的な話題です。Richterで読んでみることをお勧めします(他の書籍も利用可能です)。
- 1. appdomain C++ c#
- 2. のAppDomain DoCallBackにFileNotFoundExceptionは、C#
- 3. Djangoにユーザごとの自動インクリメントフィールドはありますか?
- 4. ブラウザごとに異なるCSSはありますか?
- 5. AppDomain/"動的にコンパイルされたコード"の制限はありますか?
- 6. OSX用のdev C++のようなプログラムはありますか
- 7. Cプログラムの静的不変発見ツールはありますか?
- 8. appdomainの間に別々の作業ディレクトリがあります
- 9. AppDomainあたりのapp.configファイルの数はいくつですか?
- 10. Qt 500msごとの割り込みプログラム
- 11. アプリケーションごとにいくつのCouchDBデータベースがありますか?
- 12. スパウトごとにタプルタイムアウト設定がありますか?
- 13. joomlaのユーザーモジュールごとにダウンロードヒットカウンタがありますか?
- 14. LInux上のUDPソケットのソケットごとのバッファをプログラムで増やす方法はありますか?
- 15. cプログラムをcに変換するツールや方法がありますか#
- 16. WordPressにカテゴリごとに画像ギャラリーのプラグインはありますか?
- 17. BackupAgentにはデバイスごとに1つのクラウドバックアップがありますか?
- 18. C#プログラムから別のプログラムにいくつかの "統計"を渡す方法はありますか?
- 19. ファイルサイズごとにログファイルをローリングする方法はありますか?
- 20. インスタンスごとにURLを取得する方法はありますか?
- 21. 10秒ごとにPHPスクリプトをリフレッシュする方法はありますか?
- 22. リソースごとに設定を管理する宝石はありますか?
- 23. リクエストごとに資産をコンパイルする方法はありますか?
- 24. イメージごとにHttpHandler(ashx)を作成する必要はありますか?
- 25. 私のMacにクロスプラットフォームのC++プログラムを書く方法はありますか?
- 26. ディレクトリ内のビューごとに異なるコントローラはありますか?
- 27. SFTPコミュニケーションはC#にありますか?
- 28. Flex/BlazeDS - RemoteObjectごとに関数呼び出しごとのresultHandlerはありませんか?
- 29. タイトルごとに要素を探す必要があります。
- 30. Hadoopでは、プログラムごとにジョブごとのノード数を制御できますか?