服務功能

A 罩杯 服務能力 這項能力 可讓使用者探索一或多個 FIDL 服務 執行個體。服務功能由 換 頻道 採用 Directory 通訊協定 目錄中的每個項目都公開了具名的「服務執行個體」

library fuchsia.examples;

const MAX_STRING_LENGTH uint64 = 32;

@discoverable
protocol Echo {
    EchoString(struct {
        value string:MAX_STRING_LENGTH;
    }) -> (struct {
        response string:MAX_STRING_LENGTH;
    });
    SendString(struct {
        value string:MAX_STRING_LENGTH;
    });
    -> OnString(struct {
        response string:MAX_STRING_LENGTH;
    });
};

service EchoService {
    regular_echo client_end:Echo;
    reversed_echo client_end:Echo;
};

服務實作是由使用 傳出目錄 而從其他應用程式 元件的 命名空間 ,直接在 Google Cloud 控制台實際操作。

服務執行個體

單一服務的多個已命名執行個體可以由單一元件託管。 都會出現在 命名空間 瞭解 做為服務的子目錄。 元件架構會為每個元件產生任意且不重複的 ID 服務執行個體名稱

舉例來說,如果架構產生 57dfe118a2a8 做為 在 fuchsia.examples.EchoService 服務中,取用元件則能將 使用下列命名空間路徑,要求執行個體中的通訊協定:

  • /svc/fuchsia.examples.EchoService/57dfe118a2a8/regular_echo
  • /svc/fuchsia.examples.EchoService/57dfe118a2a8/reversed_echo

提供服務功能

如要提供服務能力,元件必須宣告 從self。元件將託管服務能力 其 傳出目錄 ,直接在 Google Cloud 控制台實際操作。

若要定義能力,請為該功能新增 capabilities 宣告:

{
    capabilities: [
        {
            service: "fuchsia.example.ExampleService",
        },
    ],
}

這定義了由元件代管的能力,該元件具有傳出目錄路徑 為 /svc/fuchsia.example.ExampleService。您也可以自訂路徑:

{
    capabilities: [
        {
            service: "fuchsia.example.ExampleService",
            path: "/my_svc/fuchsia.example.MyExampleService",
        },
    ],
}

轉送服務功能

元件轉送服務功能,方法是「公開」元件 家長為他們提供福利

如要進一步瞭解架構如何轉送元件功能, 請參閱功能轉送

公開

公開服務能力可讓元件的父項存取該功能 功能:

{
    expose: [
        {
            service: "fuchsia.example.ExampleService",
            from: "self",
        },
    ],
}

from: "self" 指令代表服務功能 由此元件「提供」的函式

動態集合

服務能力可透過動態集合公開:

{
    collections: [
        {
            name: "coll",
            durability: "transient",
        },
    ],
    expose: [
        {
            service: "fuchsia.example.ExampleService",
            from: "#coll",
        },
    ],
}

提供

如果您提供服務能力,可讓子項元件存取該功能 功能:

{
    offer: [
        {
            service: "fuchsia.example.ExampleService",
            from: "self",
            to: [ "#child-a", "#child_b" ],
        },
    ],
}

使用服務功能

如要使用服務能力,元件必須要求功能 開啟對應的路徑 命名空間 ,直接在 Google Cloud 控制台實際操作。

如要要求這項能力,請為該功能新增 use 宣告:

{
    use: [
        {
            service: "fuchsia.example.ExampleService",
        },
    ],
}

這會將服務填入已知路徑的元件命名空間中 /svc/fuchsia.example.ExampleService。您也可以自訂路徑:

{
    use: [
        {
            service: "fuchsia.example.ExampleService",
            path: "/my_svc/fuchsia.example.MyExampleService",
        },
    ],
}

如要進一步瞭解未解決要求,請參閱 通訊協定開啟的生命週期