'Silverlight2'에 해당되는 글 11건

  1. 2008/03/25 웹서비스 호출
  2. 2008/03/16 한 Silverlight Page 내에서 정상작동하는 MediaElement의 개수는 123개다.
  3. 2008/03/14 훈스닷넷 8회 정기 세미나 - 닷넷과 함께하는 차세대 웹 전략 (1)
  4. 2008/03/12 QuadTree (1)
  5. 2008/03/12 Silverlight 2 디버깅 중 중단점 안먹을 때 시도해 볼 것
  6. 2008/03/08 Downloader 대신 WebClient (1)
  7. 2008/03/06 HtmlTimer 대신 뭘 쓰면 될까요? (2)
  8. 2008/03/06 Image.Source는 어떻게 쓰나
  9. 2008/03/06 BrowserHost야 어딜 간거니??? (4)
  10. 2008/03/06 와우!! SeaDragon을 위한 Deep Zoom Composer!!
  11. 2008/03/06 Silverlight 2 Beta1 is available!
2008/03/25 10:53

웹서비스 호출

실버라이트 1.1

어디선가 아래와 같이 비동기 호출을 하면, 가수 '비'의 동기가 나오지는 않죠? (^^;;; 죄송합니다.)

// mySvc : 웹 레퍼런스로 등록한 이름
mySvc.MyWebService1 svc = new mySvc.MyWebService1();
AsyncCallback cb = new AsyncCallback(MyMethodCallback);
svc .BeginMyMethod(myParam1, myParam2, ... , cb, svc);

메서드가 수행된 후 아래와 같이 비동기 호출 콜백 함수(MyMethodCallback)가 수행되면서
EndMyMethod로부터 수행 결과를 받아써야 했습니다.

public void MyMethodCallback(IAsyncResult ar)
{
    // mySvc : 웹 레퍼런스로 등록한 이름
    mySvc.MyWebService1 pf = (mySvc.MyWebService1)ar.AsyncState;

    // 수행 결과

    string[] array = pf.EndMyMethod(ar);
    ShowResult(array);
}

실버라이트 2

실버라이트 2에서는 이벤트 방식으로 변경이 되어, 일관성 있어지고, 사용이 쉬워졌습니다.

일단 Web Reference 가 Service Reference로 개념이 바뀌었습니다.
만든 Web Service를 Add Service Reference 하셔서 쓰시면 됩니다.

자신이 등록한 WebService Class 이름을 namespace로 하는 *SoapClient 인스턴스를 만들어 사용합니다.

// MyWSProject : 웹서비스 프로젝트 네임스페이스
// MyWSClass : 웹서비스 클래스

mySvc.MyWSClassSoapClient svc = new mySvc.MyWSClassSoapClient ();
svc.MyMethodCompleted += new EventHandler<MyWSProject.MyWSClass.MyMethodCompletedEventArgs>(_svc_MyMethodCompleted);
svc.MyMethodAsync(myParam1, myParam2, ...);

그럼 아래 이벤트 핸들러에서 결과를 받아서 씁니다.

void svc_MyMethodCompleted(object sender, MyWSProject.MyWSClass.MyMethodCompletedEventArgs e)
{
    // 수행 결과 에러 또는 취소 판단이 가능 
    if (e.Error != null || e.Cancelled == true)
        return;

    // 수행 결과 (e.Result)
    ShowResult(e.Result.ToArray());
}


 

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0

Trackback : http://gilverlight.net/trackback/2786 관련글 쓰기

2008/03/16 01:56

한 Silverlight Page 내에서 정상작동하는 MediaElement의 개수는 123개다.

리듬잇 같은 BMS류의 게임을 Silverlight로 제작하다가 발견한 문제입니다.
예를 들어 어떤 곡에서 270여 개의 음원을 사용하는 이유로,
이 음원에 대한 MediaElement를 미리 270개 생성해 놓고 사용하고자 하였습니다.
그 곡을 재생시켜보자 군데군데 연주되지 않는 음이 발견되었습니다.

왜그런가 테스트를 해보다가 123번째 MediaElement 이후에 생성된
MediaElement들은 Play() 메서드가 제대로 작동하지 않는 것을
발견하였습니다.

시뮬레이션

다음은 직접 문제를 체험해 볼 수 있는 샘플입니다.
스피커를 켜고 테스트를 해 보십시오.



소스

아래 링크를 클릭하여 다운받으십시오.


실험의 결론

Silverlight 2 Beta1에서는 123개 이하의 MediaElement만 만들어 사용해야 합니다.
123개 이상의 MediaElement가 필요한 경우에는 이미 생성해 놓은 MediaElement를
Source만 변경하여 재활용해야 합니다.

예를들어 한 Silverlight Page 내에 123개를 초과하는 동영상, 음악이 존재하는 경우에는
초과분에 해당하는 미디어는 재생을 시킬 수 없습니다.

다른 테스트를 통해 다음과 같은 사실도 추가적으로 알 수 있었습니다.

1) XAML에 <MediaElement ...> 형태로 추가를 해도 124번째부터는 작동을 안 합니다.
2) MediaElement마다 서로 다른 Source를 입력해 주어도 결과는 같습니다.

원인이 무엇인지 궁금합니다.
원인에 따라 차후에 발표되는 Beta2나 정식 릴리즈에서
개선될 수도 있고, 개선되지 않을 수도 있겠네요.

포럼 피드백

실버라이트 포럼에도 같은 글을 게시해 놓고 피드백을 기다리고 있습니다.
http://silverlight.net/forums/t/11735.aspx
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0

Trackback : http://gilverlight.net/trackback/2775 관련글 쓰기

2008/03/14 10:33

훈스닷넷 8회 정기 세미나 - 닷넷과 함께하는 차세대 웹 전략

훈스닷넷에서 오랫만에 정기 세미나를 여네요. 그간 UX 커뮤니티 세미나에서도 매번 100여명 이상의 많은 분들이 열정적인 모습을 보여주셨는데요, 훈스닷넷에서는 UX 커뮤니티 세미나가 끝난 후에도 정기적인 세미나를 준비할 예정이에요.

이번 세미나에서는 MIX08 이후 열리는 최초의 커뮤니티 세미나로 특히 실버라이트 2.0에 대한 소개와 간단한 데모가 있을 예정이니 많은 참여바래요. :)

http://www.hoons.kr/seminarJoin.aspx
 

8회 정기세미나
- 일시 : 2008년 03월 15일(토) 13시 00분
- 장소 : 한국마이크로소프트 (포스코 센터 5층)
- 참가비 : 무료
- 세미나 신청: http://www.hoons.kr/SeminarJoin.aspx 
 
세미나 Agenda
13:00~13:30
등 록
13:30-14:10
개발자를 위한 SQL Server 2008의 소개 / 이수겸
14:10-15:00
2008 MIX를 통하여 정리해보는 차세대 웹의 전략 / 김대우 박경훈
15:00~15:20
휴식
15:20~16:00
Jump to LINQ / 김수영,김시원
16:00~16:40
ASP.NET 3.5의 소개 / 서동진
16:40~17:00
휴 식
17:00~17:40
실버라이트 2.0 Now!  / 공인석,오일석
17:40~18:00
Live Q&A / 발표자
18:00~
경품추첨
발표 내용 소개

개발자를 위한 SQL Server 2008의 소개 / 이수겸

마이크로소프트가 SQL Server를 통해서 주장하는 데이터 플랫폼 비전을 개략적으로 살펴보고, 개발자 중심으로 SQL Server 2008의 새로운 기능을 소개합니다.
2008 MIX를 통하여 정리해보는 차세대 웹의 전략 / 김대우, 박경훈

 

3월 5일부터 7일까지 전세계적으로 기대하고 고대하던 MIX 행사가 열리게 됩니다. 이번 세션에서는 MIX행사에서 말하고 있는 Silverlight, ASP.NET 3.5, Windows Live 등의 기술을 통한 핵심 전략은 무엇인지 분석해 봅니다. 또한 여러 예제를 통한 새로운 비지니스 모델을 어떻게 창출해 낼 수 있을지 살펴보도록 하겠습니다.
Jump to LINQ / 김수영, 김시원

 

이제 VS 2008 출시가 바로 코앞으로 다가 왔습니다. 이전 신제품 출시와 마찬가지로 이번에도 많은 변화를 가져옵니다. 그 중에서도 LINQ가 이번에 새롭게 등장한 기술의 중심에 서있게 될 것입니다. LINQ를 위한 C# 3.0의 핵심 특징을 살펴보고 또한 LINQ 쿼리 구문 작성에 있어 성능 향상을 위한 팁들을 전해드리겠습니다. 이 세션은 C#의 사전 지식을 가지고 있는 분이라면 누구나 들을 수 있습니다.
ASP.NET 3.5의 소개 / 서동진

 

ASP.NET 3.5 Extension이 새롭게 탄생할 예정입니다. 새로원진 ASP.NET 3.5의 주요 기능(ASP.NET AJAX Improvements, MVC, Dynamic Data Support, Silverlight Support, Data Service)에 대해서 살펴보고 이러한 기술들을 기존의 기술들과 어떻게 연동되고 또한 어떻게 활용해야 될지 살펴보도록 하겠습니다.
실버라이트 2.0 NOW! / 공인석, 오일석

 

2008년 3월, MIX08에서는 더욱 강력해진 런타임 엔진과 기능들로 무장하고 버전업까지 마친 실버라이트 2.0 Beta가 소개될 예정입니다. 실버라이트 2.0 Beta는 발표후 빠른 시일 내에 Go-Live 라이선스가 제공되어 서비스가 가능하므로 그간 RIA에 목말랐던 닷넷 개발자에게 단비와 같은 존재가 될 것입니다. 이 세션에서는 새로워진 실버라이트 2.0의 주요 구성과 깜짝 놀랄만 한 기능과 데모를 소개하고 향후 RIA 시장에서의 새로운 패러다임과 전략을 제시합니다.
진행자 소개
김대우 

한국마이크로소프트 개발자 및 플랫폼 사업 총괄부서 웹 플랫폼 팀 근무
현) Web Developer Evangelist
박경훈 

HOONS닷넷 사이트 운영자
다수 닷넷 기술서적 집필및 번역
Microsoft Visual C# MVP(2005~2008)
이수겸 

현) 올랩컨설팅 선임
MCDBA / MCSD
http://bybi.tistory.com
서동진 

HOONS닷넷 ASP.Net 시삽
현) MySpace Developer
Microsoft ASP.Net MVP
MCAD / MCSD
김수영 

HOONS 닷넷 C#.NET 시삽
현) 네오위즈 게임즈
Microsoft  Visual C# MVP
MCAD / MCSD
http://www.dotnetngene.kr

김시원 

HOONS 닷넷 C#.NET 시삽
현) 이스트소프트
http://loveciel.tistory.com

공인석 

블로그 [유령회사 공도소프트] 운영자.
HOONS닷넷 실버라이트 시삽.
SBS NView, MNet TVDeep 등 다수의 실버라이트 프로젝트 수행.
MIX07이래로 실버라이트에 올인 러쉬 중.
오일석 

HOONS닷넷 실버라이트 시삽
블로그 http://onestone.tistory.com
플래시 개발자에서 실버라이트 개발자로 전향
세미나 장소


한국 마이크로소프트 - 포스코 센터 5층


 
경품안내

ITC 번역서

Programming WCF Service 한글판
(저자:저발로위,번역:박경훈) - 2권

한글판 Professional Ajax
(저자: Nicholas, 번역:장시형) - 2권

한글판 ASP.NET 2.0 웹사이트 프로그래밍 : 문제 분석-설계-솔루션 제작
(저자:마르코 벨리나소,번역:송호중) - 2권

알기 쉬운 마이크로소프트 ASP.NET AJAX
(저자:r.모로니,번역:이광수) - 2권


선착순 제공 경품

 

스폰서
  
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 1

Trackback : http://gilverlight.net/trackback/2762 관련글 쓰기

  1. BlogIcon 길버트 2008/03/14 10:36 address edit & del reply

    실버라이트 2 세션 많은 참석 부탁드립니다.

2008/03/12 16:56

QuadTree

지도, Deep Zoom 등 2차원 솔루션에서, 정보의 구축과 검색을 원활히 하기 위해서,
QuadTree 형식의 자료 구조가 구현되는 것이 바람직합니다.

예를들면 방대한 영역에 존재하는 데이터 중,
보이는 화면영역에 해당하는 데이터만 빨리빨리 찾아와야 할 때 유용합니다.

QuadTree는 4개의 자식을 갖는 트리구조입니다.
평면을 계속 4분할해 나가면서 트리가 구성됩니다.

1개의 Cell은 maximum capacity를 가지고 있어서, 그 값이 넘게 자식이 존재해야할
필요성이 있을 때 또 분할됩니다.

사용자 삽입 이미지

수직선, 수평선이란 자식까지 정의하여 총 6개의 자식을 갖도록 설계하는 경우도 있습니다.
(CAD/CAM 프로그래밍 할 때 그렇게 했었음.)

한번 이렇게 구성된(Build) QuadTree는 영역에 대한 검색을 실시 할 때,
유용하게 사용됩니다.

5년동안 MFC로 CAD/CAM 프로그래밍하는 동안 매일 만지작거려왔는데,
이제는 실버라이트에서도 사용하기 위해서 QuadTree를 C#으로 포팅할 때가 된 것 같습니다.

그전에 혹시 쓸만한 좋은 소스가 있는지 코드플렉스를 뒤져봤습니다.
XNA 관련된 소스만 찾을 수 있었습니다.

XNA에서는 QuadTree가 어떻게 활용되고 있는지
Youtube에 올라와 있는 데모 동영상을 보시죠.

사실 이 동영상에는 쿼드트리 이상의 것이 들어있어서 요점을 흐릴 수 있습니다만,
쿼드 트리가 없으면 퍼포먼스가 엄청 떨어지는 데모입니다.







이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 1

Trackback : http://gilverlight.net/trackback/2757 관련글 쓰기

  1. BlogIcon ONESTONE 2008/03/13 14:12 address edit & del reply

    어려워요~ 더 자세히 알려주세요.

2008/03/12 15:55

Silverlight 2 디버깅 중 중단점 안먹을 때 시도해 볼 것

ClientBin, bin 디렉토리 내용물 지우기,
'다시 빌드' 해보기,
VS2008 종료 후 재실행,
컴퓨터 리부팅

위와 같은 민간요법을 주로 애용 했었는데요.
이렇게 해도 안되면 Project를 아예 새로 만들었던 과격프로그래머!!!

웹사이트 속성에서 해결 할 수 있는 것을 공도님한테 배웠습니다.

속성창에서 Start Options 항목의 Debuggers Group에서
Silverlight 체크박스에 체크를 합니다.
(원래 이 항목은 실버라이트 기본프로젝트 만들 당시에 체크가 되어있습니다.
허나 무슨 이유에서인지 쓰다가 이런 문제가 있어서 보면 해제되어 있습니다. -_-;;;
해제되는 단축키라도 있는거야????)

사용자 삽입 이미지

이렇게 하고 나니 다시 중단점에서 프로세스가 잘 걸리네요.
모르면 손발이 두잇이죠... ^^
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0

Trackback : http://gilverlight.net/trackback/2756 관련글 쓰기

2008/03/08 11:13

Downloader 대신 WebClient

Silverlight2 에서 Downloader가 사라졌습니다.
대신에 WebClient를 사용하시면 됩니다.

파일 전송을 위한 메서드로
OpenReadAsync과 DownloadStringAsync 두가지를 지원합니다.

OpenReadAsync

WebClient wc = new WebClient();
wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
wc.OpenReadAsync(new Uri("song.wma", UriKind.Relative));

이벤트 핸들러는 다음과 같이 사용합니다. (e.Result는 Stream)

void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    MediaElement media = new MediaElement();
    media.SetSource(e.Result);

    LayoutRoot.Children.Add(media);
    media.Play();
}


DownloadStringAsync

특히 받아올 파일이 xml파일 등 Text 형식이면 이 메서드를 씁니다.

WebClient wc = new WebClient();
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
wc.DownloadStringAsync(new Uri("data.xml", UriKind.Relative));


이벤트 핸들러는 다음과 같이 사용합니다. (e.Result는 String)

void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    XmlReader xr = XmlReader.Create(new StringReader(e.Result));

    //...
}

네임스페이스

using System.Net;

zip파일로 Packaging 해 놓고 Part를 뽑아 쓸 경우는 Microsoft Silverlight 2 SDK Help의

Microsoft Silverlight 2 SDK
 - Silverlight 2 Beta 1 - Development with the .NET Framework
    - Core Presentation Framework / UI 
       - Fundamentals
          - Downloading Content on Demand

부분을 참고 하시기 바랍니다.
 

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 1

Trackback : http://gilverlight.net/trackback/2752 관련글 쓰기

  1. BlogIcon 길버트 2008/03/21 17:24 address edit & del reply

    제가 중간에 잘못 적은 내용이 있었네요.

    media.SetSource = e.Result 를
    media.SetSource(e.Result) 로 수정하였습니다.

2008/03/06 21:06

HtmlTimer 대신 뭘 쓰면 될까요?

Silverlight 2에서 HtmlTimer가 사라졌습니다.

System.Threading.Timer도 있고 System.Windows.Threading.DispatcherTimer도 있는데
이제 무얼 쓸까요?

HtmlTimer를 쓰시던 분은 DispatcherTimer를 사용하실 것을 권합니다.
사용방법이 똑같아서 변수 선언부만 찾아서 고치시고, Interval을 TimeSpan으로 수정하시면
컴파일 에러가 해결될 거예요.

DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMilliseconds(3000); // 3초
timer.Tick += new EventHandler(timer_Tick);
timer.Start();

HtmlTimer에는 아래와 같이 Obsolete가 선언되어 있어서 ,
컴파일 할 때마다 경고 뜨는게 보기 싫으셨죠?

[Obsolete("This is not a high resolution timer and is not suitable for short-interval animations. A new timer type will be available in a future release.")]
public class HtmlTimer : IDisposable

이제 경고 받으시지 않으셔도 됩니다. ^^
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 2

Trackback : http://gilverlight.net/trackback/2751 관련글 쓰기

  1. BlogIcon 테디 2008/03/06 22:09 address edit & del reply

    헉.. 달리시네요.. ^^

  2. BlogIcon 길버트 2008/03/11 00:49 address edit & del reply

    정태호MVP님도 같이 달려주세요!

2008/03/06 20:15

Image.Source는 어떻게 쓰나

이미지 사용하기가 조금 복잡해졌어요.

Image image = new Image();
image.Source = new BitmapImage(new Uri("http://hugeflow.com/HFLogo.jpg", UriKind.Absolute));

하지만 의미를 찾자면 BitmapImage에 DownloadProgress이벤트가 있다는 것!
이제 이미지가 다 받아졌는지 확인 할 때 Timer 안 써도 된다는 것!

Image image = new Image();
BitmapImage bitmap = new BitmapImage(new Uri("http://hugeflow.com/HFLogo.jpg", UriKind.Absolute));
bitmap.DownloadProgress += new DownloadProgressEventHandler(bitmap_DownloadProgress);

이벤트 핸들러

void bitmap_DownloadProgress(object sender, DownloadProgressEventArgs e)
{
    BitmapImage bitmap = sender as BitmapImage;

    if (e.Progress == 1)
    {
         // 다 받아졌다!
    }
}


네임스페이스

using System.Windows.Media.Imaging;
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0

Trackback : http://gilverlight.net/trackback/2750 관련글 쓰기

2008/03/06 19:57

BrowserHost야 어딜 간거니???

BrowserHost.Resize 이벤트를 많이 애용했었지요.

BrowserHostApplication.Current.Host.Content로 대체됩니다.

Resized 이벤트는 이렇게

Application.Current.Host.Content.Resized += new EventHandler(Content_Resized);


void Content_Resized(object sender, EventArgs e)
{
    Width = Application.Current.Host.Content.ActualWidth;
    Height = Application.Current.Host.Content.ActualHeight;
}

IsFullScreen도 여기서 찾을 수 있습니다.

Application.Current.Host.Content.IsFullScreen


네임스페이스는 아래 것을 사용합니다.

using System.Windows;



이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 4

Trackback : http://gilverlight.net/trackback/2749 관련글 쓰기