2011-09-30 2 views
3

여러 소스의 데이터를 반환하는 OData 서비스를 만들고 싶습니다. 이러한 이유로 WCF 데이터 서비스를 기본 제공 업체와 함께 사용할 수 없으며 실제로 데이터 모델을보다 효율적으로 제어해야합니다.어느 것이 더 쉽고, 사용자 지정 OData uri 파서 또는 사용자 지정 IQueryable 공급자를 작성합니까?

MS 제품 스택을 고수하면 두 가지 옵션이 있습니다. WebGet이/WebInvoke의와

  1. 사용 WCF는 하나로, OData API를 모방하고, 내부적으로 쿼리 문자열 구문 분석 및 변환을 수행 할 수 있습니다. 예 : 우리의 데이터가 Sql 데이터베이스에있는 경우 우리는 $ filter 절을 SQL where 절로 변환하여 쿼리를 빌드해야합니다. 데이터 모델은 동적이고 ORM으로 채울 수있는 CLR 엔티티 클래스가 없으므로 여기서 어떠한 ORM도 사용할 수 없습니다.

  2. WCF 데이터 서비스를 사용자 지정 공급자와 함께 사용하는 경우 리소스 집합에 IQueryable을 전달해야하므로 Select * FROM Table을 수행하고 개체에 Linq를 사용하거나 자체 IQueryable 공급자를 구현해야합니다. OData에 필요한 표현식을 지원합니다. WCF 데이터 서비스도 IQuerable을 수용합니까?

구현하기 가장 쉬운 것은 어느 것입니까? 대부분 OData 스펙의 $ filter 기능 만 지원하기를 원합니다. $ expand 및 $ select는 나중에 제공 될 수 있습니다.

WCF 데이터 서비스를 포기한 것이 유감스럽게 보입니다. 데이터 소스에 IQueryable 공급자가있을 것으로 기대하지 않고 직접 Linq 쿼리로 변환 할 수있는 구문 분석 된 OData 쿼리를 제공 할 수 있다면 바람직합니다.

답변

5

자신 만의 데이터 컨텍스트 클래스를 작성할 수 있습니다. 더 많은 기능이 필요할수록 더 많은 노력이 필요합니다. WCF Data Services Toolkit이 도움이 될 수 있으며이 유용한 정보는 MIX의 OData Roadmap: Exposing Any Data Source as an OData service 프리젠 테이션에서 찾을 수 있습니다.

그래서 사용자 지정 IQueryable 공급자를 작성하는 것이 더 쉽고 빠를 것이라고 말합니다.

관련 문제