19

サーバーからデータを取得し、クライアントでGWTを使用してデータを表示したいと思います。

ここではGWTは問題ではありません。GWTをAjax呼び出しに置き換えるか、Webアプリではなく実際のアプリケーションに置き換えることができます。

データを受信して​​表示する前に、JavaScriptを使用してサーバーまたはクライアントで並べ替えを実行する必要がありますか?

4

4 に答える 4

23

それぞれのアプローチには長所と短所があります。

  • ページネーションが必要で、データ全体をクライアントにダウンロードしたくない場合は、サーバーで並べ替えを実行する必要があります(そうしないと、クライアントは現在の行のみを並べ替えることができ、間違った結果になります。別の列で並べ替える)
  • サーバーでの並べ替えは高速です(たとえば、1秒あたりの行数を増やすことができます)が、一度に10000のクライアントにサービスを提供する必要がある場合、これは簡単に逆転する可能性があります。
  • クライアントで並べ替える場合、データを再度ダウンロードせずに並べ替えることができます。
于 2012-05-23T14:04:55.290 に答える
7

理想的には、ソートはサーバー上で実行する必要があります。理由は次のとおりです。-

  1. クライアントのリソースが少ないと想定するのが最善です。たとえば、デスクトップからGWTアプリを起動する人もいれば、CPU/RAMが少ないiPad/電話からGWTアプリを起動する人もいます。

  2. サーバー側で並べ替えを行う標準的な方法があります。たとえば、SQL ORDER BY句を使用しますが、クライアント側で並べ替えを行うには、独自のルーチン/メソッドを実装する必要がある場合があります。

于 2012-05-23T14:06:47.923 に答える
4

場合によります... :)

  1. どのくらいのデータを並べ替えますか?どのくらい速いのか?「できるだけ速く」わかりました...あなたが受け入れることができる最も遅いものは何ですか?クライアントはこれを処理できますか?サーバーはどうですか?これらの要素には他にどのような責任があり、これは対立を生み出しますか?
  2. データはどの程度確実に並べ替える必要がありますか?たとえば、データが並べ替えられていない場合、これで問題ない場合がありますか?
  3. アーキテクチャの要素にどのように責任が割り当てられますか?そのことについては、要素は何ですか?データベースはありますか?ビジネス層はどうですか?世界は単なる「クライアント対サーバー」よりも複雑になる可能性があります
  4. データはどのように使用されますか?複数のソートを実行する必要がありますか?たとえば、A->ZおよびZ->A?
  5. クライアントとサーバー間でデータを転送するコストは妥当ですか?それを合理的にする他の方法はありますか?

アーキテクチャ的に言えば、この質問に答えるには、システムで必要なプロパティを決定し、さまざまな設計の選択肢間のトレードオフを評価する必要があります。システムについて詳しく知らなければ、これ以上のアドバイスを提供することは困難です。

于 2012-05-24T17:33:30.560 に答える
0

クライアントよりもサーバーでソートする方が常に高速であるという包括的なステートメントに注意する必要があります。姓と名の連結でソートされた数千のレコードを返す場合がありました。これらのフィールドのいずれにもインデックスが付けられておらず、私はこれを制御できませんでした。ご存知のように、連結された文字列の並べ替えは、データベースが本質的にうまく機能するものではありません。数字やインデックス付きフィールドに見えます。この場合のクライアントでの並べ替えは、最終的に高速になりました。データベースを制御できる場合は、Oracleのこれら2つのフィールドに関数インデックスを配置します。

ストーリーの教訓は、何も想定せず、アプリケーションのプロファイルを作成して、シナリオに最適なものを見つけることです。

于 2020-06-16T15:49:03.563 に答える