태그 보관물: programming-practices

programming-practices

XML이 너무 나쁘면… 왜 그렇게 많은 사람들이 그것을 사용합니까? [닫은] 나는 XML의 목적을

나는 XML의 목적을 이해하지만 사람들이 BAD가 얼마나 나쁜지에 대해 항상 불평하는 것을 듣는가? 나는 무엇이 그렇게 나쁜지 이해하지 못합니까? 나는 보통“부풀어 오른”과“느린”이라는 용어를 던졌다.

그러나 프로그래머로서, 주로 무엇을 사용합니까? 정말로 “나쁘다”고 생각하십니까? … 그렇다면 많은 사람들이 데이터를 전송하는 데 사용하기 때문에 …



답변

Xml은 낮은 수준에서 데이터 유효성 검사를 시행 할 수있는 기능을 갖춘 플랫폼 중립적이고 사람이 읽을 수있는 데이터 전송 프로토콜로 설계되었습니다. 이런 식으로 Xml을 사용하는 사람에게는 실제로 불만이있는 것 같습니다. 가장 간결한 와이어 형식입니까? 아니요. 그러나 더 나쁜 옵션이 있습니다. 사용자 정의 이진 형식을 읽는 것만 큼 빠릅니까? 아니요. 그러나 비즈니스 파트너는 사용중인 스택에서 읽을 수 있습니다.

그러나 문제는 인간, 특히 엔터프라이즈 아키텍트라고 알려진 품종은 악이며 선한 일을 취하여 악하게 만든다는 것입니다. Xml의 경우, 금세기 초 Xml은 모든 IT 문제의 보편적 망치로 간주되었습니다. 위원회별로 작은 디자인을 뿌려서 SOAP 및 oXML 과 같은 끔찍한 괴물이 생깁니다 . 어느 쪽도 적에게 소원해서는 안되며 친구 나 동료에게 신경 쓰지 마십시오.


답변

XML은 다양한 맛과 용도로 제공되는 도구 일뿐입니다. XML은 어떤면에서는 뛰어나고 다른 것은 빠릅니다. 문제 중 하나는 사람들이 불필요하게 네임 스페이스와 흩어져있는 쓰레기 (SOAP, 누구나?)가있는 “엔터프라이즈”XML을 본 것입니다. 인간을위한 XML 형식을 디자인하는 비결은 데이터에 압도적 인 영향을 미치지 않으면 서 데이터에 진정한 의미를 더하는 것입니다.

사람들이 문제를 제기하는 것 중 하나는 XML이 때로는 일부 문자 또는 누락 된 대괄호를 질식 시킨다는 것입니다. 그러나 그것의 단점과 단점도 있습니다. 단점은 반 유효 구문이 다른 경우를 다르게 해석 할 수있는 HTML과 같이 모호함이 없다는 것입니다.

단점은 작성하기가 더 어렵고 배우기가 더 어렵다는 것입니다. HTML이 XML만큼 엄격하다면 웹이 그렇게 빨리 커지지 않았을 것이라는 주장에 동의하지만, 오늘날에도 그렇게한다면 기쁠 것이라고 주장합니다. 🙂

또한 모든 것을 위해 그것을 사용하지 마십시오. 적절하게 적용 할 수있는 감각과 판단력이 있어야합니다. 당신이 가진 모든 것이 XML이라면, 당신은 항상 당신이 원하는 것을 멀리 XSLT 변환하는 경향이 있습니다. 🙂

나는 사람들이 형식과 상호 작용해야 할 때만 형식이 중요하다고 주장합니다. 무언가를 직렬화하여 다른 프로그램이 소비 할 수있는 곳으로 보내는 프로그램을 작성하는 경우, 가능한 한 효율적인 것처럼 보이는 것을 누가 신경 쓰겠습니까? 내가 걱정하는 모든 것에 바이너리 형식이나 토끼와 유니콘을 사용하십시오.

XML의 장점

  • YAML과 JSON이하지 않는 많은 경우를 다룹니다.
  • 다양한 플랫폼 및 언어 배열에서 XML을 구문 분석하고 유효성을 검사하는 데 유용한 도구가 있습니다.
  • XSLT와 같은 것을 통해 XML을 쉽고 강력하게 다른 형식으로 변환 할 수 있습니다.
  • 합리적인 XML 문서는 사람이 읽고 편집하기가 쉽습니다. JSON이 더 쉽다고 말하지 마십시오.
  • XML은 어느 정도 자체적으로 설명합니다. 즉, 대부분의 이진 형식과 달리 구조와 의미에 대한 정보를 직접 포함합니다.
  • 인코딩 처리
  • 크로스 플랫폼 사용이 더 쉬운 공백 불가지론
  • 형식이 올바르지 않으면 중단됩니다 (데이터가 구조적으로 올바른지 확인).
  • SGML이 아닙니다

단점

  • 말 수가 많은
  • 바이너리만큼 파싱하는 것은 빠르지 않습니다.
  • 제대로 구성되어 있지 않으면 중단됩니다 (응용 프로그램이 손상됨)

좋은 용도

  • 구성 파일
  • 데이터 교환 형식
  • 탄력적 인 파일 형식
  • 데이터베이스에 문서 저장

그렇게 잘 사용하지

  • 데이터 전송 형식
  • 객체 직렬화
  • 데이터베이스에 관계형 데이터 저장
  • 고성능 I / O 시나리오를위한 파일 형식

답변

Jeff Atwood는 XML에 대한 꽤 좋은 블로그 게시물을 가지고 있습니다.

가장 일반적인 용도는 다음과 같습니다.

  • 서로 대화하는 서비스. 예를 들어, 컨텐츠 관리 시스템을 사용하는 웹 사이트는 일부 데이터를 고객 관계 관리 시스템으로 보내야하며 이는 XML로 수행됩니다.

  • 구성 저장소. Web.config 및 app.config는 일반적인 예이지만 nAnt 스크립트는 일부 XML도 사용할 수 있습니다.

나는 그것이 최적이라고 생각하지 않지만 그것만으로도 내 마음이 나빠지지는 않습니다.


답변

두 가지 이유 :

  1. 거기에는 끔찍한 프로그래머가 많이 있습니다. XML은 좋지 않을 수도 있지만, 최소한 표면에서는 단순하고 나쁜 소프트웨어를 작성하기가 매우 쉽습니다. VB와 같은 일종.
  2. 이러한 결정을 내리는 많은 사람들이 프로그래머는 아니지만 “모두가 XML을 사용하고있다”는 말만 듣고 자신의 제품에서도 XML을 사용하기로 결정한 비즈니스 유형입니다.

답변

나는 보통“부풀어 오른”과“느린”이라는 용어를 던졌다.

가장 간결한 구문은 아니지만 분명히 가장 표현적인 구문입니다. 인간이 읽을 수 있습니까? 언어를 디자인하는 방법에 따라 다릅니다. 대부분의 사람들은 XML 언어를 디자인하지 않고 단지 객체를 XML로 직렬화합니다.

… 왜 그렇게 많은 사람들이 그것을 사용합니까?

유비쿼터스입니다. XQuery로 XML 데이터베이스를 쿼리하고 XSLT를 사용하여 XHTML 또는 Atom으로 결과를 변환하고 다른 웹 서비스에서 Atom 또는 기타 XML 형식을 가져오고 XForms를 사용하여 사용자로부터 XML을 가져오고 XMLSchema, Relax NG 또는 Schematron을 사용하여 XML을 확인하고 처리 할 수 ​​있습니다. XProc, XQuery 업데이트를 사용하여 데이터베이스에 다시 저장하십시오. 이러한 모든 도구는 XML을 이해하므로 다른 표현간에 매핑 할 필요가 없습니다.

XML은 직렬화 기술이 아니며 범용 정보 세트입니다.


답변

여기서는 다른 내부 표현을 가진 다른 공급 업체가 만든 다른 시스템 간의 데이터 교환에 사용합니다. 데이터를 앞뒤로 셔틀하기 위해 XML 변환 / 교환 시스템을 구축합니다. 그것은 잘 작동합니다.

XML은 본질적으로 나쁘지는 않지만 XML을 사용하여 “좋은”솔루션을 디자인하는 것은 쉽지 않다는 것을 인정합니다.


답변

“XML의 본질은 이것입니다. 해결하는 문제는 어렵지 않으며 문제를 잘 해결하지 못합니다.” -Phil Wadler, POPL 2003

내 개인적인 의견은 유효성 검사, 스키마, XSLT 및 나머지 추악한 것들에 신경 쓰지 않고 파일 크기를 작게 유지하는 한 (그렇지 않으면 구문 분석이 느려집니다) XML을 잘 사용할 수 있다는 것입니다 (예 : INI 파일을 사용하는 대신 응용 프로그램을 구성하기위한 것입니다).