Vamos a romper su pregunta en dos:
- ¿Cuál es el papel de controlador en el sabor MVC ofrecido por monorraíl y ASP.NET MVC?
- ¿Cómo se relacionan las asignaciones de url con acciones de aplicación?
Mi opinión sobre 1:
Como este tipo de pregunta se presta a muchas respuestas religiosamente, creo que la hay "una manera de gobernar a todos". Ahora en el monorriel y ASP.NET MVC (y también RoR por supuesto), un controlador es simplemente una colección de acciones. La pregunta correcta entonces es "¿Cuál es el papel de la acción"?
En mi libro (el libro de Monorraíl en acción no escrito ... :)), el papel de la Acción es separar el Modelo de Dominio de la presentación, tanto en términos de estructuras de datos como en cuestiones de interés. Todo lo que está especializado en el hecho de que la interfaz con el dominio es a través de solicitudes WEB, es responsabilidad de la capa del controlador. Eso incluye el enlace de datos y las transformaciones, que tratan con la Autenticación (pero no la autorización), y la toma de decisiones para las plantillas de vista. Entonces, una acción tomará los parámetros de la solicitud entrante (una web es no una cuestión de dominio), enlazarlos a datos significativos que se pueden enviar al dominio como una consulta o comando, en el idioma del dominio, sin cookies, FORMULARIO, QueryString y otras "cosas web". También, al ver los datos, transformará los objetos de dominio devueltos del Modelo, en un Modelo de vista, que en el mismo libro mencionado anteriormente es un modelo separado del modelo de Dominio, y está a cargo de suministrar la vista -plantear con todos los datos y la toma de decisiones que necesita. Así, por ejemplo., La vista no debe pedir if (view.User.IsAdmin)
y hacer un botón "Editar", pero en cambio la acción del controlador habrá hecho esta pregunta, y se suministra la vista con una decisión, para el fin de pedir if (view.ShouldRenderEditButton)
por lo , la capa Controladores separa las preocupaciones de WEB de las preocupaciones de DOMINIO.
En cuanto a la pregunta no. 2:
La idea de asignar la url como Controlador/Acción es simplemente una consecuencia de adoptar el enfoque "Convención sobre la configuración". Es decir, sería más fácil para los desarrolladores (y los consumidores) trabajar con un esquema común en diferentes aplicaciones web. Dicho esto, no está escrito en piedra, y como cualquier Convención, es una base para la Adaptación. Entonces, si está construyendo un sitio web y el gerente de producto le pide "URL bonitas", entonces simplemente configura su motor de rutas en consecuencia.
El controlador tiende a ser el que realiza acciones en el modelo donde las vistas tienden a presentar objetos de dominio definidos por el modelo. El controlador específicamente no está ahí para interponerse entre la vista y el modelo; si se tratara simplemente de un mediador, entonces está hablando del clásico modelo de 3 niveles y no del MVC. –
¿El controlador también verifica la información que se ingresa en un sistema? –
@ D.Shawley - Creo que estás rompiendo pelos, pero tienes razón, no mencioné que el controlador actualiza el modelo y lo consulta. Sin embargo, yo diría que el controlador está ahí para pararse específicamente entre el modelo y la vista, ya que es muy posible que el modelo y la vista se comuniquen directamente. La razón por la que no quiere eso es para mantener el desacoplamiento. Desacoplamiento de los resultados de la implementación de un controlador (moderador). – ennuikiller