ミドルウェアなしの副作用 — パイプラインステージがサンクと... ノート

ミドルウェアなしの副作用 — パイプラインステージがサンクとサガを置き換える方法

Reduxは、サンク、サガ、オブザーバブルなどのミドルウェアを使用して非同期操作を処理しますが、これらは順序が保証されない任意のタイミングでアクションをディスパッチします。これにより、サンクとサガの例で示されているように、タイミングや順序の問題が発生する可能性のある複雑なディスパッチチェーンが作成されます。根本的な問題は、Reduxに組み込みの非同期状態解決モデルがないことです。SDuX Vaultは、非同期入力解決をパイプラインステージに直接統合することで、ミドルウェアを排除します。Resolveステージは、プレーンな値、プロミス、オブザーバブル、または構造化されたエンベロープのいずれであっても、すべての入力を予測可能な形式に正規化します。これにより、下流のパイプラインステージは、トランスポートやタイミングの懸念から解放された一貫したデータを受信することが保証されます。Reduxのサンクとは異なり、複数のアクションをディスパッチし、予測不能にインターリーブされる可能性があるSDuX Vaultは、パイプライン内で遅延ファクトリを直接解決します。この解決は、シリアル化され、決定論的に順序付けられ、アトミックにコミットされます。SDuX Vaultのアプローチは、単一の状態マージを含み、中間的で可視的な状態を回避します。オーケストレーションのために、Reduxサガは外部レイヤーでジェネレータを使用しますが、SDuX Vaultはポリシーレイヤー内でコントローラーを採用します。コントローラーは、計算前に実行ポリシーを宣言し、データ変換ロジックからクリーンに分離します。これは、リデューサーに到達するためにアクションをディスパッチするサガとは対照的です。SDuX Vaultは、アーキテクチャ上の制約により、決定論的な実行を保証します。シリアル化されたコンダクターキュー、純粋なパイプライン計算、遅延アトミック状態コミット、および構造的に不可能な再入可能性です。これらはランタイムによって強制され、非同期操作に関連する一般的なバグを防ぎます。Reduxは順序付けのために手動の労力に依存しますが、SDuXはそれを本質的に提供します。