다음을 통해 공유


중간 계층

이 단원에서는 WCF RIA Services 응용 프로그램의 중간 계층 내에서 도메인 서비스, 공유 코드 및 데이터 엔터티를 사용하는 방법에 대한 정보와 지침을 제공합니다. 3계층 응용 프로그램의 중간 계층에는 프레젠테이션 계층과 데이터 계층 간의 상호 관계를 관리하기 위한 논리가 들어 있습니다. 중간 계층에서 비즈니스 규칙과 유효성 검사를 적용하여 데이터가 허용 가능한 상태인지 확인합니다. 예를 들어, 인사 관리 응용 프로그램에서 직원이 휴가 요청을 제출할 수 있는 사용자 인터페이스를 제공할 수 있지만 직원의 휴가 잔여 일수가 0보다 작지 않은지 확인해야 합니다. 따라서 휴가 요청을 제출하기 전에 중간 계층에서 직원의 휴가 잔여 일수를 확인하기 위한 논리를 추가합니다.

Silverlight 응용 프로그램과 같은 RIA Services 클라이언트에서 최적의 사용 환경을 만들기 위해 서버에 적용하는 것과 동일한 비즈니스 논리를 클라이언트에도 적용하려는 경우가 많습니다. 이를 위해서는 클라이언트와 서버의 중간 계층 코드를 동기화해야 합니다. RIA Services 에서는 .NET Framework를 사용하여 중간 계층에서 응용 프로그램 논리를 작성할 수 있습니다. RIA Services 는 중간 계층 코드에서 프레젠테이션 계층에 대한 코드를 자동으로 생성하므로 이 두 계층이 항상 동기화됩니다. 이 항목과 부속 항목에서는 도메인 서비스, 공유 코드 및 데이터 엔터티를 사용하여 중간 계층을 빌드하는 방법에 대해 설명합니다.

데이터 액세스 계층

RIA Services 를 사용하여 중간 계층을 개발할 때는 모든 형식의 데이터 액세스 계층을 사용할 수 있습니다. 예를 들어, 다음 데이터 액세스 계층에 연결할 수 있습니다.

  • 엔터티 데이터 모델

  • LINQ to SQL 개체 모델(이 옵션은 RIA Services Toolkit를 설치한 경우에만 선택할 수 있음).

  • CLR(공용 언어 런타임) 개체

  • 소스에서 데이터를 노출하는 웹 서비스

데이터 모델에 유효성 검사를 적용하여 프레젠테이션 계층에서 전송된 데이터 값에 제한 사항을 적용할 수 있습니다.

경우에 따라 두 개 이상의 테이블에 있는 데이터와 상호 작용해야 합니다. RIA Services 는 계층적 데이터 모델(예: Order 및 OrderDetails 관계), 상속 데이터 모델(예: Parent 및 Child 관계), 데이터 프로젝션 모델(예: Customer 및 Address 테이블에서 단일 데이터 모델로 값을 끌어와서 데이터를 비정규화)의 수정을 지원하는 프로그래밍 프레임워크를 제공합니다. 자세한 내용은 데이터를 참조하십시오.

응용 프로그램에서 다양한 데이터 소스의 데이터를 표시하거나 단일 엔터티를 두 개 이상의 도메인 서비스에 노출해야 할 수 있습니다. WCF RIA Services에서는 이를 위한 다양한 DomainContext 형식의 엔터티 간 참조를 지원합니다. 자세한 내용은 연습: 여러 도메인 서비스 간 엔터티 공유를 참조하십시오.

기본적으로 RIA Services 는 데이터 동시성을 확인하기 위해 전체 원본 엔터티를 변경된 값과 함께 데이터 액세스 계층에 전달하지 않습니다. 대신 RIA Services 는 RoundtripOriginalAttribute 특성, ConcurrencyCheck 특성 또는 TimeStamp 특성으로 표시된 멤버만 저장하고 다시 전달합니다. 자세한 내용은 데이터를 참조하십시오.

도메인 서비스

도메인 서비스는 도메인에 대한 비즈니스 논리의 공개 추상화입니다. 도메인 서비스에는 도메인 비즈니스 논리로 구성된 엔터티와 작업이 포함됩니다. RIA Services 는 데이터 레이어의 비즈니스 논리에 대해 인터페이스 역할을 하는 모든 클래스에 대한 기본 클래스로 DomainService 클래스를 제공합니다. 도메인 서비스를 구현할 때 클라이언트에서 액세스하기 위해 노출할 엔터티 클래스를 지정합니다. 도메인 서비스를 통해 허용되는 데이터 작업도 지정하며, 응용 프로그램 논리를 도메인 서비스에 추가할 수 있습니다. 클라이언트 액세스를 위해 활성화하는 각 도메인 서비스에 대해 RIA Services 는 클라이언트 응용 프로그램에 대한 DomainContext 클래스를 생성합니다. 자세한 내용은 도메인 서비스를 참조하십시오.

도메인 서비스 보안에 대한 자세한 내용은 WCF RIA Services 보안을 참조하십시오.

공유 코드

일부 시나리오에서는 중간 계층 프로젝트와 프레젠테이션 계층 프로젝트 간에 공유되는 코드를 추가해야 하지만 도메인 서비스나 엔터티 클래스에는 해당 코드를 넣지 않아야 합니다. 예를 들어, 다른 여러 프로젝트에서 사용되는 응용 프로그램 논리가 포함된 라이브러리를 참조해야 할 수 있습니다. 또는 "성, 이름의 첫 글자" 형식의 표시 이름과 같은 엔터티 클래스에서 값을 결합하거나 변경하는 사용자 지정 속성을 만들어야 할 수 있습니다. RIA Services 를 사용하면 클라이언트 프로젝트를 변경하지 않고 액세스할 수 있는 중간 계층에 클래스나 어셈블리를 포함할 수 있습니다. 자세한 내용은 공유 코드 항목을 참조하십시오.

클라이언트 코드 생성

RIA Services 를 사용하여 중간 계층 프로젝트와 프레젠테이션 계층 프로젝트를 연결하면 RIA Services 프레임워크는 중간 계층에서 클라이언트에 대한 코드를 자동으로 생성합니다. 다음 중간 계층 코드에 대해 클라이언트 코드가 생성됩니다.

  • EnableClientAccessAttribute 특성으로 주석이 달린 각 도메인 서비스

  • 도메인 서비스에서 참조되는 각 엔터티 클래스

  • 공유 명명 규칙(*.shared.cs 또는 *.shared.vb)에 따라 이름이 지정된 코드 파일은 클라이언트 프로젝트를 수정하지 않고 복사됩니다.

이 중간 계층 코드는 클라이언트 프록시 클래스를 통해 클라이언트에 사용할 수 있습니다. 중간 계층의 코드가 변경되면 프레젠테이션 계층이 중간 계층과 항상 동기화되도록 클라이언트 프록시 클래스가 자동으로 다시 생성됩니다.

자세한 내용은 클라이언트 코드 생성를 참조하십시오.