Шаблон репозитория и Бизнес-логика

Мне пришлось добавить следующую аннотацию к классу конфигурации: @EnableGlobalMethodSecurity(prePostEnabled=true)

10
задан acdcjunior 14 October 2015 в 02:44
поделиться

3 ответа

Я согласен с Робертом Мунтяну.

В основном вы сворачиваете свою бизнес-логику, которая не присуща вашей модели, на средний уровень. Средний уровень - это бизнес-уровень / бизнес-объекты / уровень бизнес-логики и т. Д., Но он просто называется уровнем услуг. Это не обязательно должен быть веб-сервис, это широкое употребление термина «сервис» в том смысле, что он объединяет функциональные возможности определенной области приложения.

По сути, у вас будет класс CustomerService, содержащий ссылку на репозиторий. Ваш уровень представления будет ссылаться на класс уровня обслуживания.

Существует дополнительное различие, которое можно сделать, исходя из вашего имени, которое вы используете .net и, вероятно, используете LINQ to SQL в качестве репозитория, как указано в NerdDinner.

Репозиторий обычно возвращает IQueryable на уровень сервиса. , позволяя цепочке уровней сервиса объединять несколько запросов для построения различных наборов результатов. Затем Служба оценивает выражение с помощью ToList или другого аналогичного метода и возвращает его на уровень представления.

21
ответ дан 3 December 2019 в 14:25
поделиться

Поместите его в другой репозиторий (BusinessRuleRepository) и попросите CustomerRepository использовать его.

ИЛИ

Если бизнес-логика ограничивает только результаты, которые может видеть пользователь, вы можете захотеть использовать Выкройка фасада с фабрики. В этом случае у вас будет ICustomerRepository, который обрабатывает ваши CustomerRepository и LimitedCustomerRepository (который может инкапсулировать CustomerRepository), и CustomerRepositoryFactory, который возвращает соответствующий ICustomerRepository для пользователя.

7
ответ дан 3 December 2019 в 14:25
поделиться

Завершите это службой.

6
ответ дан 3 December 2019 в 14:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: