В основному, Web APIконтролер - це MVCконтролер, який використовує HttpMessageResponseяк базовий тип своєї відповіді замість ActionResponse. Вони однакові в більшості інших аспектів. Основна відмінність між типами проектів полягає в тому, що MVC Applicationтип проекту додає конкретні веб-речі, такі як за замовчуванням CSS, JavaScriptфайли та інші ресурси, необхідні для веб-сайту, які не потрібні API.
MVC використовується для створення веб-сайтів. У цьому випадку Controllersзазвичай повертають View(тобто відповідь HTML) на запити браузера. З іншого боку, веб-API зазвичай використовуються іншими програмами. Якщо ви хочете дозволити іншим програмам отримати доступ до ваших даних / функціональних можливостей, ви можете створити веб-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