Your SlideShare is downloading. ×
  • Like
第8回c#ユーザー会-AppDomain
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

  • 1,321 views
Published

The 8th C# Users group in Japan.Show

The 8th C# Users group in Japan.Show

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,321
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
4
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. kkamegawa(かめがわ かずし):@kkamegawa kkamegawa@clueup.org http://d.hatena.ne.jp/kkamegawa
  • 2.  かめがわ かずし 某企業でフロントエンドからバックエンドま で手広くいろんなことやってます 最近は@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デバッグ手法
  • 3. 知っているようで知らない?
  • 4.  長ったらしく書くとApplication Domain。 マネージプロセスが必ず一つ持ち、多く作れ ます。 最初の一つ以外いつでも削除できます。 いくつかの例外を除いて、ドメインごとにアセ ンブリを管理します。 作ったAppDomainを削除すると、ドメイン内 で呼び出しているアセンブリも一緒にアンロー ドされます。
  • 5. 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
  • 6.  AppDomain.Unload (AppDomain.CurrentDomain); で終わらせようとするとどうなる? CannotAppDomainUnloadExceptionが スローされる (ま、普通やりませんよね)
  • 7.  AppDomainってどのくらい作れる? メモリへのインパクトは?
  • 8.  1000個のAppDomain作成/消去 (ドメイン固有のアセンブリ呼び出しはなし) 作成はあまり時間かからないが、消去は結構 かかっている Loader Heap, Working Set, Private bytesはAppDomainを消去してもそれなりに。 Loader Heapは適当なところでGCが発生
  • 9.  http://support.microsoft.com/kb/979744/j a (パッチあり) .NET Framework 2.0 ベースの Multi- AppDomain アプリケーションを実行したと きにアプリケーションが応答しなくなる
  • 10. 普通やりませんが…
  • 11.  All-In-One-Code-Frameworkにある CppHostCLRというソリューションがサンプル http://1code.codeplex.com/ ICorRuntimeHost, ICLRRuntimeHostを使 用したサンプル。ただし、どちらもCLR2以降し かロードできない (今更.NET 1.1のホスティングいらないよね?)
  • 12. CLRCreateInstance ICLRMetaHost->GetRuntime()ICLRRuntimeInfo->IsLoadable()ICLRRuntimeInfo->GetInferface() ICorRuntimeHost->Start()
  • 13.  CLRの開始まではそんなに難しくない アンマネージドからマネージのインスタンスメ ソッドを呼び出そうとすると結構大変。 staticメソッド呼ぶだけなら ICLRRuntimeHost-> ExecuteInDefaultAppDomain()でOK お仕事であるいは趣味で「.NETのこのクラスラ イブラリ使いたい」と思ったときはどうぞ
  • 14.  Internet Explorer IIS  IIS6まではWorker ProcessがCLRをホストして いました。  IIS7以降の統合モードではIIS自身がホストしま す。クラッシックモードではWorker Processが使 われます。 SQL Server 2005以降(SQLCLRがある)。 PowerShell
  • 15.  たぶん99.9%の人は複数ドメイン作らなくても やっていけます。昔はプラグインのために使う こともありましたが、今はMEFがありますし。 そして、CLRのホストは99.999%くらいの人は 知らなくてもやっていけるかと思います。 ここもMCPの試験範囲なので出ますよ。 2nd時代にこの本だけ読んでMCP受けました。
  • 16.  プログラミング.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