功能

元件會透過 功能 ,直接在 Google Cloud 控制台實際操作。功能結合了資源存取權 和一組權利,提供存取控制以及與 資源Fuchsia 功能通常會存取基礎模型 核心物件帳號代碼 提供的元件 命名空間 ,直接在 Google Cloud 控制台實際操作。

元件只能透過 可供探索的功能 編號控點

能力轉送

元件會宣告其提供給系統的新功能 功能,由其他需要的元件 (或架構) 提供 元件資訊清單。元件架構會使用 填入命名空間

為了在執行階段使用功能,必須同時提供有效的 功能性路徑 將消耗性元件轉換為 資源供應商由於功能最常透過父項元件轉送 父項元件在定義下列項目時扮演重要角色 其子項元件的沙箱。

某些能力類型會轉送至 環境 替代 而不是個別元件執行個體環境會設定 以用於分配運作範圍功能轉送到 並由架構存取及使用元件執行個體無法 且能存取其環境中功能的執行階段。

availability [供應情形] 功能可讓元件宣告 預期能力在哪些情況下會出現 廣告。

轉送術語

轉送術語分為下列類別:

  1. 宣告功能在元件之間轉送方式的宣告,包含 父項及其子項:
    • offer:宣告列出的能力會與 子項元件執行個體 子項集合
    • expose:宣告列出的功能可用 父項元件或架構有效期限:expose self 或子項元件
  2. 元件使用或提供的功能宣告:
    • use:對於可執行的元件,宣告其功能 元件則需要 命名空間 執行程式碼 除非另有指定,否則功能會從 parent 轉送。 且每項能力都必須有來自來源的有效路徑。
    • capabilities:宣告此元件提供的功能。 由 self 提供或公開的功能必須顯示在這裡。 這些能力通常會對應到 傳出目錄 ,直接在 Google Cloud 控制台實際操作。

經期偵測

元件架構會強制執行元件之間提供的功能 並未形成循環最簡單的循環範例是 提供從子項 A 到子項 B,以及從 BA 的能力,但沒有 較弱

系統會在以下期間偵測週期:

  • 子項元件及其父項。
  • 目前元件及其子項。

目前元件允許:

  • use 功能,除非其提供下列功能: 就是他們最好的部分
  • use 是來自父項的能力。
  • expose 是父項能力。

如果有月經週期,有幾個策略能解決這些問題。

  • 將其中一個連結標示為 dependency: "weak"。低強度功能不計入 做為對週期偵測或關閉順序的依附元件。A 罩杯 未正確設定 弱性能力不存在或消失。
  • 將其中一個元件分割為沒有循環的兩個較小元件。
  • 反轉其中一個依附元件的順序。舉例來說,與其使用 B 來自 AA 可以使用 B 的第二個能力。方法是 將新能力新增至 AB 的資訊清單,然後新增 use 加入 A 的資訊清單。

功能類型

系統可轉送下列功能:

類型 說明 已轉送到
protocol 一種檔案系統節點,用來開啟由 FIDL 通訊協定支援的管道。 元件
service 檔案系統目錄,用於開啟多個服務執行個體的管道。 元件
directory 檔案系統目錄。 元件
storage 可寫入的檔案系統目錄,隔離使用該檔案的元件。 元件
dictionary 將其他功能結合在一起的功能。 元件
resolver 在環境中註冊時,會使具有特定網址配置的元件使用該解析器解析的功能。 環境
runner 在環境中註冊時,架構允許架構在啟動元件時使用該執行元件。 環境

範例

請參考以下這個說明,透過 元件執行個體樹狀結構:


功能轉送範例

在這個例子中:

  • echo 元件執行個體提供 fuchsia.Echo 通訊協定,做為 宣告的功能
  • echo_tool 元件執行個體需要使用 fuchsia.Echo 通訊協定能力相當卓越

每個中繼元件都能夠合作,明確將 fuchsia.Echoechoecho_tool

  1. echoself 公開 fuchsia.Echo,讓所有人都能看到通訊協定 其父項 services
  2. servicesfuchsia.Echo 從子項 echo 公開給其父項, shell
  3. shell 提供 fuchsia.Echo 的子發布商 services 給另一個子項, tools
  4. tools 優惠 fuchsia.Echo來自parent給子發布商echo_tool的優惠。

元件架構授予 echo_tool 使用 fuchsia.Echo 的要求 因為找到有效的路徑,指向提供該通訊協定的元件 能力。

如要進一步瞭解元件如何在執行階段連線至功能,請參閱 開放通訊協定的生命週期