2010-10-31 35 views
-2

Je remplace la méthode Controller.Dispose(bool) dans mes contrôleurs ASP.NET MVC2 afin de disposer des choses au besoin, tout en les laissant en vie le plus longtemps possible. Ceci est contraire à la disposition d'eux avant de revenir de la méthode d'action du contrôleur.Est-ce un bon moyen de gérer les objets jetables dans ASP.NET MVC?

Ma question, en bref; Est-ce que cela fonctionne comme je m'attends? D'après ce que je vois jusqu'à présent, cela semble fournir exactement ce dont j'ai besoin; tous les objets IDisposable sont disposés (la méthode Controller.Dispose() appelle le Controller.Dispose(bool) virtuel), mais pas avant qu'ils ne soient plus nécessaires.


EDIT # 2:

J'apprécie les conseils sur ce que je devrais faire. Je veux dire que; J'ai voté juste une telle réponse, en fait. Pour les besoins de cette question, cependant, supposons que j'ai évalué mes propres besoins et ai décidé qu'appeler une propriété-entité-liée occasionnelle dans ma vue fonctionne mieux pour moi, et que j'ai décidé que Je n'ai pas vraiment besoin d'un framework d'injection de dépendances juste pour m'assurer que mes objets sont correctement éliminés. Ce que je veux juste savoir pour l'instant, c'est si quelqu'un est conscient des problèmes liés à la vie de disposer de ces objets dans une méthode Controller.Dispose(bool) substituée.

+3

Votre vue ne devrait pas exécuter des requêtes supplémentaires. :) – bzlm

+0

Il n'exécute pas de requêtes supplémentaires explicitement; C'est presque toujours un membre de la classe d'entité connexe que je finis par appeler en fonction des informations centrées sur la vue. Je sais que les informations peuvent être pré-chargées via EF ou L2S, mais je ne sais pas toujours ce qui sera nécessaire à temps, et parfois elles ne sont nécessaires que pour certaines lignes. Une chose que j'aime à propos de l'EF/L2S est que je peux conditionnellement afficher ces choses sans ce qui ressemble/se sent comme une «requête». Oui, je sais qu'une requête est en cours. Mais c'est un jugement de valeur que j'ai fait pour mes applications. –

Répondre

4

+1 et merci pour cette question. Je ne peux pas vous donner une réponse basée sur ma propre expérience, mais j'ai trouvé this post par Stephen Walter décrivant exactement votre situation (je crois), et un comment par @Craig Stuntz suggérant le même modèle que vous décrivez. On dirait que vous êtes bon ici :)

5

Jetez un coup d'œil sur l'inversion du contrôle et l'injection de dépendances. Les frameworks existants (Structure Map, Ninject, Autofac, Unity, etc.) prendront soin de disposer les objets en fonction de la portée que vous avez assignée à cet objet (ex: par portée de requête disposera des objets à la fin d'une requête)

+0

+1 Je suis upvoting parce que c'est une bonne réponse et pourrait être utile à beaucoup de ceux qui trouvent cette question via le moteur de recherche. Ce n'est pas exactement la réponse que je cherche, cependant; Je veux juste savoir s'il y a quelque chose à quoi je ne pense pas concernant la durée de vie de ces objets lorsque je les dispose avec le contrôleur. –