yew/website/i18n/ja/docusaurus-plugin-content-docs/current/concepts/agents.mdx

57 lines
3.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 'エージェント (Agents)'
description: 'Yew のエージェントシステム'
---
import useBaseUrl from '@docusaurus/useBaseUrl'
import ThemedImage from '@theme/ThemedImage'
エージェント (Agents) は、タスクを Web Workers にオフロードする方法です。
エージェントが並行して動作できるようにするために、Yew は [Web Workers](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers) を使用します。
## ライフサイクル
<!--
The diagram is produced with nomnoml (nomnoml.com),
The code can be found in the <desc> tag of the svgs.
-->
<ThemedImage
alt="agent lifecycle diagram"
sources={{
light: useBaseUrl('/img/agent-lifecycle-light.svg'),
dark: useBaseUrl('/img/agent-lifecycle-dark.svg'),
}}
/>
## エージェントの種類
### 範囲
- 公開 - 任意の時点で、公開エージェントのインスタンスは最大で1つだけです。ブリッジはWeb Worker内でエージェントを生成するか、既に生成されたエージェントに接続します。ブリッジがこのエージェントに接続されていない場合、エージェントは消滅します。
- 私有 - 新しいブリッジごとにWeb Worker内で新しいエージェントを生成します。これは、ブラウザと通信する共有だが独立した動作をコンポーネントから移動するのに適しています。接続されたブリッジが破棄されると、エージェントは消滅します。
- グローバル \(WIP\)
## エージェントとコンポーネント間の通信
### 通信ブリッジ (Bridges)
通信ブリッジ(ブリッジ)は、コンポーネントとエージェント間の通信チャネルです。これにより、コンポーネントはエージェントにメッセージを送信し、エージェントからのメッセージを受信できます。
`use_bridge` フックは、関数コンポーネント内でブリッジを作成する機能も提供します。
### ディスパッチャー (Dispatchers)
ディスパッチャー(ディスパッチャー)は、コンポーネントとエージェント間の一方向通信を可能にし、コンポーネントがこの方法でエージェントにメッセージを送信します。
## オーバーヘッド
エージェントはWeb Workersつまり、私有および公開を使用します。メッセージの送受信時にシリアル化オーバーヘッドが発生します。エージェントは [bincode](https://github.com/bincode-org/bincode) を使用して他のスレッドと通信するため、コストは関数を呼び出すだけの場合よりもはるかに高くなります。
## さらなる読み物
- [web_worker_fib](https://github.com/yewstack/yew/tree/master/examples/web_worker_fib) の例は、コンポーネントがエージェントにメッセージを送信し、エージェントからのメッセージを受信する方法を示しています。