2009-03-21 6 views
7

ASP.NET MVC 응용 프로그램에서 리포지토리 패턴 (예 : http://www.asp.net/mvc 사이트의 예제)을 사용하고 있습니다. CategoryRepository라는 다른 저장소와 ProductRepository라는 두 개의 저장소가 있습니다. 또한 CategoryService와 ProductService라는 두 가지 서비스를 사용하여 리포지토리 메소드를 확인하고 호출합니다. ProductService에서 카테고리 목록이 필요합니다.이 메소드는 이미 CategoryRepository에서 구현 된 메소드를 반환합니다. 내 질문은, ProductService에서 CategoryRepository에 존재하는 ListCategories 메서드를 호출하는 올바른 방법은 무엇입니까? ProductRepository (DRY 철학)에 다른 ListCategories 메서드를 구현하고 싶지 않습니다. 감사.리포지토리 간의 메서드 호출 - 리포지토리 패턴

답변

4

비슷한 서비스를 하나의 서비스로 롤링하는 것이 좋습니다. 따라서 전자 상거래 응용 프로그램을 작성하는 경우 ProductRepository, CategoryRepository 등을 CatalogService와 같은 것으로 롤업하고 관련있는 모든 저장소를 호스트하게하십시오.

+1

+1. 일반적으로 이것은 엔티티, 라인이 아닌 비즈니스에서 분리 된 서비스를 제공합니다. –

+3

카탈로그 서비스가 ProductRepo를 사용하여 제품을 업데이트하고 CategoryRepo가 하나의 서비스 방법으로 카테고리를 업데이트 할 때 어떤 일이 발생합니까? 즉, ProductRepo 변경 사항이 한 트랜잭션에서 완료되고 CategoryRepo 변경 사항이 다른 트랜잭션에서 완료되었음을 의미합니까? ProductRepo가 범주를 변경하도록 허용하지 않으면 Repo 작업이 분리되어 있다고 항상 생각했습니다. 현실 세계에서 사람들은 무엇을하나요? – IanT8

3

하나의 옵션으로 ProductService 클래스에 CategoryService 인스턴스를 제공 할 수 있습니다.

그런 다음 특정 CategoryService 구현에 대한 직접 연결을 설정하지 않고도 ProductService에서 카테고리 목록에 액세스 할 수 있습니다.