이번에 새로 나온 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까지 바라면 너무한가?


Posted by U_Seung
사용자 삽입 이미지
왼쪽(혹은 오른쪽) 그림과 같이 블로그에 Silverlight를 기반으로 한 아날로그 시계를 추가하였다.

뭔가 Silverlight로 이름이 변경되어 정식 런칭을 눈 앞에 둔 시점에서 뭔가 재밌는 것을 만들려다가 여러가지 여건상의 문제로;; 그냥 예전에 만든 아날로그 시계를 블로그에 붙이기로 했다.

Silverlight가 깔리지 않은 사람은 아마 시계가 안보일 거에요.
Silverlight 2007 Feb CTP 버전은 여기에서 받으실 수 있으니 설치하셔서 멋진(?) 아날로그 시계를 감상 하세요. ^^ 다음에 시간이 되면 Vista Sidebar Gadget에서 다른 스킨도 추가시킬까 생각도 하고 있는데 시간이 나면 해보려고 합니다.

혹시 시계를 Tistory 블로그에 달고 싶으신 분이 계시면..

<s_sidebar_element>
<!-- Silverlight Clock -->
<div id="Wpfeclock">
<h3>Silverlight Clock</h3>
<iframe src="http://sparcs.org/~airlover/wpfe/Clock/" style='border:0px; width: 150px; height: 150px' frameborder='0'></iframe>
</div>
</s_sidebar_element>

관리자모드에서 스킨 편집 메뉴에 들어가셔서 위의 코드를 <s_sidebar_element> 사이에 끼워 넣으시고, 사이브바 관리 메뉴에서 원하시는 위치에 Drag&Drop 해주시면 됩니다.




Posted by U_Seung
참조1: http://blogs.msdn.com/bkchung/archive/2007/04/16/microsoft-silverlight-nab2007.aspx
참조2: http://blogs.msdn.com/somasegar/
참조3: http://www.microsoft.com/silverlight/


몇 가지 중요한 사항을 정리하였습니다..

New silverlight enabled site coming april 30th!

현재까지 Available한 Silverlight 버전은 2007 Feb CTP버전 입니다. 다음 버전은 아마 Beta 버전이 될 것 같은 데 공개되는 시점은 4/30일 Mix07행사에서 공개될 예정이라고 합니다.



the next CTP has introduced a fair amount of breaking changes where you'll have to update your code. We will release a "breaking change" document (either on a blog or in the SDK) that describes what has changed

다음 버전에서는 꽤 많은 변화가 있을 모양인가 봅니다. breaking change라는 것은 backward compatibility를 제공하지 않겠다는 의미인 것 같은데.. MS에서 이런 변화를 보여준다는 것은 꽤 많은 변화가 있을 것을 예고해주는 것 같습니다. 기존에 feedback이 들어온 부분을 얼마나 많이 수용하고 새로운 feature를 보여줄 지 살짝 기대 됩니다. ^^


Silverlight is just a 1MB download on a PC (slightly more on a Macintosh because the universal package contains both Intel and PowerPC versions); it supports Windows XP and above, with Windows 2000 support to come.
Flash Player 9도 대략 1MB쯤 되는 것 같던데 Silverlight도 매우 가볍게 제공하는 것 같습니다. 사실 Flash Player가 대략 95%가 넘는 인터넷 컴퓨터에 설치되었다고 하는데 Silverlight는 얼마나 설치될지 살짝 궁금해집니다.



Silverlight is almost 100% upward compatible with WPF. Animation, 2D vector graphics, media, text - they're all present in Silverlight and the concepts you've learnt in WPF carry forward (although Silverlight is a subset - it doesn't support WPF features such as 3D, data binding or templates). You can use the same tools (e.g. Expression Design) to generate content for Silverlight; you can take XAML from Silverlight and use it in a WPF application when you want to scale up and take full advantage of your local machine.
기존에는 WPF의 XAML과 WPF/E의 XAML이 그다지 호환성을 가지지 못했던 것 같은데 3D말고도 안되는 것도 많고, Expression Blend/Design에서 만든 것은 당연히 안되고 -_- 다음 버전에서 얼마나 WPF와 Compatibility를 가질지 지켜봐야겠습니다.



  • Expression Media Encoder – a feature of Microsoft Expression Media, which enables rapid compression and Web publishing of digital video from a variety of popular formats including AVI and QuickTime.
    Windows Media Encorder와는 별개로 동영상을 웹에 Publishing하는 것을 도와주기 위해서 별도의 Encoder 소프트웨어를 배포하겠다는 것 같습니다. Encoding하는것이 매우 번거로운 FLV(On2 VP6) 코덱과는 매우 차별화되는 점인 것 같습니다.


  • IIS7 Media Pack for Windows Server –the Media Pack is for customers wishing to enable cost-effective delivery of downloaded media through bit-rate throttling and other advanced features such as cache-proxy support.

    Windows Server Longhorn의 IIS7을 사용할 경우 Media Pack을 통해 미디어 다운로드/스트리밍 지원(Windows 2003의 2배)을 지원한다고 합니다.

  • Broad support from leading media companies and solution providers for Microsoft Silverlight and Microsoft’s approach to media experiences and rich interactive application development.
    가끔씩 Flash와 Silverlight의 큰 차이점에서 이야기할 때가 있는데... 가장 큰 차이점은 Media지원 부분인 것 같습니다. 최근 UCC 동영상에 대한 요구가 증가하면서 관련 기술에 관한 내용이 많이 화두가 되고 있는데 Silverlight의 가장 큰 장점은 Windows Media들을 웹 상에서 잘(!) Publishing하는 것을 도와준다는 데 있지 않나 싶습니다.

    Adobe의 Flash도 훌륭한 Webapp를 위한 Runtime이지만 WMV를 지원하지 못한 점은 기존에 많은 자료들을 웹으로 Publishing하는데 큰 제약 이었습니다. MS는 OS, Office뿐만 아니라 Media 쪽에서도 많은 3rd-party와 함께 거대한 규모의 Eco-System을 가지고 있습니다. 이제 Silverlight가 나옴으로 해서 많은 WMP기반의 서비스들이 Silverlight로 대체되고 더 예뻐진 UI와 더 편리해진 UX를 볼수 있지 않을까 기대 해봅니다..

    일반 사용자가 피부로 느끼는 것은 UCC 동영상등의 서비스들이 별도의 ActiveX Control을 설치하게하지 않으면서도 예쁜 UCC Player를 내놓지 않을까 생각해봅니다.





  • Posted by U_Seung
    사용자 삽입 이미지

    참조: http://sparcs.kaist.ac.kr/~airlover/wpfe/Clock/

    Tistory라서 왼쪽 Sidebar에 넣지 못하는 것을 안타깝게 생각합니다.
    맨 위는 그냥 이미지고, 위의 링크를 타고 들어가시면 보실 수 있습니다.

    WPF/E가 설치되지 않으신 분은 2007 Feb CTP 버전으로 설치하셔야 합니다.



    다양한 예제가 많지만 시계가 재미있는 이유는.. WPF/E 애니매이션을 멋지게 넣을 있어서 입니다.
    시계 바늘이 움직이는 것을 만들려면 보통의 방식대로 한다면 .. n초에 한번씩 초침, 분침, 시침의 위치를 조금씩 움직이는 것을 계산하여서 화면에 다시 그리기를 해야합니다.

    WPF/E에서 애니메이션 기능을 쓰면 다음과 같이 구현할 수 있습니다.
    시작 시각에 각 바늘의 위치를 지정해주고,
    초침은 1분에 한 바퀴씩
    분침은 1시간에 한바퀴씩
    시침은 12시간에 한바퀴씩 돌도록 애니메이션을 구성하고,
    Animation Start!를 하면 시계 제작이 끝납니다. 간단하죠?

    <DoubleAnimation Storyboard.TargetName="Sec" Storyboard.TargetProperty="Angle"
     From="0" To="360" Duration="0:1:0" RepeatBehavior="Forever" />

    <DoubleAnimation Storyboard.TargetName="Min" Storyboard.TargetProperty="Angle" From="0" To="360" Duration="1:0:0" RepeatBehavior="Forever" />

    <DoubleAnimation Storyboard.TargetName="Hour" Storyboard.TargetProperty="Angle" From="0" To="360" Duration="12:0:0" RepeatBehavior="Forever"/>
    - 위는 핵심 코드 중 일부


    만약 Javascript로만으로 시계를 구현했다면 (지금 Vista Sidebar Gadget이 그렇게 하고 있음)
    1초보다 빠른 시간에 한번씩 Event를 발생시켜서 초침을 움직여야 해서 코드가 엄청 지저분 해졌겠지요.

    (위험요소가 다분한) Timer Event가 하나도 쓰지 않고 구현한 WPF/E 시계 ... 재밌지 않은 가요?
    ( 나만 재밌나 -_- )

    Posted by U_Seung

    Link:  http://www.vista.si/main.htm

    사용자 삽입 이미지


     속도는 그리 빠르지 않지만..
     Vista 틱하게 구현한 것에 찬사를 보낸다.

     위의 이미지는 Vista.si 에서 Media Player를 띄운 화면..
     마치 Media player 11를 보는 듯 하다.


    '정보 공유터' 카테고리의 다른 글

    Loading Spin, 로딩중 이미지  (1) 2007/02/12
    구글의 ActiveX 들..  (2) 2007/02/08
    네이버/다음, 매쉬업 경진대회 개최  (0) 2007/02/05
    WPF/E 기반 Vista Simulation  (0) 2007/02/02
    Microsoft Expression, WPF/E Update  (0) 2007/02/01
    날씨 RSS 서비스  (2) 2007/01/26
    Prototype 1.5.0 출시..  (1) 2007/01/19
    Posted by U_Seung

     1/29 자로 또 한번의 큰 업데이트가 있었나 봅니다.

    Microsoft Expression Blend Beta 2

    Microsoft Expression Design Beta 1

    “WPF/E” CTP for Windows(Feb 2007)


    We're pleased to present the second Beta version of Expression Blend. Here are some of the changes since the Beta 1:
    • You can now instantiate resources from the Resources panel. For example, you can drag and drop a button style onto the artboard and create a button out of it instead of creating a button and applying it as a separate task.
    • You can see inner exceptions when an exception happens on the design surface, allowing you to see more details about the cause of an exception.
    • You now get font previews in the Text category of the Properties panel which makes it easier to choose your font.
      After adding an event handler, the XAML file is now automatically saved for you.
    • Configuring value editors has been improved. For example, you'll find editing BitmapEffects or adding items to an ItemsControl such as ContextMenu are now much easier to do.


    간혹, 업데이트 이후 WPF/E 컨텐츠가 안보이는 경우가 있는데..
    이 경우에는 최신 버전으로 aghost.js 파일을 업데이트 해주어야 합니다.
    http://channel9.msdn.com/playground/wpfe/PageTurn/js/aghost.js

    '정보 공유터' 카테고리의 다른 글

    구글의 ActiveX 들..  (2) 2007/02/08
    네이버/다음, 매쉬업 경진대회 개최  (0) 2007/02/05
    WPF/E 기반 Vista Simulation  (0) 2007/02/02
    Microsoft Expression, WPF/E Update  (0) 2007/02/01
    날씨 RSS 서비스  (2) 2007/01/26
    Prototype 1.5.0 출시..  (1) 2007/01/19
    WPF: Yahoo (대박) Messenger for Vista  (2) 2007/01/15
    Posted by U_Seung


    얼마전 Thkinkfree에서 Viewer서비스를 오픈했다고 메일이 왔다.
    한번 써봤는데 꽤 괜찮은 것 같아서 블로그에도 올립니다.
    http://viewer.thinkfree.com/

    MS Office와 호환되는 doc, xls, ppt파일 웹뷰어 API가 제공된다. 많이 써보진 않았지만 속도가 조금 느린 것을 빼면 매우 훌륭하게 동작한다. 특히 파워포인트 파일을 보여주는 것은 꽤나 괜찮은 듯 하다.


    웹메일에서도 이번에 MS Office Outlook 2007부터 동작하는 Preview message에서 제공하는 Office file preview처럼 만들 수 있지 않을까?

    예제 링크.
    http://viewer.thinkfree.com/html?url=http://download.microsoft.com/download/4/7/0/470da1ac-9a4a-4afb-a4ca-278d7ff621ea/ie7_overview.ppt&action=view
    http://viewer.thinkfree.com/html?url=http%3A%2F%2Fviewer.thinkfree.com%2FMortgageSample.xls&action=view


    근데 이렇게 JAVA로 HTML로 열심히 맹글어 놨어도..
    Adobe에서 Flash로 ppt, xls, doc 보여주게 맹글어 버리고,
    MS에서 WPF/E로 ppt, xls, doc 보여주게 맹글어 버리면...
    나중에는 HTML은 JAVA는 명함도 못내미는건 아닌지 모르겠다.

    그전에 JAVA가 빨라지길 바란다.

    '자료 수집소' 카테고리의 다른 글

    The Art of The Start  (0) 2007/04/21
    당신은 무엇 때문에 기술표준을 따르나  (0) 2007/04/16
    구글패배와 웃대 승리  (1) 2007/02/26
    Thinkfree Viewer  (0) 2006/12/02
    Animals on the underground.com  (1) 2006/08/25
    진중권의 글.  (0) 2006/05/24
    조벽 교수님 강연  (0) 2006/05/14
    Posted by U_Seung