2014-09-12 3 views
0

서비스 레이어를 구축하려고하는데 몇 가지 의구심이 있습니다. 컨트롤러와 관련된 특정 서비스 (cs 클래스 + 인터페이스)를 생성해야합니까? 아니면 poco 클래스와 관련된 서비스를 독점적으로 생성해야합니까?poco 용 제어/서비스 서비스

예를 들어 설명해 드리겠습니다. 나는 StudentPoco, TeacherPoco, StudentService, TeacherService, StudentController, TeacherController가있다.

이제 StudentController를 작성하십시오. 서비스의 메소드 - GetAllTeachers (...) - student가 목록을보고 싶어합니다. StudentController에서이 함수를 호출해야하므로 StudentService에이 함수를 넣어야합니까, TeacherPocos와 관련되어있어 TeacherService에 넣어야합니까? 우리는 교사를 다루고 있습니다. StudentController에서 GetOnlyMyTeachers (...)를 호출하면 어떻게 될까요?

다음 호 : 하나의 서비스가 사용하는 서비스를 참조해야합니까? 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/ pivot/entry.php? id = 91 – trailmax

답변

0

무엇보다 중요한 것은 일반적으로 서비스 계층 (비즈니스 계층이라고도 함)은 비즈니스 논리를 캡슐화하는 것임을 이해하는 것이 중요합니다. 메소드를 그룹화 할 때 서비스 레이어를 빌드 할 때이를 염두에 두어야합니다. 시도한 후 리턴하는 유형을 무시하십시오. 가능한 경우 StudentService이 메소드에 대해 교사 poco를 리턴해야하는 경우가 있습니다. 구현이 비즈니스 계층의 디자인을 주도해서는 안됩니다.

GetAllTeachers() 메쏘드의 경우. 이는 StudentController 또는 TeacherController에서 호출되었는지 여부에 관계없이 TeacherService에 속합니다.

서비스가 서비스를 호출하는 경우에도 문제가 없습니다. StudentService 내부에서 TeacherService로부터 GetTeacher() 메소드를 얻을 수 있습니다. 의존성 주입에 익숙하다면 최선의 해결책은 선택한 IoC를 통해 이러한 의존성을 주입하는 것입니다.