2011-01-06 5 views
0

Visual Studio 2010에서 웹 서비스를 만들고 있습니다. 강하게 입력되는 DataSet을 반환하는 경우 다른 플랫폼의 누군가가이 끝점에 액세스하여 필요에 따라 XML을 사용할 수 있습니까? 그렇지 않으면 가비지처럼 보일까요?웹 서비스에서 반환 된 DataSets는 플랫폼 간 상호 운용성이 있습니까?

내 대안은 무엇입니까?

편집 : DataTable을 반환하면 어떻게됩니까? 어떤 이유로 든 DataSet을 사용하여 권장되는 microsoft를 읽었습니다.

답변

0

예, 플랫폼 간 코더는 여전히 XML을 읽을 수 있지만 최선의 방법은 아닙니다. Scott Hanselman says : 웹 서비스에서

반환 된 데이터 집합은 사탄의 스폰이며, 2 열과 두 사람과 함께, 모든 즉, 1 개 테이블이 포함 된 간단한 데이터 집합 생성되는 XML은 세계 여기

에서 정말 악한 나타냅니다 레코드 :

<?xml version="1.0" standalone="yes"?> 
<NewDataSet> 
    <Table1> 
    <Column1>hello</Column1> 
    <Column2>world</Column2> 
    </Table1> 
    <Table1> 
    <Column1>hello</Column1> 
    <Column2>greg</Column2> 
    </Table1> 
</NewDataSet> 

크로스 플랫폼 코더는 XML을 구문 분석해야하므로 특히 데이터가 복잡한 경우 매우 복잡 할 수 있습니다.

데이터 세트는 실제로 데이터베이스를 나타냅니다. 잘 설계된 계층화 된 응용 프로그램에서는 데이터 액세스 레이어에서만 사용해야합니다. 그런 다음 데이터베이스에 대해 전혀 모르는 강력한 형식의 도메인/모델 객체로 변형되어야합니다.

훨씬 더 좋은 옵션은 맞춤 개체를 사용하는 것입니다. Ryan Farleys blog에서이를 수행하는 방법에 대한 예제가 있습니다. 사용자 정의 객체를 사용

주요 장점은 다음과 같습니다
1. 그들은 완전히 상호 운용된다.
2. 강력한 형식입니다.
3. 소비자는 XML 구문 분석/비 직렬화에 대한 책임이 없습니다.
4. 데이터 저장과 소비자 간의 관심사 분리.

사이드 노트 :
나는 웹 서비스가 시대에 뒤떨어져 있음을 지적해야합니다. 새로운 웹 서비스를 만들려면 WCF를 사용해야합니다. 그것은 약간의 학습을 필요로하지만 훨씬 더 풍부하고 유연한 플랫폼입니다.

+0

그 XML은 내가 기대하는 것처럼 보입니다. 사용자 지정 개체가 의미하는 바를 설명 할 수 있습니까? (그리고 이점은 무엇입니까?) – Jan

관련 문제