К сожалению, вы ошибаетесь в этом - я предполагаю, что могу делиться всеми своими атрибутами и т. Д. Между контроллерами web 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 для своей онлайн-службы - возможно, для использования внешними клиентами или различными устройствами - например, для подпитки ваших мобильных приложений.