Контролери Web API можна створювати та розміщувати в будь-якій програмі ASP.NET, а не лише у програмах MVC. Таким чином, очевидною причиною створення веб-API є те, що у вас немає MVC-інтерфейсу (наприклад, класичні, RESTful веб-сервіси, розміщені вашою компанією / організацією.)
Контролери MVC зазвичай покладаються на MVC Framework, якщо ви подивитеся на шаблони за замовчуванням і більшу частину роботи, яку виконують громада та ваші колеги, ви помітите, що майже всі контролери MVC реалізовані з урахуванням Перегляду.
Особисто я використовую контролери MVC, коли я маю намір відповісти з View (), і я буду використовувати веб-API для всього, що не залежить від конкретного виду.
Звичайно, є застереження, але загалом кажучи, якщо вам не потрібна поведінка моделей прив'язки MVC, ваша послуга орієнтована на дані, а операції орієнтовані на дані (наприклад, операції CRUD), то, швидше за все, ви хочете "Контролер веб-API "замість" контролера перегляду моделі ". І навпаки, якщо ваші операції орієнтовані на вигляд (наприклад, надання користувачу сторінки адміністратора користувача), або вам потрібна прив'язка моделі MVC для створення "ajax partals" (дуже малоймовірно), тоді вам потрібен буде MVC Controller.
Особисто я використовую контролери Web API для управління RESTful клієнтами на базі JSON, я використовую контролери MVC для обробки базової маршрутизації браузера та доставки SPA.