Реализация уровня сервиса в архитектуре MVC
Как обычно реализовать уровень сервиса в архитектуре MVC? Это один объект, который обслуживает все запросы к базовым бизнес-объектам? Или это больше похоже на объект, который обслуживает разные объекты службы, которые в свою очередь взаимодействуют с бизнес-объектами?
Итак:
Кроме того, если последнее более подходит, настройте этот объект ServiceManager в бутстрапе? Другими словами, зарегистрируйте различные службы, которые вам понадобятся для вашего приложения, менеджеру службы в начальной загрузке?
Если ни одно из указанных выше не подходит, что поможет мне лучше понять, как реализовать уровень обслуживания?
Спасибо заранее.
Ответы
Ответ 1
То, как я прочитал этот вопрос, действительно есть две вещи, на которые нужно ответить:
A) Я бы предпочел разделить "Сервис" на "CustomerService" и "OrderService", другими словами, сгруппированные по понятиям домена.
B) Во-вторых, я бы использовал инъекцию зависимостей, чтобы получить надлежащую службу напрямую там, где она мне нужна, поэтому я в основном использую alt 1. Добавленная абстракция в альтернативе 2 не дает мне никакой дополнительной ценности, поскольку контейнер IoC важная часть.
Ответ 2
Я лично предпочитаю # 2, и да, он обычно настраивается в бутстрапе, или зависимости будут разрешаться с использованием какого-то контейнера IoC, чтобы предоставить вам конкретные конкретные экземпляры.
Я также хотел бы прокомментировать, и да, я понимаю, что это, вероятно, более личное предпочтение. Попытайтесь избежать использования слоя "Сервис" для этих объектов. ссылайтесь на них как на репозитории или на что-то еще. если вы используете сервис, этот термин становится перегруженным... потому что тогда разработчики похожи: "вы имеете в виду, как отдых или услуга wcf?". поверьте мне, мы сделали это с недавним проектом, и мы все время путаем себя, когда мы говорим о том, где делать изменения кода: -P
Ответ 3
Использование "фасада" - один из способов:
Фасад - это объект, который обеспечивает упрощенный интерфейс для большей части кода