2014-09-12 2 views
0

Я собираюсь создать свой сервисный слой, и у меня есть некоторые сомнения. Должен ли я создать конкретную службу (cs class + interface), связанную с контроллером, или мне нужно создать сервис, связанный только с классом poco?Сервис для управления/обслуживания для poco

Позвольте привести пример. У меня есть: StudentPoco, TeacherPoco, StudentService, TeacherService, StudentController, TeacherController.

И теперь сформируйте StudentController. Я хочу вызвать метод сервиса - GetAllTeachers (...) - учащийся хочет увидеть список. Должен ли я помещать эту функцию в StudentService, потому что я вызываю ее из StudentController или я должен помещать ее в TeacherService, потому что она связана с TeacherPocos - мы имеем дело с учителями. Что произойдет, если мы позвоним GetOnlyMyTeachers (...) от StudentController?

Следующая проблема: Должна ли одна ссылка на службы, которые она использует? Что, если StudentService имеет ссылку на TeacherService, а у TeacherService есть ссылка на StudentService? Это нормально?

Я хотел бы заметить, что я знаком с DI.

Сначала я использую код MVC5 и EF6. Я не хочу использовать репозиторий и шаблоны UoW. У меня будет ссылка DbContext во всех сервисах. Правильно ли вызывать метод savechanges много раз?

Что вы думаете о моих сомнениях?

+0

Прочтите эту статью: https://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=92, а также: https://www.cuttingedge.it/blogs/steven/ ось/entry.php? ID = 91 – trailmax

ответ

0

Прежде всего важно понимать, что обычно уровень обслуживания (иногда называемый бизнес-слоем) заключается в инкапсулировании бизнес-логики. Когда вы строите свой сервисный уровень, помните об этом, когда группируете свои методы. Попробуйте проигнорировать типы, которые он возвращает, могут быть случаи, когда возможный StudentService должен вернуть учителю poco для метода. Реализация не должна стимулировать дизайн вашего бизнес-уровня.

В данном случае ваш метод GetAllTeachers(). Это относится к TeacherService независимо от того, вызвано ли оно от StudentController или TeacherController.

Это также хорошо подходит для обслуживания вызовов. Внутри StudentService вы можете получить метод GetTeacher() из TeacherService. Если вы знакомы с Dependency Injection, лучшим решением будет внедрение этих зависимостей через ваш IoC по выбору.

Смежные вопросы