「環境」可讓您設定架構在運作範圍中的元件所做出的特定選擇。元件資訊清單可以定義環境,並將其指派給子項領域。環境適用於元件執行個體的整個領域,除非部分子領域會覆寫該環境 (請參閱傳播一節)。
屬性
環境可讓您設定下列領域的行為:
跑者
元件架構適用於執行階段,可支援新的執行階段環境和程式設計語言,無須變更元件管理員或其他元件。執行器為元件提供擴充點,以便與元件管理員互動,並為 Fauchsia 新增執行階段支援。一些跑者範例如下:
- ELF 執行器會執行編譯為 ELF 檔案格式的二進位檔。
- Dart AOT 執行元件為 Dart 程式 (例如 VM) 提供執行階段。
- Chromium 網路執行元件可為以網頁實作的元件提供執行階段。
元件管理員會識別要執行的「內容」,並將執行作業的「運作方式」委派給執行元件。執行器實作可自由選擇執行元件的適當策略,包括:
- 為元件啟動新程序。
- 在虛擬機器中區隔元件。
- 使用與執行器相同的程序執行元件。
- 在遠端電腦上以工作的形式執行元件。
如要進一步瞭解如何使用和實作執行器,請參閱「執行器功能」。
解析器
如果解析的元件有相關聯的套件,解析器也會傳回代表套件目錄的 fuchsia.io.Directory
控制代碼。
如要進一步瞭解如何使用和實作解析器,請參閱解析器功能一文。
宣告
如要使用環境,您必須將其指派給子項或集合。請參閱「傳播」一節。
傳播
系統會透過下列其中一種方式為元件執行個體指派環境:
- 其子項或集合並未設定
environment
。在此情況下,系統會接收父項的環境。這是最常見的情況。 - 其「子項」或「集合」會設定
environment
,也就是指此元件定義的其中一個environments
。
元件管理員會為根元件指派環境。這包括啟動解析器、ELF 執行器和預設設定選項。
環境與能力轉送
環境的語意與功能轉送對比。使用能力轉送時,必須讓路徑中的每個元件從供應器到取用端的元件明確「公開」或「提供」能力。能力轉送的明確分類可讓您輕鬆確保元件無法存取應擁有的功能,進而維持最低權限原則。
不過,有些設定選項對每個元件來說並不合理。以「Runners」為例。幾乎每個元件都需要使用執行元件,但定義新的執行元件並不常見,例如,比起定義通訊協定能力,這種情況更罕見。此外,執行元件的存取權並不會真的授予元件大量權限,因為元件架構會中介對執行元件的通訊協定的存取權,且元件無法直接使用該通訊協定。因此,執行元件功能會在環境中註冊,這樣一來,該環境獲派的任何元件都可使用 (除非有些子領域決定設定沒有執行元件的新環境)。