이번에 새로 나온 Silverlight 1.0과 Silverlight 1.1은 어떻게 다를까?
한마디로 하면 어마 어마하게 다르다.
Silverlight 1.0 Beta는 기존의 WPF/E CTP가 조금 업그레이드 되고, 안정화된 버전 정도이지만 Silverlight 1.1 Alpha의 경우에는 작은 .NET Framework와 DLR을 포함하고 있으며, 그 밖에도 DRM, LINQ, RSS, REST, 등등의 기능이 보강된 한 차원 업그레이드 된 버전이다.
출처: MSDN – 노란색이 v1.1에 추가된 Feature다.
새롭게 출시된 Silverlight의 Feature중에서 CLR과 DLR을 중심으로 살펴 보았다.
#1. 작은 .NET Framework, CLR(Common Language Runtime) 포함
실제로 4/30에 공개된 Silverlight 1.0 Beta와 Silverlight 1.1 Alpha의 경우 각각 1.4Mb와 4.2Mb로 3M정도의 용량의 차이가 있다. 아무래도 CLR이 포함되려면 용량이 커지기 마련인데 기존에 약속했던 2Mb이하의 Runtime을 내놓기로 했다는 약속을 지키려고 했는지 1.0 Beta의 용량은 매우 작다.
현재 .NET Framework v3.5까지 이야기 되고 있는데 그 방대한 Framework가 모두 다 포함 된 것은 당연히 아니며, 기본적인 Class 몇 개와 WPF쪽 약간과 WCF 조금과 Data관련 모델들이 조금 지원된다. (자세한 내용은 MSDN을 참조 하시라.) CLR에서는 메모리 관리, 가비지 컬렉션, 타입 체킹, 예외 처리 등을 지원한다.
지원되는 Language는 C#, Visual Basic이며 현재는 Visual Studio 다음 버전인 Orcas를 설치해야 Compile을 할 수 있는 것 같다. Orcas 용량이 상당하기 때문에 아직까지 나는 설치해보지 못했지만 Compile을 하게 되면 DLL이 생성되고, 이를 XAML에서 다음과 같이 이용할 수 있다.
Page.Xaml
<Canvas x:Name="root"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
Loaded="Page_Loaded"
x:Class="VideoLibrary.VideoLibraryCanvas;assembly=ClientBin/VideoLibrary.dll">
Page.Xaml.Cs
using System;
using System.Windows;
using System.Windows.Documents;
namespace VideoLibrary {
public partial class VideoLibraryCanvas : Canvas {
public void Page_Loaded(object sender, EventArgs e) {
(……)
}
}
}
#2. DLR(Common Dynamic Language Runtime) 지원

jscript, vb, ruby, python을 동시에 사용하는 console 시연 장면
Silverlight 1.1에는 CLR 뿐만아니라 CLR기반에서 동작하는 DLR을 지원한다.
최근 들어 JRuby, IronPython, IronRuby 등 Runtime에 Dynamic Language를 올리려는 노력이 많이 있었다. 기존의 경우에는 JAVA의 JVM이나 .NET의 CLR위에 바로 Dynamic Language를 올리려는 시도가 많았던 것 같은데 원래 Dynamic Language가 가지는 특성으로 매우 쉽지 않은 과정이었으리라 생각이 든다. (구체적인 것은 별로 아는 바가 없다.) 이번에 Siliverlight에 포함된 DLR의 경우에는 Silverlight에 포함된 CLR 기반에 동작하도록 하여 Layer하나를 새로 분리시킨 것 같다.
현재 공개된 버전에서는 JS와 Python만 동작하지만 조만간 VBx와 Ruby가 지원될 것으로 예상된다. 여기에 대한 것은 Mix07의 DLR in Silverlight 동영상에 나오는 DLR Console을 본다면 매우 직관적으로 알 수 있을 것 같다. 동영상에서는 Ruby, JS, Python, VBx의 Language를 버튼 하나로 Switching하면서 Coding하는 모습을 보여주는데 매우 감명 깊게 보았다.
DLR을 이용하면서 쓸 수 있게 된 Language들은 Browser에서 사용되는 JScript와 VBScript를 보다 높은 성능 보일 수 있다고 한다. 그렇지만 뭐니 해도 Javascript(혹은 ECMAScript)가 중심이 되었던 Web client단 프로그래밍을 Ruby, Python등으로 할 수 있게 되었다는 것은 엄청난 변화의 시작인 것 같다.
DLR위에서 돌아가는 Script를 사용하기 위해서는 XAML에서 다음과 같이 적어주면 사용할 수 있다.
<x:Code Source="DLRConsole.py" Type="text/python" />
<x:Code Source="Code.jsx" Type="text/jscript" />
#. Performance
기존의 RIA기술이라고 나온 것들이 Performance가 썩 만족 스럽지 않았던 것이 사실이다.
이번 Silverlight Beta 버전에서는 얼마나 속도가 빨라 졌을까? 나도 궁금하다. -_-;;
이번에 적용된 CLR은 Binary DLL 결과를 이용하기 때문에 기존의 Script보다 빠를 것으로 기대 하지만 core가 되는 XAML Rending과는 다소 거리가 있을 수 있기 때문에 섣부른 기대는 금물이 아닐까 생각한다.
이전까지는 WPF, Apollo, Flex, Silverlight, DHTML의 비교에서 Flex Bitmap caching을 적용한 것이 가장 빠르다는 Benchmark 결과가 있었는데 이번에 순위가 바뀔 수 있을지는 잘 모르겠다.
현재는 Multi-platform, Various language support인 것 같은데 여기에 High performance까지 바라면 너무한가?