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