Подобно тому, что OrangeDog упомянул в своем ответе, есть много всего, что происходит при обслуживании этих страниц, прежде чем вы даже получите свой код.
Не только в asp.net mvc, но и в asp.net в целом есть различные части, которые вступают в игру, когда вы выполняете запрос.
Существует такой код, как модули, обработчики и т. Д., Которые снова выполняют обработку до того, как попадают в код страницы. Кроме того, вы можете сопоставить одну и ту же страницу, чтобы иметь возможность обрабатывать разные URL.
Концепция обработчика в asp.net важна, поскольку существуют различные обработчики, отвечающие за обработку запросов, которые соответствуют расширениям и / или глаголам http (get, head, post). Если вы посмотрите на% systemroot% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config, вы можете увидеть раздел. Вы также можете увидеть обработчики в IIS (их можно изменить на сайте).
Например, HttpForbiddenHandler - это тот, который просто отклоняет запрос. Он настроен для вызова для специальных файлов, таких как источники "* .cs".
Вы можете определить свой собственный обработчик, который является не чем иным, как классом, который реализует интерфейс IHttpHandler. Таким образом, у него есть 2 метода: ProcessRequest и IsReusable. Это больше похоже на вашу программу cgi, так как реализация в основном представляет собой метод, который генерирует HTML или любой другой тип вывода на основе информации в запросе.
Страницы Asp.net основаны на этом и имеют множество дополнительных функций, предназначенных для облегчения разработки страниц. Вы реализуете класс, который наследуется от Page, и с ним связано 2 кодовых файла (.aspx и .cs). То же самое можно сказать и о asp.net mvc, но оно структурировано по-другому. Существует гораздо больше, чем это, если вы хотите воспользоваться этим, вам нужно узнать об этом.
Недостатком этих абстракций является то, что некоторые разработчики теряют понимание контекста, в котором они находятся. Контекст остается прежним, вы создаете приложение, которое принимает запрос и выдает результат. Разница в том, что на месте гораздо больше кода, призванного облегчить его работу.