やじゅ@アプリケーション・ラボ わんくま支局

目次

Blog 利用状況

ニュース

プロフィール

MSMVP

アプリケーション・ドメイン(AppDomain)について

.NETネタです。自分なりにまとめたものです。

.NETでは、1プロセスの中に型やセキュリティを管理する単位として
アプリケーション・ドメイン(AppDomain)という器を作成し、その中で
処理を実行させる。

アプリケーション・ドメインは、CLRの起動時に3種類を作成する。
1)System Domain、2)Shared Domain、3)Default AppDomain
また、ユーザが独自(CreateDomain関数を使用)にドメインを作成
することも出来る。

但し、独自ドメインの使用用途はあまり多くないと思われる。
とりあえず、2つの例を挙げる。
1).NetにはWin32の時のFreelibrary関数(DLLを呼び出しプロセスの
 アドレス空間から切り離す)のようなものはなく、一旦DLLをロード
 したら通常はプロセスを終了するまでメモリに残り続ける。
 この場合に独自ドメイン内にDLLをロードし、処理後に独自ドメイン
 をアンロード(Unload)することで、Freelibrary関数の代わりとする
 ことが可能であるが、独自ドメインの作成コストは大きい。
2)複数のEXEを1つのプロセスとして扱う場合に独自ドメインを使い
 EXEをスレッド化して実行させる。

.NETアプリケーションは、1度目の起動が遅く2度目は速いですが
2度目以降は、必要なメモリがある程度確保されている上にCLRや
JITコンパイラなどの必要なモジュールが既にメモリ上に配置され
DISKアクセスが少なくなるOS上の機能によるものと思われます。

これは、JITコンパイラはコンパイル後のコードの永続化(ファイル
に保存すること)は行わないし、JITコンパイルされたコードは、
ユーザーがそのアプリケーションを終了すると破棄され、再度
起動したとしても、JITコンパイルはもう1度行われます。
また、AppDomainもプロセス終了すると同時に破棄されます。

NGENを使うことによりJITコンパイル済みイメージを作成すること
で起動を速くすることが可能ですが、AppDomainは作成すること
になりますので、1度目はその分のコストはかかります。
また、Assembly.LoadFromメソッドでNGENで作成したイメージは
使用できません。

参照サイト:
http://www.atmarkit.co.jp/fdotnet/technology/glossary01/glossary01_01.html
http://msdn.microsoft.com/msdnmag/issues/05/05/JITCompiler/default.aspx
http://msdn.microsoft.com/msdnmag/issues/06/02/CLRInsideOut/default.aspx
http://www.exconn.net/Blogs/team03/archive/2005/04/08/326.aspx
http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_05/idnfw11_05_01.html
http://www.shoeisha.com/mag/windev/pdf/870507/windev0507_178_Debug.pdf
http://www.codeproject.com/dotnet/AppDomainMemImprovement.asp#xx781235xx
http://msdn2.microsoft.com/ja-jp/library/6t9t5wcf(VS.80).aspx

投稿日時 : 2007年5月7日 0:14

コメントを追加

# re: アプリケーション・ドメイン(AppDomain)について 2007/05/07 9:30 渋木宏明(ひどり)

AppDomain とセキュリティの関係について考えてみると、「どうして AppDomain という器が必要なのか」がさらに明確になると思いますよ。

# re: アプリケーション・ドメイン(AppDomain)について 2007/05/07 9:39 黒龍

えっと懇親会でご一緒させていただいたかもしれない黒龍です。
1)ですがDLLだけでなく.NETのリソースも対象ですね。インスタンスなどはわかりやすいんですが動的な型情報なんかは結構有名な罠だと思います。

2)の用途は知りませんでした。何かメリットなどあるのでしょうか?

# re: アプリケーション・ドメイン(AppDomain)について 2007/05/07 9:54 シャノン

>> ひどりさん
逆に言うと、セキュリティ以外のメリットって、どんなのがあるんでしょう?

#Orcas 落して System.AddIn をいぢってみようかな。

# re: アプリケーション・ドメイン(AppDomain)について 2007/05/08 1:48 やじゅ

1)確かにリソースも対象ですね。

2)の用途ですが、
わんくまの掲示板で見かけたものとして
FireBirdというデータベースは単一プロセスでしか
データベースにアクセス出来ないため、複数のEXEを
単一プロセスとして動作させているとのことでした。

あと、単一プロセスにするとCLRなどが1つで済む
ため、消費メモリーが少なく出来ます。


セキュリティについももう少し突っ込んでみます。

# buy bimatoprost 2021/12/13 20:55 Travislyday

http://baricitinibrx.com/ buy baricitinib

# buy careprost in the usa free shipping 2021/12/14 16:27 Travislyday

http://stromectols.com/ ivermectin 2mg

# careprost bimatoprost ophthalmic best price 2021/12/15 9:52 Travislyday

https://bimatoprostrx.com/ bimatoprost buy online usa

# ivermectin generic cream 2021/12/18 23:01 Eliastib

fjxnap https://stromectolr.com ivermectin 10 mg

# Свежие новости 2022/02/20 21:36 Adammlc

Где Вы ищите свежие новости?
Лично я читаю и доверяю газете https://www.ukr.net/.
Это единственный источник свежих и независимых новостей.
Рекомендую и Вам

# gzqTAITnHuYEvNJaf 2022/04/19 11:24 johnanz

http://imrdsoacha.gov.co/silvitra-120mg-qrms

タイトル
名前
URL
コメント