環境

「環境」可讓您設定架構在運作範圍中的元件所做出的特定選擇。元件資訊清單可以定義環境,並將其指派給子項領域。環境適用於元件執行個體的整個領域,除非部分子領域會覆寫該環境 (請參閱傳播一節)。

屬性

環境可讓您設定下列領域的行為:

跑者

元件架構適用於執行階段,可支援新的執行階段環境和程式設計語言,無須變更元件管理員或其他元件。執行器為元件提供擴充點,以便與元件管理員互動,並為 Fauchsia 新增執行階段支援。一些跑者範例如下:

  • ELF 執行器會執行編譯為 ELF 檔案格式的二進位檔。
  • Dart AOT 執行元件為 Dart 程式 (例如 VM) 提供執行階段。
  • Chromium 網路執行元件可為以網頁實作的元件提供執行階段。

元件管理員會識別要執行的「內容」,並將執行作業的「運作方式」委派給執行元件。執行器實作可自由選擇執行元件的適當策略,包括:

  • 為元件啟動新程序。
  • 在虛擬機器中區隔元件。
  • 使用與執行器相同的程序執行元件。
  • 在遠端電腦上以工作的形式執行元件。

如要進一步瞭解如何使用和實作執行器,請參閱「執行器功能」。

解析器

httpfuchsia-pkg

如果解析的元件有相關聯的套件,解析器也會傳回代表套件目錄的 fuchsia.io.Directory 控制代碼。

如要進一步瞭解如何使用和實作解析器,請參閱解析器功能一文。

宣告

環境宣告新增至元件資訊清單,定義新環境。

如要使用環境,您必須將其指派給子項或集合。請參閱「傳播」一節。

環境支援以下兩種擴充功能模式:REALMNONE

  • REALM:環境會沿用指派給此元件的環境 (「父項環境」) 屬性。所有新屬性都會新增到繼承自父項環境的上層。與父項環境重疊的所有屬性都會覆寫父項。
  • NONE:環境一開始是空的,沒有初始屬性。

傳播

系統會透過下列其中一種方式為元件執行個體指派環境:

  • 子項集合並未設定 environment。在此情況下,系統會接收父項的環境。這是最常見的情況。
  • 其「子項」或「集合」會設定 environment,也就是指此元件定義的其中一個 environments

元件管理員會為根元件指派環境。這包括啟動解析器、ELF 執行器和預設設定選項。

環境與能力轉送

環境的語意與功能轉送對比。使用能力轉送時,必須讓路徑中的每個元件從供應器到取用端的元件明確「公開」或「提供」能力。能力轉送的明確分類可讓您輕鬆確保元件無法存取應擁有的功能,進而維持最低權限原則

不過,有些設定選項對每個元件來說並不合理。以「Runners」為例。幾乎每個元件都需要使用執行元件,但定義新的執行元件並不常見,例如,比起定義通訊協定能力,這種情況更罕見。此外,執行元件的存取權並不會真的授予元件大量權限,因為元件架構會中介對執行元件的通訊協定的存取權,且元件無法直接使用該通訊協定。因此,執行元件功能會在環境中註冊,這樣一來,該環境獲派的任何元件都可使用 (除非有些子領域決定設定沒有執行元件的新環境)。