Silverlight (SL)로 작성한 애플리케이션을 웹을 통해 활용하고자 할 경우에 알아야할 최소한의 것들을 간단히 정리해 보자.

 개발
Expression Blend 툴을 이용하여 시각적인 디자인을 마친후, Visual Studio에서 코드를 입히고 관련 파일들을 묶어 자동으로 .xap 파일로 패키징을 해준다. 패키징 된 .xap 파일을 <object> 태그를 이용하여 아래처럼 HTML 페이지에 추가한다.  .xap은 zip 알고리즘으로 압축한 것으로 일반 zip 관련 툴에서 열어 볼 수 있다.

운영
.xap을 포함한 웹 페이지를 서비스하기 위해서는 웹서버에 다음과 같은 마임타입이 설정되어야 한다. 단, IIS 7은 이미 이러한 설정이 되어 있다. 

확장자 .xaml을 설정하는 경우는 애플리케이션을 SL 1.0으로 작성한 했을 때, 혹은 SL 2로 작성한 애플리케이션이 로딩되는 동안 떠 있을 splash screen 을 사용하고자 할 경우에만 설정한다. splash screen이 .xaml로 작성되기 때문이다. 위 1번 샘플 코드중에 <param name="splashScreenSource" value="SplashScreen.xaml" />에서 보듯이 SL 애플리케이션의 파라메터로 splash screen 정보를 전달한다. splash screen 제어를 자바스크립트로 하는 이유는 당연하게도 아직 SL 애플리케이션이 메모리에 로딩되기 전에 일어나는 일이기 때문이다.

사용자의 PC에 4MB 정도의 SL 런타임이 설치되어 있다면 위에서 언급한 두가지만 설정되면 SL 애플리케이션이 정상 동작하게 된다. 그 외 좀 더 다양한 기능을 사용하고자 하거나 툴을 통해 좀 더 편리하게 개발하고자 한다면 다음과 같은 기능에 관심을 갖도록 한다.

보안
SL 2의 보안 모델은 sandbox 모델을 확장 보완한 모델로서 cross-domain 통신, isolated storage, socket, OpenFileDialog 등을 지원한다. SL 2 애플리케이션은 닷넷의 CAS (code access security)와는 달리 sandbox를 벗어날수 없으며, 권한 상승 등을 요청할 수 없다. 즉, 하나의 trust 레벨만 지원하므로 sandbox 하에서 실행하든지, 아니면 실행하지 않든지 둘 중의 하나다.

ASP.NET Silverlight Control
ASP.NET의 server-side control로서 Silverlight control을 제공하는데, <asp:Silverlight>와 같이 작성된 태그는 컴파일과정에서 클라이언트용 스크립트 및 일반 HTML 구문 (<object> tag 등) 으로 사용자 브라우저에서 동작할 수 있는 코드로 생성된다. 이는 ASP.NET AJAX용 server-side control인 <asp:ScriptManager>와 함께 쓰이며이를 통해 client-side 자바 스크립트 코드를 자동 생성하거나 사용자 PC에 다운로드 받아야 할 자바 스크립트 라이브러리를 지정하는 역할을 한다. 실제 SL 애플리케이션 구동에 관련된 Silverlight.js도 이러한 server-side control이 생성해준 자바 스크립트 코드에 의해 사용자에게 다운로드된다. 물론 ASP.NET이 아닌 다른 플랫폼 가령, JSP나 PHP에서 Silverlight를 적용할 경우에는 Silverlight 구동 및 속성 제어 등등을 자바스크립트로 일일이 작성해주어도 된다. 아래처럼 간단한 ASP.NET 코드가 ......

<asp:ScriptManager>와 <asp:Silverlight>의 도움으로 이처럼 복잡한 HTML을 생성한다.

SL 런타임에는 Media Player가 내장되어 있으며 이를 사용하기 위해서는 <asp:MediaPlayer>를 이용하며 <asp:Silverlight>와 마찬가지로 필요한 자바스크립트가 자동 생성된다.

Silverlight for dummies #2

Posted by 장현춘