문제

우리는 프로젝트를 위해 Microsoft SQL Server 2005의 XML 데이터 유형을 활용하고 있습니다. 팀의 일부 구성원과 저는 XSD를 사용해야한다고 생각하지만 다른 캠프의 구성원은 XMLS를 임시로 유지하고 "유형"으로 취급해서는 안된다고 생각합니다.

XMLS는 유지 보수 악몽 인 여러 텍스트 구성 파일에 구조와 중심성을 가져 오기위한 노력입니다.

.NET 3.5/C#을 사용하고 있으며 테이블은 적절한 데이터 유형으로 설계되었습니다. 저의 주장은 우리가 XML이기 때문에 왜 그 접근법을 깨뜨리는 지에 대해 우리의 생각에서 이미 "유형 지향적"이라는 것입니다. 원래 문제가 발생한 텍스트 파일이있는 유형이 없기 때문입니다. "유형"접근 방식을 사용하지 않으면 동일한 문제가 발생합니다.

XML 스키마의 이점에 대한 이해가 잘못 될 수 있습니다. 그렇다면 XML 스키마 사용의 장점과 단점은 무엇입니까?

도움이 되었습니까?

해결책

불행히도 XSD (W3C)의 저작 기관조차도 XSD가 꽤 나쁜 기술이라는 것을 이해합니다. 즉, 의도가 반드시 나쁘지는 않습니다. C#의 주요 이점 중 하나는 정적으로 입력된다는 것입니다. XML 문서를 정적으로 입력하면 동일한 이점이 있습니다. 여기에서 가장 좋은 점은 XML 직렬화 속성을 사용하여 스키마를 생성하기 위해 클래스를 리버스 엔지니어링하는 것입니다. 이 C#을 수행하면 XML 파일에 대한 사용자 정의 데이터 리더가 생성되어 성능이 크게 향상됩니다.

XML의 가장 큰 비용 중 하나는 문자열 구문 분석이어야한다는 것입니다. XML 파일 (예 : 구조)에 대해 더 많은 가정을 할수록 성능이 향상 될 가능성이 높습니다.

따라서 궁극적으로 많은 것들과 마찬가지로 개발자 시간의 비용을 정당화하기 위해 성능 혜택이 충분하다는 것입니다. 또는 정적으로 입력 된 시스템을 사용하여 XSD 작성 비용을 정당화하려는 충분한 욕구가 있습니까?

궁극적으로 프로젝트 요구는해야 할 일을 지시하지만 정적 유형과 성능은 고려해야 할 주요 이점입니다.

다른 팁

XSD없이 XML의 저장소를 유지하는 것은 모든 유형이 Varchar (N)로 선언되는 데이터베이스를 갖는 것과 비슷합니다. 당신은 어떤 종류의 입력을 얻는 지 신경 쓰지 않고 입력을 원합니다.

XSDS는 귀하의 XML에 예상되는 입력 유형이 있다고 보증합니다. 그들은 당신이 찾고있는 바로 당신의 모델에 구조를 제공합니다.

글쎄, 다른 게시물과 질문에서 말했듯이 XSD는 XML의 올바른 위치에 올바른 유형을 사용하고 구조를 변경하기 전에 두 번 생각해야합니다.

그러나 XSD는 내가 그렇게 말할 수 있다면 실제로 비판적입니다. 그리고 때로는 조건부 내용으로 복잡한 구조를 설명하는 경우가 종종 있습니다.

바라건대, XSD가 XML을 검증하는 유일한 방법이 아니며 훨씬 더 간단한 접근 방식은 사용하는 것입니다. Relaxng, 특히 XSD로 상상할 수있는 것보다 더 읽기 쉬운 소형 구문.

Schemas를 사용하는 데있어 가장 큰 장점 중 하나는 프로젝트의 모든 사람이 XML 문서를 어떻게 제시 해야하는지에 대해 동의하는 데 도움이된다는 것입니다. 또한 Schemas를 사용하면 XML 파서에서 유효성 검사를 활성화하여 일부 코드가 잘못된 XML이 제공되므로 일부 코드가 실패 할 때 쉽게 알 수 있습니다.

단점으로, 스키마를 유지하는 것은 고통 일 수 있으며 프로젝트에 따라 노력할 가치가 없을 수도 있습니다.

스키마가없는 경우 모든 유효성 검사를 직접 상환하게됩니다 (또는 전혀 검증되지 않고 유효하지 않은 입력에 충돌하지 않음). XSD Parser/Validators는 귀하를 위해 모든 작업을 수행하며 해당 도메인의 전문가에 의해 최적화되고 디버깅됩니다. 왜 그 모든 일을 스스로로 다시 만들겠습니까?

XSD는 유일하게 사용 가능한 XML 스키마가 아닙니다. 대신 http://relaxng.org/를 사용하십시오. Relaxng을 사용하면 XSD와 같이 다른 데이터 "언어"를 학습 해야하는 대신 XML로 스키마를 표현할 수 있습니다.

XML 개발의 중요한 이유는 더 많은 소스에서 데이터를 사용할 수 있고 더 많은 방법으로 데이터를 여러 컴퓨터 시스템간에 교환하는 데 널리 받아 들여지는 표준이 되었기 때문입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top