2010-01-19 4 views
1

내가 작업하고있는 웹 응용 프로그램에 "저장소"개체가 많이 사용됩니다. 이 패턴의 이름이 있습니까?이 유형이 BLL 또는 DAL에 있다고 말할 수 있습니까?웹 응용 프로그램 내에서 "상점"사용

이 저장소에는 단일 DAL 유형과 관련된 유형의 조각이 들어 있습니다.

예를 들어 Tab의 지속성 및 검색을위한 메소드가 포함 된 TabStore가 있습니다. TabStore의 각 메소드에는 적절한 NHibernate 쿼리를 호출하는 코드가 있습니다.

이 패턴으로 작업 할 때의 함정은 무엇입니까? 한 번 monolithic Dal 유형이었던 것이 더 관리하기 쉽고 더 작은 유형으로 분리되는 것은 정말로 간단한 시도입니까?

예 방법 :

public IList<Tab> GetAllTabInstancesForUserId(Guid userId) 
{ 
    IList<Tab> tabInstances = 
       UoW.Session.CreateQuery("from Tab t where t.UserId=:userId order by t.TabOrder") 
        .SetGuid("userId", userId) 
        .SetCacheable(true) 
        .List<Tab>(); 

    return tabInstances; 
} 
+1

상점은 매우 모호한 단어입니다. 괜찮은 대답을 원하면 더 많은 문맥이 필요할 것입니다. – Chris

답변

2

더 일반적으로 Repository으로 알려져있을 수 있습니다.

추상 저장소는 도메인 모델에 속하지만 별도의 데이터 액세스 구성 요소 콘크리트 클래스에 의해 구현 될 필요가 있습니다.

+0

데이터 액세스 구성 요소를 단순히 비즈니스 로직과 동일한 DLL 및 네임 스페이스에있는 유형 (예 : TabRepository)으로 설정하는 것이 효과적입니까? – Ben

+0

유효성은 사용자의 필요와 애플리케이션의 복잡성에 따라 다르지만, 실제로는 느슨한 커플 링을 보장하기가 매우 어렵 기 때문에 중간 정도의 복잡성에 대해서도 조언 할 것입니다. 소비자와 콘크리트 유형 사이에 단단한 커플 링을 만드는 것은 너무 쉽게됩니다. –

1

내가 제대로 질문을 이해한다면 그들에 약간의 논리가 있어야하기 때문에, "저장", BLL보다 DAL와 더 관련이 있습니다 - 모든 역할은 후 그냥 "저장 ". 개발자가 사용처럼

1

좀 더 자세한 사항은 확실히 당신이 당신의 질문이 무엇인지에 따라 '저장소'사용되는 코드 조각 ...

그러나을 포함하여, 도움이 될 것입니다, 그것은 소리 Repository Pattern (데이터 액세스 레이어와 관련이 있음)을 의미하는 '저장소'대신 '저장소'라는 용어를 사용하십시오.

업데이트 후 ... 개발자가 원래 '저장소'라고 부른 것이 확실히 '저장소'인 것처럼 보입니다.

관련 문제