capabilities功能可結合對資源的存取權和一組權利,提供存取權控管,以及與資源互動的方式。
元件只能透過命名空間中的可偵測功能,以及其收到的「編號化的控點」,與系統和其他元件互動。
功能轉送
元件在元件資訊清單中,宣告自身為其他元件 (或架構) 提供的系統和功能提供的新功能。元件架構會使用這些宣告來填入命名空間。
可提供 支援路徑 由於功能大多是透過父項元件轉送到子項,因此在為子項元件定義沙箱時,父項元件扮演相當重要的角色。
環境會為指派領域的情況設定架構行為。該架構會存取及使用轉送至環境的功能。元件執行個體無法存取環境中的功能。
可用性功能可讓元件聲明預期功能可提供的情況。
轉送術語
路由術語分為以下類別:
- 功能在元件、父項及其子項之間轉送方式的宣告:
- 元件使用或提供的功能宣告:
功能類型
下列功能可轉送:
type | 說明 | 已轉送 |
---|---|---|
protocol
|
檔案系統節點,用於開啟由 FIDL 通訊協定支援的管道。 | 元件 |
service
|
檔案系統目錄,用於將管道提供給多個服務執行個體之一。 | 元件 |
directory
|
檔案系統目錄。 | 元件 |
storage
|
可寫入的檔案系統目錄,該目錄只與該元件共用的元件。 | 元件 |
resolver
|
這項能力在環境中註冊時,會使具有特定網址配置的元件會透過該解析器解析。 | 環境 |
runner
|
這項能力允許在環境中註冊時,允許架構在啟動元件時使用該執行元件。 | 環境 |
範例
請參考以下示例,瞭解如何透過元件執行個體樹狀結構能力轉送:
在這個例子中:
echo
元件執行個體會提供fuchsia.Echo
通訊協定做為其宣告的capabilities之一。echo_tool
元件執行個體需要使用fuchsia.Echo
通訊協定能力。
每個中間元件都用於合作,將 fuchsia.Echo
明確從 echo
轉送至 echo_tool
:
echo
會從self
公開fuchsia.Echo
,以便其父項services
可以看到通訊協定。services
會將fuchsia.Echo
的子項echo
公開給其父項shell
。shell
提供fuchsia.Echo
從其子項services
給另一個子項tools
。tools
優惠fuchsia.Echo
優惠parent
給孩子echo_tool
。
元件架構會授權 echo_tool
要求使用 fuchsia.Echo
,因為系統會找到提供該通訊協定能力的元件有效的路徑。
如要進一步瞭解元件如何在執行階段連線至功能,請參閱「通訊協定開啟生命週期」。