Это сильно зависит от ваших нефункциональных требований и случаев изменения, о которых вы, возможно, уже знаете. Разделение всех ваших слоев с помощью каких-либо веб-сервисов (SOAP / REST) таким образом представит:
- дополнительная сложность с точки зрения протоколов, безопасности, развертывания (con)
- задержка, так как требуется несколько (де) этапов сериализации (UI> Business> DataAccess). Помните, что ваш уровень DataAccess снова подключается к (удаленному) хранилищу данных (con)
- способность независимо масштабировать различные слои. Скажем, другая система хочет повторно использовать вас BusinessLayer, вы можете масштабировать (кластеризовать) только бизнес и последующие уровни (DataAccess и Datastore). (Про)
Я бы предпочел начать с простого и четко отделить разные слои только с архитектурной точки зрения. Установите четко определенные (только для .NET) интерфейсы между уровнями UI, Business и DataAccess. Если позже вы придете к выводу, что вам нужно разделить слои на разные узлы, вы можете «легко» сгенерировать соответствующие прокси-серверы веб-служб и изменить ваши компоненты только в нескольких местах.