На жаль, ви помиляєтесь із цим - я припускаю, що можу ділитися всіма своїми атрибутами тощо між веб-контролерами api та mvc, тому, на перший погляд, для мене це не здається масовою зміною.
Багато концепцій, що використовуються веб-API та MVC, хоча і схожі на перший погляд, насправді не сумісні. Наприклад, атрибути веб-API є, System.Web.Http.Filters.Filter
а атрибути MVC -System.Web.Mvc.Filter
- і вони не взаємозамінні.
Те саме стосується і багатьох інших концепцій - прив'язка моделі (абсолютно різні механізми), маршрути (веб-API використовує HTTPRoutes, а не Routes, хоча вони обидва працюють на одній і тій же базовій RouteTable), вирішувач залежностей (не сумісний) та багато іншого - хоча подібний на поверхні, дуже різні на практиці. Більше того, веб-API не має поняття областей.
Зрештою, якщо все, чого ви намагаєтесь досягти, - це "новий, модний" спосіб обслуговування вмісту JSON - подумайте двічі, перш ніж йти цим шляхом. Я, звичайно, не рекомендував би рефакторингувати будь-який існуючий код, якщо ви дійсно не хочете прийняти HTTP і побудувати свій додаток RESTful способом.
Все насправді залежить від того, що ви будуєте. Якщо ви починаєте новий проект, і все, що вам потрібно, - це створити якийсь JSON для полегшення роботи вашої веб-програми - за умови, що ви бажаєте жити з якимсь потенційно повторюваним кодом (наприклад, матеріалами, про які я згадав вище), веб-API можна легко розмістити в той самий проект, що і ASP.NET MVC.
Я б виділив веб-API в окремий проект, лише якщо ви збираєтеся створити належний API для своєї Інтернет-служби - можливо, для споживання зовнішніми клієнтами або різними пристроями - наприклад, підживленням ваших мобільних додатків.