Интересно, что делают другие / лучшие практики для общения между слоями. Этот вопрос касается связи между уровнями 2-3 и 3-4.
Наша базовая архитектура (по порядку) выглядит следующим образом:
- UI
- Бизнес-классы переднего плана
- Веб-сервисы
- Бэкэнд бизнес-классы
- DAL
Веб-сервисы - это просто фасад, который включает ведение журнала и аутентификацию в библиотеках внутренних классов.
Как таковой, веб-службе передается объект запроса, который включает параметры, требуемые веб-методом, вместе с учетными данными пользователя (например, учетные данные пользователя хранятся в базовом классе, поскольку нам всегда нужно будет передавать их в webservice) и отвечает объектами ответа (имеет такие вещи, как состояние и сообщение, если произошел сбой и т. д. вместе с требуемым объектом) и запрос, и ответ используют пользовательский универсальный класс / или интерфейс, в котором возвращается только один результат, в противном случае класс должен быть создано.
Иногда имеет смысл сделать это для объекта ответа на уровне 4 (хотя мы не используем объект запроса, если не нужно передавать много параметров), в этом случае у нас просто есть класс адаптера на уровне 3 который возвращает это клиенту. Для согласованности я все время думал об этом, хотя думаю, что это может быть излишним.
Итак, чтобы повторить вопрос, каковы лучшие практики для взаимодействия между уровнями? и должны ли / будут ли люди использовать этот метод, описанный выше (он хорошо работает для нас), и должны ли уровни 3-4 реализовать метод, подобный 2-3?
Возможные соображения:
- В настоящее время все разработано командой разработчиков, часть клиентского кода может быть передана на аутсорсинг в будущем
- будущие веб-сервисы будут основаны на WCF (не уверен, что это повлияет на дизайн, отличный от кодирования для интерфейсов, которые я бы предпочел в любом случае).
- Мы используем .net