2

Suis un peu confus au sujet du stockage d'état de session. J'ai une application MVC, il y a des modèles de vue, qui sont plus proches de la vue, puis il y a les modèles de domaine qui ont un comportement riche. Nous sommes tenus de stocker un état de session dans notre application et j'ai du mal à décider si je devrais stocker mes modèles de vue ou mes modèles de domaine dans ma session.Dois-je stocker des modèles d'affichage ou des modèles de domaine en session?

Nous avons hérité d'une application héritée et nous sommes obligés d'étendre une ViewModelBase qui contient beaucoup de cruft. Par conséquent, je suis hésitant à enregistrer les modèles de vue en session. D'un autre côté, les modèles de domaine ont un comportement en eux et il ne se sent pas bien de les stocker.

Des idées?

+0

Vos entités de domaine proviennent-elles d'Entity Framework? – Dai

+0

Non, ils ne sont pas –

Répondre

1

Je ne dirais ni l'un ni l'autre. Tout d'abord, l'utilisation de la session devrait être évitée autant que possible. Deuxièmement, stocker des objets dans la session peut être très problématique. Sauf si vous utilisez un stockage de session in-process (ce que vous ne devriez pas faire), alors chaque sauvegarde de session nécessitera que les objets soient sérialisés. Pour les classes simples, ce n'est pas trop grave, mais si vous avez affaire à des hiérarchies et à des graphiques d'objets, la douleur sera ridiculement énorme.

Vous n'avez fourni aucune information sur ce que vous essayez réellement d'accomplir, hormis simplement "nous sommes tenus de stocker un état de session". Requis par qui ou quoi et pourquoi? Peut-être, si vous posez des questions sur ce que vous essayez réellement de faire, quelqu'un peut vous donner une meilleure solution qui n'implique pas du tout de séances, ou du moins de façon minimale. Par exemple, au lieu de stocker l'entité, ne pouvez-vous pas simplement stocker l'ID et l'utiliser pour extraire l'entité de la base de données?

+0

Nous cherchons à utiliser des objets Serializable pour être stockés en session. Nous évaluons actuellement les fournisseurs de sessions. CouchBase est l'un de ces fournisseurs, puisque nous l'utilisons déjà à d'autres fins. Nous sommes une application de commerce électronique, nous devons être en mesure de suivre la session d'un utilisateur sur différentes pages. –

+0

C'est différent. C'est juste l'authentification et l'autorisation, et alors que oui, il utilise des sessions, il n'utilise pas 'Session'. Moi aussi, je cours avec une application de commerce électronique et la seule chose qui nous arrive dans 'Session 'est un code promotionnel, s'il est appliqué. Oh et les adresses d'expédition et de facturation pour la caisse d'invité. J'ai oublié ça. Encore, utilisation très minime des sessions. –

+0

Nous suivons également certaines informations relatives aux utilisateurs. Par exemple, si l'utilisateur a exprimé son intérêt sur quelque chose dans une page et navigue vers une autre page, nous voulons stocker ce qu'il a exprimé dans une session, de sorte que lorsque nous sommes sur une page différente, nous pouvons lui présenter des options. Oui, nous utilisons la mise en cache pour faire cela, mais nous cherchons à utiliser la session pour y parvenir –