0

XtraReports ツールと Web サービスのパフォーマンスに関する潜在的な問題に直面しています。Windows フォーム アプリで。

XtraReport が最初のページをロードして大きなデータ セット (大きなデータ セットは +10,000 行と理解している) をロードし、残りのページをバックグラウンドでロードし続けることは知っていますが、これはすべて手元のデータ ソースで行われます。では、このデータ ソースが Web サービスを通過する必要があり、クライアントに送信するためにデータをシリアル化する必要がある場合はどうなるでしょうか?

シナリオは次のとおりです。

私は、Web サービスへの呼び出しを行う Windows 形式のシン クライアントを持っています。このクライアントは、その呼び出しを受け取り、リフレクションによって、対応するクラスをインスタンス化し、必要なメソッドを呼び出します (このアーキテクチャは継承されていることに注意してください。これについてはほとんど選択肢がありません。使用する必要があります)。そこで、データベースからデータを取得し、それを Web サービス インターフェイスを介してクライアントに送信するクラスを作成します。このデータは、DataSet、SqlDataReader (SQL Server 2000 を使用していますが、年末までに 2008 になる可能性があることにも注意してください)、DataTable、XML などです。

結果のデータ セットが大きい場合、シリアライゼーションと転送にかなりの時間がかかる可能性があり、レポートのレンダリングにさらに時間がかかり、全体的なパフォーマンスが低下する可能性があります。

ビデオのストリーミングのようなものを使用する可能性があることは知っていますが、Web サービスを介したデータのストリーミングには可能性がありますが、その周りで何かを試すためのリード情報はありません。

これについてあなたはどう思いますか?ご不明な点がございましたら、または問題をより適切に説明するためにさらに情報を書く必要がある場合はお知らせください。

ありがとう!

4

3 に答える 3

2

データを分割する方法、つまりデータの小さなサブセットを返す方法はありますか?

すべてのデータを同時に返すという絶対的な要件がない場合は、データを小さな断片に分割することで、データベースからの読み取り、シリアル化、および Web サービスを介したトランスポートに大きな違いが生じます。

編集:すでにパーティション化について言及しているため、この回答を削除しました。今は元に戻しています。議論の出発点として役立つかもしれません...

ページングの操作方法に関するポイントについては、「次の 100 件の結果を表示する」アプローチで正しい方向に進んでいると思います。XtraReport がどのように機能するか、またデータソースの要件が何であるかがわかりません。私が見る3つの問題があります:

  • 分割されたデータに対するサーバーのサポート (たとえば、Web サービスは「ページ 3」のデータのみを返すことをサポートする必要があります)
  • 要約データ - レポートに合計または平均の行がありますか? それらは XtraReport コントロールによって計算されますか? これらの結果を表示するには、完全なデータセットが必要ですか? 自分でコントロールに集計を提供できますか (そして、データ セット全体を返さずにそれらを計算するより効率的な方法を見つけられますか?)
  • ページングを使用するデータソースに対する XtraReport のサポート。
于 2009-09-07T18:27:02.453 に答える
2

多分聞きたくない答えを教えます。

期待を設定します。

レポートは通常、大量のデータをかき回す必要があるため、遅くなります。それを回避する良い方法はありません。しかし、それを除いて、私は次のことを行います:

  1. データ ロードをバイナリ状態にシリアル化し、soap を介して転送可能なもの (たとえば base64) に変換して転送します。こうすることで、無駄な山かっこをたくさん避けることができます。
  2. クライアントでできるだけ多くのデータを事前キャッシュします。
  3. アプリケーションの知覚パフォーマンスに注目してください。たとえば、レポート データの収集をバックグラウンド スレッドにスローして、ユーザーが他の作業を実行できるようにし、レポートが利用可能になったときにユーザーに通知を表示します。
  4. 場合によっては、最も頻繁に使用される基準のレポートを前もって生成し、要求されたときにそれを提供することができます。
于 2009-09-08T05:23:06.793 に答える
1

DataSetsを転送することは悪い考えです。DataSetには多くの役に立たない日付があります。単純なオブジェクトを使用します。サーバー側でORMを使用します。また、いくつかのデータを事前計算することもできます。参照はクライアントにキャッシュしてから、サーバーデータと結合できます。

于 2009-09-07T18:11:37.120 に答える