私はWinJSゲームに取り組んでいます。このゲームでは、ロジックの一部がC#WinRTコンポーネントに実装されています。これは、より効率的で、概念化とデバッグが容易であることが証明されたためです。そのコンポーネントは比較的まれに呼び出され、WinJSゲームオブジェクトにプラグインした戻り値のpromiseを返します。
次に、アニメーションフェーズ中に発生する必要な数学作業を別のスレッドに委任し、実行する純粋なUIアクションを表すオブジェクト(ゲームのリストなど)を返すことで、SVGアニメーションを高速化する2番目のシナリオがあります。移動/拡大などする必要があり、DOMに対してすばやく実行されるメインスレッドアクションを持つオブジェクト(私はKnockoutを使用しています)。最初のシナリオとは異なり、このバックグラウンドスレッドの相互作用は、アニメーションの増分ごとに発生するため、非常に多くなります。
これは、部分的に機能しているWebワーカーを使用して実装する予定でしたが、これら2つのアプローチの長所と短所および推奨されるユースケースを確実に理解したいと思います。WinRTコンポーネントの呼び出しとWebワーカーの呼び出しはどちらも、渡されるオブジェクトのある種のシリアル化または変換を伴うようです。既存のWinRT呼び出しでは、jsオブジェクトのプロパティとしてWinRTファクトリクラスがあり、それを使用して、ゲームのミラー簡略化されたWinRT表現を構築してWinRTコンポーネントに渡します。Webワーカーの場合、ゲームの関連する側面のJSONコピーを渡してから、結果を再度変換する必要があります。もう一度C#の呼び出しを使用する方がよいでしょうか、それともまれな呼び出しにのみ推奨されるのでしょうか。それぞれの相対的なオーバーヘッドはどれくらいですか?他に足りないものはありますか?