2010-10-13 54 views
3

我知道,一旦.NET應用程序啓動,CLR會自動創建3個應用程序域,它們是系統域,共享域和默認域。關於.NET應用程序域的問題

系統域:

  • 創建共享&缺省域
  • 提供加載和卸載應用程序域的funcitons
  • 負載mscorlib.dll中到共享域
  • 簿記所有其他域
  • 實習字符串文字簿記
  • 預先創建某些類型的異常諸如存儲器外的外,堆棧溢出異常等

共享域的:

  • 包含域中性碼。
  • 包含基本類型,例如字符串,枚舉的Int32等

默認域:

  • .NET應用程序代碼在運行。

下面是幾個關於他們的問題:

  • 這是什麼3個領域的關係?有沒有層次或什麼?根據系統域的職責,我認爲在一個過程中的AppDomain應該像邏輯上的那樣組織,樹的根是系統域,並且所有其他域都是它的孩子。

  • 「interned string」是什麼意思?有些例子可能會更好。

  • AppDomain是用於隔離,跨域通信不是很容易做到。所以我想知道,因爲基本類型包含在共享域中而不是默認域或任何其他可以運行代碼的AppDomain中,所以我相信CLR必須將共享域唯一對待才能進行簡單的跨域通信。真的嗎?

謝謝。

回答

3

我想添加這個評論而不是答案,但我不允許評論。抱歉。

跨應用程序域內存訪問(而不是遠程處理)很困難,並且是通過設計完成的。

如果你想要一個跨域單例,我發現this little gem