2010.02.08 09:40

1.RichTextArea Part 1
2.RichTextArea Part 2
3.Accessing Web Camera and Microphone
4.Right Click Mouse Events

5.MouseWheel API

6.Using Silverlight Controls As Drip Targets
7.DataGrid Enhancements
8.Printing API Basics 
9.Hosting HTML Content

10.Accessing the Global Clipboard Programmatically

11.Using the ViewBox Control

12.Asynchronous Data Validation 
13.BiDi and Right-to-Left Support 
14.Notification API
15.Local File Access 
16.RIA Services support in Visual Studio 2010 

블로그 이미지 김영욱 차장 Microsoft Korea  .NET Evangelist
Enterprise UX 를 위한  UI 기술과 SOA, Cloud Computing, NUI등 다양한 분야의 접목과 응용을 통해 최적의 IT 인프라 구축을 위해서 노력하고 있다.
Email: iwinkey@hotmail.com
Blog: http://winkey.tistory.com

 거듭 강조하는 이야기 중에 하나가 바로 Silverlight 4에서 강화된 부분이 바로 OOB(Out of browser)에 관한 내용이다. OOB를 통해서 Silverlight 4는 단순한 웹 플랫폼이 아니라 Microsoft의 클라이언트 플랫폼으로 정확하게 자리 매김 할 수 있게 되었습니다

 Visual Studio 2008에서는 OOB를 사용하기 위해서는 AppManifest.xml 파일을 직접 편집해 주어야 하지만 Visual Studio 2010을 사용하게 되면 AppManifest.xml을 툴에서 관리하게 되면서 훨씬 작업이 편리해 졌습니다.

<그림1>프로젝트 속성에서 지원이 가능해진 OOB 기능
<그림1>에서 보면 알 수 있듯이 프로젝트 속성에서 바로 OOB 기능을 선택할 수 있으며 옆에 있는 Out of browser setting 버튼을 누르면 <그림2>와 같이 세세한 세팅을 할 수 있는 창이 나타나게 되어 있다.


<그림2>Out of browser setting
그런데 <그림2>에서 보면 못 보던 옵션이 하나 생긴 것을 볼 수 있는데 Require elevated trust when running outside the browser라는 체크 박스가 그것입니다. 단순한 체크 박스 하나로 보기에는 너무 막강하기 때문에 주의해서 사용해야 하는데 이 이유는 이 체크 박스를 선택하는 순간 실행시에 사용자에게 권한 상승을 요구하게 됩니다.
 사용자가 권한 상승을 허가해 주게 되면 그 때 부터는 Silverlight 응용프로그램이지만 로컬의 파일과 API에 접근이 가능하게 된다. Silverlight가 그냥 웹 응용 프로그램을 개발하기 위한 툴이 아니라 Microsoft의 클라이언트 플랫폼이라고 이야기 할 수 있는 근거가 바로 이 체크 박스로 하나로 생길 수 있습니다

 이 글에서 설명하려고 하는 로컬 파일 접근도 이와 같이 권한 상승을 통해서 충분한 권한이 있어야 사용가능 한 기능입니다. 아무튼 이렇게 권한 상승을 하게 되면 로컬 파일에 대한 접근 권한이 생기기 때문에 유의해서 사용하셔야 합니다. 아무리 사용자에게 권한을 요청한다고 해도 좀비와 같은 성향을 보이는 우리네 고객들은 아무생각없이 마구 권한을 승일 해줄 일들이 분명하기 때문입니다.

우선 OOB상태로 실행시키기 위해서 해당 응용프로그램을 로컬에 설치하는 기능을 다음과 같이 한 줄로 추가해야 합니다.

<소스1>Silverlight 응용 프로그램을 로컬에 설치하기 위한 파일

일단 로컬에 설치되고 충분한 권한이 주어진 상태라면 파일을 핸들링 하는 과정은 일반적인 로컬 파일을 다루는 과정과 다를 바 없습니다. 한 가지 재미있는 점은 Enviroment 객체를 추가적으로 사용 할 수 있게 된 점인데 이를 통해서 로컬의 각종 경로들을 확인 할 수 있게 되었습니다.
<소스2>파일 읽기 쓰기

OOB 상태에서 좋은 점이 바로 Cross domain과 관련된 제약이 없어진다는 것이다. OOB를 하게 되면 실행이 로컬 기준으로 바뀌게 되므로 일반적인 Cross domain 제약이 없어지게 된다. 따라서 상당히 편리하게 여러 주소에서 데이터를 모아 오는 것이 가능하게 된다.

<소스3>파일 다운로드 소스
<소스3>에서 볼 수 있듯이 특정한 주소의 RSS를 다운 받는 등의 행위가 자연스럽게 가능하게 되었다. 또 주석으로 처리 된 부분을 보면 mp3 파일을 다운로드 받는 소스도 함께 포함되어 있다.

<소스4>로컬 비디오 목록을 가져오는 소스

설명을 길게 한 듯 하지만 핵심 키워드는 '권한상승'에 있다. ^^

저작자 표시 변경 금지
신고