У меня есть приложение ASP.NET MVC, работающее с WCF. Первоначально я разработал его без WCF, когда контроллеры взаимодействуют с сервисным уровнем, который попадает в мои репозитории. Во время разработки возникло требование, которое требовало от меня физического отделения пользовательского интерфейса от уровня обслуживания.
Добавление WCF было болью в тылу. Вещи, которые работали без WCF, больше не работали впоследствии. Например, состояние моих объектов было потеряно при передаче на уровень обслуживания и обратно, что очень затруднило использование определенных функций моего ORM (NHibernate). Я больше не мог извлекать сущность, сопоставлять модель представления с сущностью в моем контроллере и позволять NHibernate определять, нужно ли обновление.
Тем не менее, проблемы, связанные с WCF, в основном возникали в начале. Мне не нужно пересматривать конфигурацию очень часто, и я привык работать с отсоединенными сущностями. У меня также есть преимущество физического разделения, и WCF чрезвычайно гибок.
Буду ли я использовать WCF, если мне нужны веб-сервисы, но не разделение? Я действительно не знаю. Вероятно, я бы попытался заставить методы действий JSON работать, потому что они намного проще (не говоря уже о том, что это было веселее). Сохранять это простым - все еще замечательный принцип.
Что касается услуг по поиску на вашем сайте MVC? Я думаю, можно с уверенностью сказать, что ваши методы действий должны быть очень тонкими, и в вашем проекте MVC должно быть очень мало бизнес-логики или постоянных проблем. Разделение проблем значительно упрощает адаптацию и изменение вашего приложения.