6

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 プログラミングの専門家ではないので、他のオプションは歓迎します。

4

2 に答える 2

1

私は多少異なるアプローチを取ると思います。私はservicestackを使用します。ここでは、ビジネスタイヤが分離されていると想定しています。ここで、canvas の代わりに、backbone jsまたはangular jsを使用します。UI 生成用のフレームワークは他にもたくさんあります。今、require js のようなライブラリを使用して、UI 生成に必要な詳細のみをプッシュするか、UI に必要な UI を含む HTML をプッシュします。したがって、ここでは速度が向上し、ページが軽量になります。縮小された Javascript がクライアントに来ると、ロードされず、ページ上の html 部分の計算とレンダリングにのみ使用されます。また、単一ページのアプリケーションはデスクトップと同じくらい高速です。ほぼそれだけ。これがお役に立てば幸いです。リンクを追加しました。詳細が必要な場合はお知らせください。

于 2013-01-09T09:26:18.123 に答える
0

重い部分 (サブページのスクリプトとデータ)を軽量ページの iframeに配置して、重い部分を非同期でロードできるようにします。これには、最初の script-on-page オプションの実装の容易さの利点があり、3 番目の load-as-separate-script-file オプションの長所 (一時ファイル管理の短所はありません) が得られます。

iframe の読み込み中に、読み込み中の画像を表示して、ユーザーが何が起こっているかを知ることができます。

于 2012-11-28T15:31:05.240 に答える