다음을 통해 공유


REST 서비스 및 의미 체계(ADO.NET 데이터 서비스 프레임워크)

REST(Representational State Transfer) 서비스는 다음 두 가지 요구 사항에 기반을 둡니다.

  • 네트워크로 연결된 리소스를 찾는 데 사용되는 주소 지정 스키마

  • 찾은 리소스에 대한 표현을 반환하는 방법

ADO.NET 데이터 서비스 프레임워크는 이 두 REST 요구 사항을 모두 지원합니다. ADO.NET 데이터 서비스 프레임워크는 URI를 이용하여 HTTP 헤더를 통해 협상된 데이터를 찾는 데이터 주소 지정 스키마를 구현합니다. 데이터는 JSON(JavaScript Object Notation) 또는 AtomPub(Atom Publishing Protocol) 형식으로 전송됩니다.

ADO.NET 데이터 서비스는 구현된 다양한 데이터 저장소를 기반으로 데이터 엔터티 및 엔터티 간의 관계를 배포할 수 있습니다. 시스템에서는 IQueryable을 구현하는 모든 공급자를 배포할 수 있습니다. 업데이트를 지원하려면 공급자가 IUpdatable을 구현해야 합니다.

또한 ADO.NET 데이터 서비스 프레임워크는 데이터 서비스에 대한 액세스 제어를 위해 적절히 구성된 HTTP 캐싱 인프라와 Microsoft ASP.NET 등의 표준 인증 스키마를 사용합니다.

데이터 주소 지정 스키마

ADO.NET 데이터 서비스 데이터 주소 지정 스키마는 URI를 이용하여 HTTP 헤더를 통해 협상된 데이터를 가리킵니다. 다음은 데이터 서비스 리소스를 찾는 올바른 URI를 보여 주는 예제입니다.

모든 Customers: http://host/service.svc/Customers

운송 날짜별로 정렬된 모든 Orders: http://host/service.svc/SalesOrders?$orderby=ShippedDate

'ALFKI'라는 키가 있는 Customer 엔터티: http://host/service.svc/Customers('ALFKI')

'ALFKI'라는 키가 있는 고객의 Orders 엔터티: http://host/service.svc/Customers('ALFKI')/SalesOrders

추가 구문 예제를 보려면 URI를 사용한 단순한 데이터 주소 지정 스키마(ADO.NET 데이터 서비스 프레임워크)를 참조하십시오.

데이터 정의 모델

ADO.NET 데이터 서비스는 서비스가 나타내는 데이터를 정의하기 위해 CSDL(개념 스키마 정의 언어)을 사용합니다. CSDL 스키마는 EDM(엔터티 데이터 모델)에 기반을 둔 XML 문서입니다. EDM에 대한 자세한 내용은 ADO.NET Entity Framework를 참조하십시오.

올바르게 정의된 데이터 설명 메커니즘이 있으면 디자인 타임 도구를 만들어 서비스에서 메타데이터를 추출하고 런타임에 데이터를 사용할 수 있도록 사용자 인터페이스, 래퍼 및 메타데이터 리포지토리를 만들 수 있습니다.

다음 CSDL 예제에서는 두 개의 EntityType 데이터 구조인 CustomerSalesOrder를 정의합니다. 각 데이터 구조에는 몇 가지 속성 및 Customer 엔터티와 Order 엔터티 간의 관계를 이동할 수 있도록 하는 NavigationProperty가 있습니다. 이 예제에서 NavigationPropertyCustomer 엔터티와 Order 엔터티 간에 정의된 일대다 Association에 기반을 둡니다.

<?xml version="1.0" encoding="utf-8"?>
 <Schema Namespace="NorthwindModel" Alias="Self"
 xmlns="https://schemas.microsoft.com/ado/2006/04/edm">
  <EntityType Name="Customer">
    <Key>
      <PropertyRef Name="CustomerID" />
    </Key>
    <Property Name="CustomerID" Type="String" Nullable="false" />
    <Property Name="CompanyName" Type="String" Nullable="false" />
    <Property Name="ContactName" Type="String" Nullable="true" />
    <Property Name="City" Type="String" Nullable="true" />
    <Property Name="Country" Type="String" Nullable="true" />
    <NavigationProperty Name="SalesOrders"
            Relationship="Self.Customer_Order" FromRole="Customer"
            ToRole="SalesOrder" />
  </EntityType>

  <EntityType Name="SalesOrder">
    <Key>
      <PropertyRef Name="OrderID" />
    </Key>
    <Property Name="OrderID" Type="Int32" Nullable="false" />
    <Property Name="OrderDate" Type="DateTime" Nullable="true" />
    <Property Name="ShipCity" Type="String" Nullable="true" />
    <Property Name="ShipCountry" Type="String" Nullable="true" />
    <NavigationProperty Name="Customer"
       Relationship="Self.Customer_Order"
       FromRole="SalesOrder" ToRole="Customer" />
  </EntityType>

  <Association Name="Customer_Order">
    <End Role="Customer" Type="Self.Customer" Multiplicity="1" />
    <End Role="SalesOrder" Type="Self.SalesOrder" Multiplicity="*" />
  </Association>

  <EntityContainer Name="NorthwindEntities">
    <EntitySet Name="Categories" EntityType="Self.Category" />
    <EntitySet Name="Products" EntityType="Self.Product" />
    <EntitySet Name="Customers" EntityType="Self.Customer" />
    <EntitySet Name="SalesOrders" EntityType="Self.SalesOrder" />
    <AssociationSet Name="CustomerOrders"
                  Association="Self.Customer_Order">
      <End Role="Customer" EntitySet="Customers" />
      <End Role="SalesOrder" EntitySet="SalesOrders" />
    </AssociationSet>
  </EntityContainer>

</Schema>

참고 항목

개념

ADO.NET 데이터 서비스 프레임워크 개요
ADO.NET 데이터 서비스 만들기
ADO.NET 데이터 서비스의 클라이언트 응용 프로그램
ADO.NET 데이터 서비스 사양
데이터 전송 형식(ADO.NET 데이터 서비스 프레임워크)

관련 자료

엔터티 데이터 모델