В недавнем проекте, который я почти завершил, мы использовали архитектуру, которая в качестве верхнего уровня взаимодействия со слоями web / services использует классы XXXManager.
Например, существует служба Windows, которая работает по расписанию и импортирует данные из нескольких различных источников данных в нашу систему. В рамках этой службы несколько классов «Manager» называются, например, CPImportScheduleManager, CPImportProcessManager и т. Д.
Теперь эти классы Manager делают намного больше, чем просто передают метод по цепочке для использования в слоях web / service. Например, мой метод UserManager.Register () не только сохраняет пользователя с помощью сборок более низкого уровня, но также отправляет пользователю WAP-толчок и определяет используемую мобильную трубку и т. Д.
Мне было предложено, чтобы этот тип архитектуры был обычным способом попытаться привести ООП в соответствие с процедурной моделью. Я вижу их точку зрения здесь, но меня интересует то, что с этим набором классов верхнего уровня любой уровень web / service может просто вызывать один и тот же общий метод без необходимости переписывать код. Таким образом, если бы я хотел написать веб-сервис, который в какой-то момент зарегистрировал пользователя, я мог бы снова просто вызвать метод UserManager.Register () без необходимости переписывать всю логику снова.
Я никогда не был лучшим человеком, который мог бы объяснить себя, но если мои рассуждения имеют смысл, пожалуйста, не стесняйтесь давать советы по вашим альтернативам.
Ура, Крис.