HTML5 キャンバスを使用して複雑なグラフをレンダリングする新しいプロジェクトを開始しています。
現在、Windows フォームの実装があり、それを Web に移行したいと考えています。したがって、レイアウト、描画オブジェクト、およびすべての描画メタデータは C# で生成されます。描画を実装するだけで済み、HTML5 キャンバスを使用します。
サーバー側は ASP MVC になります。描画モデルを計算し、クライアントに送信します。次に、クライアントはキャンバスを使用してデータを表します。
問題は、描画モデルが巨大になる場合があることです。おそらく 10Mb ~ 50Mb のメタデータです。サーバーからクライアントにすべての描画データを送信する最良の方法は何ですか?
JavaScript で描画オブジェクトを作成するページ内のスクリプトにモデルを使用する
これが標準的な方法になります。C# で描画オブジェクトを使用してモデルを生成し、それらのオブジェクトを JavaScript に変換します。
- 長所: 実装が簡単
- 短所: ページが重くなります。
描画データを返すコントローラーから JsonResult を返す
たとえば、jQueryを使用して取得できます。maxJsonLength プロパティに到達したため、このオプションは失敗しました。web.configで変更できることは知っていますが、それは良い考えではないようです。3.
- 長所:実装が簡単で、ajaxを使用してサーバーから描画オブジェクトをロードし、進行状況をユーザーに報告できます。
- CONS : Web.config の maxJsonLength プロパティを変更するのは良い考えではないようです。
サーバーで図面データを使用して一時スクリプト ファイルを生成し、それをクライアント ページに含める
サーバーは、JS スクリプト ファイルで描画データを生成します。次に、サーバーはこのページを JavaScript としてクライアント ページに含め、描画データがクライアントに読み込まれるようにします。このロードは、ajax を使用して行うこともできます。
- 長所: ファイルをダウンロードするようなもので、サイズが非常に大きい場合は問題ありません。
- 短所: 実装がより困難です。一時ファイルを管理する必要があり、ファイルがいつ送信されたかを把握して削除する必要があります。
その他の代替
私は HTML プログラミングの専門家ではないので、他のオプションは歓迎します。