2011-09-21 4 views
-1

大量のデータを扱うASP.Netアプリケーションを作成する必要があり、パフォーマンスが非常に重要です。ASP.Net - うまくいくWebアプリケーションを作成していますか?

  • そのようななどのGridView、RepeatControl、SqlDataSourceコントロール、などASP.Netコントロールを使用することをお勧めしますか?これらの要素はうまく機能するように設計されていますか、あらかじめ作成された、使いやすい要素を使用するためにパフォーマンスが低下しますか?データに対処するための適切な方法である1

  • ?ビジネスレイヤーを作成し、ビジネスオブジェクトを使用してフォームに入力しますか?またはDataTableとDataSetsを直接使用しますか?

  • 私のパフォーマンスを助けるために起こっているいくつかのヒントを教えてください?限りでのパフォーマンスとして

+0

なぜ-1ですか?なぜ近くに?いくつかのコメントを提供してください – aryaxt

+0

1つの質問であまりにも一般的な、あまりにも多くの質問。 –

答えて

5

私が与えようとする最大のアドバイスは、良いプログラミング手法を使ってアプリケーションを構築した後、プロファイラを使ってアプリケーションで最も時間がかかることを確認することです。すべてをできるだけ速くしようとすると、あなたは本当に問題のないものにすべての時間を費やします。一方、コードをメンテナンス可能にしてからSOLIDの原則に従うことから始めれば、ほんの数個のコードを変更することで大幅な改善が容易になることがわかります。

あなたの目標は、パフォーマンスの面であるだけで何を定義することも重要です。どの時点でページが「十分に速く」読み込まれますか?あなたのパフォーマンス目標を達成しようと努力しますが、ユーザーが月に1回だけ行う操作から10ミリ秒もずっと削ってみようとしないでください。あなたとユーザとの間

  1. ラウンドトリップ:あなたは最大の時間浪費であることがわかります、と述べ

  2. あなたとユーザーの間で大量のデータを送信しています。
  3. あなたとデータベース間を往復します。
  4. データベースから大量のデータを取得しています。

    1. 使用MVC:ここ

  5. は、上記の項目を最適化するために、いくつかの一般的なヒントです。ブラウザとサーバーの間で最小限のデータをやり取りするほうがはるかに簡単です。
  6. 控えめなjavascriptテクニックを使用するので、反復スクリプトを使って1ページごとにバイトを無駄にする必要はありません。 javascriptを静的な.jsファイルに入れて、最小化してキャッシュすることができます。
  7. CSSファイルを使用してページのスタイルを設定します。それを最小化してキャッシュするように設定してください。
  8. アイコンの場合は、jquery-uiのようなユーティリティを使用して、ダウンロードする画像ファイルは1つだけです。
  9. 適切なキャッシュとgzip技術を使用するようにサーバーを設定します。
  10. 頻繁に必要なデータを簡単にキャッシュできるアーキテクチャを使用します。
  11. データへのアクセス方法を賢明にしてください。特定のリクエストに必要なものは、できるだけ少ない回数でロードし、必要のないデータをデータベースからロードしないようにしてください。
  12. 私はfdfryeが彼の答えに挙げたすべてのものに本質的に同意します。

次のバージョンのEntity Frameworkは自動的にコンパイルされたクエリをキャッシュするため、ほとんどのクエリが大幅に高速化されます。

+0

徹底的な返答と正当化。 +1 EF先物に言及してください。 – fdfrye

3

、あなたの最善の策は、ViewStateのによって生成されたページサイズのオーバーヘッドを回避するために、ASP.NET MVCで行くことです。

MVCがアプリケーションのパフォーマンスを向上させることはありませんが、最後の数ミリ秒遅れを圧縮する場合には、ASP.NET WebFormsよりも柔軟性があります。

データのやりとりに関しては、任意の数のグリッドコントロールなど(jqGrid、mvcContribGrid、Microsoft MVCグリッドなど)を使用できますが、基本的にパフォーマンスと同じです。 (MVCを使用している場合、再び)

は間違いなくあなたのコントローラ層から独立したビジネスレイヤを作成します。あなたのスタイルに応じて、ビジネスレイヤーやモデルクラス自体にバリデーションを含めることができます。

もののEntity Frameworkのは限りデータアクセスが現代のMVCアプリに行くように行く最善のことで、あなたは「バッチ処理」の観点から見なければなりません。 EFは、バルクの更新/削除に関してはまだまだ素晴らしいものではありません。

一括挿入は、XML一括読み込みのようなものに比べて合理的にパフォーマンスが、それでも何もする必要があります。

必要であれば、まだ(むしろすべてのプレーン古いADO.NETのものをアップ配線よりも)同じのObjectContextを使用して実行することができるパラメータ化クエリを手動で実行するとEFが、カップルにそれを使用...

+0

-1:ViewStateは、使用されているオーバーヘッドのみを引き起こします。たとえば、読み取り専用グリッドには使用しません。 –

+0

同意しましたが、ViewStateのオン/オフを細かく制御することは、基本的にWebForms 4.0まではありませんでした。それは、使用する必要がある環境とバージョンによって異なります。一般的に、サーバー側の制御コンテンツの大部分を削除することは、ViewStateやHTMLのサーバー側のイベントハンドラーへのJavaScriptワイヤリングなど、未処理のパフォーマンスには適切なアプローチです。 – fdfrye

+0

再び間違っています。私は 'DataGrid'を使用した多くの.NET 2.0アプリケーションを持っていましたが、巨大なViewStateを持っていませんでした。 –

関連する問題