Я бы порекомендовал разработать сервисный слой для шаблона проектирования, описанного Фаулером .Этот сервисный уровень инкапсулирует различные доменные модели и репозитории и обрабатывает взаимодействия между различными доменами / моделями.Это будет сборка, а не WCF или любой другой тип веб-службы.Если вам требуется веб-служба WCF, то это будет очень тонкий слой, который в основном имеет контракт, имитирующий уровень сервиса, и единственной целью является предоставление интерфейса веб-службы или API.
Существует несколько способов взаимодействия приложения MVC с вашим уровнем обслуживания.Если вы создаете модели представлений в своих контроллерах, то он может получить доступ к сборке сервисного уровня напрямую.Добавлена дополнительная нагрузка при вызове через веб-службу, которая, скорее всего, в этом случае не нужна.Используя этот подход, сервисный уровень - это в значительной степени ваша Модель в трио MVC.
Другой способ доступа к сервисному уровню - это использование Views / client с использованием AJAX для расширенных клиентов.В этом случае вы должны использовать MVC, чтобы поместить API-интерфейс REST поверх уровня службы, чтобы вы могли создавать AJAX POST, используя что-то вроде JQuery, непосредственно в веб-службе для обновления и получения данных для веб-страницы.
Обратите внимание, что с этой архитектурой вы можете использовать комбинацию обоих подходов.Вы можете получить доступ к служебному слою непосредственно из контроллера, чтобы отобразить некоторые начальные страницы, а затем использовать интерфейс REST веб-службы для вызовов AJAX во время взаимодействия с пользователем.