태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

실버라이트3, 그리고 OOB

Posted at 2009/11/14 22:44// Posted in MSP

지난 3월, 마이크로소프트의 컨퍼런스인 MIX09(http://live.visitmix.com/)가 라스베가스에서 개최되었습니다. 작년 MIX08에 이어, 올해도 재미있고 굵직굵직한 이슈들이 많이 발표되었다고 하네요.

특히, MIX09 주제가 ‘The Next Web Now’ 인 만큼 실버라이트 3 베타버전 공개와 함께, IE8의 정식 릴리즈, Expression3와, 새로운 프로토타입 설계툴인 SketchFlow가 공개되는 등 굵직굵직한 라인업 또한 많았습니다.

MIX09의 모든 키노트는 인터넷을 통해 공개되어 있으니, 한번 짬짬이 보시는 것도 좋을 것 같습니다.(언어의 압박이 조금…) 또, 한국 MS의 에반젤리스트들의 블로그에도 MIX09와 관련된 정보들과 후기들도 많이 올라와있으니 한번 둘러보세요 : )

MIX09 키노트 다시보기
UXfactory MIX09 실황중계
준서아빠가 생각하는 행복한 UX이야기 

이 글에서는 MIX09에서 나왔던 수 많은 이슈들 중에, 실버라이트3에서 새롭게 선보일 기능인 Out of Browser(이하 OOB)에 대해서 Adobe AIR 개발자 시각으로 어떤 점이 다른지에 대해 다루어 보고자 합니다.

OOB와 AIR의 차이점에 대해 말씀드리기 전에 우선, 실버라이트3의 새로운 기능들에 대해 간략히 정리해보겠습니다.

  • Media의 변화
    실버라이트3에서는 H.264, AAC, MP4 코덱이 지원됩니다. 또, 제한적으로 GPU가속이 지원됩니다.

  • Perspective 3D
    드디어 실버라이트3에도 3D가 공식적으로 지원된다고 하네요. 다만, 이번 플래시 10 처럼, 3D공간에 2D의 물체를 올려놓고, x,y,z축 정도만 바꿀수 있는 정도라고 하네요.

  • 픽셀 셰이더 지원
    런타임 단계에서, 픽셀 셰이더를 이용해 컨트롤에도 효과를 줄 수 있습니다. 어찌 보면, 플래시의 픽셀벤더와 상당히 흡사하다고 볼 수 있는데요. 픽셀셰이더는 HLSL이라는 bytecode를 사용하고 있습니다. 실버라이트3에는 기본적으로 제공되는 효과는 블러와 드롭쉐도우 정도만 있다고 하네요.

  • 픽셀API / 그래픽 가속도 지원
    동적으로 비트맵을 생성하고, 편집과 효과를 줄 수 있는 픽셀 API가 추가되었습니다. 그리고, 컨트롤러에 에니메이션 가속도 효과를 지정해 줄 수 있는 함수들도 추가되었습니다.

  • 오디오/비디오 API 추가
    동적으로 오디오를 생성하고(FP10의 SamplesCallbackData와 흡사), 동적으로 오디오/비디오 코덱을 작성할 수 있는 API가 추가되었습니다. 

  • 로컬커넥션 지원 
    실버라이트 플러그인 간 데이터 통신이 가능해 졌습니다. 그간 플래시에서 데이터를 공유하는 방식처럼, 로컬의 메모리를 통해 문자열 데이터들을 공유할 수 있습니다. 다른 브라우저나, 탭에서도 공유가 가능하다고 하는데, 보안 샌드박스 적용이 어떻게 되어있을지 궁금하네요.. ^^;; 

  • Out of Browser
    영어 뜻 그대로 브라우저를 떠나서, 웹을 떠나 데스크탑에서 실버라이트 애플리케이션을 구동하는 기능입니다. OOB를 위해 온/오프라인 API, 업데이트 API등을 지원합니다.

MIX09 키노트 직후 실버라이트3 베타의 SDK와 런타임 모두 공개되었습니다. 아래의 경로에서 내려 받아 바로 개발해 보실 수 있습니다. 다만, 실버라이트3 SDK는 영어와 일본어만 지원하기 때문에, 한국어 Visual Studio에서 개발하시는 분은, 영어판으로 새로 내려 받아 설치하셔야 합니다.

실버라이트3 SDK
실버라이트3 런타임

위에서 살펴본 실버라이트3의 새로운 기능들 이외에도, 새로운 UI Framework 및 컨트롤, 로컬파일저장 지원(보안샌드박스 유의), 텍스트엔진 향상, 검색엔진 최적화 지원 등의 많은 기능들이 추가되었습니다. 실버라이트3는 어찌보면, 작년 10월경에 출시된 Flash Player10 의 새로운 기능들의 집약판이라고 볼 수 있겠네요. ^^;; 정말 비슷비슷하죠?

저는 실버라이트3의 새로운 기능들 중 하나인 OOB에  대해 제일 처음엔 궁금한 점이 많았습니다. OOB는 웹상의 애플리케이션을 데스크탑 애플리케이션으로 확장하는 기능인데요. 사실, OOB와 비슷한 역할을 하는 데스크탑 플랫폼인 WPF가 오래전 부터 나와 있었고, 사실상 실버라이트는 WPF에 종속된 개념이기 때문이죠.

WPF는 Windows Presentation Foundation의 준말입니다. 약어일 땐 잘 몰랐는데, 풀어 쓰니 대충 무슨 뜻인지 아시겠죠? ㅎㅎ 저는 남자라 파운데이션을 써본 적이 없지만, 파운데이션은 모든 화장에서 기초가 된다고 하네요. WPF는, 당시 Winapi 별로 달랐던 여러 API들을 닷넷 프레임워크로 통일하는 것을 목표로 하고 있었습니다. 즉, WPF로 개발된 애플리케이션은 닷넷 프레임 워크가 설치가 가능한 모든 윈도우 플랫폼에서는 동일한 환경으로 실행되게 됩니다.

WPF 애플리케이션은 XAML이라는 마크업 언어로 사용자 인터페이스를 구상 할 수 있으며, 개발언어는 C#이나 VB.NET, J#로 개발 할 수 있습니다. 다만, WPF의 핵심 엔진인 닷넷 프레임워크가 윈도우 플랫폼 이외에는 지원하지 않기 때문에, AIR 애플리케이션과는 달리 윈도우 이외의 운영체제에서는 WPF 애플리케이션을 구동 할 수 없습니다.

그럼 다시 실버라이트 얘기로 돌아가 볼까요? 실버라이트는 정식 출시이전 코드네임이 WPF/e(Everywhere) 였습니다. WPF에 어디서나 라는 조건이 덧 붙었는데요. 실버라이트는, WPF 애플리케이션을 개발할 때처럼, XAML 마크업 언어로 애플리케이션의 사용자 인터페이스를 구상하고, 닷넷 프레임워크가 지원되는 언어로 개발 할 수 있습니다. 다만, WPF에서 제공하는 몇몇 기능들은 보안 샌드박스로 제한을 둔 대신, 윈도우 플랫폼 이외에도 다른 운영체제도 지원한다는 점이 있습니다.

즉, 실버라이트의 모체는 뺄 건 빼고, 줄인 건 줄여서 모든 플랫폼(Everywhere)에서 구동되는걸 목표로 하는 WPF와 같습니다. 최근엔, 윈도우 모바일 6.0 환경에서 구동되는 실버라이트 2.0도 출시되었다고 하네요.  


OOB와 AIR

Adobe AIR는 크로스 플랫폼을 지향하는 런타임으로 현재 윈도우와 맥을 공식적으로 지원하고 있으며 리눅스는 비공식적으로 지원하고 있습니다. Adobe AIR는 플래시플랫폼에 묶여있고, 플래시나 플렉스, AJAX로 애플리케이션을 개발할 수 있지만 플래시플레이어에서 구동 되는 것은 아닙니다. 반드시 별도의 런타임이 필요합니다.

반면, 실버라이트3 OOB는 실버라이트 플레이어에가 설치되어 있는 사용자라면 별도의 런타임 설치 없이 이용할 수 있습니다. 또, 데스크탑에 설치하여 계속해서 사용할 수 있지만 WPF와는 달리 크로스플랫폼을 지원하고 있습니다.

즉, 추가 런타임 필요여부가 실버라이트3 OOB와 Adobe AIR의 가장 큰 차이점 이라고 볼 수 있습니다.  어도비AIR의 경우, 플래시플랫폼에 속해있고, 언어나 개발툴도 그대로 활용할 수 있지만,  브랜딩네임은 플래시와 다른점에서 알수 있습니다. 이처럼 실버라이트3 OOB와 Adobe AIR를 단일선상에 놓고 비교하는 것은 다소 무리가 있습니다.


개발과 배포

실버라이트3 OOB와 AIR는 애플리케이션을 개발하고 배포하는 과정부터 차이점이 많습니다. Adobe AIR는 플렉스빌더(플래시 빌더), 플래시 IDE, 드림위버 등에서 개발 할 수 있으며, 별도의 개발툴 없이 AIR SDK를 내려받아 개발을 진행할 수 있습니다. AIR SDK는 AJAX개발자용, 플렉스 개발자용으로 나뉘며, 개발 후 ADL을 통해 애플리케이션을 실행해 볼 수 있고, ADT를 통해 애플리케이션을 디버깅 할 수 있습니다.

반면, 실버라이트3는 OOB 구현을 위해 별도의 SDK를 내려 받을 필요는 없으며, 실버라이트3 SDK만 있으면 개발을 진행할 수 있습니다. 마찬가지로, 디버깅이나 애플리케이션을 실행하기 위해서도 별도의 런타임을 내려 받을 필요는 없으며, 실버라이트3 개발에 사용된 디버깅 플레이어를 그대로 사용할 수 있습니다.

다만, 실버라이트 애플리케이션을 OOB를 포함해 배포하기 위해서는 반드시 애플리케이션의 메니페스트 파일을 수정해주어야 합니다. 애플리케이션 메니페스트 파일은 실버라이트 프로젝트의 Properties폴더에 있으며, 파일명은 AppManifest.xml입니다.

애플리케이션 메니페스트 파일을 열면, 주석으로 지정된 부분이 있는데, 이 부분이 실버라이트 애플리케이션을 OOB로 함께 배포하겠다는 것을 설정해 주는 부분입니다. 이 부분의 주석을 제거하고 프로젝트를 Export하면, 실
버라이트 애플리케이션을 데스크탑에 설치할 수 있는 OOB 기능이 함께 첨가되어 배포됩니다.

사용자 삽입 이미지

반면, Adobe AIR는 애플리케이션을 배포하기 위해 단일 설치파일인 AIR 파일을 생성하는 패키징이라는 과정을 거쳐야하는데, 이 과정에서 반드시 공인된 CA기관으로 부터 발급받거나, 스스로 만든 인증서 파일로 서명 절차를 거쳐야 합니다. 서명 절차를 거치면, 디스크립터파일과 함께 프로젝트에 사용된 에셋파일등도 함께 묶인 단일 설치파일인 AIR파일이 만들어지게 됩니다.

그리고, AIR와 실버라이트3 OOB 모두 배포 과정중에서 데스크탑에 설치될 애플리케이션의 부가 기능을 설정 할 수 있는데, AIR는 애플리케이션의 아이콘이나 연결될 파일, 윈도우설정등은 디스크립터 파일에서 설정 할 수 있고, 실버라이트3 OOB는 창의 타이틀이나 애플리케이션의 아이콘은 애플리케이션 메니페스트 파일에서 설정 할 수 있습니다.


설치와 삭제

앞서 배포과정에서 살펴본 것 처럼, AIR 애플리케이션은 단일 설치파일 형태인 AIR로 배포가 되며, 실버라이트 OOB는 기존 실버라이트 파일과 같은 XBP 파일로 배포되거나, 서버사이드에 컴파일러를 설치해 XAML파일로 배포할 수 있습니다.

즉, 실버라이트3에서 OOB를 포함해 배포한 애플리케이션은 별도의 런타임이 필요없고, 웹 상에서도 실행이 가능합니다. 반면 Adobe AIR는 반드시 AIR 런타임이 설치되어 있어야 합니다.

실버라이트 애플리케이션을 OOB를 포함해 배포한 경우, 실버라이트 스테이지 범위 내에서 오른쪽 마우스를 누르면 실버라이트 구성 아래에 Install 이 활성화 된 것을 확인할 수 있습니다. Install 버튼을 누르면, 애플리케이션의 단축아이콘이 추가될 곳을 묻는 창이 나오게 됩니다. 여기서 OK를 누르면 설치과정을 모두 마치게 됩니다.

반면, AIR 애플리케이션은 단일 설치파일인 air 파일을 직접 내려 받아 설치하거나, 플래시로 만들어진 AIR 배지를 통해서 설치를 할 수 있습니다. AIR 배지는 SDK 내에 포함되어 있으며, 직접 커스트마이징을 할 수 있고, 브라우저 API를 이용해 새롭게 개발 할 수 있습니다. AIR 배지를 이용해 설치할 경우, 클라이언트에 AIR 런타임이 없더라도, AIR 런타임과 함께 애플리케이션을 설치 할 수 있습니다. 그리고, 실버라이트3 OOB와는 달리, 몇번의 설치 과정을 거쳐야 하며, 이 과정중에서 AIR 애플리케이션에 서명된 인증서 종류에 따라 사용자에게 경고메세지를 알려주기도 합니다.

그리고, 실버라이트3 OOB도 AIR 배지처럼 API를 호출하여 오른쪽 마우스 설치방식이 아닌, 버튼을 클릭하여 애플리케이션의 설치를 진행하게끔 할 수 있습니다. 다만 이 경우엔 보안샌드박스에 의해 반드시 사용자의 직접적인 인터렉션에 의해 클릭되었을 경우에 설치 할 수 있습니다.

AIR 애플리케이션과 실버라이트3 OOB 애플리케이션은 설치 과정에선 큰 차이가 있지만, 설치 이후엔 사용자 입장에서 크게 다를 점은 없습니다. 두 애플리케이션 모두 다 크로스플랫폼을 지원하며, 아이콘을 클릭하여 애플리케이션을 실행 할 수 있습니다.

사용자 삽입 이미지

다만, 설치된 애플리케이션을 제거해야 할 경우 실버라이트3 OOB는 앞서 살펴본 것 처럼, 오른쪽 마우스를 눌러 애플리케이션을 제거하거나 API를 호출하여 애플리케이션을 제거하게끔 할 수 있습니다. 반면 Adobe AIR는 별도의 API를 호출하여 애플리케이션을 제거하게끔 할 순 없고, 윈도우 플랫폼의 경우 프로그램 추가/제거에서 제거를 하고, Mac OS는 애플리케이션을 휴지통에 넣어 제거하는 방법으로 제거할 수 있습니다. 그리고, AIR와 실버라이트3 OOB 모두 애플리케이션을 설치하거나, 삭제하는 과정의 인터페이스를 커스트마이징 할 순 없습니다.

덧붙여, 실버라이트 OOB 애플리케이션의 업데이트는 웹상에 올려진 XBP파일에 변화사항이 있으면, 자동으로 진행이 되며, Adobe AIR는 URLStream으로 내려받아 Updater 클래스를 이용해 업데이트를 진행하거나, 이미 구현된 업데이터 프레임워크인 AIR Update Framework(AIR 1.1 SDK부터는 포함되기시작)을 이용해 애플리케이션의 업데이트를 진행 할 수 있습니다.


가장 다른 것 하나

이처럼 실버라이트3 OOB와 AIR는 개발에서 배포, 설치에서 삭제까지 다른 점이 많습니다. 하지만, 가장 다른 점은 구현할 수 있는 기능의 한계에 있습니다.

앞서 눈치(?)채셨겠지만, 실버라이트3 OOB는 사실 웹에서 실행되는 실버라이트 애플리케이션과 구동원리가 같습니다. 즉, 쇼핑몰 바로가기 처럼 단축아이콘을 만들어두고, 별도의 런쳐를 두어 창을 띄우고 그 안에서 실행되는 형태입니다. 즉, 실버라이트3 OOB는 실버라이트3의 브라우저 센드박스 모델을 그대로 적용받고, 그 범위 내에서 벗어나는 기능을 구현 할 수 없습니다.

보안샌드박스라고 하니 조금 복잡해보이나요? 간단하게 정리해보면, OOB는 창을 벗어난 곳 이외에 어떠한 영역도 제어할 수 없습니다. 로컬의 파일의 목록을 불러오거나, 생성할때에도 브라우저 샌드박스 모델에 따라 반드시 사용자의 직접적인 인터렉션이 필요하며, 윈도우를 커스트마이징 하거나, 여러 개의 윈도우를 띄우거나,  클라이언트에 별도의 데이터베이스를 구축할 수 없습니다.

반면, Adobe AIR는 Flash Player와 독자적인 보안 샌드박스를 적용받게 되는데, 따라서 HTTP통신이나 소켓통신을 할 때에도 Phase 파일의 제한에서 벗어날 수 있고, 사용자의 인터렉션 없이 로컬에 파일을 쓰고 지울 수도 있습니다. 아울러, Webkit 엔진을 통해 브라우저 기능을 구현할 수 있고, Sqlite엔진이 탑재되어 로컬에 데이터베이스를 만들어 기록할 수 있습니다.

다만, 실버라이트3는 OOB를 위해 별도의 API를 제공하고 있는데, 앞서 설명한 설치와 제거를 위한 API를 비롯해, 현재 실버라이트 애플리케이션이 실행되고 있는 모델을 알수있는 API와, 온/오프라인 상태를 구분할 수 있는 API도 함께 제공하고 있습니다.

즉, OOB 기능이 포함된 애플리케이션은, API를 이용 실행 모델을 파악해서, 웹에서 실버라이트 애플리케이션을 실행 할때에는 AIR 배지처럼 설치화면만 나타나게 할 수 있고, 데스크탑에 설치될 경우 애플리케이션 기능을 제공하게끔 하는 데스크탑 전용 애플리케이션도 개발 할 수 있습니다. 또 네트워크 상태를 감지하여(AIR의 URLMonitor, SocketMonitor과 흡사) 온/오프라인 애플리케이션을 개발 할 수도 있습니다.


OOB가 스마트폰로 간다면?

OOB는 AIR와 달리 Native API를 지원하지 않고, 실버라이트3에서 구현할 수 있는 API만 사용할 수 있습니다. 그렇다고 해서 실버라이트3 OOB가 AIR에 밀린다고 생각하는 것은  아닙니다. 실버라이트3 OOB가 Native한 제어를 포기한 것은, 크로스플랫폼 지원을 향한 강한 의지를 보여준 것이라고 생각됩니다.

실제로 AIR 런타임의 경우 작년에 FP10이 출시되었을 때, FP10의 출시가 1달여가 지나 FP10의 API와 여러 feature가 포함된 AIR1.5가 릴리즈 된 만큼, 크로스플랫폼을 지향하는 플랫폼의 경우 Native 영역까지 제어하기 위해서는 많은 노력과 개발이 필요합니다. 특히, 플래시 플레이어와 AIR 런타임은 실행 구조(Virtual Machine)부터 다른 만큼 앞으로 플래시 플레이어에서 새롭게 나온 API가 런타임에 반영되어 릴리즈가 되는 시점이 어긋나는 현상은 계속될 것으로 보입니다.

저는 개인적으로, 실버라이트 OOB가 데스크탑에서 주력이 될 플랫폼 보다는 모바일에서 주력이 될 플랫폼으로 생각하고 있는데요.
실버라이트는 웹 플레이어 뿐만 아니라, 모바일용 플레이어도 WM6과 Symbian Platform 한해 2010년 출시를 목표로 하고 있습니다.

모바일 디바이스는 데스크탑 플랫폼에 비해 구현할 수 있는 기능이 종속적이고, 또 샌드박스에 의해 로컬의 제어는 대부분 엄격히 금지되어 있습니다. 또, 일반적으로 휴대전화용 애플리케이션에서는 시스템을 제어해야 할 일
이 많이 필요하진 않습니다. 간단한 휴대폰 게임에서도 세이브를 남기는 일 외에는 로컬을 제어할 부분이 없겠죠?

즉, MS에서는 실버라이트 OOB의 Native 제어를 포기하는 대신, 크로스플랫폼 지원정책을 강화하여 여러 모바일 디바이스에 쉽게 탑재함으로써, 모바일 시장에서 Flash Lite나 WIPI가 잡고 있는 점유율을 추격해 볼 수도 있을 것 같습니다. 또, 개발자는 별도의 임베디드 기술을 배울 필요 없이 실버라이트로 모바일 애플리케이션을 저작하고, Windows Mobile 환경 뿐 아니라 아이폰, 안드로이드 등 여러 플랫폼에 모바일용 애플리케이션을 개발하고 배포할수 있는 것만으로도 큰 메리트로 작용할 수 있을것 같습니다.

윈도우 모바일로 인터넷 탐색을 하면서, 실버라이트 게임을 하는 경우에 대해서 생각해 봅시다. 지금 하고 있는 게임이 마음에 들면, OOB 기능으로 내 휴대폰에 설치할 수 있습니다. 또, 온/온라인 애플리케이션으로 게임의 기록을 실시간으로 주고받고, 게임의 변경사항이 있을경우 자동으로 업데이트도 됩니다. 그리고, MS에서 다양한 모바일플랫폼을 지원한다면, 아이폰에서 실버라이트 게임을 설치하여 할수있을지도 모릅니다. 데스크탑에서 OOB 애플리케이션을 설치하는것보다 훨씬 즐거운일인것 같네요

OOB와 AIR의 경쟁무대를 모바일로 두고보면 상당히 재미있는 경쟁이 될 것 같습니다. 물론 이러한 경쟁에서도 선발주자는 아직 어도비입니다. 어도비는 오래전부터 모바일용 플래시 플레이어인 Flash Lite를 릴리즈해왔고, 올초에 이미, 모바일용 AIR의 일종인 Distributable Player 를 발표한적이 있습니다. 그리고 작년에 발표한, AIR 로드맵의 장기적인 목표는 데스크탑용 애플리케이션을 high feature 디바이스에서도 구동되는것을 목표로 하고 있습니다.
참고글 : AIR 2.0 베일을 벗나?


얼마전, 어도비 AIR는 2억대 클라이언트 설치돌파라는 기염을 토한적이 있었습니다. 물론, 실버라이트도 올림픽을 비롯한 미디어 마케팅에 힘입어 4억대 클라이언트 설치돌파를 하며, 플래시플레어의 독주에 바짝 다가서고 있습니다. 실버라이트3 OOB와 AIR, 과연 둘은 서로 윈윈하는관계가 될까요? 아니면, 모바일계의 혜성으로 서로 양날의 검이 될까요?

크리에이티브 커먼즈 라이선스
Creative Commons License

댓글을 남겨주세요

Name *

Password *

Link (Your Homepage or Blog)

Comment

Secret