Если вы разрабатываете веб-сайт, интенсивно использующий AJAX (например, для jQuery.ajax), вы можете реализовать его следующим образом:
- Front-end может быть сделан с учетом ASP.NET MVC. Данные для соответствующих видов будут запрашиваться по AJAX.
- WCF, опубликованный на том же веб-сайте, что и ASP.NET MVC (см. здесь пример), может предоставить данные JSON для всех запросов AJAX. WCF можно рассматривать как компонент среднего уровня, который реализует бизнес-логику и получает необходимые данные от сервера базы данных.
При такой архитектуре приложения ASP.NET MVC будет уменьшен до V (Views) с использованием главных страниц. Могут генерироваться разные представления в зависимости от ролей пользователя. Модель и большинство действий контроллера будут перемещены в WCF. Методы WFC можно протестировать с помощью модульных тестов, точно таких же хороших, как действия контроллера Если вам потребуются некоторые другие данные, такие как динамически генерируемые изображения (например, диаграммы) или динамически генерируемые файлы Excel или WinWord, вы можете вернуть все данные из методов WFC точно так же просто, как вы можете сделать это из действий контроллера MVC.
При таком дизайне вашего приложения я не вижу производительности или других недостатков. Оба вида ASP.NET MVC и WFC имеют много возможностей кэширования, которые вы можете использовать по требованию.