Добавляем MVC в приложении ASP.NET Core
Сегодня обсудим методы
AddController(), AddMvc(), AddControllersWithViews() и AddRazorPages() в приложениях ASP.NET Core. Всё это методы расширения IServiceCollection. Они используются в методе ConfigureServices() класса Startup. На первый взгляд, всё вроде очевидно, но что же конкретно делает каждый из них, и когда какой использовать?Для начала подробно рассмотрим, какие функции доступны в каждом методе.
Все методы поддерживают:
- Контроллеры
- Связывание модели
- Авторизацию
- Валидацию
AddController() помимо общих функций поддерживает:- API Explorer
- CORS
- Форматирование вывода
AddRazorPages() помимо общих функций поддерживает:- Antiforgery (защита от атак CSRF)
- TempData
- Представления
- Страницы (Razor Pages)
- Тег-хелперы
- Кеш в памяти
AddControllersWithViews() поддерживает всё, что есть в AddController() и AddRazorPages(), кроме Страниц (т.е. только чистый MVC).AddMvc() поддерживает всё, включая Страницы.Основные моменты
- Если вам нужны только контроллеры, включая привязку модели (выбор подходящего метода действия контроллера), авторизацию и валидацию данных, вы можете использовать любой из методов.
- ApiExplorer содержит функции для обнаружения и предоставления метаданных о вашем приложении MVC. Он используется для предоставления таких сведений, как список контроллеров и действий, их URL-адреса и разрешенные методы HTTP, параметры и типы ответов. Например, его использует Swagger для генерации документации API. ApiExplorer доступен во всех методах, кроме
AddRazorPages().- CORS позволяет серверу ослабить политику одного источника (same-origin policy). Система безопасности браузера запрещает клиентскому коду страницы делать запросы к домену, отличному от того, который обслуживает веб-страницу. Это ограничение называется политика одного источника. Она предотвращает чтение вредоносным сайтом конфиденциальных данных с другого сайта. Иногда может потребоваться разрешить другим сайтам выполнять запросы между разными доменами в приложении. За это отвечает CORS, который доступен везде, кроме
AddRazorPages().- Форматирование вывода (Formatter Mapping) используется для возможности выводить ответ в различных форматах, таких как JSON, XML и т.п. Опять же, доступно везде, кроме
AddRazorPages().- Функция кэширования в памяти через
IMemoryCache недоступна только в методе AddControllers(), но доступна в остальных трёх.Какой метод использовать для вашего приложения?
Это зависит от того, какое приложение вы хотите создать.
- Если вы хотите создать приложение веб-API без представлений, используйте
AddControllers().- Если вы хотите работать с приложением на Razor Pages, используйте
AddRazorPages().- Если вы хотите использовать MVC, используйте
AddControllersWithViews(). А если в этом приложении вам требуются и Razor Pages, используйте AddMVC().Таким образом,
AddMvc() включает все возможности. То есть вы можете использовать любой тип приложения (веб-API, MVC и Razor Pages). Однако, имейте в виду, что использование метода AddMvc() добавляет все функции, даже если они вам не требуются, что может повлиять на производительность приложения.Источник: https://dotnettutorials.net/lesson/difference-between-addmvc-and-addmvccore-method/