36

ASP.NET MVC アプリケーションでセッション変数を使用すべきではないと言われているのはなぜですか? 私はそう言うこの答えに出くわしました。その場合、ログインしたユーザー情報やアカウントに関連付けられた関連データなどのリクエスト全体で値を維持するにはどうすればよいですか?

これがダーリンの答えです。

ASP.NET MVC アプリケーションで HttpContext.Current を使用しているのはなぜですか? 絶対に使用しないでください。これは、従来の ASP.NET Web フォーム アプリケーションでさえ悪いことですが、ASP.NET MVC では、この素晴らしい Web フレームワークのすべての楽しみを台無しにしてしまいます。

4

2 に答える 2

28

ASP.NET MVC のようなフレームワークの基本原則の 1 つは、Web と同じようにステートレスであるということです。ASP.NET Web フォームは、ステートレス環境でステートフル パラダイムを模倣する試みです。つまり 嘘です。

ASP.NET MVC アプリケーションでセッション変数を使用することは、角を馬の頭に結び付けてユニコーンと呼ぶことに少し似ています。

于 2012-04-16T21:08:44.000 に答える
7

セッション状態を使用してデータを永続化できます。TempData 機能はデフォルトでセッションを使用してデータを永続化します。

セッションの使用を可能な限り最小限に抑える必要があります。その理由は、セッション状態の破損を防ぐために、すべてのリクエストに対してセッションでロックが取得されるためです。たとえば、複数の Ajax リクエストがシリアル化されるためです。詳細はこちら

代替手段を使用して、リクエスト間でデータを保持できます。たとえば、MVC Futures の一部であるCookieValueProviderを使用して、Cookie データをモデルにバインドできます。実際の DOM に非表示フィールドとしてデータを保持することもできますが、データのサイズがブラウザーとの間のネットワーク トラフィックに反映されるため、これらは可能な限り最小化する必要があります。

メイン ストアが遅い場合は、Web アプリケーションに別のデータ ストアを使用することを検討します。たとえば、SQLServer CE や組み込みの RavenDB などです。

于 2012-04-16T23:59:23.330 に答える