OData 프로토콜 구현 정보
Open Data Protocol(OData)에서는 프로토콜을 구현하는 데이터 서비스가 최소한의 기능 집합을 제공해야 합니다. 이러한 기능은 프로토콜 문서에 "해야 한다"로 설명됩니다. 다른 선택적 기능은 "할 수 있다"로 설명됩니다. 이 항목은 현재 WCF Data Services로 구현되지 않는 이러한 선택적 기능에 대해 설명합니다. 자세한 내용은 OData Protocol Documentation을 참조하십시오.
$format 쿼리 옵션 지원
OData 프로토콜은 JSON(JavaScript Notation)과 Atom 피드를 둘 다 지원하고, OData는 클라이언트에서 응답 피드의 형식을 요청할 수 있도록 $format 시스템 쿼리 옵션을 제공합니다. 이 시스템 쿼리 옵션은 데이터 서비스에서 지 원하는 경우 요청의 Accept 헤더 값을 재정의 해야 합니다. WCF Data Services는 반환되는 JSON 및 Atom 피드를 둘 다를 지원합니다. 그러나, 기본 구현은 $format 쿼리 옵션을 지원하지 않고 Accept 헤더 값만 사용하여 응답 형식을 결정합니다. 클라이언트가 Accept 헤더를 설정할 수 없는 경우와 같이 데이터 서비스가 $format 쿼리 옵션을 지원해야 하는 경우가 있습니다. 이러한 시나리오를 지원하려면 URI에서 이 옵션을 처리하도록 데이터 서비스를 확장해야 합니다. MSDN Code Gallery 웹 사이트에서 JSONP and URL-controlled format support for ADO.NET Data Services 샘플 프로젝트를 다운로드해서 사용자의 데이터 서비스 프로젝트에 추가하여 데이터 서비스에 이 기능을 추가할 수 있습니다. 이 샘플은 $format 쿼리 옵션을 제거하고 Accept 헤더를 application/json으로 변경합니다. 샘플 프로젝트를 포함하고 데이터 서비스에 JSONPSupportBehaviorAttribute를 추가하면 서비스에서 $format 쿼리 옵션 $format=json을 처리할 수 있습니다. $format=atom 또는 다른 사용자 지정 형식도 처리하려면 이 샘플 프로젝트를 추가로 사용자 지정해야 합니다.
WCF Data Services 동작
다음 WCF Data Services 동작은 OData 프로토콜에 의해 명시적으로 정의되지 않습니다.
기본 정렬 동작
데이터 서비스에 전송되는 쿼리 요청에 $top 또는 $skip 시스템 쿼리 옵션이 포함되어 있고 $orderby 시스템 쿼리 옵션이 없는 경우 반환된 피드가 키 속성을 기준으로 오름차순으로 정렬됩니다. 그 이유는 결과의 올바른 페이징을 보장하기 위해 정렬이 필요하기 때문입니다. 이를 위해 데이터 서비스가 쿼리에 정렬 식을 추가합니다. 이 동작은 데이터 서비스에 서버 기반 페이징이 활성화된 경우에도 발생합니다. 자세한 내용은 데이터 서비스 구성(WCF Data Services)을 참조하십시오. 반환된 피드의 정렬을 제어하려면 쿼리 URI에 $orderby를 포함해야 합니다.