WorkaHolic

2008년 닷넷 개발자들의 화두 - 실버라이트 2.0 -

2008. 3. 19. 16:50
반응형

2008년 닷넷 개발자들의 화두
실버라이트 2.0


올해 RIA용 플랫폼이라고 할 수 있는 실버라이트가 1.0 버전이 정식으로 출시되었다. 원래는 WPF/e라는 이름으로 시작했던 프로젝트가 결국 정식 제품으로는 실버라이트로 출시가 된 것이다. 실버라이트 1.0은 제공되는 실버라이트 관련 객체들을 자바 스크립트로 접근할 수밖에 없었던 반쪽짜리 버전이었다면 실버라이트 1.1에서는 C#과 같은 닷넷 언어로 프로그래밍 할 수 있게 되어서 비약적으로 발전 하였다고 할 수 있다. 하지만 지난 달 뜬금없이 실버라이트 2.0 출시 소식이 들려왔다.


김영욱|iwinkey@hotmail.com|닷넷채널(http://www. winkey.pe.kr) 커뮤니티 대표 시삽


실버라이트 1.1을 기다리던 사람들에게는 정말 생뚱맞은 소식이 들려왔다. 이제까지 1.1로 알고 있던 실버라이트 차기버전이 2.0으로 출시된다는 소식이 바로 그것이었다. 결과적으로 보면 1.1버전은 출시도 되기 전에 바로 2.0 버전이 되어 버린 것이다. 어찌 보면 MS의 버전 놀이에 모두가 낚인 것 같은 생각도 들 수 있지만 0.1이라는 작은 버전 업으로 표현하기에는 너무 큰 변화였기에 2.0으로 버전을 정할 수밖에 없었을 거라는 생각도 든다.



자바스크립트 만 가능한 1.0 버전



실버라이트 1.0버전은 완성도 면에서나 제공되는 기능적인 면 이외에도 여러 가지 면에서 베타같은 정식버전이었다. 일반적인 프로그래밍에서 기본으로 생각하는 버튼이나 텍스트 박스조차 만들 수 없던 버전이었다. 1.0은 MS의 입장에서는 기존의 RIA시장을 선점하고 있던 업체들에게 꺼내는 도전장이나 혹은 선전포고 정도의 의미가 있는 제품이었을 뿐 실제 시장을 장악할 정도의 임펙트가 있는 제품은 아니었다. 하지만 선전포고 역할만큼은 정말 톡톡히 해냈다. 웹사이트에는 이미 실버라이트의 정보로 넘쳐나고 국내에서도 iSBS나 MNet 미디어와 같이 지명도 있는 업체들부터 커뮤니티나 개인 블로그에 부분적으로 도입한 사례를 쉽게 찾을 수 있을 만큼 많은 호응을 받고 있다. 물론 기존의 RIA시장을 독식하고 있는 어도비사는 다소 난처한 경우이겠지만 RIA시장을 즐기는 이용자나 개발자들은 즐거운 소식일 수밖에 없다.


<그림1> 실버라이트 1.0 아키텍처


실버라이트 1.0버전은 프로그래밍이 자바스크립만 지원되는 간단한 구조이다. <그림 1>을 보면 실버라이트 1.0에서 지원되는 기능이 생각만큼 많지 않다. 기본적으로 ASP.NET과 연계성이나 기본 UI Core에서 제공되는 기능들을 제외하면 거의 지원되는 기능이 없기 때문이다. 하지만 미디어 기능만큼은 1.0에서도 충분히 사용할 수 있을 만큼 훌륭하다. 기본적으로 WMV/VC1/ WMA/MP3가 모두 지원되는 모델을 가지고 있으며 중간에 별도의 엔코딩을 하지 않고 바로 동영상을 볼 수 있다. 또한 운영체제나 원도우미디어와 같은 요소들로부터 자유로운 점도 상당히 충격적이었다. 그래서 실버라이트라고 하면 최고의 강점은 미디어라고 바로 떠오른다. 실제로 지금까지 진행된 프로젝트 중에 상업적으로 진행되었던 실버라이트 프로젝트는 거의 모두 미디어와 관련된 프로젝트이다. 플래시나 플렉스에서 동영상을 재생하려면 자체적인 포맷으로 한 번 변환과정을 거쳐야 하는데 비해서 실버라이트의 미디어 기능은 상당히 편리하고 강력하게 동작한다. 또한 HD급 화질을 제공하는 RIA 기술은 지금까지는 실버라이트가 유일한 대안이다.


하지만 이런 장점에도 불구하고 1.0이 큰 이슈를 일으키지 못한 것은 개발자들의 접근성 때문이었다. 개발자들이 디버깅하기 귀찮아하는 언어 베스트 3 안에 드는 자바 스크립트를 이용해서 개발해야 한다는 점은 일단 개발자들이 거리감을 두기에 충분한 핑계거리가 되었다. 또 미디어와 관련해서 DRM이 지원되지 않는 점은 상용서비스를 준비하고 있는 콘텐츠 업체들이 저작권을 지킬 수 있는 최소한의 방편조차 없었다는 구실을 제공했다.


따라서 실버라이트 1.0 버전의 경우는 플래시 기술 이외에는 대안이 없었던 시장에 새로운 대안을 훌륭하게 제시한 것으로 만족해야할 만한 버전이었다.



닷넷이 지원되는 실버라이트 2.0



실버라이트 2.0은(사실 원래는 1.1버전이었지만.) 1.0 버전과 상당한 차이를 보고 있다. <그림 2>을 보면 그 차이가 실로 엄청나다는 것을 알 수 있다. 가장 눈에 띄는 변경 사항은 실버라이트용 CLR(Common Language Runtime)이 제공되된다는 점이다. CLR은 닷넷기반의 프로그래밍 언어로 개발된 프로그램을 실행시키는 역할을 하는 실행 기반으로 실버라이트 2.0에서부터 실버라이트용 CLR이 별도로 제공되기 시작한다. 따라서 2.0 부터는 자바 스크립트가 아니라 여러분이 잘 알고 있는 C#이나 혹은 VB.NET과 같은 언어로 개발하는 것이 가능해 졌다. 혹은 루비나 파이썬 같은 언어를 선호하는 경우에도 실버라이트용 루비나 파이썬을 이용하면 실버라이트로 코딩하는 것이 가능하다.


<그림2> 실버라이트 2.0 아키텍처


실버라이트 2.0에서는 미디어와 관련한 DRM을 제공하고 서버 측에서 데이터를 가져오기 위한 웹 서비스를 제공한다. 특히 일반 개발자들이라면 웹서비스의 지원은 천군만마를 얻은 것과 같을 것이다. 데이터를 가져올 때 AJAX를 이용할 수도 있지만 어차피 가장 보편적이고 일반 개발자들이 선호할 만한 방법은 웹서비스를 이용하는 방법이기 때문이다.


RIA에서는 데이터를 가공하고 처리하는 기술이 필요한데 그 이유는 서버에서 데이터를 매번 가져와서 처리하기 보다는 필요한 데이터를 일단 가져온 다음 그 데이터를 사용자가 원하는 형태로 그때마다 처리해서 제공하는 방법이 더 바람직하기 때문이다. 즉 클라이언트 PC에 필요한 자료를 쌓아놓고 그 안에서 검색을 하거나 할 수 있어야 하는데 이제까지 다른 RIA 플랫폼에서는 모두 개발자가 자기만의 자료구조를 만들고 처리해 왔었다.


실버라이트는 2.0부터 LINQ를 제공한다. LINQ는 객체 쿼리를 통해서 가져온 데이터나 XML등을 쉽게 사용할 수 있게 해주는 기술로 닷넷 프레임워크 3.5에서부터 제공되는 기술이다. LINQ에 관한 내용은 지난 호의 한용희님이 기고한 글을 참조하길 바란다.


<표1> 실버라이트 지원 플랫폼 (자세히 보시려면 클릭하세요.)



플랫폼으로부터 자유로워진 실버라이트



실버라이트가 지원하는 플랫폼을 <표 1>에서 보면 지금 많이 사용하고 있는 운영체계나 웹브라우저는 모두 다 지원한다고 봐도 무방하다. 최신 제품인 비스타부터 XP까지 지원하고 원도우즈 2000은 실버라이트 2.0에서부터 지원하기로 되어 있다. 매킨토시 제품도 파워PC 기반의 프로세서와 인텔기반의 프로세서 두 가지 모델을 모두 지원하게 되어 있다. 문라이트라는 이름으로 개발되고 있는 리눅스용 실버라이트도 상당히 흥미롭긴 한데 리눅스용 실버라이트는 기술지원이나 버전에 있어서 MS의 책임은 없기 때문에 사용자 지원에 있어서 다소 의구심이 들기도 한다.


아무튼 이렇게 다양한 플랫폼을 지원한 제품은 MS 역사상 처음 있는 일인 것 같다.


실버라이트는 2.0에 이르기까지 그 동안 열심히 버전 업을 해오고 있으며 2.0베타 버전이 MIX 2008 행사에서 발표될 예정이라고 한다.


<표2> 실버라이트 버전


실버라이트 2.0(혹은 1.1)을 작업하다 보면 C#과 같은 닷넷 언어의 편리함과 강력함을 체험할 수 있다. 액션 스크립트처럼 디자인을 위한 언어로 출발한 언어가 아니라 범용 플랫폼으로 출발한 언어의 풍성한 기능에 다시 한 번 놀라게 된다.


MS에서 기술이사로 근무하고 있는 스캇이 보여주는 항공사 스케줄을 보여주는 데모를 보면 이렇게 복잡한 작업도 가능하구나 하는 생각이 들 정도이다. 물론 이렇게 복잡한 작업을 실버라이트 1.0 기반에서 자바 스크립트로 구현하는 것도 가능하겠지만 객체 지향적인 특징이나. CBD 방법론 등을 전혀 사용할 수 없는 상태로 개발해야 한다. 결과적으로 안 해도 될 고생을 할 수 밖에 없는 상황이 된다.


<화면1> 실버라이트 2.0 항공사 데모


그런 면에서 볼 때 실버라이트 2.0은 실질적인 작업의 1.0 버전이라고 할 만큼 상당히 현실적인 기능들을 제대로 갖추고 출시된다고 할 수 있다. 스캇의 블로그에 보면 .NET Web Product Road Map(ASP.NET, Silverlight, IIS7)이라는 주제의 글이 있다. 여기에는 실버라이트에 대해서 관여하는 사람으로서 2.0에 관해서 언급되어 있는데, 그 내용을 요약하면 다음과 같다.


- WPF UI Framework:

현재 실버라이트 1.0 버전과 1.1 알파버전은 간단한 컨트롤과 UI 드로잉에 관한 API가 제공되고 있는데 다음 버전의 실버라이트에서는 높은 수준의 WPF UI 프레임워크에서 제공되던 기능들이 추가될 예정이다. 또 확장 가능한 프레임워크 모델이 제공되고 레이아웃 매니저와 양방향 데이터 바인딩이 지원된다. 그리고 WPF UI 프레임워크가 닷넷 프레임워크 3.5를 기준으로 맞추어진다.


- 풍부한 컨트롤:

RIA를 개발할 수 있을 만큼 충분한 컨트롤을 지원해 준다. 예를 들어 지금 지원해 주지 않고 있는 TextBox, CheckBox, RadioButton 이외도 다수의 컨트롤을 제공한다. 또 기본으로 포함되어 있는 레이아웃 컨트롤을 제공해서 StackPanel, Grid 등과 같은 레이아웃 컨트롤을 제공한다. TabControl, Slider, ScrollViewer, ProgressBar 등의 공통적으로 사용할 수 있는 컨트롤도 제공된다. 그리고 데이터와 관련된 기능이 포함된 컨트롤로 DataGrid와 같은 것도 지원된다.


- 풍부한 네트웍 기능의 제공:

실버라이트 2.0에서는 다양한 네트워킹 방식이 지원 된다. 다음 버전의 실버라이트에서는 추가적으로 REST, POX, RSS 그리고 WS* 통신을 지원한다. 더불어 크로스 도메인 접근(Cross domain access)을 지원하려고 한다(그것은 어떤 믿을만한 웹 상의 리소스나 데이트를 실버라이트를 통해서 자유롭게 접근하게 된다는 의미이다).


- 풍부한 기반 클래스 라이브러리의 지원:

실버라이트 2.0에서는 닷넷 기반에서 지원되던 풍부한 클래스 라이브러리의 기능들을 포함할 예정이다. 예를 들어 Collection, IO, generics, threading, globalization, XML, 지역 저장소 외에도 다수의 기능과 같은 것이다. 그리고 차기 실버라이트에서는 LINQ to XML과 풍부한 HTML DOM API가 포함될 예정이다.


스캇의 블로그의 내용을 한 마디로 요약하면 WPF의 풍성한 UI와 닷넷기반의 기반 클래스 라이브러리를 제공해 주겠다는 의미로 요약할 수 있다. 실버라이트 1.0과 2.0의 차이를 <표 3>에서 정리해 보았다.


또 하나 우리가 눈 여겨 보아야 할 사항이 있는데 그것은 바로 크로스 도메인의 지원이라고 하는 부분이다. 실버라이트는 센드박스(Sendbox) 형태의 보안 모델을 가지고 있다. 센드박스 형태의 보안 모델은 다음과 같은 필수적인 보안규칙을 가진다.


- 클라이언트의 자원에 접근하지 못 한다. 현재 실버라이트를 다운로드 해서 실행하고 있는 컴퓨터의 웹 브라우저에서 할당받은 메모리 이외에 메모리 자원이나 파일 시스템과 같은 클라이언트의 리소스에 접근 할 수 있다.

- 네트워크를 이용할 때 실버라이트를 다운로드 받은 사이트에만 접근할 수 있다.


실제 작업을 하다 보면 하나의 실버라이트 프로그램에서 여러 사이트의 데이터를 가져와야 할 경우가 있는데 지금은 그런 형태의 작업을 지원하지 못한다. 앞에서 말한 센드박스 보안모델에 걸리기 때문이다. 실버라이트 2.0에서는 이를 다소 완화 시켜서 실버라이트에게 좀 더 나은 융통성을 제공해 줄 예정이다.


<표3> 실버라이트 버전과 WPF의 기능 비교



익스프레션 블렌드와 비주얼 스튜디오 2008



실버라이트가 버전 업 되면서 이를 지원하기 위한 툴도 함께 버전 업 되고 있다. 먼저 디자이너를 위한 툴인 익스프레션 블렌드가 차근차근 버전업 되어가고 있다. 익스프레션 블렌드는 1.0에서는 실버라이트2.0이 지원되지 않는다. 익스프레션 블렌드2의 정식판에서 부터 실버라이트 2.0을 정식으로 지원하는데 지금 나와 있는 프리뷰 버전에서도 실버라이트 2.0과 관한 모습을 볼 수 있다.


익스프레션 블렌드2의 최신 버전은 글을 쓰고 있는 현재 September 버전이 가장 최신 버전이다. September 버전에 이르러서야 비주얼 스튜디오와 완전한 궁합을 맞추는데 성공했다. 실버라이트는 지금도 계속 발전하고 있는 기술이기 때문에 항상 최신버전의 툴을 받아서 사용해야 한다. 실버라이트 공식 사이트(http://www.silverlight.net)의 GET STARTED 메뉴를 정기적으로 지켜봐야 한다.


사실 익스프레션 블렌드는 WPF를 위한 디자인 툴이라는 목적을 최우선으로 개발되었다. 그래서 실버라이트를 위한 기능은 계속 추가되고 있는 중이다.


<화면2> 익스프레션 블렌드 Create New Project


<화면 2>와 같이 익스프레션 블렌드 September Preview 버전을 설치하고 새로운 프로젝트를 만들 수가 있는데 사용자는 네 가지 프로젝트 중에 한 가지를 선택해야 한다.


- WPF Application
- WPF Control Library
- Silverlight Application (JavaScript)
- Silverlight Application (.NET “Orcas”)


결과를 보면 사이좋게 WPF를 위한 프로젝트 두 가지와 실버라이트를 위한 프로젝트 두 가지가 준비되어 있는 것을 볼 수 있는데 WPF를 위한 기능은 WPF 응용 프로그램을 바로 만들 수 있는 기능과 공통적인 기능을 따로 뽑아서 컨트롤로 만들 수 있도록 지원하는 WPF 컨트롤 라이브러리를 위한 프로젝트가 있다.


WPF를 위한 기능은 사실상 하나의 WPF를 위한 기능이지만 실버라이트를 위한 프로젝트는 각기 다른 버전의 실버라이트를 만들기 위한 기능이다. Silverlight Application(JavaScript)을 선택하면 자바스크립 기반으로 프로그래밍 해야 하는 프로젝트가 생성되는데 이때 선택되는 버전이 실버라이트 1.0 기능이다. Silverlight Application(.NET “Orcas”)을 선택하면 실버라이트 2.0(아직 내부적으로는 1.1)을 위한 프로젝트이다.


대부분의 닷넷 개발자와 웹 개발자들은 생산성과 성능 면에서 우수한 .NET 기반의 프로그래밍을 선호 할 것으로 여겨지기 때문에 Silverlight Application(.NET “Orcas”)을 선택해서 실버라이트 2.0으로 작업을 할 것으로 보인다.


익스프레션 블렌드 UI를 미려하게 디자인할 수 있는 디자인 툴이라고 한다면 소스 코드를 코딩할 수 있는 개발 툴은 비주얼 스튜디오 2008을 선택할 수 있다. 실버라이트 2.0이 스캇 블로그에서 볼 수 있듯이 닷넷 프레임워크 3.5를 기준으로 하고 있기 때문에 사용할 수 있는 개발 툴은 비주얼 스튜디오 2008 외에는 선택의 여지가 없다. 물론 메모장과 Microsoft Silverlight SDK만 가지고도 개발은 할 수 있지만 이건 바늘로 코끼리 사냥하는 것처럼 무모한 도전이다. 물론 바늘로도 죽을 때까지 찌르다 보면 언제가 코끼리는 죽는다.


아무튼 비주얼 스튜디오 2008을 설치하고 실버라이트 작업을 하기 위해서 새 프로젝트를 선택해 보면 실버라이트 프로젝트 템플릿이 없을 수도 있다. 이는 비주얼 스튜디오는 이미 출시가 확정된 개발 완료 제품인데 비해서 실버라이트는 계속 만들고 있는 제품이기 때문에 비주얼 스튜디오 2008에 실버라이트 관련 기능은 기본 구성에 포함되어 있지 않다.


비주얼 스튜디오에서 실버라이트 관련 기능을 사용하기 위해서는 실버라이트 공식 사이트에서 Microsoft Silverlight Tools for Visual Studio 2008을 다운로드 해서 별도로 설치해야 한다.


여기까지 준비 되었으면 다시 비주얼 스튜디오 2008을 실행시켜 보면서 실버라이트와 관련된 기능이 나타나는 것을 볼 수 있다. 여기서 한 가지 짚고 넘어가야 할 사실이 있는데 실버라이트 2.0에 포함되어 있는 닷넷 프레임워크와 WPF에서 사용하는 닷넷 프레임워크는 완전히 다른 것이라는 점이다. WPF에서 사용하는 닷넷 프레임워크는 완전한 형태의 닷넷 프레임워크 3.0 혹은 3.5 버전이 사용될 수 있는 반면에 실버라이트에서 사용하는 닷넷 프레임워크는 닷넷 프레임워크 3.5의 기능들을 중심으로 중요한 기능들 위주로 별도로 가볍게 구현한 닷넷 프레임워크라는 점이다. 물론 소스 차원에서는 어느 정도 비슷한 기능들은 호환되지만 어셈블리 차원에서 보면 이 둘은 서로 호환되지 않는다.


닷넷 프레임워크 3.x 버전의 설치 파일은 50메가 정도 되는데 비해서 실버라이트용 닷넷 프레임워크는 4메가 남짓이다.


<화면3> 비주얼 스튜디오 2008의 실버라이트 지원


실버라이트용 닷넷 프레임워크는 웹상에서 실행되고 있지만 운영체제나 브라우저에 상관없이 실행되는 것을 목표로 개발되었기 때문에 특별히 크로스 플랫폼용 닷넷 프레임워크라고 부르기도 한다.


실버라이트 2.0은 아직 정식 제품이 나와 있지 않다. 대신 비슷하게 맛을 볼 수 있는 실버라이트 1.1 Refresh Alpha 버전을 이용할 수 있다. 지금 닷넷 기술을 이용하는 실버라이트 2.0을 사용하기 위한 조합은 이렇게 추천한다.


-Windows XP Service Pack 2 이상의 운영체계(필수)
-Microsoft Visual Studio 2008 한글 베타2(필수)
-Microsoft Silverlight 1.1 Tools Alpha for Visual Studio 2008(필수)
-Microsoft Expression Blend 2 September Preview(필수)
-Microsoft Expression Encoder
-Microsoft Expression Design



실버라이트 2.0 프로젝트 시작하기



실버라이트 2.0을 시작하기 위해서는 기본적으로 필요한 파일들이 있다. 기본적으로 꼭 필요한 파일들은 TestPage.html, TestPage.html.cs, Page.xaml, Page.xaml.cs, Silverlight.js 등등이다.



TestPage.html


실버라이트 파일을 로드해서 실행하는 HTML 파일이다. 별 내용은 없고 단순히 실버라이트를 로드하기 위한 기본 페이지 정도의 역할만 한다. TestPage.html에서 제일 중요한 요소는 자바 스크립트 파일을 지정하는 부분이다.


<리스트 1> TestPage.html


















<리스트 1>에서 눈 여겨 봐야 할 부분은 자바 스크립트 파일을 포함하는 지시자가 있는 다음 두 줄의 내용이다.



이 두 줄에 의해서 자바 스크립트 파일인 *.js 파일 두 개가 로드 된다.


또 눈여거 봐야 할 부분이 바로 createSilverlight() 함수다. createSilverlight()는 실제로 실버라이트를 로드 하는데 필요한 옵션을 주고 실버라이트를 로드시키는 역할을 하게 되는데 TestPage.html.js 파일에 정의 되어 있다.



TestPage.html.js


TestPage.html에서 참조되어 있는 파일로 실질적으로 실버라이트의 Page.xaml을 로드 할 수 있도록 해준다.


<리스트 2>TestPage.html.js

// JScript source code

//contains calls to silverlight.js, example below loads Page.xaml
function createSilverlight()
{
Silverlight.createObjectEx({
source: "Page.xaml",
parentElement: document.getElementById("SilverlightControlHost"),
id: "SilverlightControl",
properties: {
width: "100%",
height: "100%",
version: "1.1",
enableHtmlAccess: "true"
},
events: {}
});

// Give the keyboard focus to the Silverlight control by default
document.body.onload = function()
{
var silverlightControl = document.getElementById('SilverlightControl');
if (silverlightControl)
silverlightControl.focus();
}
}


<리스트 2>에서 source 항목은 로드할 실버라이트의 XAML 파일을 지정한다. 여기서는 Page.xaml로 지정되어 있다. 두 번째로 HTML 객체로서 활용될 때 실버라이트의 이름을 부여하는 항목으로 id가 있다. 여기서는 ‘SilverlightControl’로 지정되어 있다. 한 페이지에 실버라이트가 하나 있을 때는 상관없지만 하나 이상의 실버라이트가 존재할 때에는 아이디를 개별적으로 지정해 주어야 한다.


properties 항목은 세세한 속성을 지정하게 되는데 width, height, version과 같은 실질적인 옵션을 지정할 수 있게 해 준다. 버전은 현재 1.1로 지정되어 있는데 정식 버전으로 출시되게 되면 2.0으로 버전이 올라가게 될 예정이다.


enableHtmlAccess 항목은 기본적으로 True로 설정되어 있는데 실버라이트에서 Html을 DOM형식으로 접근할 수 있는지 여부를 설정하는 대목이다. 실버라이트에서 HTML객체로 혹은 HTML에 있는 자바 스크립트를 이용해서 실버라이트에 접근하는 두 가지 모두 사용될 수 있다.



Page.xaml


실버라이트의 레이아웃을 가지고 있는 XAML파일이다. 실제 운영될 때 직접적으로 파싱되는 부분인데 현재 제공되고 있는 1.1버전의 실버라이트에서는 레이아웃 컨트롤로 오로지 Canvas만 제공된다.


<리스트 3>Page.xaml

xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Loaded="Page_Loaded"
x:Class="SilverlightProject1.Page;assembly=ClientBin/SilverlightProject1.dll"
Width="640"
Height="480"
Background="White"
>


<리스트 3>에서 보면 Loaded라는 항목이 보이는데 XAML에서 표현하고 있는 일종의 이벤트 핸들러다. 즉 지금 작성하고 있는 실버라이트 프로그램의 Loaded라는 이벤트에 대한 핸들러를 지정하고 있는 것으로써 여기서는 Page_Loaded라는 이름의 메서드를 지정하고 있다.



Page.xaml.cs


아마도 이 부분이 실버라이트 1.0과 2.0(1.1)을 구별하는 요소라고 해도 과언은 아니다. Page.xaml.cs 파일은 여러분이 C# 프로젝트 형태로 작업했을 때 생성할 수 있는 파일로 VB.NET으로 작업을 했다면 Page.xaml.vb 파일이 생성되었을 것이다. 아무튼 Page.xaml.cs에서는 실질적인 프로그램을 하는 파일로 아마도 실버라이트를 사용하는 개발자들이라면 가장 많은 시간과 공을 들여서 작성하게 되는 파일일 것이다.


<리스트 4> Page.xaml.cs

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SilverlightProject1
{
public partial class Page : Canvas
{
public void Page_Loaded(object o, EventArgs e)
{
// Required to initialize variables
InitializeComponent();
}
}
}


<리스트 4>의 내용을 보면 <리스트 3>에서 지정한 Page_ Loaded()를 볼 수 있다. 초기화 작업을 하거나 하는 작업은 모두 Page_Loaded() 에서 다 해결할 수 있을 것이다.


Silverlight.js


가장 복잡한 자바 스크립트 파일이다. MS가 기본으로 제공해주는 파일로 사용자가 직접 편집하거나 다루는 파일은 아니다. 이 파일을 열어보면 두 가지 이유로 놀라게 된다. 첫째는 그 파일이 자바 스크립트 치고는 제법 어렵게 되어 있다는 점이다. 꽤 복잡하고 많은 스크립트가 있는데 한 줄로 되어있는 점이다. 아마도 필자 생각에는 줄 바꿈 문자를 줄여서 네트워크 트래픽을 줄이려는 베려가 아닌가 하고 생각해 봤다.


실버라이트를 사용하기 위해서 필요한 파일들을 살펴보았는데 생각보다 많은 파일이 있어서 다소 혼란스러울 수 있을 거라는 생각도 든다. 하지만 여러분이 홈페이지 하나를 만들어도 모든 HTML 스펙을 다 알고 만들지 않는 것처럼 대충 개념만 잡고 있으면 된다. 나머지는 모두 툴이 알아서 처리해 주도록 되어 있다. <화면 4>에서처럼 비주얼 스튜디오 2008과 필요한 파일들이 설치되어 있으면 실버라이트 작업을 할 수 있는 프로젝트 템플릿을 볼 수 있다. 이 프로젝트 템플릿을 선택하고 들어가면 위에서 설명했던 파일들은 이미 다 알아서 생성해 놓을 것을 볼 수 있다.


<화면4> 자동 생성된 실버라이트 프로젝트



실버라이트로 만들어 보는 시계 예제



실버라이트의 가장 많은 예제 중에 하나가 바로 시계 예제가 아닌가 한다. 그 중에서도 아날로그 시계 예제가 특히 많다. 그 이유는 기존에는 아날로그 시계를 만들려면 반드시 필요한 것이 바로 삼각함수에서 라디안 값을 구해서 각도별로 객체의 이동 위치를 수학으로 풀어써야 하기 때문에 코딩이 어려워서 라기 보다는 수학이 싫어서 시계 샘플이 그렇게 많지 않았다. 하지만 실버라이트에서는 삼각함수 없이 단순히 시계 바늘이 회전해야 할 각도만 구현해 주면 나머지는 모두 실버라이트 엔진이 알아서 처리해 준다. 그럼 각도는 어떻게 구할 수 있을까? 조금만 생각해 보면 정말 쉽다는 것을 알 수 있다. 초등학교만 정상적으로 졸업하신 분이라면 모두 구할 수 있는 공식으로 풀어 낼 수 있다.


먼저 원은 360이니깐 현재 시간에 바늘의 각도를 구하려면 나눗셈만 하면 된다.


360 / 12 = 30


즉 시간당 30도씩만 회전시키는 걸로 시침의 각도를 정할 수 있다. 예를 들어 3시이면 3 * 30 = 90 즉 3시면 바늘을 12시에서 90도 돌린 결과가 되는 것이다.


같은 방법으로 계산한다면 분이나 초침의 각도를 구하는 것도 너무 쉬운 일이 될 것이다. 먼저 디자인을 하기 위해서 Page. xaml에서 마우스 오른쪽 버튼을 누르면 Open in Expression Blend라는 메뉴가 나온다. 이 항목을 선택하면 바로 익스프레션 블렌드를 실행시켜서 해당 XAML 파일을 편집할 수 있는 것을 볼 수 있다.


<화면5> 실버라이트 시계 예제


<화면6> 비주얼 스튜디오와 익스프레션 블렌드


전체 소스는 지면상 모두 보여 드릴 수는 없어서 이달의 디스켓으로 제공해 드리게 되었으니 참조하길 바란다.



새해의 좋은 선물 실버라이트 2.0



실버라이트와 플렉스 그리고 자바의 JavaFX와 같은 기술들이 제각각 장점을 가지고 2008년의 RIA시장을 풍성하게 할 예정이다. 기존의 대안이 없는 시장에서 실버라이트 1.0은 부족한 모습으로 충분한 가능성을 보여 주었다. 그래서인지 실버라이트 2.0에 거는 기대는 더없이 크다. 지금 플렉스와 실버라이트 1.0으로 고생하시는 분들에게 지금 당장 실버라이트 2.0을 사용하라고 감히 말씀드리고 싶다. 그리고 그것이 2008년을 여는 훌륭한 새해 선물이 될 것이다.




제공 : DB포탈사이트 DBguide.net

출처명 : 한국마이크로소프트 [2008년 1월호]

반응형