2011-07-29 4 views
5

WCF 서비스 응용 프로그램에서 oData를 사용할 수 있습니까? WCF 데이터 서비스는 사용할 수 있습니까?WCF 서비스에서 oData로 데이터 노출

누군가가 oData에 더 많은 빛을 줄 수 있다면 좋을 것입니다. 이 주제에 대해 인터넷 검색을 수행했지만 "wcf odata"를 검색 할 때마다 WCF 데이터 서비스에 대한 정보를 얻습니다.

도움이나 링크를 제공해 주시면 감사하겠습니다.

답변

12

WCF 데이터 서비스은 Microsoft에서 일반적인 OData 프로토콜을 구현 한 것입니다. 따라서 WCF 데이터 서비스 만 OData를 지원/구현합니다. "정상적인"WCF 서비스는 이 아니며이 아니며 이 아니라이 될 수 있습니다.

왜 OBI를 사용해야하는지 또는 WCF 데이터 서비스를 사용하지 않겠 느냐고 생각하는 이유가있을 수 있습니다. 해당 설정으로 인해 발생한 문제점/문제점은 무엇입니까? WHY "일반적인"WCF 서비스 만 사용 하시겠습니까 ??

업데이트 : 좋아요, 그래서 당신은 다른 패션과 다른 방법으로 데이터를 노출하는 서비스를 원할 것입니다. 당신이 할 수있는 일은 SOAP 끝점과 webHttpBinding REST 끝점을 노출하는 정규 WCF 서비스를 만드는 것입니다. 이것은 작동 할 것이지만, "일반적인"WCF 서비스이고 매개 변수를 취하고 데이터 구조를 반환하는 메서드가 있습니다. 이것은 이 아니고 WCF Data Service (OData)입니다.

OData는 "내 데이터 콜렉션입니다. 주변을 둘러 볼 수 있습니다"라고 말하면서 데이터 모델을 REST를 사용하여 외부에 노출하는 방법에 대해 자세히 설명합니다. 이것은 SOAP과 섞이지 않으며 일치하지 않습니다. 이는 훨씬 더 프로 시저 지향적입니다. LoadCustomer, SaveInvoice 등이있다.

동시에 SOAP 및 REST 끝점을 모두 표시하는 프로 시저 지향 WCF 서비스를 사용하는 것이 절대적으로 가능하지만 "노출이 리소스"종류의 접근 방식을 어떻게 혼합하여 사용할 수 있는지 실제로 알 수는 없습니다 SOAP 바인딩을 사용하는 WCF Data Services/OData 용 -이 방법은 효과가 없습니다.

WCF 데이터 서비스 (OData)의 데이터 모델을 노출해야하는 경우 끝에 동일한 데이터를 기반으로 할 수있는 SOAP 클라이언트에 대한 두 번째로 상당히 다른 일반적인 WCF 서비스를 작성해야합니다 (예를 들어 같은 데이터베이스에 액세스하십시오.)하지만 "얼굴"은 전혀 달라 보입니다.

+0

사실 우리는 서로 다른 형식으로 데이터를 노출하는 서비스를 개발하려고합니다. 그래서 우리는 하나의면에서 모든 것을 가질 수 있다면 생각하고있었습니다. 그것의 요구 사항에 맞는 일반 wcf 서비스를 사용하고 싶지 않습니다. – genericuser

+0

데이터는 oData를 통해 노출되어야하며 안심해야합니다. 클라이언트는 SOAP을 원할 수도 있습니다. wcf로 oData에 대한 나의 개념을 명확히 할 수있는 정보가 있다면, 그것으로 가능할 수있는 것은 좋을 것입니다. – genericuser

+0

@ Priya10 : 내 대답을 업데이트했습니다. –

6

WCF WebApi (NuGet Package)이라는 Microsoft의 새로운 (ish) 프로젝트가있어 RESTful WCF를 단순화합니다. REST의 "Representation"부분을 마음에 새겨서 콘텐츠 협상 (또는 선택적으로 사용자가 원하는 모든 컨벤션)을 기반으로 많은 표현 (JSON, XML, oData, PNG 등)으로 데이터를 노출 할 수 있습니다. 서비스 계약 운영 프레임 워크에 현재 구워진 것은 .AsQueryable() 콜렉션을 반환함으로써 oData GET queries을 지원할 수있는 능력입니다.

귀하의 질문에 맞춰서 이것이 순수한 WCF/oData 솔루션은 아니지만 귀하의 특정 요구 사항에 맞춰 프로젝트를 언급 할 것입니다. 현재 Go-Live 라이센스는이 코드의 "미리보기"상태처럼 금지되어 있습니다. 그러나 그렇지 않은 경우, 이것이 당신을위한 해결책 일 수 있습니다.

* 업데이트 *이 프로젝트는 ASP.NET으로 롤인되었으며 (일반적으로 ASP.NET MVC와 함께) 더 이상 WCF 팀에 속하지 않습니다. 새 제품은 ASP.NET WebAPI입니다.

관련 문제