Я бы посоветовал вам рассмотреть контроллер API или отдельное приложение API в зависимости от нагрузки, которую вы ожидаете от людей, потребляющих данные из вашего приложения. Отдельное приложение API позволит вам перенести его с серверов приложений, если это необходимо.
В редких случаях вы обнаружите, что данные, которые вы предоставляете через API, соответствуют друг другу с тем, что должны отображаться ваши представления. За кулисами вы могли бы абстрагировать генерацию данных, чтобы ваш API и контроллеры приложений повторно использовали один и тот же код для получения данных, но интерфейс API понял бы, как согласовывать безопасность (с точки зрения API) и представлять данные это легко потребляется программой. Более того, вы не обнаружите, что вы создаете дополнительные контроллеры и методы в своем приложении просто для предоставления некоторых данных, которые никогда не будут использоваться в конкретном представлении.
Вы можете использовать MVC или WCF для API и JSON или XML в качестве формата полезной нагрузки. Если вы используете WCF, вы получаете преимущество, заключающееся в том, что он действительно может просто добавить ссылку на службу, чтобы подключиться к ней без необходимости создавать файл / действие WSDL.