Ответ 1
В принципе, контроллер Web API
является контроллером MVC
, который использует HttpMessageResponse
как базовый тип своего ответа вместо ActionResponse
. В большинстве случаев они одинаковы. Основное различие между типами проектов заключается в том, что тип проекта MVC Application
добавляет веб-специфические вещи, такие как файлы по умолчанию CSS
, JavaScript
и другие ресурсы, необходимые для веб-сайта, которые не нужны для API.
MVC используется для создания веб-сайтов. В этом случае Controllers
обычно возвращает a View
(т.е. Ответ HTML) в запросы браузера. Веб-интерфейсы, с другой стороны, обычно используются для использования другими приложениями. Если вы хотите разрешить другим приложениям получать доступ к вашим данным/функциям, вы можете создать веб-API для облегчения доступа. Например, у Facebook есть API, чтобы разработчики приложений могли получать информацию о пользователях, использующих приложение. Веб-API не обязательно должны использоваться для общественного потребления. Вы также можете создать API для поддержки своих приложений. Например, мы создали веб-API для поддержки функциональности AJAX нашего веб-сайта MVC.
Microsoft изменила способ представления различных шаблонов. Теперь вместо использования разных шаблонов для разных типов проектов они поощряют разработчиков смешивать технологии ASP.NET внутри одного и того же проекта по мере необходимости. Microsoft называет это vNext
.
ОБНОВЛЕНИЕ:. Для ядра ASP.NET Web API был интегрирован в проект проекта MVC 6, а класс ApiController
объединяется в класс Controller
. Дополнительная информация: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6