2 votes

Dois-je stocker les modèles de vue ou les modèles de domaine dans la session ?

Je suis un peu confus en ce qui concerne le stockage de l'état de la 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 devons stocker un état de session dans notre application et j'ai du mal à décider si je dois stocker mes modèles de vue ou mes modèles de domaine dans ma session.

Nous avons hérité d'une application ancienne et nous sommes obligés d'étendre un ViewModelBase qui contient beaucoup d'éléments inutiles. J'hésite donc à sauvegarder les modèles de vue en session. D'autre part, les modèles de domaine contiennent des comportements et il ne me semble pas judicieux de les stocker.

Des idées ?

1voto

Chris Pratt Points 53859

Je dirais ni l'un ni l'autre. Premièrement, l'utilisation de la session devrait être évitée autant que possible. Deuxièmement, le stockage d'objets dans la session peut être très problématique. À moins que vous n'utilisiez le stockage de session in-proc (ce que vous ne devriez pas faire), chaque autre sauvegarde de session exigera que les objets soient sérialisés. Pour des classes simples, ce n'est pas trop grave, mais si vous avez affaire à des hiérarchies et à des graphes d'objets, cela va être une douleur ridiculement énorme.

Vous n'avez pas donné d'informations sur ce que vous essayez d'accomplir, si ce n'est que "nous devons stocker l'état d'une session". Exigé par qui ou quoi et pourquoi ? Peut-être que si vous demandez ce que vous essayez réellement de faire, quelqu'un pourra vous donner une meilleure solution qui n'implique pas de sessions du tout, ou du moins seulement de façon minimale. Par exemple, au lieu de stocker l'entité, ne pourriez-vous pas simplement stocker l'identifiant et l'utiliser pour extraire l'entité de la base de données ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X