DDD 원칙을 사용하여 새 프로젝트의 인프라를 만들었습니다. 나는 그 영역에 공장/수화기를 공급하는 저장소를 가지고있다. 응용 프로그램 계층은 요청시 다양한 도메인 모델을보고/편집 할 수있는 평면으로 기능합니다.도메인 객체 모범 사례 목록 반환
편집 모델 매핑 유창 검증을 사용하여의 serice에 의해 검증되고, 다시 도메인 모델에 병합됩니다. 오류가 기록되고 오류 서비스를 통해 사용자에게 다시보고됩니다.
이 모든 것이 완벽하게 작동합니다. 이제는 이러한 도메인 객체의 목록을 만드는 것이 가장 좋습니다.
몇 가지 옵션이 마음에 와서 :
1) 목록에 다음을 평평하게 한 후 전체 도메인 모델을 수화물합니다. 도메인 모델은 IEnumerable 목록으로 캐시 될 수 있습니다. 그런 다음이 컬렉션은 평평 해지고 요청한보기로 푸시됩니다.
2) 도메인 모델의 경량 표현 인 "투사"개체를 만듭니다. 이것은 수화가 거의 필요 없으며, 도메인 레벨을 통해 끌어와 viewModel에 매핑하여 표시 할 수 있습니다.
3) "바이 패스"도메인과는 IEnumerable을 생성 응용 계층에서 호출 서비스가있다. 이렇게하면 도메인을 깨끗하게 유지할 수 있습니다.
나는 솔루션 1 도메인 항목의 목록을 표시 위해서 무거운 될 것이라고 우려하고있다. 도메인의 검색 가능한 특성으로 인해 캐치 될 것이지만 캐시가 훨씬 잘 수행 할 수있는 보장이 없습니다.
최상의 옵션이 무엇인지에 대한 조언을 주시면 감사하겠습니다.
돈에 대한 생각이 맞지만 불행히도 확실한 대답은 없습니다. 단순성 및 코드 유지 관리가 목표라면 옵션 1을 선택하십시오. 목표가 성능이라면 옵션 2로 가십시오. 필자는 진정으로 필요한 경우 옵션 3 만 사용 하겠지만 옵션 2와 함께 속도를 크게 향상시킬 수 있습니다. –
Yoda 인용 - "쓰기와 별도의 읽기는 수행해야하는 작업입니다 ! " –
나는 ORM이 EF 나 NHibernate와 같이 # 2 방법을 선호하는데, 프로젝션이 실제로는 더 슬림 한 SQL을 생성 할 수 있고 데이터를 줄이는 것은 전선을 가로 질러 진행될 수 있습니다. –