Мое мнение основано на том, что предполагается использовать сервисы - они собираются на серверные внешние приложения или предназначены для потребления только в вашем приложении?
Для использования внутри приложения я склонен идти с-процессный болтливый уровень, а не имеющий внепроцессный уровень (например, сервисный уровень, выполняющий задачи CRUD и т. д.).Раньше они были очень хороши с точки зрения производительности, и масштабирование все еще возможно при использовании нескольких веб-серверов и т. Д. Один и тот же внутрипроцессный уровень может быть размещен на нескольких фронтах - например, веб-приложение, используемое для пользовательского интерфейса приложения, консольное приложение, выполняющее ежедневную работу, WCF.услуги, используемые сторонней организацией и т. д. Управление транзакциями и текущая контекстная информация могут быть простыми на уровне процесса - хотя это возможно на уровне служб WCF - это очень дорого.
Для внешних потребителей сервисы WCF - это отличный фронт, но тогда интерфейс сервиса должен быть коренастым и должен предоставлять функциональность строго из бизнес-терминов (например, он должен иметь не методы CRUD, которые предназначены для постоянства, а скорее методы, которые делаютсмысл от домена - скажем CreateOrder, который будет создавать записи в нескольких таблицах).