2009-03-12 2 views
8

구조화 된 데이터에 대한 XML 피드를 디자인 할 때 우수 사례는 무엇이며 반 패턴이 무엇입니까?설명이 새롭게 개선되었습니다. 기존 DTD/스키마가없는 경우 구조화 된 데이터에 대한 XML 피드 설계 모범 사례

XML 구조와 콘텐츠 및/또는 전송 메커니즘에 대한 답변을 원합니다. 현재의 기술로

는 FTP/SFTP 좋은 기술

전송 메커니즘은 무엇입니까? 해결책으로 가장 적합한 경우가 있습니까?

일반적으로 나는 HTTP 풀 피드를 선호하지만 HTTP를 사용하는 약점은 무엇입니까?

장단점으로 고려해야하는 다른 피드 메커니즘은 무엇입니까?

XML 구조

있는 더 적합 기존의 DTD/스키마가없는가 어떤 방식이 좋은 XML 디자인을 마련하기 위해 따라 할 수있는 콘텐츠?

두 가지 반 패턴이 이미 내 대답은 아래에 부여했습니다.

하지만 피드를 디자인 할 때 무엇을해야합니까? 관계형 데이터 (특히 다 대다 관계)가 XML 등으로 전달되어야하는 관계에 대한 태그와 속성에 대해 듣고 싶습니다.

참고 : 나는이 질문을 완전히 다시 작성했습니다. 그 현상금은 많은 사랑을 얻지 못했다고 제안했다. (이전 버전은보고자하는 경우 편집 내역입니다.이 버전은 이미 제공된 답변과 관련이 있어야합니다)

답변

4

좋은 사료는 그런 식으로 당신이 프로그래밍 방식을 확인할 수 있습니다 당신이 그것을이 변경 때 알고 있기 때문에,) 스키마를

1을 가지고 - 그것은 아래로

2)를 알려줍니다 가지 인자를 많이 저장

3) 지속적으로 작동

4))을 시작, 일시 중지,

5 정상적으로 되감기, 정지 처리 테스트 서비스 일을 가지고 것인가 완전히) 기존의 모든 공급 기능

6

을 행사

가 현실적으로 나는 단지 1 때로는이 전달 피드와 함께 작업 한 모래 상자 개발을위한 새로운 기능 서비스를 가지고 있지만, 우리는 꿈을 할 수 있습니다.

2

DTD/스키마가 없으면 피드가 코드까지 유효한지 알 수 없습니다 문제가 발생했습니다. 그래서 필자에게 스키마는 XML 소비자와 제작자 모두에게 매우 중요합니다.

엘리먼트를 정의하고, 엘리먼트를 정의하는 등의 간단한 스키마조차도 유용합니다. 필요에 따라 제한이나 열거가있는 상세한 스키마가 더 좋습니다. 필자가 가지고있는 XML을 생성 할 때 발생하는 오류의 양을 최소화 할 수 있습니다. 그렇지 않으면 필자가 보낸 파일 전체를 검증하고 필요에 따라 비 호환 파일을 거부 할 수 있습니다. 이것은 입력 검증을 수행하기위한 깔끔하고 표준적인 방법 일뿐입니다.

0

현재 개인용 버그 베어는 시간대 정보가없는 타임 스탬프입니다. 전 세계의 피드를 다루는 경우 시간대가없는 시간은 의미가 없습니다.

편집 : 인코딩 속성을 포함하지 않거나 피드를 포함하지만 피드를 존중하지 않는 피드입니다.

+0

타임 스탬프에 대한 일반적인 권장 사항 : 항상 UTC를 사용하십시오. –

1

좋은 질문이지만 스키마가 좋지 않은 것보다 스키마가 얼마나 나아질 지 모르겠다.

나는 깨진 스키마를 제공하거나 제공하지 못했던 피드를 소비해야했으며 현실적으로는 네임 스페이스가없는 복제본으로 변환 할 수있었습니다. 이는 실행 가능하지만 지옥처럼 위험합니다.

I18N 및 특히 숫자 형식 및 날짜 스탬프는 심각한 문제입니다. 물론 베스트 프랙티스는 문서에서 형식을 선언하고 UTC 시간을 기본값으로 설정하는 것이 좋습니다.

내가 제안 할 수있는 유일한 다른 우수 사례는 상호 작용할 필요가있는 여러 피드를 사용하는 것이 그들의 용어로 시도하지 말고 대신 표준 개체로 deserialise하는 것입니다. 표준 내부 스키마로 변환 할 수 있습니다.

1

실제 요구 사항을 모르는 상태에서 전송 메커니즘이나 스타일을 권장하기가 어렵습니다. 예를 들어, 끌어 오기 기반 신디케이션을 수행하는 경우 HTTP는 캐싱을 지원하는 기능을 제공 할 수 있습니다. XMPP could be used과 같은 푸시 기반 또는 게시/구독 프로토콜을 사용하는 경우

피드 자체에 대해서는 Atom (또는 원하는 경우 RSS 변형)과 같은 공개 사양을 따르는 것이 좋습니다. Atom은 콘텐츠 및 날짜 형식 인코딩과 같은 언급 한 항목 중 일부를 통합합니다 (대부분의 경우 UTC를 사용하는 것이 가장 쉽습니다. 그런 다음 사용자의 현지 시간으로 변환하여 표시합니다). 표준 형식을 고수하면 해당 사양을 지원하는 피드 파서도 사용할 수 있습니다.

Atom과 RSS는 필요한 요소와 속성을 추가하기 위해 고유 한 XML 네임 스페이스를 정의 할 수 있도록 충분히 유연합니다. 생산 된 데이터가 피드/입력 데이터 모델에 매핑되지 않으면 어쩌면 당신에게 가장 적합하지 않을 수도 있습니다.

XML을 사용하는 경우 상위/하위 관계 (하위에만 1 개의 상위가 있음)는 상위/하위 요소로 쉽게 모델링 될 수 있습니다. 하위 요소가 여러 개인 경우 참조 및 특성을 사용하여 요소를 연결할 수 있습니다.

+0

일반적으로 합의 된 표준이없는 구조화 된 데이터를 제공해야하지만 말입니다. 그래서 내가 뭔가를 놓치지 않으면 ATOM/RSS가 충분하다고 생각하지 않습니다. 예 : 테니스 점수. 그런 것들을위한 SportML DTD가 있지만 대단히 장황하게 보입니다. – DanSingerman

+0

데이터를 소비하는 사람은 누구입니까? 그들은 Google Reader와 같은 것을 통해 다른 컴퓨터 화 된 서비스 또는 사람입니까? 공급 업체 인 경우 데이터를 제공하는 데 사용되는 표준을 정의 할 수 있습니까? 당신이 이끌고 (자신을 정의하는) 선택하거나 (스포츠 ML을 사용하는) 선택할 필요가있는 것 같습니다. –

0

나는 MediaRSS이 꽤 좋은 피드 스키마라고 생각한다. 그 이유는 다음과 같습니다.

  • 거의 모든 유형의 콘텐츠를 포함 할만큼 유연합니다.
  • 피드에서 미디어 그룹을 정의 할 수 있습니다 (예 : 이미지의 해상도가 여러 개인 경우 또는 여러 형식 인 경우).
  • 모든 유형의 미디어에 공통된 모든 기본 메타 데이터를 거의 정의하지만 모든 것을 요구하지는 않습니다. 나는 그것이 표현할 수없는 사료에 넣고 싶었던 어떤 매체에도 뛰어 들지 못했습니다.

주어진 미디어의 플레이어에게 전달되어야하는 임의의 매개 변수에 대한 태그가 아니라는 점을 한 가지 분명한 사실로 생각합니다. 피드는 플레이어에 대해 알 필요가 없습니다. 하지만 때로는 Flash Player에 params를 전달해야합니다.

0

글쎄, 솔직히 "모범 사례"는 보편적이지 않으므로 모든 대답은 해결되는 특정 문제에만 적용될 수 있습니다.

그러나 제 경험상 일반적인 XML 및 프로토콜 디자인 요소 목록은 다음과 같습니다.

  • 신뢰성 때문에 가능한 한 FTP/SFTP를 피하십시오. 특히 SFTP에서는 보편적 인 구현이 아닙니다. 또한 대부분의 방화벽은 포트 80을 허용하지만 FTP/SFTP의 경우 차단 된 포트를 사용할 수 있습니다.
  • 버전 또는 날짜가있는 네임 스페이스가있는 스키마를 구현합니다. 예 : http://yourcompany.com/xml/myfeed/2009/03. 이는 스키마가 개정 된시기에 대한 정보를 전달하고 클라이언트에 유용한 버전 번호를 나타냅니다.
  • 피드가 공개 된 경우 데이터에 다양한 RDF 태그를 구현하는 것이 좋습니다. 그러면 데이터가 시맨틱 웹의 일부가됩니다.
  • 콘텐츠가 지원하는 경우 RSS 또는 Atom을 사용하십시오. 이미 많은 사람들이 해당 형식을 이미 이해하고 있기 때문에 유용성이 크게 높아집니다.
관련 문제