다음을 통해 공유


공유 엔터티

엔터티는 WCF RIA Services 응용 프로그램 내의 여러 도메인 서비스 간에 공유할 수 있습니다. 도메인 서비스가 동일한 서버 DLL 내에 포함되어 있으면 이러한 각 도메인 서비스를 통해 클라이언트가 동일한 엔터티 형식에 액세스할 수 있습니다. 공유 엔터티에 대한 지원에는 각 DomainService 형식에서 잠재적으로 서로 다를 수 있는 연결 및 명명된 업데이트 메서드를 기반으로 하는 코드 생성이 포함됩니다. 엔터티 공유 기능 덕분에 기본 데이터 모델에 대한 보다 간단한 엔터티 매핑을 통해 더 큰 RIA Services 응용 프로그램의 리팩터링 및 구성을 보다 효과적으로 수행할 수 있습니다.

이러한 공유 기능이 필요한 시나리오는 쉽게 찾아볼 수 있습니다. 예를 들어 개인적인 직원 정보와 HR(인적 자원) 직원 데이터를 어떻게 공유할 수 있을지 생각해보십시오. 직원 엔터티는 직원 개인 정보 DomainService를 통해 제공할 수 있으며, 직원은 자신의 주소 및 전화 번호와 같은 개인적인 정보를 업데이트할 수 있습니다. 또한 HR(인적 자원) DomainService를 통해 동일한 직원 형식을 제공할 수도 있습니다. HR 정보에는 휴가 날짜, 급여 지급 내역 등이 포함되며, 디스플레이에 이름과 ID와 같은 직원 엔터티의 세부 정보가 표시될 수도 있습니다. 또 다른 예로는 구매 서비스 및 카탈로그 서비스에서 모두 사용되는 제품 엔터티를 들 수 있습니다.

엔터티 공유는 단일 서버 DLL 내에서만 지원됩니다. DLL 경계 내에서는 개수에 관계없이 여러 도메인 서비스가 동일한 엔터티 형식을 참조할 수 있습니다. 그러나 여러 서버 DLL 간의 동일 엔터티 형식 공유는 지원되지 않습니다. 서비스 도메인 간의 엔터티 공유 방법에 대한 자세한 내용은 연습: 여러 도메인 서비스 간 엔터티 공유 항목을 참조하십시오.

[!참고] 공유 엔터티에 대한 지원은 WCF RIA Services V1.0 SP1에서 도입되었으며 WCF RIA Services V1.0에서는 지원되지 않습니다.

클라이언트 엔터티 모양

두 개 이상의 도메인 서비스에서 엔터티 형식을 공유하는 기능이 도입됨으로써 지정된 엔터티 형식을 사용하는 각 DomainService는 클라이언트에서 서버 엔터티 속성이 생성되는지 여부에 영향을 줍니다. 생성된 클라이언트 엔터티는 해당 형식을 제공하는 서비스에서 사용된 엔터티 속성을 포함하는 병합된 뷰가 됩니다. 그 결과 코드 생성자에서 응용 프로그램 DLL 내의 각 도메인 서비스에 액세스할 수 있는 하나의 엔터티 형식을 클라이언트에 만듭니다. IncludeAttributeExcludeAttribute 특성을 사용하면 클라이언트 엔터티의 모양에도 영향을 줄 수 있습니다. IncludeAttribute를 포함하는 서버 엔터티 속성은 항상 클라이언트에 반영됩니다. ExcludeAttribute를 포함하는 서버 엔터티 속성은 클라이언트에 반영되지 않습니다.

공유 엔터티를 포함하는 사용자 지정 업데이트 메서드

도메인 서비스에서 [Update(UsingCustomMethod = true)] 특성이 적용된 사용자 지정 업데이트 메서드는 클라이언트 도메인 컨텍스트에 반영되며 고객 엔터티는 이와 연결된 사용자 지정 업데이트 메서드를 포함합니다. 도메인 컨텍스트에는 도메인 서비스에 대한 기본 선호도를 갖지만 엔터티를 공유할 수 없으므로 사용자가 사용자 지정 업데이트 메서드를 호출할 때 사용할 도메인 컨텍스트가 무엇인지 알고 있어야 합니다. Intellisense는 이를 확인하는 데 도움이 될 수 있습니다.

공유 제한 사항

엔터티 공유에 대해서는 세 가지 제한 사항에 주의해야 합니다.

  1. 위에서 설명한 것처럼 서버 DLL 간의 동일한 엔터티 형식 공유는 아직 지원되지 않습니다.

  2. 상속 계층에서 계층의 분기가 공유된 경우 계층 수준도 동일하게 공유되어야 합니다.

  3. 특정 엔터티 형식을 공유하는 모든 DomainService 개체는 해당 형식의 메타데이터 설명에 미리 정의되어 있어야 합니다. 즉, 서비스에 대한 모든 사용자 지정 DomainServiceDescriptionProvider 개체는 해당 유형에 대해 동일한 메타데이터를 지정해야 합니다.