Blog | Tag | Local | Guest | Login | Write |  RSS
XML? XAML? (part 2)


저번 포스팅에 제목으로만 달아놓고 쓰지못했던 XAML이란 것에 대해 간략히 이야기 해보고자 합니다.

XAML이란?

XAML (Extensible Application Markup Language) = 확장 응용프로그램 마크업 언어
원래는 윈도우 프리젠테이션 파운데이션의 코드이름인 Avalon에서 따와서 Extension Avalon Markup Language의 약자였죠.
[zæ:mɛl]로 발음한다고 하네요.

.NET Framework를 공부하고 계시는 분이면 최근까지 런칭된 .NET Framework가 3.5까지 나와있다는 점과 WPF(윈도우 프리젠테이션 파운데이션), Silverlight등의 Framework와 관련된 여러 도구들이 나왔다는 것을 한번쯤 들어봤을것이라고 생각합니다. 이것들이야 말로 XAML(MS의 XML)기반의 서비스를 구축하기 위한 도구들입니다. 

XAML 요소는 공통 언어 런타임 객체 인터페이스에 직접 매핑할 수 있지만 XAML은 공통 언어 런타임 속성과 이벤트를 해당 객체로 매핑하는데 사용합니다.  일반 XML문서와 마찬가지로 표준 문서 편집기, XAMLPad와 같은 코드 편집기, Vectropy와 같은 그래픽 편집기로 만들어 편집할 수도 있습니다. (물론 다들 Visual Studio를 열고 쓰시겠죠;) 급하게 수정해야할 부분이라면 간단히 notepad 같은 걸로 열고 수정하기엔 편하죠.

좀 더 쉽게 풀어쓰자면 XAML은 그래픽 요소, 사용자 인터페이스, 동작, 애니메이션 등을 정의하는 데 사용되는 XML 기반 언어이면서 Microsoft의 .NET Framework 3.0에 포함된 데스크톱 지향 기술인 윈도우 프리젠테이션 파운데이션용 태그 언어로서 처음 도입되었으며 응용 프로그램 생성 시 디자이너와 개발자 간 작업에 교량 역할을 하기 위해 고안되었습니다라고 할 수 있습니다.

지금까지는 응용 프로그램을 만들기 위해 디자이너가 사용하는 도구 및 리소스 모음이 개발자가 사용하는 것과 달랐으며 이러한 차이는 결과 응용 프로그램에도 부정적인 영향을 줄 여지가 있었습니다. Microsoft는 디자인 전문가들이 그래픽 항목과 사용자 인터페이스를 개별적으로 구성하여 최종 결과를 XAML로 표현하면 이를 통해 개발자가 응용 프로그램을 구축할 수 있도록 Microsoft Expression 및 Microsoft Expression Blend라는 새 Expression 도구 모음을 도입했습니다.

그리고 일반적으로 이런 내용에 대해서 한번쯤 들어보신분들도 가끔 모르는게 있는데 Silverlight의 최초 릴리스에 사용된 XAML은 데스크톱에 사용할 수 있는 완벽한 XAML의 웹 지향 하위 집합이므로 Windows Presentation Foundation에 사용된 XAML과는 차이가 있습니다. 따라서 WPF XAML에 익숙하다면 Silverlight XAML에 <Window> 태그, 페이지 리소스, 데이터 바인딩, 유용한 컨트롤 모델 등과 같은 기능이 없는 걸 금방 눈치채실 수 있을것이라 생각합니다.

XAML에서는 XML 태그를 사용하여 요소를 정의합니다. 각 Silverlight 문서의 루트 수준에는 UI 요소가 그려질 공간을 정의하는 Canvas 태그가 위치합니다. 이 Canvas에는 Silverlight에 필요한 XML 네임스페이스 선언이 들어 있습니다.
<Canvas    xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”    xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”></Canvas>

Canvas는 고유한 자식을 생성할 수 있는 자식 Canvas 등을 포함해 둘 이상의 자식을 가질 수 있습니다. 자식 Canvas의 위치는 부모 Canvas를 기준으로 상대적으로 지정되며 루트 Canvas만 예외입니다. 다음은 부모(Canvas)의 왼쪽 위 모서리에서 25픽셀 떨어진 곳에 위치한 사각형을 포함하는 Canvas의 예입니다.
<Canvas Width=”250” Height=”200”>  <Rectangle Canvas.Top=”25” Canvas.Left=”25”        Width=”200” Height=”150” Fill=”Black” /></Canvas>


우선 이번에는 간단한 내용만 이야기를 하고 맺도록 하겠습니다.
여담이지만 차세대 웹 표준으로 인해 최근 많은 논란이 있었죠. XForm, XAML, XUL 등등 각기 다른 회사에서 채택한 사용방식중 어떤 것을 사용할 것 인지에 대한 논란이죠. 상대적으로 현재는 XAML이 가장 우세하다고 하지만 우선은 좀 더 두고봐야 할테고..일단 공부는 그래도 계속해야죠 ㅋ

Reference by Wikipedia, jowon.springnote.com