Silverlight 2 엿보기(First Look)

First Look at Silverlight 2 - ScottGu's Blog

Silverlight 2 - Silverlight 2.0의 브랜드명을 Silverlight 2로 바꿨습니다 - 가 1.1 알파버젼들 이후로 처음 공개 베타 버젼을 MIX에서 발표할 예정이기 때문에, 많은 변화가 있었음에도 현재의 중간 상황이 전달되지 못하고 있었습니다. 3월 MIX가 시작되기 전에 많은 분들의 궁금증을 해소하기 위해서 Scott의 블로그를 통해서 새로운 소식이 포스팅 되었습니다.

Silverlight 1.0은 미디어 시나리오등에 더 포커스 되어 있었던 반면 가벼운 형태의 .NET Framework을 탑재한 Silverlight 2에서는 RIA(Rich Internet Application) 개발이라는 영역으로 더 확장하여 지원하게 됩니다. Scott은 계속해서 이에 관한 내용으로 포스팅을 하기로 하고 이번에 공개한 내용은 다음과 같습니다:

  • WPF UI Framework - 기존 Windows용 .NET Framework 3.0에 포함되었던 WPF(Windows Presentation Foundation)에서 지원했던 다양한 UI를 위한 프로그래밍 내용들이 부분집합격으로 Silverlight 2의 .NET Framework에서 지원됩니다. 서로 다른 기술이기 때문에 모든 것을 통일시킬 수는 없고 부분집합이지만, Silverlight에서 구현하기로 한 부분인 경우 두가지가 최대한 비슷할 수 있도록 하는 것을 우선으로 개발하였습니다. 여기에는 그래픽 엔진과 애니메이션 엔진을 비롯하여 컨트롤 클래스들의 모양이나 layout, data-binding, style, template등이 포함됩니다. 이는 이미 WPF 개발자들이 사용하던 것과 비슷하기 때문에 적은 수정과 교육을 통해서 쉽게 전환할 수 있게 된 것입니다.
  • Rich Controls - WPF의 모델과 비슷한 컨트롤 개발 모델이 마련되어 개발사들이 자신들의 컨트롤을 쉽게 만들 수 있는 위의 장점 이외에 Silverlight 2가 .NET Framework을 탑재한 이후로 첫 공개이기 때문에 컨트롤들이 부족한 점이 약점일 수 있겠습니다. 그래서 이번 Beta 1에 여러가지 컨트롤들이 함께 공개됩니다: 기본 폼 컨트롤(TextBox, CheckBox, RadioButton등), layout을 위한 패널들(StackPanel, Grid, Panel등), 공용 컨트롤들(Slider, ScrollViewer, Calendar, DataPicker등), 데이타용 컨트롤(DataGrid, ListBox등). 이런 컨트롤들은 디자이너에게 있어서도 template등을 통한 스킨등으로 접근이 쉽게 됩니다.
  • Rich Networking Support - 1.0에서 미비했던 네트워킹 지원이 대폭 강화되어 다음의 내용들이 추가됩니다: REST/HTTP 지원, WS*/SOAP의 웹서비스 지원, POX/RSS 지원. 또한 cross-domain 호출이 제한적으로(보안상) 지원되며, 또한 많은 분들이 원하시던 Socket의 지원이 역시나 제한적으로(보안상) 지원됩니다.
  • Rich Base Class Library - 비록 Windows의 풀 .NET Framework보다는 사이즈 제한등으로 인해서 작지만, 실제로 필요하고 성격에 맞는 기능들을 분류하여 Silverlight 2에 맞는 BCL(Base Class Library)를 구성하였습니다(collections, IO, generics, threading, globalization, XML, local storage, etc). 여기에는 .NET에서 HTML DOM/JavaScript 통합을 위한 API들이 포함되었고, LINQ와 LINQ to XML의 지원, local caching/storage를 위한 API들등이 포함되었습니다. BCL은 풀 .NET Framework과 내용이 호환됩니다.
  • Silverlight 2 Beta 1의 크기는 약 4.3MB이며 일반적으로 설치하는데 4~10초가 걸리며, IE, Firefox(Windows+Mac), Safari등을 지원합니다.

맨 위의 링크에 Digg.com의 API를 사용하여 클라이언트를 만드는 예제 튜토리얼도 있으니 쭉 한번 보시면 좋을 것 같습니다.