1

.Net での Web 開発の世界は現在、Asp.Net Webforms と MVC に分割されており、同じアプリケーションで両方を使用することを好む 3 番目のカテゴリがあります。

私の質問: ViewState は多くの場合、大部分のアプリケーションで悪と見なされ、主要なパフォーマンスのボトルネックと見なされます。しかし、正しく使用すれば、まったく問題はありません。Asp.Net MVC 3.0/4.0 ベータ版の話題が多すぎて、ViewState がないことです。

ただし、私の懸念は、Asp.Net MVC がパフォーマンスの高速化にどのように役立つかということです。

if (!IsPostback) {}

Asp.Net MVC では、毎回コントロールをバインドし、フォームが投稿されるたびにデータベース要求を行う可能性があります。Asp.Net Winforms はこれで優勢ではありませんか? すべてのケースで Asp.Net MVC のパフォーマンスが向上することを保証できますか?

編集:私は論争を開始したくありません。さらに、Javascriptの縮小、CSSの縮小、およびその他すべてのトリックの後のパフォーマンスについてではなく、Asp.Netコードについてのみ話しています。

4

4 に答える 4

2

mvc (MS であれ他のフレームワークであれ) は、Web のステートレスな性質と概念とより一致しています。

webforms は、Web 開発がよりステートフルなデスクトップ クライアントのように動作するように設計されています。これが、ページ イベント、ポストバック、ビューステートが存在する理由です。

50MB のビューステートを見てきました。これは間違いなくパフォーマンスを低下させます。mvc フレームワークを使用すると、ページ サイズをかなり迅速に縮小できます。ただし、mvc の利点は、1. シンプルさ (Web フォーム ページのライフ サイクルと比べて) であり、2. 拡張性です。

コントローラ ファクトリ、検証、またはビュー エンジンのデフォルトの実装が気に入らない場合は、mvc で置き換えることができます。Webフォームではできません。

于 2012-05-18T12:30:20.410 に答える
2

MVC の利点がパフォーマンスであるとは言えませんが、おそらく高速であると思います。その利点は、コントロールの winforms のようなライフサイクルを処理しないことです。1 つのページに多くの要素が含まれていても、開発が複雑になることはありません。コントロールを使用すると、適切に行わないと、ライフサイクル イベントが互いに影響し合うことがよくあります。

パフォーマンスに関しては、MVC のライフサイクルは静的です。いくつかのイベントが発生しますが、それはあまり変わりません。パフォーマンスの問題はアクション メソッドにあります。Web フォームでは、多くの場合、コントロールが使用されていないか表示されていない場合でも、ポストバックごとにいくつかのイベントとコントロールの再作成が発生します。Webフォームには無駄がはるかに多いため、MVCは対照的に無駄がなく、パフォーマンスが向上します。

于 2012-05-18T12:25:40.933 に答える
1

ここにはすべての優れた回答がありますが、2 セントも投入します。

でコントロールをバインドするとif (!IsPostBack)、暗号化されたビューステート フィールドが Web フォーム ページに書き込まれます。次のリクエスト中に、その状態のすべてがサーバーに送信され、復号化/逆シリアル化されます。ページに GridView がある場合、そのすべての行がビューステートになるため、再度データバインドするために別の db 要求を行う必要はありません。

この意味で、サーバーのパフォーマンスが向上する可能性があります。ただし、ここで他の人が言ったように、そのすべてのビューステートをサーバーに送信することでネットワークに打撃を与えます。また、状態を押し下げる必要があります。潜在的なビューステートの悪用を克服し、Web フォームのパフォーマンスを向上させるために、意図的にビューステートを軽くしているようです。ビューステートは悪用されたり無視されたりすることが多いため、これは間違いなく良い習慣です。

ページ分割された GridView をクライアントにプッシュ ダウンする例を考えてみましょう。GV に 15 行が含まれている場合、すべてをクライアントにプッシュし、バックアップの途中でデシリアライズし、最初のロード後にデータベースにヒットしないようにすることで、パフォーマンスが向上する可能性があります。ただし、GV に 1500 行が含まれている場合、viewstate で送信せず、代わりに各ページネーション リクエスト中にデータベースにアクセスすると、エンド ユーザーのパフォーマンスが向上する可能性があります。(ただし、GV から詳細ページにリンクし、[戻る] ボタンをクリックするとすぐに、データを再投稿するように求められます。これは、行数に関係なく、常に面倒です)。

最終的には、Web フォーム ページを提供および使用しているマシンで開発しているときに、パフォーマンスが向上するように見える場合があります。ただし、viewstate のサイズによっては、ネットワーク経由でコンテンツにアクセスする人は、あなたほどの速度を感じない場合があります。それはすべて、ビューステートがどれだけ太いかによって異なります

多くの MVC ファンが気に入っている理由の 1 つは、特定のアクションを実行するために必要な最小限のリクエストをサーバーに送信するだけで済むためだと思います。ページ上のすべての Web コントロールのすべてのデータと状態を送信する 1 つのモノリシック フォームを使用する代わりに、フォーム全体を逆シリアル化する代わりに、フォームを分割し、セクションまたはチャンクのみを異なるアクションに送信できます。

他の人がここで言っているように、あなたの質問に対する簡単な答えは NO です。MVC が Web フォームよりも常に高速であったり、パフォーマンスが優れているとは限りません。白黒はありません。多くの場合、それは可能であり、実行しますが、他の人が言っているように、一部のアプリは webform に適しています。また、パフォーマンスはあなたの唯一の関心事ですか? MVC は、パフォーマンスが常に「依存」する可能性がある場合でも、他の領域の Web フォームよりも白黒の利点があります。

于 2012-05-18T16:15:59.497 に答える
0

軽いコンテンツを表示する必要があるサイトには、MVC の方が適しているというのが私の個人的な意見です。しかし、デイ トレーダー向けのグリッドを構築する必要がある場合は、Web フォームが有利です。

ASP.net MVC は、asp.net Web フォームのようにコントロールをバインドしません。

これを行うには、JQuery を使用する必要があります。Jquery は優れたパフォーマンスを発揮します。

http://www.codeproject.com/Articles/305308/MVC-Techniques-with-JQuery-JSON-Knockout-and-Cshar

また、MVC\jquery にはより高度な専門知識が必要であることに注意することも重要です。そのため、コストに関しては最終的な結果に注意する必要があります。コストは通常​​、プログラマーによって無視されますが、どのプロジェクトでも重要な役割を果たします。

于 2012-05-18T12:23:41.653 に答える