뒤늦은 견해에서 XML을 기반으로 XAML을 기반으로하는 것은 실수입니까 아니면 좋은 접근입니까?


16

XAML은 기본적으로 XML의 하위 집합입니다. XAML을 XML에 기반을 둔 주요 이점 중 하나는 기존 도구로 구문 분석 할 수 있다는 것입니다. (구문 적으로는 사소하지 않은) 속성 값은 텍스트 형식으로 유지되며 추가 구문 분석이 필요하지만, 상당 부분이 가능합니다.

XML 파생 언어로 GUI를 설명하는 두 가지 주요 대안이 있습니다. 하나는 WinForms의 기능을 수행하고 실제 코드로 설명하는 것입니다. 완전히 유리한 것은 아니지만 ( XAML 을이 접근법과 비교 하는 질문) , 이것에는 많은 문제가 있습니다 . 다른 주요 대안은 당면 과제에 맞게 완전히 새로운 구문 을 설계하는 것 입니다. 이를 일반적으로 도메인 별 언어라고 합니다.

따라서 후손과 미래 세대를위한 교훈으로 XAML을 XML에 기반을 두는 것이 좋은 생각입니까, 아니면 맞춤형으로 설계된 도메인 별 언어로 더 좋았습니까? 더 나은 UI 프레임 워크를 설계하는 경우 XML 또는 사용자 정의 DSL을 선택해야합니까?

현상 유지, 특히 커뮤니티에서 선호하는 현상에 대해 긍정적으로 생각하기가 훨씬 쉽기 때문에 XML을 기반으로 구축 하는 것이 실수로 간주 될 수 있는 몇 가지 이유를 설명하겠습니다 .

XML을 기반으로 한 언어를 사용하면 한 가지 중요한 점이 있습니다. 파싱하기가 훨씬 쉽고 (핵심 파서는 이미 사용 가능함) 훨씬 적은 설계 작업이 필요 하며 다른 파서도 타사 개발자가 작성하기가 훨씬 쉽습니다.

그러나 결과 언어는 여러 가지면에서 불만족 스러울 수 있습니다. 오히려 장황하다. 유형을 변경하는 경우 닫기 태그에서 유형을 변경해야합니다. 주석에 대한 지원이 매우 부족합니다. 속성을 주석 처리하는 것은 불가능합니다. XML의 속성 내용에는 제한이 있습니다. 태그 확장은 XML 구문의 "상위"에 깊고 훌륭하게 통합되지 않아야합니다. 그리고 개인적으로 가장 좋아하는 점은 속성을 통해 무언가를 설정하면 내용 속성 과 똑같은 것을 설정하는 것과 완전히 다른 구문 을 사용 하는 입니다.

또한 모든 사람들이 XML을 알고 있기 때문에 XAML은 학습이 덜 필요하다고합니다. 엄밀히 말해서 이것은 사실이지만 구문 을 배우는 것은 새로운 UI 프레임 워크를 배우는 데 소요되는 시간의 작은 부분입니다. 곡선을 가파르게 만드는 것은 프레임 워크의 개념입니다. 게다가, XML 기반 언어의 특이성은 실제로 "학습 필요"바구니에 추가 될 수 있습니다.

구문 분석의 용이성으로 인해 이러한 단점이 더 중요합니까? 차기 멋진 프레임 워크가 전통을 이어 가거나 기존 도구로는 파싱 할 수없고 모든 사람이 구문을 알아야하는 멋진 DSL을 설계하는 데 시간을 투자해야합니까?

PS 모든 사람이 XAMLWPF를 혼동 하지는 않지만 일부는 혼동 합니다. XAML은 XML과 비슷한 것입니다. WPF는 바인딩, 테마, 하드웨어 가속 및 기타 다양한 멋진 기능을 지원하는 프레임 워크입니다.


3
예, XML 파서로 파싱 할 수는 있지만 의미 적으로 / 완전히는 아닙니다. 예를 들어, 문자열 속성을 사용하여 데이터 소스 및 특성 맵핑을 정의합니다.
Konrad Rudolph

5
대안으로 무엇을 제안합니까? 특정 기술의 적합성에 대한 논의는 적절한 대체 기술을 다루어야합니다.
Robert Harvey

2
XAML에는 상대방이 없습니다. XUL, Glade 및 QML은 모두 동일한 아이디어를 기반으로합니다. XAML을 불공평하게 부르고 있다고 생각합니다.
user16764

3
XAML의 가장 큰 이점은 XML 파서가 파싱 할 수 없다는 것이 아니라고 생각합니다. 오히려 XAML은 XML과 유사하며 대부분의 개발자는 이미 XML을 사용하는 방법을 알고 있으므로 학습 곡선이 훨씬 가파 릅니다.
Juozas Kontvainis

2
@JuozasKontvainis 만약 "작업"이라면 "도구에서 파싱"을 의미합니다. "UI로 기술 된 UI 작성"을 의미한다면 친숙한 구문이 도움이 될 것 같지만 현실적으로는 (XML이 아니기 때문에) 속성에 넣을 내용을 알아야합니다. 개인적인 경험에서 특히 간단하고 잘 디자인 된 새로운 구문을 배우는 것은 사소한 일입니다.
Roman Starkov

답변:


4

유일한 강력한 사용 XML에 대한 이유는 것입니다 개방형 데이터 표준을 설정합니다. XAML은 Silverlight 및 WPF에서 사용되는 것과 동일한 표시 언어입니다. 모든 공급 업체는 동일한 마크 업 표준을 사용하여 자체 플랫폼에 대한 디스플레이 정의를 만들 수 있으며 Silverlight 또는 WPF에서 재사용 할 수 있습니다.

항공 우주 산업에는 컴퓨터 기술의 발전 덕분에 이제는 상당히 유연한 제어실이 있습니다. 과거에는 모든 하드웨어가 사용자 정의되고 독특하며 매우 비쌌습니다. 오늘날에는 모두 저렴하고 일반적으로 사용 가능한 상용 PC로 실행됩니다. 이는 공급 업체 잠금을 크게 줄입니다. 그러나 디스플레이 위젯은 항상 수행 된 방식이므로 ActiveX를 사용하여 작성됩니다.

ActiveX는 더 이상 사용되지 않는 Microsoft 도구에 액세스해야합니다. 따라서 공군과 레인지 간 계측 그룹 에는 XML 기반의 데이터 디스플레이 마크 업 언어가 제공됩니다. 이를 통해 실무자는 원하는 편집기에서 XML 마크 업을 사용하여 디스플레이를 디자인 할 수 있습니다. 익숙한 소리?

아무도 XML에 결함이 없다고 주장하지 않습니다. 그러나 그것은 더 나은 것이 나올 때까지 설계된 디자인에 가장 적합한 것입니다.

참조
XML합니까 빨아하지 왜


3
YACC 문법 설명, TeX, 정규식, Verilog 및 LISP와 같은 것에 동일한 추론이 동일하게 적용된다는 데 동의하십니까? 우리는 이것들 각각에 대한 특별한 문법을 ​​생각해 냈습니다. 첫 번째 단락에 열거 한 것과 같은 방식으로 혜택을 볼 수 있습니다. 그렇다면 XML이 언급 한 목표를 충족시키기 때문에 XML을 사용하는 것이 옳은 것이라고 생각하지 않습니까?
Roman Starkov

XML 만 범용 데이터 메타 표준으로 널리 인식되어 원하는만큼 많은 개별 데이터 표준을 만들 수 있습니다. 물이 흐릿 해지지 않도록 첫 번째 단락을 제거했습니다.
Robert Harvey

S- 표현식은 메타 데이터 표준으로 채택되지 않았습니다. 여기에서 유비쿼터스는 강력한 요소입니다. 언급 한 대체 구문은 모두 기울어 진 경우 XML로 표현할 수 있습니다.
Robert Harvey

2
그것들은 모두 YAML과 JSON으로 표현 될 수 있으며 그 반대도 가능합니다.
Timwi

2
이 논쟁에서 볼 수있는 한 가지 큰 문제는 XAML이 실제로 데이터가 아니라는 것입니다. 물론, 그것은 단지 객체 그래프로 취급 될 수 있지만, 이런 종류의 사고는 아마도 많은 사람들이 그것을 좋아하지 않는 이유와 왜 그러한 학습 곡선을 가지고 있는지에 대한 것입니다. "이봐 개체 그래프를 만들 수 있습니다, 즉, 나는 사용자 인터페이스를 의미합니다". 나는 그것이 어떻게 더 나아질 수 있는지 전혀 모른다. 그러나 나는 그것이 될 수 있다고 확신한다.
Earlz

2

XML에 대한 반대 의견은 XML을 GUI 설명 언어로 사용하는 것과 아무 관련이 없습니다. 그것들은 모든 형태의 XML에 똑같이 적용되는 XML 구문 작업에 대한 불만입니다.

XML이 마음에 들지 않는 것 같습니다.

맞습니다. 수동으로 편집하기에 최적의 선택은 아니지만 GUI 설명 언어의 경우 몇 가지 반론을 할 것입니다.

  1. (IMHO,) GUI는 그래픽이며 그래픽으로 배치되어야합니다. 파일 형식은 그렇게 중요하지 않습니다. 실제로 직접 편집해서는 안되기 때문입니다. (텍스트 기반은 소스 제어를 위해 좋지만 자세한 정보는 문제가되지 않습니다.)

  2. 파서가 사용 가능할뿐만 아니라 XML도 쉽게 검증 할 수 있습니다. DTD 또는 XML 스키마를 작성한 다음 일반 도구를 사용하여 파일이 합법적인지 알 수 있습니다. 이것은 GUI 설명 언어에 매우 유용합니다. JSON 또는 YAML에서 동일하게 수행하는 것은 간단하지 않습니다.

  3. XAML을 직접 작성하는 것이 정말 마음에 들지 않으면 새로운 형식을 개발 한 다음 XAML로 컴파일하는 데 방해가되지 않습니다. 예를 들어 JSON에서 XAML 로의 간단한 매핑을 생각해 낼 수 있으므로 JSON의 더 가벼운 구문 (및 주석 처리 기능)을 보유한 다음 앱을 빌드 할 때 XAML을 생성 할 수 있습니다. 사람들은 더 이상 HTML을 직접 쓰지 않지만 HTML은 여전히 ​​훌륭한 형식입니다.


1
나는 XML을 좋아한다. 손으로 직접 쓰는 것을 좋아하지 않습니다. 1. 그렇습니다. 그러나 현실적으로는 Visual Studio가 실제로이를 해낼 수 없다는 것이 현실입니다. 3. 이것은 XAML이 잘못된 생각인지에 대한 논의와 직교합니다. 그렇습니다. 그러나 XAML이 잘못된 선택이 아닌 경우 왜 필요 할까요?
Roman Starkov

1
내 요점은 당신이 그것을 작성하는 기준에 대해 전적으로 판단한다는 것입니다. 당신의 우려는 그것을 확인하고 해석하는 것과 균형을 이루어야합니다. 작성하기에 더 좋은 DSL은 거의 확실히 파싱하기 어려울 것입니다. 그러나 중간 편집 단계는 당신에게 두 세계의 최고를 줄 수 있습니다.
benzado

0

이 질문은 주관적이므로 개인적 취향에 따라 답변을 게시하는 것이 공정하다고 생각합니다.

XML을 읽기가 어렵습니다. 예를 들어이 링크 를 열고 "샘플"을 클릭하여 XML과 YAML을 나란히 비교하십시오. 후자는 분명히 훨씬 인간이 읽을 수 있습니다.

XML을 사용하여 GUI를 설명하려는 경우 사람이 XML을 보지 않아도되도록 충분한 도구를 제공 해야 합니다.

XPF는 분명히 실패했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.