21

프로그램의 데이터 액세스 계층을 디자인 할 때 데이터 저장소 클래스의 이름을 지정하는 방법을 모르겠습니다. (DAL).개체 지속 용어 : '저장소'대 '저장소'대 '컨텍스트'대 '검색 자'대 (...)

(데이터 저장소 클래스, 나는 메모리에 유지 된 객체를 읽거나 메모리 개체를 유지하는 책임이 클래스를 의미한다.)

는 데이터 저장소 클래스의 이름을 합리적인 것 같다 두 가지에 따르면 :

  • 처리 할 개체의 종류;
  • 이러한 개체를로드하거나 지속하는지 여부

⇒로드하는 클래스는 Banana입니다. BananaSource.

두 번째 요점 (예 : Source 비트)에 대해 어떻게 해야할지 모르겠습니다.

  • 저장소 : 나는 분명히 바로 그 목적을 위해 사용되는 다른 명사를 본 적이 이것은 매우 일반적인 소리. 이것은 읽기/쓰기 접근이 가능한 것을 나타 냅니까?
  • 저장소 : 잠재적으로 쓰기 권한이있는 것처럼 들립니다.
  • 컨텍스트 : 매우 추상적으로 들립니다. 나는 LINQ와 객체 관계형 매퍼 (ORM)를 보았다.
    P. (수개월 후) : 이것은 "능동적 인"또는 감독 된 객체를 포함하는 컨테이너 (작업 단위 패턴이 마음에 듭니다)에 적합 할 것입니다.
  • 리트리버 : 읽기 전용 소리와 비슷합니다.
  • 소스 & 싱크 : 개체 지속성에 적합하지 않은 것 같습니다. 데이터 스트림에 더 잘 들어 맞습니까?
  • 독자/작자 : 의도는 분명하지만 너무 기술적입니다.

이 이름은 임의적입니까, 아니면 각각의 의미/의미 차이가 널리 받아 들여지고 있습니까? 더 구체적으로 말하자면, 다음과 같은 질문을 던집니다 :

  • 읽기 전용 데이터 저장소에는 어떤 이름이 적합할까요?
  • 쓰기 전용 데이터 저장소에 적합한 이름은 무엇입니까?
  • 가끔 업데이트되는 읽기 전용 데이터 저장소에 적합한 이름은 무엇입니까?
  • 가끔 읽는 대부분의 쓰기 전용 데이터 저장소에 적합한 이름은 무엇입니까?
  • 하나의 이름이 모든 시나리오에 똑같이 잘 맞습니까?
+0

좋은 질문입니다. 저는 현재 프로젝트에서 이것을 고려해 보았습니다. read/write에'Store', 읽기 전용으로'Service' (예 :'UserService.GetUserById (1)')를 사용했습니다. 내가 싫어할 수있는 유일한 것은 그 행동의 이름을 기억하고/기억해야한다는 것입니다. 이런 식으로 2 개의 다른 명사를 사용하고있는 것은 맞지 않습니다. 표준 (ish) 규칙이 있는지 알고 싶습니다. – fearofawhackplanet

답변

10

아직 아무도 질문에 대답하지 않았으므로, 그 동안 내가 결정한 내용을 게시 할 것입니다. 그냥 레코드에 대한

, 나는 거의 대부분의 데이터 저장소 클래스를 저장소를 호출에 결정했다. 첫째, 내가 제안한 목록에서 가장 중립적 인 비 전문 용어 인 것으로 보이며, Repository pattern과 잘 어울리는 것으로 보입니다.

는 일반적으로 "저장소"데이터 검색/지속성 인터페이스는 다음과 유사한 어디에 잘 맞는 것 같다

public interface IRepository<TResource, TId> 
{ 
    int Count { get; } 
    TResource GetById(TId id); 
    IEnumerable<TResource> GetManyBySomeCriteria(...); 
    TId Add(TResource resource); 
    void Remove(TId id); 
    void Remove(TResource resource); 
    ... 
} 
내가 사용에 결정하는 또 다른 용어는 제공

입니다, 퍼시스턴스 저장소에서 검색하는 대신 또는 퍼시스턴스 저장소에 대한 액세스가 순전히 읽기 전용 방식으로 수행 될 때마다 즉석에서 개체가 생성 될 때마다 항상 "저장소"보다 더 선호 할 것입니다. (공장도 적절하지만, 더 기술적 소리, 나는 대부분의 용도 기술 용어에 대해 결정했을 것이다.)

PS : 일부 시간이 답을 쓰기 때문에 지나간하고있다 나는했습니다 다른 사람의 코드를 검토 할 수있는 기회가 여러 번있었습니다. 본인의 어휘에 추가 한 한 용어는 서비스입니다. SOA 시나리오를 위해 예약하고 있습니다. Foo 리포지토리 또는 공급자가 지원하는 FooService을 게시 할 수 있습니다. "서비스"는 기본적으로 서비스 응답의 적절한 "chunkiness"에 대한 인증, 권한 부여 또는 집계/일괄 처리 DTO와 같은 일을 처리하는 기본적으로 위에있는 얇은 공개 대상 레이어입니다.