DDD : C#을 사용하여 POCO, Repository, DTO 및 DAO와 관련하여 정렬 및 필터링을 코딩하려고합니다.

StackOverflow https://stackoverflow.com/questions/2445462

문제

저장소에서 항목 목록을 얻습니다. 이제 나는 그것들을 정렬하고 필터링해야합니다. 이는 효율성을 위해 저장소에서 이루어질 것이라고 생각합니다. DDD 방식 으로이 작업을 수행하는 두 가지 방법이 있다고 생각합니다.

  1. 리포지토리에 조건으로 가득 찬 필터와 정렬 개체를 보내십시오 (이것을 란 무엇입니까?).
  2. 저장소 결과 .filter 및 .sort 메소드가있는 객체를 생성합니까? (이것은 하나 이상의 객체를 포함하기 때문에 Pojo/Poco가 아닙니다.).

그래서 답은 1, 2 또는 기타입니까? 이유를 설명해 주시겠습니까? 저장소는 내가 원하는 데이터 만 보낼 수 있기 때문에 #1에 기울고 있습니다 (또는 #2는 Lazylist와 같은 데이터 액세스를 지연시킬 수 있습니까?) 코드 예제 (또는 웹 사이트 링크)는 매우 도움이 될 것입니다.

예시:

  1. 제품 제품 = repo.getProducts (mySortObject, myFilterObject); // POCO 목록
  2. product.addfilter ( "가격", "Lessthan", "3.99"); product.addsort ( "가격", "내림차순");
도움이 되었습니까?

해결책

이것은 완전한 대답은 아니지만 CQRS 뒤에있는 생각 중 일부를 살펴보고 싶을 수도 있습니다 (명령 쿼리 책임 분리) (일부 좋은 링크를 찾을 수 있습니다. 여기).

CQRS는이 중 일부를 명확히하는 데 도움이 될 수있는 DDD에 대해 생각하는 방법입니다. 특정 질문보다 높은 수준이지만 도움이 될 수 있습니다.

본질적으로 나는 그것이 당신이 당신의 첫 번째 옵션 (비슷한 상황에서 끝난 것)을 사용하기로 결정하는 데 도움이 될 것이라고 생각합니다. 우리는 그것을 쿼리 객체라고 불렀습니다.

다른 팁

나는 개인적으로 당신의 첫 번째 옵션을 가지고 갈 것입니다.

DDD 관점에서 두 번째 옵션에 대해 생각하면 도메인 객체라고 가정하는 제품 객체는 실제로 해결하려는 비즈니스 문제의 일부가 아닌 것에 대한 지식이 있습니다 (즉, 도메인 ). 오히려 정렬 및 필터링은 사용자 인터페이스 또는 다른 백엔드 처리 구성 요소에 사용됩니다.

또한 단일 책임 (일명 견고한) 관점에서 두 번째 옵션을 살펴보면 Product 비즈니스 객체는 분류 및 필터링에 대한 책임이 있으며, 이는 제품과 전혀 관련이없는 것입니다.

그것이 내가 사물을 보는 방법입니다. 나는 다른 의견에 관심이있을 것입니다.

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