나는 XML의 목적을 이해하지만 사람들이 BAD가 얼마나 나쁜지에 대해 항상 불평하는 것을 듣는가? 나는 무엇이 그렇게 나쁜지 이해하지 못합니까? 나는 보통“부풀어 오른”과“느린”이라는 용어를 던졌다.
그러나 프로그래머로서, 주로 무엇을 사용합니까? 정말로 "나쁘다"고 생각하십니까? ... 그렇다면 많은 사람들이 데이터를 전송하는 데 사용하기 때문에 ...
나는 XML의 목적을 이해하지만 사람들이 BAD가 얼마나 나쁜지에 대해 항상 불평하는 것을 듣는가? 나는 무엇이 그렇게 나쁜지 이해하지 못합니까? 나는 보통“부풀어 오른”과“느린”이라는 용어를 던졌다.
그러나 프로그래머로서, 주로 무엇을 사용합니까? 정말로 "나쁘다"고 생각하십니까? ... 그렇다면 많은 사람들이 데이터를 전송하는 데 사용하기 때문에 ...
답변:
Xml은 낮은 수준에서 데이터 유효성 검사를 시행 할 수있는 기능을 갖춘 플랫폼 중립적이고 사람이 읽을 수있는 데이터 전송 프로토콜로 설계되었습니다. 이런 식으로 Xml을 사용하는 사람에게는 실제로 불만이있는 것 같습니다. 가장 간결한 와이어 형식입니까? 아니요. 그러나 더 나쁜 옵션이 있습니다. 사용자 정의 이진 형식을 읽는 것만 큼 빠릅니까? 아니요. 그러나 비즈니스 파트너는 사용중인 스택에서 읽을 수 있습니다.
그러나 문제는 인간, 특히 엔터프라이즈 아키텍트라고 알려진 품종은 악이며 선한 일을 취하여 악하게 만든다는 것입니다. Xml의 경우, 금세기 초 Xml은 모든 IT 문제의 보편적 망치로 간주되었습니다. 위원회별로 작은 디자인을 뿌려서 SOAP 및 oXML 과 같은 끔찍한 괴물이 생깁니다 . 어느 쪽도 적에게 소원해서는 안되며 친구 나 동료에게 신경 쓰지 마십시오.
XML은 다양한 맛과 용도로 제공되는 도구 일뿐입니다. XML은 어떤면에서는 뛰어나고 다른 것은 빠릅니다. 문제 중 하나는 사람들이 불필요하게 네임 스페이스와 흩어져있는 쓰레기 (SOAP, 누구나?)가있는 "엔터프라이즈"XML을 본 것입니다. 인간을위한 XML 형식을 디자인하는 비결은 데이터에 압도적 인 영향을 미치지 않으면 서 데이터에 진정한 의미를 더하는 것입니다.
사람들이 문제를 제기하는 것 중 하나는 XML이 때로는 일부 문자 또는 누락 된 대괄호를 질식 시킨다는 것입니다. 그러나 그것의 단점과 단점도 있습니다. 단점은 반 유효 구문이 다른 경우를 다르게 해석 할 수있는 HTML과 같이 모호함이 없다는 것입니다.
단점은 작성하기가 더 어렵고 배우기가 더 어렵다는 것입니다. HTML이 XML만큼 엄격하다면 웹이 그렇게 빨리 커지지 않았을 것이라는 주장에 동의하지만, 오늘날에도 그렇게한다면 기쁠 것이라고 주장합니다. :)
또한 모든 것을 위해 그것을 사용하지 마십시오. 적절하게 적용 할 수있는 감각과 판단력이 있어야합니다. 당신이 가진 모든 것이 XML이라면, 당신은 항상 당신이 원하는 것을 멀리 XSLT 변환하는 경향이 있습니다. :)
나는 사람들이 형식과 상호 작용해야 할 때만 형식이 중요하다고 주장합니다. 무언가를 직렬화하여 다른 프로그램이 소비 할 수있는 곳으로 보내는 프로그램을 작성하는 경우, 가능한 한 효율적인 것처럼 보이는 것을 누가 신경 쓰겠습니까? 내가 걱정하는 모든 것에 바이너리 형식이나 토끼와 유니콘을 사용하십시오.
두 가지 이유 :
<Problem:Worsening> <Problem:TimeDescription>Now</Problem:TimeDescription> <Problem:Posessive>they have</Problem:Posessive> <Problem:Quantity>many, many</Problem:Quantity> <Problem:WorseningDescription>more problems</Problem:WorseningDescription> </ProblemWorsening>
나는 보통“부풀어 오른”과“느린”이라는 용어를 던졌다.
가장 간결한 구문은 아니지만 분명히 가장 표현적인 구문입니다. 인간이 읽을 수 있습니까? 언어를 디자인하는 방법에 따라 다릅니다. 대부분의 사람들은 XML 언어를 디자인하지 않고 단지 객체를 XML로 직렬화합니다.
… 왜 그렇게 많은 사람들이 그것을 사용합니까?
유비쿼터스입니다. XQuery로 XML 데이터베이스를 쿼리하고 XSLT를 사용하여 XHTML 또는 Atom으로 결과를 변환하고 다른 웹 서비스에서 Atom 또는 기타 XML 형식을 가져오고 XForms를 사용하여 사용자로부터 XML을 가져오고 XMLSchema, Relax NG 또는 Schematron을 사용하여 XML을 확인하고 처리 할 수 있습니다. XProc, XQuery 업데이트를 사용하여 데이터베이스에 다시 저장하십시오. 이러한 모든 도구는 XML을 이해하므로 다른 표현간에 매핑 할 필요가 없습니다.
XML은 직렬화 기술이 아니며 범용 정보 세트입니다.
여기서는 다른 내부 표현을 가진 다른 공급 업체가 만든 다른 시스템 간의 데이터 교환에 사용합니다. 데이터를 앞뒤로 셔틀하기 위해 XML 변환 / 교환 시스템을 구축합니다. 그것은 잘 작동합니다.
XML은 본질적으로 나쁘지는 않지만 XML을 사용하여 "좋은"솔루션을 디자인하는 것은 쉽지 않다는 것을 인정합니다.
그 이유는 다음과 같습니다.
여러 이기종 시스템이 통신하는 데 사용할 수 있는 표준 "인터페이스" 입니다. "인간"판독 가능 ( 종종 , 5MB XML을 쳐다보십시오)
그 이유는 다음과 같습니다.
부풀어 오르고 더 큰 크기 = 더 많은 대역폭 = 더 많은 $$
다른 이유가 있습니다. 모두가 다른 그립을 가지고 있습니다 ...
<advanceAcceptanceIndicator>Y</advanceAcceptanceIndicator>
비율 데이터 / 마크 업이 너무 낮습니다. 나는 이것을 "부풀어"라고 부릅니다. 예를 들어 JSon은 절반 만 부풀어 올 것 advanceAcceptanceIndicator: "Y"
입니다. 태그 사이의 텍스트 가 유효 하다는 사실도 있기 때문에 Xml을 읽을 때이 cruft로 무엇을 해야할지 결정해야 \n\t\t\t
하며 솔루션은 일반적으로이를 처음부터 관심이 없었기 때문에 무시해야합니다.
value
입니다. 태그.
다른 기술과 마찬가지로 사용 가능한 도구와 라이브러리가 많이 있습니다.
XML이 마음에 들지 않습니다. 특히 사람들이 읽을 수 있다고 말하면 사람들이 읽을 수 있다고 말하면 농담이나 생각하거나 XML을 속성에 포함하려고 시도했을 때 XML을 읽지 않았습니다. 읽을 수 없습니다. 또한 중복 엔드 태그와 자유 텍스트와 데이터를 혼합하는 기능으로 인해 낭비되는 공간이 얼마나 놀라운 지 ...
그러나:
또한 대부분의 경우 우선 순위라는 이점이 있습니다. Xml에서 이미 웹 서비스를 제공하고 있고 새로운 서비스를 요청하는 경우 Xml에서 수행 될 것입니다.
data Person = Person { surname :: String, firstName :: String, age :: Int }
볼 Person "Doe" "John" 42
수 있습니다. 읽을 수 있고 많은 균열을 피하지만 쉼표로 구분됩니다.
XML은 사람이 관리해야하는 파일에는 적합하지 않습니다. 마크 업과 내용을 시각적으로 구분하지 않으므로 읽기가 어렵습니다. 특수 목적 편집기없이 올바르게 작성하는 것은 지루합니다. XML 문서의 오류는 치명적입니다. XML 문서는 부분적으로 처리 할 수 없습니다. XML 파일이 유효하지 않은 경우 결과 오류 메시지가 도움이되지 않는 경우가 많습니다.
사람이 유지 관리 해야하는 파일의 경우 JSON, YAML 또는 소스 코드를 일부 해석 언어 (Python, Ruby, Groovy 등)로 사용하는 것이 좋습니다. 레거시 코드에 대한 XML 구성을 생성하는 좋은 방법은 Groovy MarkupBuilder를 사용하는 것입니다. 또 다른 좋은 선택은 도메인 별 언어를 만드는 것입니다. 이것은 Ruby, Groovy 및 기타 여러 언어로 수행하기가 매우 쉽습니다.