Question

Je travaille sur mon premier vrai projet ASP.NET MVC et je l'ai remarqué que le contrôleur que je travaille dans devient assez grand. Cela va apparemment contre la meilleure pratique de garder vos contrôleurs mince.

Je l'ai fait un bon travail en gardant la logique métier hors des contrôleurs. J'utilise une couche séparée pour cela. Chaque action appelle avant tout une méthode dans la couche d'affaires et coordonne le résultat final sur la base ou non la ModelState est valide.

Cela dit, le contrôleur a un grand nombre de méthodes d'action. Intuitivement, je voudrais briser le contrôleur en sous-contrôleurs, mais je ne vois pas un moyen facile de le faire. Je ne pouvais briser le contrôleur vers le bas dans les contrôleurs séparés mais je lâche la hiérarchie et il se sent un peu sale.

Faut-il factoriser un contrôleur avec un grand nombre d'actions minces? Si oui, quelle est la meilleure façon de le faire?

Était-ce utile?

La solution

D'abord, quand vous entendez qu'il est bon de garder le code du contrôleur au minimum, cela se réfère principalement à maintenir chaque méthode d'action aussi mince que possible (mettre à la place logique dans les classes d'affaires, pas dans les vues et ViewModels.) Il semble que vous faites cela, ce qui est génial.

pour avoir « trop » des méthodes d'action, ceci est un appel de jugement. Il pourrait en fait être un signe de bonne organisation, que vous éprouvez chaque foyer d'action sur une chose. Aussi, peut-être que vous utilisez des actions spécifiquement pour une utilisation avec RenderAction? Et, il pourrait simplement être la nature de votre solution qu'il ya beaucoup de choses à faire portant sur le thème de votre contrôleur.

Alors, je suppose que vous êtes probablement très bien. Cependant, pour que, sur papier brouillon sortir le contrôleur en 2 ou 3 contrôleurs et croquis comment vos histoires travailleraient en mouvement de l'action à l'action. Et si vous trouvez que votre flux de travail fonctionne avec plus de contrôleurs, vous devez casser dehors. Surtout si vous allez être ajouter à cette fonctionnalité plus tard. Le plus tôt votre pause, il le mieux.

Autres conseils

Bonne question.

Je crois qu'un contrôleur « mince » peut encore être « large » ou « grand » selon la façon dont vous voulez étirer l'analogie. S'il n'y a aucun moyen propre à briser un contrôleur qui doit faire beaucoup de choses, je ne pense pas que ce soit un problème aussi longtemps que chaque action se concentre exclusivement sur la préparation de vues / ViewModels et de la taille du code limité.

Une autre option structurelle que vous avez introduit des classes partielles pour des regroupements logiques d'actions. Et en utilisant quelque chose comme vscommands pour regrouper les fichiers ensemble.

Je doute que tout le monde peut venir avec un nombre magique d'actions qui vous indique quand il est une bonne idée de casser des choses et introduire de nouveaux contrôleurs, cela dépend vraiment de votre domaine.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top