Pregunta

Estoy trabajando en mi primer proyecto real ASP.NET MVC y me he dado cuenta de que el controlador que he estado trabajando en es cada vez más grande. Aparentemente, esto va en contra de la mejor práctica de mantener los controladores delgada.

He hecho un buen trabajo manteniendo la lógica de negocio de los controladores. Utilizo una capa separada para eso. Cada acción requiere principalmente un método en la capa de negocio y coordina el resultado final en función de si o no el ModelState es válido.

Dicho esto, el controlador tiene un gran número de métodos de acción. Intuitivamente, me gustaría romper el controlador hacia abajo en sub-controladores, pero no veo una manera fácil de hacer eso. Yo podría simplemente romper el controlador hacia abajo en controladores separados pero el I perder la jerarquía y se siente un poco sucia.

¿Es necesario refactorizar un controlador con un gran número de acciones delgadas? Si es así, ¿cuál es la mejor manera de hacer esto?

¿Fue útil?

Solución

En primer lugar, cuando se oye que es bueno mantener código del controlador al mínimo, se trata principalmente de mantenimiento de cada método de acción lo más fina posible (poner la lógica lugar en clases de negocios, no en Vistas y ViewModels). parece que estás haciendo esto, que es grande.

En cuanto a tener "demasiados" los métodos de acción, esto es una cuestión de criterio. En realidad, podría ser un signo de una buena organización, que está teniendo cada actuación se centran en una cosa. Además, tal vez usted está utilizando acciones específicas para su uso con RenderAction? Y, sólo podría ser la naturaleza de la solución que hay muchas cosas que hacer en relación con el tema de su controlador.

Por lo tanto, yo creo que es probable que estés bien. Sin embargo, para asegurarse de que, en el papel de nota romper con el controlador en 2 o 3 controladores, y esbozar cómo sus historias trabajarían pasar de una acción a otra. Y si usted encuentra que su flujo de trabajo funciona con más controladores, usted debe romper a cabo. Especialmente si vas a añadir a esta funcionalidad más tarde. Cuanto antes de su ruptura es el mejor.

Otros consejos

Buena pregunta.

Creo que un controlador "fina" todavía puede tener que ser "amplia" o "alto" dependiendo de cómo se desea estirar la analogía. Si no hay forma limpia para romper un controlador que tiene que hacer un montón de cosas, no creo que eso es un problema siempre y cuando cada acción se centra exclusivamente en la preparación de Vistas / ViewModels y es del tamaño de código limitado.

Otra opción estructural que tiene es la introducción de las clases parciales de agrupaciones lógicas de acciones. Y usar algo como vscommands para agrupar los archivos juntos.

Dudo que nadie puede llegar a un número mágico de acciones que te dice cuando es una buena idea para romper la materia para arriba e introducir nuevos controladores, lo que realmente depende de su dominio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top