• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
第8回c#ユーザー会-AppDomain
 

第8回c#ユーザー会-AppDomain

on

  • 1,506 views

The 8th C# Users group in Japan.Show

The 8th C# Users group in Japan.Show

Statistics

Views

Total Views
1,506
Views on SlideShare
1,428
Embed Views
78

Actions

Likes
1
Downloads
4
Comments
0

4 Embeds 78

http://d.hatena.ne.jp 74
http://a0.twimg.com 2
http://webcache.googleusercontent.com 1
http://kkamegawa.hatenablog.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    第8回c#ユーザー会-AppDomain 第8回c#ユーザー会-AppDomain Presentation Transcript

    • kkamegawa(かめがわ かずし):@kkamegawa kkamegawa@clueup.org http://d.hatena.ne.jp/kkamegawa
    •  かめがわ かずし 某企業でフロントエンドからバックエンドま で手広くいろんなことやってます 最近は@ITでチューニングやらデバッガや ら比較的ニッチなところを書いています。 http://www.atmarkit.co.jp/fdotnet/chu shin/vsperf_index/index.html アプリケーションのギアを上げよう http://www.atmarkit.co.jp/fdotnet/chu shin/vsdebug_index/index.html Visual Studioデバッグ手法
    • 知っているようで知らない?
    •  長ったらしく書くとApplication Domain。 マネージプロセスが必ず一つ持ち、多く作れ ます。 最初の一つ以外いつでも削除できます。 いくつかの例外を除いて、ドメインごとにアセ ンブリを管理します。 作ったAppDomainを削除すると、ドメイン内 で呼び出しているアセンブリも一緒にアンロー ドされます。
    • AppDomain #1(既定) AppDomain #2 Hoo.exe Bar1.dllローダーヒープ ローダーヒープ Bar1.dll Bar2.dll System.dll System.dll ドメイン中立アセンブリ ローダーヒープ MSCorLib.dll 必要に応じてAppDomainを作成 (普通は既定の一つでいい 名前は自分で考えよう) .NET Framework 4 MSCorEE.DLL / CLR.DLL MSCorEEi.DLL (shim) .NET Framework 2.0/3.0/3.5 MSCorWks.DLL
    •  AppDomain.Unload (AppDomain.CurrentDomain); で終わらせようとするとどうなる? CannotAppDomainUnloadExceptionが スローされる (ま、普通やりませんよね)
    •  AppDomainってどのくらい作れる? メモリへのインパクトは?
    •  1000個のAppDomain作成/消去 (ドメイン固有のアセンブリ呼び出しはなし) 作成はあまり時間かからないが、消去は結構 かかっている Loader Heap, Working Set, Private bytesはAppDomainを消去してもそれなりに。 Loader Heapは適当なところでGCが発生
    •  http://support.microsoft.com/kb/979744/j a (パッチあり) .NET Framework 2.0 ベースの Multi- AppDomain アプリケーションを実行したと きにアプリケーションが応答しなくなる
    • 普通やりませんが…
    •  All-In-One-Code-Frameworkにある CppHostCLRというソリューションがサンプル http://1code.codeplex.com/ ICorRuntimeHost, ICLRRuntimeHostを使 用したサンプル。ただし、どちらもCLR2以降し かロードできない (今更.NET 1.1のホスティングいらないよね?)
    • CLRCreateInstance ICLRMetaHost->GetRuntime()ICLRRuntimeInfo->IsLoadable()ICLRRuntimeInfo->GetInferface() ICorRuntimeHost->Start()
    •  CLRの開始まではそんなに難しくない アンマネージドからマネージのインスタンスメ ソッドを呼び出そうとすると結構大変。 staticメソッド呼ぶだけなら ICLRRuntimeHost-> ExecuteInDefaultAppDomain()でOK お仕事であるいは趣味で「.NETのこのクラスラ イブラリ使いたい」と思ったときはどうぞ
    •  Internet Explorer IIS  IIS6まではWorker ProcessがCLRをホストして いました。  IIS7以降の統合モードではIIS自身がホストしま す。クラッシックモードではWorker Processが使 われます。 SQL Server 2005以降(SQLCLRがある)。 PowerShell
    •  たぶん99.9%の人は複数ドメイン作らなくても やっていけます。昔はプラグインのために使う こともありましたが、今はMEFがありますし。 そして、CLRのホストは99.999%くらいの人は 知らなくてもやっていけるかと思います。 ここもMCPの試験範囲なので出ますよ。 2nd時代にこの本だけ読んでMCP受けました。
    •  プログラミング.NET Framework 第二版 プログラミング.NET Framework 第三版 Root of .NET Framework MSDN Library(ホストの概要) http://msdn.microsoft.com/ja- jp/library/dd380850.aspx MSDN Library(アプリケーションドメイン) http://msdn.microsoft.com/ja- jp/library/2bh4z9hs.aspx