윈도우8 & WP Tip

[Windows 8] 웹 컨텐츠를 IRandomAccessStream으로 저장하기. Linus 평점: 없음 조회: 2665

원문 : http://ryunad.tistory.com/116

 

안녕하세요. Linus'( Ryunad) 입니다.

닉네임 바꾸고 첫글이네요. ㅋㅋㅋ

오늘 포스팅 할 내용은 웹서버에 있는 컨텐츠(이미지, 파일 등) Windows 8 에서 쓰기 편한 Stream으로 받는 방법을 쓰려고 합니다.

 

HttClient

 

Proxy 객체중 하나인 HttpClient를 통해서 Stream을 얻을 수는 있지만 이것을 WinRT에서 사용하기란 쉽지 않습니다.

왜냐하면 WinRT에서 이미지라던지 MediaElement라던지 하는 놈들이 실제로 Stream 형식보다 IRandomAccessStream 형식을 사용하기 때문이죠.

HttpClient client = new HttpClient();

var result = await client.GetStreamAsync(requestUri);

 [리턴 형식이 Stream이기 때문에 WinRT에서 활용하기 좋지 못함] 

 

RandomAccessStreamReference

 

RandomAccessStreamReferenceIRandomAccessStream을 만드는  다음과 같은 세가지 으로 제공합니다.

·         RandomAccessStreamReference.CreateFromFile(storageFile);

·         RandomAccessStreamReference.CreateFromStream(randomAccessStream);

·         RandomAccessStreamReference.CreateFromUri(uri);

 

그 중 제가 눈여겨 본것은 CreateFromUri 바로 요놈입니다.

CreateFromUri는 자신의 Uri로부터 Stream을 얻어오는데 IRandomAccessStream으로 반환받을 수 있기 때문에 WinRT에서 활용도가 GetStreamAsync보다 높다고 할 수 있습니다.

다음은 웹에 있는 이미지 주소를 넣어주면 Stream으로 받아서 화면에 표시하는 간단한 예제입니다.

 

[웹 이미지를 Stream으로 불러와 이미지 컨트롤에 뿌려주는 간단한 예]

 

 

var imageStream = RandomAccessStreamReference.CreateFromUri(imageUri);

BitmapImage bi = new BitmapImage();

bi.SetSource(await imageStream.OpenReadAsync());

image.Source = bi;

 

이렇게 웹에 있는 데이터를 앱에 저장시켜놓고 사용한다면 인터넷에 연결이 안된 상태이더라도 어느정도는 컨텐츠를 보여줄 수 있을 뿐 아니라 웹에 데이터를 요청하는 횟수도 줄어들어 체감 속도도 올라가 앱성능도 개선되겠죠.

여러분의 앱에서도 이와 같이 웹의 데이터를 저장하는 기능이 필요하다 하시는 분들은 활용해보시기 바랍니다.

감사합니다.

태그 : IRandomAccessStream
작성자 정보
Linus
Level 61
 [EXP.21/250]

메일:  비공개

글등록 +12 1920 덧글등록 +3 1260
자기소개
글 공유하기 |
  tweet facebook
2012-09-07 오전 11:03:00
나도한마디
태그로 엮인글
글리스트
Windows 스토어 앱 개발 가이드 msdn with C#  sky
[windows 8 RT] Tcp Socket Echo Client 파일첨부 Fool
[windows 8 RT] MVVM, Command & Event Aggregation[2] 파일첨부 Fool
[windows 8 RT] Reversi RT 개발 후기 파일첨부 Fool
[windows 8 RT] Wokka Anim 파일첨부 Fool
XP에서 WP7 개발하기...  착한형
HTML 문자열 디코딩하기[1]  Linus
DataTemplateSelector와 StyleSelector 사용하기  Linus
 ★현재글->   [Windows 8] 웹 컨텐츠를 IRandomAccessStream으로 저장하기.   Linus
Windows 8에서 Live SSO 인증하기[1]  Linus
[Window 8] 스터디 4주차 자료입니다.[9]+2  귤신
FlowDirection과 다국어 작업[2]  재선
[Window 8] 스터디 3주차 자료입니다.[3]  귤신
[windows 8] 'blend'를 이용하여 Orientation 이해하기.[3]  dely
윈도우8 앱스토어 등록절차[5]+3  HOONS
[Window 8] 스터디 2주차 자료입니다.[5]+1  귤신
[팁] 맥부트캠프 Windows8 Release Preview & visual studio12 멈춤해결[3] 파일첨부 포민
[팁] Windows 8 Release Preview 설치 VirtualBox vs. Virtual Machine...[2]+1  Boms
텍스트 스타일 참고자료  재선