應用程式定義域主機
更新:2007 年 11 月
每一個 .NET Framework 應用程式在應用程式定義域中執行時,都會受到建立應用程式定義域和將組件載入其中的主應用程式控制。主應用程式可以存取有關程式碼的資訊 (辨識項),例如程式碼來源的區域,或應用程式定義域中組件的數位簽章。受信任的主應用程式是指具有使用權限,將這類資訊提供給 Common Language Runtime 的主應用程式。System.AppDomain 類別會提供主應用程式使用的應用程式定義域功能。
下表會顯示應用程式主應用程式的類型。
應用程式定義域主機 |
說明 |
---|---|
瀏覽器主應用程式 (例如 Microsoft Internet Explorer) |
在網站環境中執行程式碼。 |
自行設計的主應用程式 |
建立定義域和將組件載入定義域中,包括動態組件。可用 Managed 或 Unmanaged 程式碼撰寫。 |
伺服器主應用程式 (例如 ASP.NET) |
執行處理送至伺服器要求的程式碼。 |
Shell 裝載程式 |
從 Shell 啟動應用程式 (.exe 檔案)。 |
在建立新的應用程式定義域之後,主應用程式可指定要套用至應用程式定義域中程式碼的原則。這個原則必須受制於企業、電腦和使用原則。主應用程式可以減少電腦和使用者原則允許的使用權限集合,但是不能擴大。應用程式定義域的原則只能設定一次。若要設定應用程式定義域原則,必須將控制定義域原則的安全性權限 (透過 SecurityPermission 類別提供) 授與主應用程式。
在設定完應用程式定義域原則之後,依照新的原則 (企業、電腦、使用者和應用程式定義域原則) 會將使用權限授與所有後續載入的組件。而依照預先存在的原則 (只包括企業、電腦和使用者原則),預先載入的組件會取得使用權限授權。依照新的應用程式定義域原則,不會重新評估授與這些組件的使用權限。
受信任的主應用程式可將有關載入應用程式定義域中的組件資訊 (辨識項) 提供給執行階段。如果定義域主應用程式沒有控制辨識項的適當 SecurityPermission,執行階段會使用在主應用程式上強制使用的安全性,決定要在組件上強制執行的安全性。
在某些情況下,原本一般是由受信任的應用程式定義域主機提供的辨識項,實際上會由載入器提供。一般而言,在建立完應用程式定義域之後,應用程式定義域主機會將第一個 (主要) 組件載入應用程式定義域,然後呼叫到組件中,即可開始執行。當第一個組件中的程式碼參考另一個組件中的程式碼時,載入器會解析參考、將適當的組件載入應用程式定義域,然後將有關組件的辨識項提供給執行階段。在這個情況下,提供原始組件辨識項的受信任應用程式定義域主機不會將辨識項提供給後續載入的組件。