2011-04-18 3 views
1

디자인에 대한 접근 방법을 결정하는 중입니다. 나는 기술적으로사용자 팩토리 및 저장소

  1. 기업이다 나는 사용자

    1. 기업 내부 사용자
    2. 고객 사용자

    그들 사이의 근본적인 차이의 두 유형이

    하여 입력 싶습니다 : 시스템에 암호를 저장할 필요는 없지만 역할 만 (AD에 대한 인증)

  2. 고객 사용자 : 시스템에 암호를 저장하고 고객 ID가 있습니다. 나는 추상 팩토리 패턴을 사용하여 사용자 생성 프로세스 추상, 나는 사용자 개체의 2 개 종류를 얻을 경우

나는 그렇게

User Name 
Password 
Roles 
Customer ID 

처럼 열이 테이블 사용자가 있습니다.

이제 저장소를 만드는 데 어떻게 처리해야합니까? 개별 사용자 유형 개체 (동일한 테이블에 매핑)를 처리하기 위해 2 개의 리포지토리를 만들 수 있습니까?

답변

1

기업 사용자도 고객이 될 수 있습니까? 그렇다면 동일한 ID를 사용할 것으로 기대하십니까? 그렇다면 Party-Role 패턴 (Actor-Participant라고도 함) 구현을 살펴볼 수 있습니다.

내부 사용자 역할과 회사 대 고객 구분을 모두 처리 할 수있는 통합 솔루션을 제공합니다.

hth.

+0

아니요 기업 사용자는 고객이 시스템에 로그인 할 수 있도록 고객과 연관된 사용자 ID입니다. 고객과 관련된 여러 사용자 ID가있을 수 있습니다. 고객 프로필은 별도의 레코드입니다. – Gopal

1

사용자 테이블에 사용자 유형 열을 추가하는 것이 좋습니다. 이렇게하면 각 레코드가 나타내는 사용자 유형을 추적 할 수 있습니다. 이는 저장소 계층의 찾기/가져 오기 작업에서 사용자 엔터티를 만들 때뿐만 아니라 추가 또는 업데이트 절차를 수행 할 때 사용됩니다. 나는 하나의 "사용자"저장소만을 제안 할 것이다. 상속을 사용하고 데이터베이스 수준에서 사용자 유형을 추적하는 경우에는 두 개의 저장소 클래스가 필요하지 않습니다.

희망이 도움이됩니다.

즐기십시오!

+0

nHibernate를 사용하면 hbm xml이 어떻게 보이나요? 각 사용자 유형에는 고유 한 필드 집합이 있으므로 우리는 CorporateUser에 2 개의 다른 hbm 파일을 가지고 있어야하고 CustomerUser에 대해 하나의 테이블에 해당 필드를 매핑해야합니다. – Gopal

+0

@GeorgeKT - 객체 리얼리티 매퍼에 대한 경험이 없으며 성능을 위해 직접 "리포지토리 패턴"을 구현하는 것을 선호합니다. 리포지토리 패턴에 대한 좋은 설명은 http://msdn.microsoft.com/en-us/library/ff649690.aspx에서 찾을 수 있습니다 - 도움이 되었으면 – Doug

+1

형식이 도입 된 경우 팩토리를 따를 것이라고 생각합니다 – hanzolo

1

어쩌면 몇 가지 힌트를 줄 수 있습니다. Doug에 동의하는 것은 User Aggregate 클래스를 관리하는 UserRepository를 하나만 사용해야한다는 것입니다.

사용자 클래스를 하나의 컬럼에 매핑되는 UserType을 열거 필드 :

이것은 내가 (유창함) NHibernate에 함께 할 것입니다 방법이다. 매우 좋은이 기사를 읽고 Jimmy Bogard의 솔루션을 여러 번 사용했습니다 (http://lostechies.com/jimmybogard/2008/08/12/enumeration-classes/). 그런 다음 User 테이블의 열로 실제로 데이터베이스로 표현 된 UserType 클래스가 있지만 Behavior 등을 포함한 전체 클래스를가집니다.

각 유형이 암호와 고객 관계를 처리하는 방법의 차이점을 해결하기 위해 유효성 검사기 패턴을 사용하여 User 인스턴스가 db에 저장하기 전에 유효한지 (사용자 유형을 기준으로) 확인할 수 있습니다. 이 블로그를보세요 http://lostechies.com/jimmybogard/2007/10/24/entity-validation-with-visitors-and-extension-methods/ (Jimmy again ... Jimmy Bogard의 블로그에 가입해야한다고 말하고 싶습니다 :)).

그러면 UserType이 내부 유형인지, pwd가 필요하지 않고 AD 역할이 제공되어야 하는지를 확인하는 UserPersistanceValidator가 있습니다. 너는 그림을 얻는다 ...

나는 이것이 당신을 도울 것을 희망한다. 행운을 빕니다!

+0

나는 그림을 얻는다. 많이 soooooo 감사합니다 :) @ 덕 덕분에 너무. – Gopal