문제

많은 것들과 함께 Active Directory (그룹에서 사용자 추가/제거, 사용자의 속성 값 변경 등)를 변경하는 응용 프로그램이 있습니다.

우리는 이제 그것을 재 설계하는 과정에 있습니다 ( "스파게티 코드"에서보다 계층화 된 솔루션으로). Active Directory Management 기능은 도메인 계층에서 어느 정도 추상화하고 싶은 것이지만 동시에 대부분의 기능은 매우 기술적입니다.

모든 Active Directory 액세스 코드를 DB-Access와 함께 데이터 액세스 계층에 배치해야합니까, 아니면 Active Directory 기능 라이브러리를 만들고 도메인 모델에서 직접이 라이브러리로 호출해도 괜찮습니까? 그것은 도메인 객체를 지속적으로 인식하게 만들고 아마도 나쁜 생각일까요?

아니면 모든 Active Directory 액세스가 대신 서비스 계층에서 수행되어야하며 도메인 계층도 포함하지 않아야합니까?

도움이 되었습니까?

해결책

도메인 모델이어야합니다 기술적 인 비수성, 따라서 광고 코드를 도메인 모델에 넣지 마십시오.

본질적으로 광고 코드는 또 다른 형태의 데이터 액세스라고 말할 수 있으므로 데이터 액세스에 속합니다. (달). 그러나 데이터베이스 모듈과 함께 속하지 않으므로 단일 책임 원칙 (SRP- 개별 유형뿐만 아니라 모듈에도 적용됩니다).

데이터베이스 액세스와 함께 번들링하는 대신 자체 라이브러리에서 구현하십시오. 개념적으로, 그것은 같은 레이어에 속하지만 다른 일을 수행하므로 이제 동일한 레이어에 두 개의 라이브러리가 있습니다. 절대적으로 괜찮습니다. 필요한만큼 각 레이어에 라이브러리를 많이 가질 수 있습니다.

도메인 모델에서 AD 액세스 (및 DB 액세스)를 추상화로 취급하십시오. 추상적인 저장소 기본 접근법입니다. AD 라이브러리에는 AD 리포지토리의 구현이 포함되어 있으며 DB 라이브러리에는 DB 리포지토리의 구현이 포함됩니다.

이것은 잘 맞습니다 도메인 구동 설계 그리고 An의 개념 반부패 층.

당신이 사용할 수있는 의존성 주입 (DI) 콘크리트 리포지토리를 도메인 모델로 연결합니다.

다른 팁

기술 특정 사항은 구현 세부 사항이며 도메인 모델에 넣어서는 안된다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top