В недавнем интервью, с которым я столкнулся, я должен был ответить на очень простой вопрос. Что такое MVC и как он работает? Я дал простой ответ, а затем интервьюер добавил к нему так много всего. По этой причине я пишу краткое объяснение после проведенного мной собственного исследования.

Прежде всего, что такое MVC? это архитектурный шаблон, который делит программу на 3 разных раздела, что упрощает управление и поддержку. Модель-представление-контроллер (MVC). У каждого раздела разные обязанности.

Модель отвечает за всю логику, связанную с данными, с которой работает приложение.

View отвечает за все компоненты пользовательского интерфейса и логику этих компонентов приложения.

Контроллер - это интерфейс между моделью и представлением, содержащий бизнес-логику.

В приложении .NET MVC, когда пользователь взаимодействует с веб-страницей, он генерирует HTTP-запросы, а затем получает HTTP-ответы. Между этим запросом и ответом есть несколько шагов, о которых вы, как разработчик, должны знать.

UrlRoutingModule

Это точка входа в приложение. Это найдет соответствующий маршрут к ответу и сгенерирует MvcRouteHandler.

Это будет искать первый совпадающий маршрут в коллекции. так что оставайтесь посередине, чтобы зарегистрировать свой самый конкретный маршрут перед самым общим маршрутом.

RouteHandler

Это сгенерирует HTTPHandler для приложения, которое является экземпляром MvcHandler. Для этого он использует MvcRouteHandler из предыдущего шага.

MvcHandler

На этом этапе он обрабатывает запрос и создает ControllerFactory.

ControllerFactory

На этом этапе ControllerBuilder создаст ControllerFactory с помощью метода GetControllerFactory (). Этот метод возвращает объект ControllerFactory. Имейте в виду, что это дизайн под одноэлементной архитектурой. Это означает, что будет создан только один экземпляр.

Контроллер В ControllerFactory, созданном на предыдущем шаге, есть метод ControllerBuilder (), который используется для создания контроллеров. Этот метод вернет ControllerBase.

ActionInvoker

На этом шаге метод ActinInvoker () найдет подходящий метод действия для запроса из сборки контроллера на предыдущем шаге. Класс ActionInvoker должен знать подробности о ControllerDescriptor и ActionDescriptor.

ControllerDescriptor определяется как «инкапсулирует информацию, описывающую контроллер, такую ​​как его имя, тип и действия».

ActionDescriptor определяется как «Предоставляет информацию о методе действия, такую ​​как его имя, контроллер, параметры, атрибуты и фильтры».

Затем соответствующий метод действия будет выполняться и выполнять в соответствии с ним бизнес-логику.

ActionResults

Методы действия всегда возвращают ActionResults. Это абстрактный класс, который определяет метод, называемый методом ExecuteResult (). В разных подклассах будут реализованы разные методы ExecuteResult (), которые предоставляют разные ActionResults.

ViewResult: просмотр (веб-страница)

JsonResult: Json (сериализованный объект JSON)

RedirectResult: перенаправление (перенаправляет на другой метод действия)

ContentResult: Content (возвращает определенный пользователем тип контента)

Это был ответ, который я должен был дать. Надеюсь, эта статья поможет другому.