2

セッション状態の保存について少し混乱しています。私はMVCアプリケーションを持って、ビューに近いビューモデルがあり、豊かな動作を持つドメインモデルがあります。私たちはアプリケーションにいくつかのセッション状態を保存する必要があり、私のセッションで自分のビューモデルやドメインモデルを保存すべきかどうかを決定するのは苦労しています。ビューモデルまたはドメインモデルをセッションに保存する必要がありますか?

私たちは従来のアプリケーションを継承しており、私たちはそれに多くの厄介なViewModelBaseを拡張することを余儀なくされています。したがって、セッション中にビューモデルを保存することを躊躇しています。一方、ドメインモデルはその中に行動を持ち、それを格納するのが正しいと感じません。

アイデア?

+0

エンティティフレームワークのドメインエンティティはありますか? – Dai

+0

いいえありません –

答えて

1

私はどちらとも言えません。第一に、セッションの使用はできるだけ避けるべきです。第2に、セッションにオブジェクトを格納することは非常に問題になることがあります。あなたがin-procのセッションストレージを使用していない限り(あなたはそうしてはいけません)、他のすべてのセッションのバッキングでは、オブジェクトをシリアル化する必要があります。シンプルなクラスではそれほど悪くはありませんが、階層やオブジェクトグラフを扱っているならば、それはばかげて大きな苦痛になるでしょう。

「セッション状態を保存する必要があります」以外の実際に達成しようとしていることに関する情報はありませんでした。誰か、何が、なぜ必要なのか?おそらく、実際に何をしようとしているのか尋ねると、誰かがあなたにセッションをまったく含まない、あるいは少なくとも最小限しかない、より良い解決策を与えることができます。たとえば、エンティティを格納する代わりに、単純にIDを格納してそのエンティティをデータベースから取得することはできませんか?

+0

セッションに保存するためにシリアライズ可能なオブジェクトを使用しています。現在、セッションプロバイダを評価中です。 CouchBaseは既に他の目的に使用しているため、これらのプロバイダーの1つです。私たちはeコマースアプリケーションであり、異なるページ間でユーザーのセッションを追跡できる必要があります。 –

+0

それは違う。これは単に認証と認可です。それはセッションを使用しますが、 'Session'は使用しません。私はあまりにも電子商取引のアプリケーションを実行し、私たちのために 'セッション 'に入る唯一のものは、適用された場合、プロモーションコードです。ああ、ゲストチェックアウトのための発送先と請求先住所。それを忘れてしまった。それでも、セッションの使用はごくわずかです。 –

+0

また、ユーザー関連の情報の一部を追跡します。たとえば、ユーザーがページ内の何かに関心を示し、別のページに移動した場合、興味のある内容をセッションに保存して、別のページにいるときにオプションを提示することができます。はい、キャッシュを使用してこれを行いますが、これを達成するためにセッションを使用しています –