67 votes

Quelle est la durée de vie d'un ASP.NET MVC Contrôleur?

Je suis dans le processus de développement de mon application MVC et je me demandais, Quelle est la durée de vie d'une classe de contrôleur?

Quand est-il créé? Combien d'instances d'un seul contrôleur? quelles sont les implications de variables locales? quand est-il détruit?

Je suis sûr qu'il y est un bon lien quelque part qui circulent sur internet, mais mon google-fu ne pouvais pas le trouver.

46voto

Kieron Points 10261

Stephen Walther a un grand article sur le cycle de vie d'une requête est gérée par le Framework MVC.

Voici un extrait du haut de son article, il continue à expliquer chaque étape en détail:

Vue d'ensemble des Étapes du Cycle de vie

Il y a cinq étapes principales qui se passe quand vous faites une demande à partir d'un ASP.NET MVC site web:

1. Le RouteTable est Créé

Cette première étape se passe qu'une seule fois lors d'un ASP.NET l'application démarre en premier. Le RouteTable cartes Url pour les gestionnaires.

2. Le UrlRoutingModule Intercepte la Demande

Cette deuxième étape se passe chaque fois que vous faites une demande. Le UrlRoutingModule intercepte toutes les requêtes et crée et exécute le droit de gestionnaire.

3. Le MvcHandler Exécute

Le MvcHandler crée un contrôleur transmet au contrôleur une ControllerContext, et exécute le contrôleur.

4. Le Contrôleur Exécute

Le contrôleur détermine la méthode de contrôleur à exécuter, il établit une liste de paramètres, et exécute la méthode.

5. La Méthode RenderView est Appelé

Généralement, un contrôleur de gestion appels de méthode RenderView() pour afficher le contenu au navigateur. Le Contrôleur.RenderView() la méthode des délégués de son travail auprès d'un particulier ViewEngine

22voto

Richard Szalay Points 42486

En supposant que vous ne modifiez pas la valeur par défaut ControllerFactory, les contrôleurs sera créé pour chaque demande et seront nettoyés "peu de temps après" la requête est terminée.

En bref, vous n'avez pas besoin de s'inquiéter à propos des conditions de course pour les variables d'instance (si vous le faites pour les variables statiques, évidemment). Cela dit, je vous recommande de garder votre contrôleur actions réciproques pour l'amour de nettoyeur de code.

6voto

David Glenn Points 12819

Steve Sanderson a produit une bonne affiche représentant le MVC traitement de la Demande de Pipeline qui peuvent être d'intérêt pour vous.

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