エージェント (Agents)
エージェント (Agents) は、タスクを Web Workers にオフロードする方法です。
エージェントが並行して動作できるようにするために、Yew は Web Workers を使用します。
ライフサイクル
エージェントの種類
範囲
-
公開 - 任意の時点で、公開エージェントのインスタンスは最大で1つだけです。ブリッジはWeb Worker内でエージェントを生成するか、既に生成されたエージェントに接続します。ブリッジがこのエージェントに接続されていない場合、エージェントは消滅します。
-
私有 - 新しいブリッジごとにWeb Worker内で新しいエージェントを生成します。これは、ブラウザと通信する共有だが独立した動作をコンポーネントから移動するのに適しています。接続されたブリッジが破棄されると、エージェントは消滅します。
-
グローバル (WIP)
エージェントとコンポーネント間の通信
通信ブリッジ (Bridges)
通信ブリッジ(ブリッジ)は、コンポーネントとエージェント間の通信チャネルです。これにより、コンポーネントはエージェントにメッセージを送信し、エージェントからのメッセージを受信できます。
use_bridge
フックは、関数コンポーネント内でブリッジを作成する機能も提供します。
ディスパッチャー (Dispatchers)
ディスパッチャー(ディスパッチャー)は、コンポーネントとエージェント間の一方向通信を可能にし、コンポーネントがこの方法でエージェントにメッセージを送信します。
オーバーヘッド
エージェントはWeb Workers(つまり、私有および公開)を使用します。メッセージの送受信時にシリアル化オーバーヘッドが発生します。エージェントは bincode を使用して他のスレッドと通信するため、コストは関数を呼び出すだけの場合よりもはるかに高くなります。
さらなる読み物
- web_worker_fib の例は、コンポーネントがエージェントにメッセージを送信し、エージェントからのメッセージを受信する方法を示しています。