2013-05-14 1 views
0

WCF 데이터 서비스를 만들고 모든 것이 작동하지만 XML이 필요한 형식으로되어 있지 않아 추가 구성 요소를 모두 제거하는 방법을 찾지 못하는 것 같습니다. 내가 가지고있는 것은 : 내가 원하는 것은WCF Data Service XML 사용자 지정

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<entry xml:base="http://172.1.2.2/Database/DatabaseTables.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom"> 
<id>http://172.1.2.2/Database/DatabaseTables.svc/Device('999')</id> 
<title type="text"></title> 
<updated>2013-05-14T18:17:10Z</updated> 
<author> 
    <name /> 
</author> 
<link rel="edit" title="Device" href="Device('999')" /> 
<category term="Model.Device" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> 
<content type="application/xml"> 
    <m:properties> 
    <d:Device_Code>999</d:Device_Code> 
    <d:Short_name>TC2</d:Short_name> 
    </m:properties> 
</content> 
</entry> 

:

<Device> 
    <Device_Code>999</Device_Code> 
    <Short_name>TC2</Short_name> 
</Device> 

나는 이미 데이터 계약에 이름 속성을 추가 한하지만 아무것도 변경하지 않았다.

답변

0

WCF 데이터 서비스는 OData을 생성합니다.이 서비스는 RESTful 서비스의 공통적 인 특징에 따라 구축 된 균일 한 프로토콜입니다. OData를 사용하면 서비스를 사용하는 사람들이 페이로드 형식, URI 규칙 및 HTTP 메서드 의미를 이해하기 위해 사용자 지정 API의 서버 별 세부 정보를 배울 필요가 없습니다. OData를 이미 알고 있고 서비스가 OData를 생성하면 새로운 내용을 배우거나 많은 사용자 정의 코드를 작성할 필요가 없습니다.

반송하려는 xml이 OData 페이로드 형식 중 하나로 포맷되지 않았습니다. 이는 문제가 아니지만 WCF Data Services 클라이언트 (Visual Studio에서 "서비스 참조 추가"), PowerPivot 또는 기타 도구 및 클라이언트 라이브러리를 사용할 수 없음을 알고 있어야합니다 OData를 이해합니다. 또한 OData xml 형식은 AtomPub 위에 구축되어 대부분의 브라우저 (및 다른 Atom 판독기)가 지능적인 방식으로 데이터를 표시 할 수 있습니다.

자신 만의 형식을 사용하여 맞춤형 REST API를 만들려면 다른 라이브러리와 프레임 워크가 더 적합 할 수 있습니다. ASP.NET Web API이 좋은 선택 일 수 있습니다. 나는 이것에 대해 잘 모르겠다. 그러나 Web API는 사용자 정의 형식을 생성하는 동안 표준 OData URI 규칙 ($ filter, $ select 등)을 사용할 수도 있다고 생각한다.

요약하면 : OData는 일반적인 표준을 고수하고 잘 테스트 된 기존 라이브러리를 사용하여 서비스를 사용하려는 경우에 유용합니다. WCF Data Services는 OData의 매우 견고하고 안정적인 구현입니다. 그러나 OData를 사용하지 않는 경우 (또는 일부만 사용하는 경우) WCF Data Services는 사용자가 원하는 것일 수는 없습니다.

+0

따라서 WCF에서 페이로드 자체의 형식을 제어 할 수있는 방법이 없습니다. 내가 원하는 것은 위의 형식이므로 다른 쪽 끝의 클래스에 쉽게 자동로드 할 수 있습니다. 현재 XML로 인해 악몽이 치닫고 있습니다. 이 동작을 무시하고 필요한 출력을 만들려면 몇 가지 방법이 있어야합니다. 비주얼 스튜디오에서이를 참조하거나 브라우저에서 표시 할 필요가 없습니다. 여분의 데이터없이 정확하게 출력을 포맷 할 수 있어야합니다. – Beowulf4756

+0

WCF 데이터 서비스에서이 작업을 수행하는 간단한 방법을 알지 못합니다 (WCF 만 있으면 WCF에 대해 잘 알지 못합니다). 왜 WCF 데이터 서비스를 사용하는지 질문 할 수 있습니까? –