실버라이트 4 이전의 버전에서 Visual Studio에서 성능 프로파일을 지원하지 않은 것은 아닙니다. 다만, 개발 도구에서 지원하지 않았을 뿐이고, Command Line을 이용하여 브라우저를 Attached 하여 성능 프로파일을 할 수 있었습니다.

물론, 예전에도 실버라이트에서 성능 프로파일링을 위해 커맨드 라인으로 프로파일링을 할 수 있었습니다. 아래와 같은 순서대로 커맨드를 실행하면 되었습니다.

  1. VSPerfClrEnv /sampleon
  2. "c:\Program Files (x86)\Internet Explorer\iexplore.exe" C:\Breakout\Breakout\Bin\Release\TestPage.html
  3. VSPerfCmd /start:sample /output:MyFile /attach:<PID of iexplore.exe process>
  4. Run your scenario
  5. VSPerfCmd /detach
  6. VSPerfCmd /shutdown
  7. VSPerfClrEnv /off

 

이번 Visual Studio 2010 SP1에서는 개발 도구에서 직접 성능 프로파일을 지원합니다. 번거로이 Command Line을 사용할 필요 없이, 기존의 성능 프로파일의 사용 경험을 그대로 실버라이트 4에 적용할 수 있습니다.

Visual Studio 2010의 분석->성능 마법사 시작 메뉴를 클릭하여 실버라이트 응용 프로그램을 프로파일링 할 준비를 합니다.

 

아래와 같이 성능 프로파일을 시작하면 성능 마법사 페이지가 실행됩니다.

  • CPU 샘플링
    예를 들어, 많은 데이터 작업이나 UI요소 핸들링에서 CPU에 얼만큼의 부담을 주는지 측정할 수 있는 방법입니다.

  • 계측
    관리되는 응용 프로그램이 런타임에 얼마만큼의 리소스와 실행 시간을 갖는지 측정할 수 있습니다. 모듈/클래스/메서드 수준에서 성능을 측정할 수 있는 방법입니다.

  • .NET 메모리 할당
    관리되는 응용 프로그램이 얼만큼의 메모리를 소비하고, 가비지 컬렉션(Garbage Collection) 되는지 등의 수준 높은 메모리 정보를 제공합니다.

  • 동시성
    운영체제 차원에서 메모리의 교착 및 컨텍스트 스위칭(Context Switching)을 관찰하고 다른 프로세스에 어떤 영향을 받는지 Low Level의 정보를 제공합니다.

     

 
필자는 CPU 샘플링을 선택하였고, 2단계 페이지에서는 어떤 응용 프로그램을 프로파일링 할 지 선택합니다. 만약 솔루션 탐색기에 로드 되지 않은 프로젝트는 실행 파일(.EXE) 형태의 파일을 선택하면 소스 코드 없이 다음 단계로 이동할 수 있습니다.

 

3단계 마법사 페이지는 즉시 프로파일링을 시작할지 여부를 선택합니다. 기본 설정으로 마침을 선택하면 선택한 프로젝트 또는 실행 파일을 실행하고 프로파일링을 시작하게 됩니다.

 

응용 프로그램이 실행되면 다양한 테스트 시나리오로 테스트를 진행하고, 응용 프로그램을 마치면 수집된 프로파일링 정보로 프로파일링 결과 페이지를 볼 수 있습니다.

 

 

화면의 좌측 상단의 뷰를 변경하면서 성능 구간을 다양한 측면에서 분석을 할 수 있습니다.

 

Posted by 땡초 POWERUMC

댓글을 달아 주세요

Visual Studio 2010 SP1 의 실버라이트 4 개발 환경

Visual Studio 2010 SP1은 실버라이트 4 개발자 툴 킷이 포함이 되어 바로 실버라이트 4 개발을 할 수 있습니다.

 

그림 4 실버라이트 프로젝트 템플릿 선택

 

기존의 실버라이트 프로젝트 템플릿을 선택하여 프로젝트를 생성하면, 실버라이트 버전을 선택하여 원하는 실버라이트 버전으로 개발을 할 수 있습니다.

그림 5 실버라이트 버전 선택

 

실버라이트 4는 많은 사용자의 요구 사항과 코어의 변화가 있습니다. 자세한 내용은 아래의 링크를 ㅋ통해 MSDN 을 참고하십시오

참고

Silverlight 4의 새로운 기능 http://msdn.microsoft.com/ko-kr/library/dd772166(v=vs.95).aspx

 

실버라이트 4 의 새로운 기능

  • 컨트롤
  • 브라우저 외부에서 실행
  • 미디어
  • 네트워킹
  • 인쇄
  • 사용자 인터페이스
  • XAML
  • 데이터
  • 응용 프로그램 모델
  • 코어
  • Silverlight 디자이너
  • Windows Forms 플랫폼 지원
  • 관련 항목
Posted by 땡초 POWERUMC

댓글을 달아 주세요

※ 아래의 글은 필자의 경험과 필자 나름대로 분류하고 정리한 자료이므로 잘못된 부분은 조언 부탁드립니다. 그리고 필자의 개인적인 견해와 자료는 상업/비상업적인 용도로 인용할 수 없습니다.

 

얼마 전 UX 에 대해 이야기를 나눌 수 있는 기회가 생겼습니다. 그의 이야기를 정리하면 저 또한 아래와 같은 의문이 생기네요.

'같은 UX 일을 하는 사람끼리도 괴리감이 생긴다'    

그럼 이런 의문에서 출발해서 UX 에 대해 다시 한번 고민해 보고, 문제를 분석해 보도록 합시다.

   

UX 란 무엇인가?

많은 사람들은 UX 에 대해 많은 오해가 있는 것 같습니다. UX(User eXperience) 는 직역대로 "사용자 경험"을 향상하기 위함입니다. UX 는 바로 디자인(Design) 요소만의 추구가 아닌, 접근성, 편의성, 사용성 등의 구성 요소가 포함이 됩니다.

하지만, UX 를 접근하려고 시도하는 많은 UX 전문가는 이미 공통된 UX 라는 의미에서 이미 시작점을 잘 찍지 못하기도 합니다. UX 라는 단어는 이렇게 굉장히 많은 요소와 포괄적인 의미를 포함하고 있습니다. 즉, UX 와 관련된 전문적인 일을 하고 있지만, UX 전문가 사이에서도 굉장히 괴리감이 있다는 것입니다.

   

UX 의 잘못된 출발. RIA=UX ?

과연 RIA=UX 인가? 일부 실버라이트(Silverlight) 나 플래시(Flash) 와 관련된 일을 하고 계신다면, 충분히 오해의 소지가 발생할 수 있는 등호식입니다. 이와 유사하게 오해의 소지가 있는 것이 RIA=Silverlight 라는 것이죠. RIA 를 하기 위해서는 실버라이트 또는 플래시 등의 기술이 필요하다는 잘못된 관념을 가지고 있습니다.

 

다시 질문하자면 RIA(Rich Internet Application) 은 무엇인가.? RIA 를 묻는 다면 필자는 트랜드한 용어라고 하고 싶습니다. 이미 예전에 X-Internet 이라는 용어로 인터넷의 접근성, 사용성, 그리고 다양한 디바이스(Device) 를 확장시키기 위한 기술이며, Fat Application 또는 Thin Application 이라고 부르기도 하였습니다. 그리고 .NET 플랫폼의 기술로써 스마트클라이언트(Smartclient) 가 이러한 X-Internet 기술에 포함이 됩니다. 타 플랫폼에서는 X-Internet 기술로 투비소프트(Tobesoft) 의 마이플랫폼(MiFlatform) 과 어도비의 플랙스(Flex) 등이 있지요.

X-Internet 과 RIA 는 무엇이 다를까란 생각을 해보면, 그다지 다른게 없다는 것입니다. 이러한 용어는 시대적인 배경이 따른 것 뿐이지, 추구하고자 하는 목표와 이상은 큰 차이를 보이지 않습니다. 즉, X-Internet 은 기능적인 요소를 초점으로 마케팅했다는 것이고, RIA 는 UX 를 초점으로 마케팅했다는 것 뿐입니다. 새로운 기술을 대중에게 얘기할 때, 무엇을 1번으로 말하느냐는 그 시대와 그 시대의 시장에서 요구하는 것이 달랐다는 것을 알 수 있습니다.

하지만, X-Internet 의 시작은 좋았으나 유행을 일으키지는 못했습니다. 그 대안으로 실버라이트와 어도비(Adobe) 의 기술들은 RIA 와 UX 를 이용하여 마케팅을 함으로써 많은 사용자와 전문가 층에서 각광받고 있습니다. 하지만, X-Internet, RIA, UX 등 이미 범람하는 용어들 속에서 제대로 개념을 찾기란 참 힘들기도 합니다.

   

UX 는 개발과 디자인의 공통 영역?

특히 일부 UX 를 전문적으로 하시는 분의 말을 빌리면, UX 는 개발 영역과 디자인 영역의 공통 분모라고 말을 합니다. 하지만 정말 그럴까요? UX 를 하려면 개발과 다자인을 둘 다 알아야 하는 걸까요? 그리고 UX 를 하려면 개발과 디자인의 올바른 협업이 필요한 걸까요? 다시 한번 UX 에 대해 고민해 볼 필요가 있습니다.

하지만, 필자는 왼쪽 그림과 같은 말을 하는 것부터가 이미 잘못된 UX 개념에 사로잡힌 사람들이라고 말하고 싶습니다. (그렇다고 오른쪽이 정답이라는 말은 아닙니다) 다시 얘기하면, 개발과 디자인 영역간의 협업은 UX 를 수행하는 과정일 뿐이지, UX 자체가 개발과 디자인의 공통 분모가 될 수 없다는 것입니다. 거꾸로, 웹 디자이너가 웹 개발 프로젝트에 투입되었다면 어쩔 수 없이 개발자와 조율하고 협업하는 과정이 불가피 할 테니까요. 

결국, UX 는 너무도 많은 의미를 포괄하고 있고, 자신이 생각하는 UX 에 대해 시작점을 잘못 찍음으로써 UX 의 본질에 대해 다시 원점으로 돌아간다는 겁니다. RIA=UX, UX=RIA 라는 잘못된 개념은 결국 자신의 제한적인 생각의 범위와 제한적인 경험에서 나온 오해일 여지가 큽니다.

UX 가 개발과 디자인의 공통 영역이란 것은 좋은 UX 를 위한 과정일 뿐이지(필요할 수도, 필요 없을 수도), 절대 목표나 의미가 아니라는 의미입니다. 아마도 개발과 다지안의 공통 영역이란 것은 자신의 UX 는 그만큼의 범위 밖에 안된다는 의미겠지요?

일부 UX 세미나를 듣고 있자면, 마치 UX 전문가는 개발 영역과 디자인을 조율해야 하는 선도적이고, 개발 영역 기술까지 알아야 한다는, 다소 권위적인 얘기로까지 들리기도 합니다. 아마도 그런 UX 전문가는 XAML 과 Expression Blend 도구를 이용해서 디자인 해봤다는 말로만 들립니다. XAML(Extensible Application Markup Language) 이 프로그래밍적인 요소의 OOP 와 표현 요소인 Presentation 을 포함하는 기술이니, UX = XAML 로 혼돈하는 것이 아닐까란 생각도 듭니다.

   

UX 도 분석이 필요하다.

일단, 현재 통용되고 있는 UX 라는 의미가 너무 광범위합니다. 좀 더 UX 에 가까이 가기 위해 좀 더 분석이 필요할 것 같네요. 그렇다면 UX 를 좀 더 잘게 쪼개기 위해 우리가 실제로 겪을 수 있는 UX 로 나누어 봅시다.

Web Service UX
쟁점 : 데이터의 효율적 배치, 검색, 직관성
아마도 인터넷을 통해 가장 먼저 접할 수 있는 UX 일 것입니다. 공통된 관심을 집중할 수 있는 방법이나 데이터의 효율적인 배치와 검색 등이 관건일 것입니다. 더불어 서비스에 대해 사용자의 재방문을 유도하기 위해 사용자의 지속적인 좋은 콘텐트와 접근성이 가장 중요할 것입니다.    

Desktop UX
쟁점 : 안정성, 시스템 리소스의 가시성
컴퓨터의 전원을 켜기 시작하면서 경험할 수 있는 UX 입니다. 기본적으로 운영체제(OS) 가 포함이 될 것이고, 운영체제 안에서 돌아가는 브라우저나 보조 응용 프로그램 등, 모든 응용 프로그램이 이 범주에 포함이 될 것입니다.

Mobile UX
쟁점 : 단순함, 직관성, 데이터의 중요도 분리 및 표현
최근 아이폰(iPhone) 의 국내 발매로 불붙기 시작한 UX 입니다. 특히 단순하면서도 복잡하지 않는 UX 가 필요로 할 것입니다. 아마도 필자가 Windows Mobile 6.1 을 쓸 때의 느낌은, "이거 데스크탑 OS 와 비슷한데?" 라는 복잡함을 느꼈다면 적어도 필자에게는 좋은 Mobile UX 가 아니었다는 것입니다.   

RIA UX
쟁점 : 가볍고 빠른 응답성, 상호작용 향상, 표현력
최근 각광 받고 있는 UX 입니다. HTML 로 표현하기 힘은 콘텐트나 데이터, 그리고 화려함을 더해줄 수 있는, 진정한 Rich 함이 필요로 하는 UX 입니다. 잘 알고 있는 Microsoft 의 실버라이트(Silverlight) 와 Adboe 의 플래시(Flash) 가 대표적인 RIA 기술입니다.    

Surface UX
쟁점 : 제한된 입력장치로 사용자 접근성, 효율성
아직은 크게 주목 받고 있지는 않지만, 장차 큰 범주의 UX 가 될 것입니다. 제한적인 입력장치로 인해 특히 사용자의 사용성을 크게 고려해야 할 것입니다. 아마도 필자는 일부 Surface UX 를 경험하면서 '이게 누르는 버튼인건가?', '어떻게 쓰는 거지?' 라는 괴리감을 줄이는 것도 좋은 UX 가 될 수 있는 길일 것입니다.    

Enterprise UX
쟁점 : 데이터의 배치, 복잡성을 단순화할 방안, 데이터 표현의 표준적인 방안
아마도 좋은 UX 를 만들기 가장 힘든 환경이 아닐까 합니다. 특히 데이터 중심의 복잡한 환경에서 데이터를 어떻게 배치할 것인지, 특히 복잡성을 어떻게 줄일 것인지의 고민이 필요합니다. 그리고 데이터와 표현의 올바른 정의가 절실하기도 합니다.

   

올바른 UX 향상을 위하여

위의 여러 가지 UX 의 장르로 구분하였지만, 각각의 UX 는 독립적인 UX 는 아닙니다. 예를 들어, Web Service UX 를 향상하기 위해 RIA UX 가 필요할 수 도 있다는 것입니다. Enterprise UX 에서 복잡한 데이터를 단순화 하기 위해 RIA UX 가 필요한, 즉, 각 UX 는 각 장단점을 보완할 수 있는 UX 라는 겁니다.

아래는 각각의 UX 의 단점을 보완할 수 있는 예 입니다.

  

Web Service UX

RIA UX

Enterprise UX

단점을 보안하기 위해

RIA UX
Mobile UX

Mobile UX
Web Service UX

RIA UX
Web Service UX

그리고 자신의 UX 장르가 무엇을 필요로 하냐는 것입니다. 즉, 각 UX 장르별로 무엇이 UX 를 떨어뜨리는 요인이 되냐는 것입니다. 그 문제의 요인을 제거하는 것이 근본적인 문제이며, 다른 장르의 UX 의 사례를 적용하여 UX 를 향상한다면 더할나위 없을 것입니다.

 

결론적으로, 현재 자신의 UX 위치를 잘 알고 그 UX 를 향상시키기 위해 무엇이 필요하냐는 것이 UX 향상의 쟁점이 될 것입니다. 필자 나름대로, Web Service UX, RIA UX, Enterprise UX 등으로 분류하였지만 자기 나름대로의 큰 범위의 UX 를 정립하기 위해서는 그것을 이루는 구성 요소를 정리, 정의해야만 올바른 UX 향상의 지름길이 될 것입니다.

개발자 출신인 필자도 개발에 필요한 구성 요소의 기반 기술의 이해가 부족할 때는, 스스로의 시야를 자신의 경험에 가려버렸던 적이 많습니다.

많은 UX 전문가에게도 말하고 싶은 것은, 당신이 실버라이트와 플래시를 해서 UX 디자이너, UX 전문가 인가요? 그렇다면 다시 묻겠습니다.

  • UX 란 무엇인가요?
  • 좋은 UX 란 무엇인가요?
  • 좋은 UX 를 위해 무엇이 뒷받침이 되어야 할까요?
  • 그렇다면 좋은 UX 를 위해 무엇을 실천했나요?

위의 물음에 자신만의 올바른 정의가 없다면, UX 가 아닌 당신은 단지 디자이너(Degisner) 일 뿐입니다. 저는 개발자를 분류하길 핵심 개발자(Core Dev), 일반 개발자(Dev) 로 분류합니다.  개발자인 필자의 눈에는 마찬가지로, UX 디자이너와 일반 디자이너 두 가지 밖에 없습니다. 

하지만 다행인 것은, 마치 .NET 기술이 처음 나왔을 때 처럼, UX 또한 아직 많은 정보를 접하기 힘든 황량한 사막과도 같다는 것입니다. 끊임 없는 고민과 노력은 분명 UX 성숙기 시대에 접어들 때, 빛을 발하리라 의심치 않습니다.


다음 글
[UMC/엄씨 생각] - 좀 더 UX 에 다가가기

'UMC > 엄씨 생각' 카테고리의 다른 글

좀 더 UX 에 다가가기  (0) 2010.02.16
.NETXPERT 의 트위터 오픈  (0) 2010.02.09
당신이 생각하는 UX 란?  (8) 2010.02.08
꿈 (Dream)  (0) 2009.03.07
20대 가기전에 취미만들기  (1) 2008.11.03
입문자에게... "프로그램 공부 어떻게 해야 하나요?"  (1) 2008.01.27
Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 천상태자 2010.02.08 09:48 Address Modify/Delete Reply

    좋은 내용이네요.
    위에 언급한 내용중에 RIA = Silverlight, RIA = Flash 이렇게 인식하는 사람들 때문에 애를 먹습니다. 물론 Silverlight과 Flash의 기술로 밥 벌어 먹구는 있지만, 이것을 안쓰면 RIA가 아니라는 생각을 가시진 분을 설득하는 것이 참 힘듭니다. 당장 제가 몸 담고 있는 회사에서도 그렇습니다. Javascript로 만들면 완전 무시하기도 하고 화려한 액션이 들어가지 않으면 RIA가 아니다 라고 말씀하기도 합니다. 이런 것들이 쏟아지는 용어를 이용한 업체들의 마케팅 전략에 의한 결과가 아닌가 합니다. 바른 용어의 정착이 우선되어야 할 듯하네요.

  2. 박중석 2010.02.08 10:55 Address Modify/Delete Reply

    막연하게 받아들여지고 있는 부분에 대해서, 좋은 자극이 되는 글 잘보고 갑니다~

  3. 열이아빠 2010.02.08 11:20 Address Modify/Delete Reply

    RIA=UX 라는 개념이 처음 등장했을때에는 그것이 마케팅적으로도 먹혀들어가는 개념이었고 또 기술적으로도 좀 더 쉬운 도구가 등장했던 것이기때문에 정착이 되지 않았나 생각됩니다. 일반 드라이버와 전동 드라이버는 같은 기능을 수행하지만 성능이나 확장성 면에서 차이가 있습니다.
    이제는 시간이 지나면서 다양한 플랫폼들이 등장했지만 트렌드를 선점해버린 업체들때문에 인식을 바꾸기가 힘든 상태가 되어버린것이지요.
    드라이버 비유에서도 이야기했지만 적절한 것을 선택하지 않는다면 나사만 뭉개져 버린다는..^^

  4. 짱묜 2010.02.08 13:00 Address Modify/Delete Reply

    어느 세미나를 들으셨길래 ㅋㅋ
    오히려 제가 참여하는 UX관련 스터디나 세미나에서는 블렌드는 언급을 안하는 경우가 많던데요.
    OS와 툴에 종속적이지 않기 때문에.. 그리고 개발과 디자인의 공통분모가 UX다 라고 생각한다는 것이 좀 이상합니다~ 무튼..ㅋㅋ 잘봤어 오빠~~

  5. 박건태 2010.02.08 15:34 Address Modify/Delete Reply

    제 생각에는 UX는 개발, 디자인 어느 영역의 것도 아닙니다. UX 디자이너 라는 말로 흔히 UX 가 디자이너의 것으로 착각하는 경우도 있지만 여기서 UX Designer 는 그 디자이너가 아니라 설계자라고 해야 맞을 겁니다. 사실 많은 UX Designer 라고 하는 사람들이 단지 UI 디자이너일 뿐일 테고요. UX라는 것은 또한 개발자에게는 더더욱 먼 것입니다. 개발자는 코드의 품질과 생산성에만 관심을 가지면 되는 것입니다. 구지 UX까지 고려해야 할 필요는 없습니다. 현재 우리나라의 많은 디자이너와 개발자들이 UX 에 관심을 가지고 UX에 대해 고려해야 한다고 생각하는 것은 이런 사람들이 대부분 PM 이나 기획의 일을 상당부분 같이 담당하고 있기 때문입니다. 사용자 경험에 맞춘 개발, 사용자 경험에 맞춘 디자인을 하려면 먼저 사용자 경험이 무엇인가부터 알아봐야 합니다. 하지만 "사용자들은 보통 이런게 편할꺼야" 하는 주관적인 생각이 앞서기 쉽죠. 그러면 다시 우리가 생각해야 할 일은 사용자 경험을 어떻게 측정할 것인가로 자연스럽게 Focus가 맞춰지게 됩니다.
    그럼 사용자 경험을 측정하고 측정하는 방법을 연구하고 실제 프로젝트에 적용할 수 있는 사람들은 누구일까요?.. 뭐 답이 구지 한가지는 아니겠지만 최소한 기존의 디자이너,개발자는 아닐 겁니다.
    그리고 우리나라에서는 아직 제대로 UX Designer로 활동하는 사람이 거의 안보이는 것 같습니다. 예전의 Flasher 같은 직업분류가 새로 생겼듯이 앞으로 활동하는 UX Designer 들이 UX 가 제대로 프로젝트에서 성과를 낼 수 있도록 노력해야 하지 않을까 합니다. 그리고 그 이후에야 제대로 UX 라는 말이 단순히 마케팅적으로 남용되는 언어가 아니라 프로젝트에서 꼭 필요한 필수요건으로 대접받을 수 있을 때가 아닐까 싶습니다.

    .. 제가 잠깐 폭주했군요.^^ 요즘에 이부분에 대해 저도 생각이 많다보니..^^ 글 잘 보고 있습니다. 앞으로도 좋은 글 많이 남겨주세요.^^

    • 짱묜 2010.02.08 16:10 Address Modify/Delete

      맞아요~ 저같은 경우에도 사용자 경험에 대한 고민은 기획파트에 서포트 할때 더 많이 했으니까요. 갈길이 멉니다~

실버라이트 프로젝트 생성하면서 하는 실수
 
실버라이트 프로젝트는 두 가지를 제공합니다. “Silverlight 응용 프로그램” 과 “Silverlight 클래스 라이브러리” 두 가지의 프로젝트 타입을 제공합니다.
 
저도 요즘 회사에서 실버라이트를 만지고 있는데, 매번 반복하는 실수가 있답니다. Silverlight Application 프로젝트를 만들려고 이름을 입력하고 엔터키를 누르면 Silverlight Class Library 프로젝트가 만들어 질 때가 있습니다. 가끔 무의식적으로 이런 실수를 반복하고 있답니다. ^^;
 
[그림1] 실버라이트 프로젝트 생성 화면
 
한번씩 실수로 프로젝트가 생성이 되면 매번 프로젝트가 생성된 폴더를 지워주어야 하고, 솔루션 파일이 변경이 되기 때문에 폴더에 락(Lock) 이 걸리는 경우도 있어 불편하더군요.
 
 
실버라이트용 클래스 라이브러리와 응용 프로그램의 차이
 
우선 두 프로젝트의 가장 큰 차이는 빌드 시에 .xap 파일로 패키징(Packaging) 을 하느냐 하지 않느냐가 가장 큰 외관적인 차이라고 할 수 있습니다. Silverlight Class Library 는 .DLL 로 Output 이 나오고, Silverlight Application 은 .XAP 으로 패키징(Packaging) 이 되죠.
 
프로젝트의 속성에서도 차이를 보입니다.
 
[그림2] 실버라이트 클래스 라이브러리 프로젝트 속성 화면
 
[그림3] 실버라이트 응용 프로그램 프로젝트 속성 화면
 
보시다시피 출력 어셈블리나 내용(Contents) 를 패키징(Packaging) 의 여부가 바로 가장 큰 차이라고 할 수 있습니다.
 
 
실버라이트용 클래스 라이브러리 프로젝트를 응용 프로그램으로 변경하기
 
가끔씩 실수로 잘못 생성된 Silverlight Class Library 를 Silverlight Application 프로젝트로 변경하기 위해서 몇 가지 작업만 해주면 됩니다.
 
Silverlight Class Library 의 .csproj 파일을 열어 아래의 그림의 XML Element 를 추가해 줍니다.
 
[그림4] Silverlight Application 프로젝트로 변환 방법
 
그리고 [그림4] 와 같이 XML Element 를 추가합니다. XapOutputs 와 XapFilename 만 적절히 넣어주시면 됩니다. 만약 프로젝트 속성 화면에서 이 값을 편집 가능하게 하고 싶다면, SilverlightApplication 의 Value 값을 True 로 변경해주기만 하면 됩니다.
 
그럼 이후 빌드부터 Output 은 .DLL 을 .XAP 으로 패키징(Packaging) 하게 된답니다.
 
 
간단하지만 복잡한 내부 원리
 
Project Type
Visual Studio 는 다양한 형태의 프로젝트를 지원합니다. 예를 들어, C#, VB.NET 으로 개발할 수 있는 프로젝트가 있고, 설치(Setup)프로젝트 나 SQL Server 프로젝트 그리고 다양한 다이어그램(Diagram) 프로젝트를 제공합니다. 바로 이런 프로젝트 형식을 Project Type 이라고 합니다.
 
Project Sub Type
Project Sub Type 은 중요한 개념입니다. Project Sub Type 은 Project Type 의 파생 프로젝트 입니다. 우리가 C# 으로 Windows Forms, Web Forms, Silverlight 등을 개발할 수 있는 것도 바로 Project Sub Type 이 있기 때문입니다.
 
Visual Studio 의 모든 구성 요소는 고유의 GUID 값을 가지고 있습니다. [그림4] 에서도 알 수 있듯이 Silverlight Project Sub Type 은 {A1591282-1198-4647-A2B1-27E5FF5F6F3B} 인 것을 알 수 있습니다. 그 뒤의 GUID 은 Language 의 GUID 입니다.
 
이러한 Project Sub Type 은 Visual Studio 의 Project Factory 로 구현할 수 있으며, IVsProjectFactory 와 IVsPropertyPage를 구현하여 Flavored Project 를 만들 수 있습니다. 그리고 프로젝트의 추가적인 속성 값을 유지하기 위해 IVsProjectFlavorCfg, IPersistXMLFragment, IVsDeployableProjectCfg 등의 복합적으로 인터페이스를 구현해야 합니다.
 
이러한 패키지(Package) 는 레지스트리(Registry) 의 고유의 GUID 값으로 저장되고 Visual Studio 에서 고유한 Project Sub Type 이 로드가 되면 다양한 빌드 방법 또는 프로젝트 관리 방법 등이 적용 됩니다. 그리하여 우리는 Visual Studio 에서 Silverlight 개발을 할 수 있게 됩니다.
 
예를 들어, 이런 방법을 통해 Silverlight 프로젝트가 빌드 시에 .XAP 패키징 파일의 압축률 등을 선택하여 적용하게끔 할 수 있는 추가 구성 요소를 제공할 수도 있겠죠?
Posted by 땡초 POWERUMC

댓글을 달아 주세요

실버라이트가 포함된 웹 어플리케이션 팀 빌드 오류 문제
 
Team Foundation Server(이하 TFS) 의 Team Build 는 굉장히 유용한 기능의 하나입니다. 팀 개발에서 팀 빌드는 언제나 신선한 어플리케이션을 유지하도록 하여 어플리케이션의 심장을 뛰게 하는 역할을 합니다.
 
집에서 관리하는 서버를 이용하여 작은 규모로 개발하던 사이트가 있었습니다. 이 사이트는 TFS Checkin Policy 를 적용하여 체크인마다 팀 빌드를 수행하도록 하여 테스터는 항상 최신 빌드의 사이트를 시연하거나 테스트 할 수 있도록 구성하였습니다. (단, 웹 어플리케이션은 추가적인 Deploy Executing 설정이 필요합니다.)
 
이러한 과정 중에 웹 어플리케이션에 Silverlight 패키징 파일의 .XAP 파일이 포함이 되었습니다. 바로 그 이후부터 팀 빌드는 지속적으로 실패하게 됩니다.
 
[Any CPU/Release] C:\Program Files\MSBuild\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets(60,3): 오류 MSB3021: "ClientBin\DevDCCMap.xap" 파일을 "C:\Users\TFSService\AppData\Local\Temp\HOONS\HOONS Build\Binaries\Release\_PublishedWebsites\DevDCC.Web\ClientBin\DevDCCMap.xap"(으)로 복사할 수 없습니다. 'ClientBin\DevDCCMap.xap' 경로의 일부를 찾을 수 없습니다.
 
실버라이트 전문가인 공도님께서 해결 방법을 알려주셨는데, 그 외에 다른 방법도 있더군요.
 
[그림1] 프로젝트에서 항목을 제외한다
 
근복적인 해결 방법은 .XAP 파일을 제거하는 것입니다. 하지만 빌드마다 .XAP 파일이 복사가 되거나 Web Application 의 속성을 변경하여 복사가 되지 않도록 할 수도 있으나 로컬에서 최신의 Silverlight 의 XAP 이 적용이 안되어 정상적인 테스트가 어려워지기도 합니다.
 
그래서 그냥 “프로젝트에서 제외” 명령을 수행하면 물리적인 파일은 지속적으로 갱신되지만 프로젝트에서만 제외할 수 있습니다. 그리고 팀 빌드도 더 이상 오류를 내지 않습니다.
Posted by 땡초 POWERUMC

댓글을 달아 주세요

Read about Silverlight in XPS
 
 
Silverlight 로 XPS Viewer 를 선보였군요. Moroney 라는 사람은 David Anson 이 기존에 만든 Silverlight XPS Viewer 에 마우스 휠 동작을 추가했다고 하네요. 그치만 휠 이벤트가 영 시원치 않네요. 스크롤과 휠로 인한 확대&축소가 동시에 발생합니다 ^^;

David Anson 의 블로그에 소스 코드가 공개되어 있습니다.
 
원문
 
David Anson & Source code
 
 

Posted by 땡초 POWERUMC

댓글을 달아 주세요

이전부터 관심 없는 분야에 대해서도 자료를 수집하고 있었는데, 이번에 조금 방출해 보고자 합니다.
 
독립 실행형 Full Trust 실버라이트 어플케이션 만들기
 
HTA 를 이용하여 독립 실행형태의 실버라이트에 Full Trust 권한으로 실행되는 어플케이션을 만드는 방법을 소개하고 있습니다.
 
 
FileSystemObject ActiveX object 를 통해 파일 업로더를 구현하였습니다. 근데, 원문의 샘플 코드 다운로드 링크가 시간이 지난 후에 다시 보니, 깨져있군요. -_-
 
그리고 파이어폭스에서는 일부 기능이 동작하지 않는다고 하니, 궁금하신 분은 원문을 참고 하시면 됩니다.
 
원문
 

Posted by 땡초 POWERUMC

댓글을 달아 주세요

최근 RSS 를 다시 훓어보니, 괜찮은 Silverlight 관련 피드가 많이 올라와 있었더군요. 그래서 그 내용을 간략하게 소개해 봅니다.
 
l Kaxaml



XAML 과 만들고 편집하는 프로그램입니다. 사실 Expression Blend 가 더 편하지만, 이 프로그램의 장점은 다양한 템플릿에 있는 것 같네요. 각종 컨트롤은 XAML 로 만들 수 있고, Slide 템플릿, 백터 이미지 등이 포함되어 있어서 손쉽게 재미있는 효과를 낼 수 가 있을 것 같네요

l Color the World




소개된 스크린샷만 보아도 멋지네요. 더 반가운건 소스 코드도 블로그를 통해 다운로드 할 수 있습니다
.

l Silverlight With Java Script Tutorial 12 - Silverlight Marquee Text


HTML 태그의 marquee 와 같은 효과를 Silverlight 1.0 으로 구현을 하였습니다. XAML 로 쉽게 만드는 방법도 소개가 되었으니 참고하세요
.


l Silverlight and Cross Site Scripting

Silverlight
와 WCF 를 통해 굉장히 간단하게 Cross site scripting 하는 방법을 보여줍니다. 어차피 Silverlight 2.0 이 릴리즈 되면 저런 고민을 할 필요는 없겠지만, 당장 필요하신 분에게 도움이 될만한 내용이네요.

l Silverlight Controls



다양한 Silverlight 컨트롤을 구현하였습니다. Calendar, CheckBox, DropdownList, FieldSet, ListBox, Scrolling Area, TextBox, TreeView 를 제공합니다. 그중에서 TreeView 컨트롤은 약간의 애니매이션 효과도 있고, 특히 쓸만할 것 같네요. 컨트롤마다 사용법도 자세히 설명히 놓았으며, 사용방법이 난해하지 않고 기존 .NET 이 제공하는 컨트롤 사용법과 크게 다르지 않기 때문에 좋으네요
^^

l Silverlight Presentation



Silverlight 를 활용하여 프리젠테이션 하는 샘플입니다. 퀄리티 보다는 그 아이디어가 참 좋네요
.

l Silverlight and Ink: Drawing



그림판 예제입니다. 소스코드도 제공하니 한번 살펴보셔도 좋을 것 같습니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

Introduction
 
스트리밍 없이 실버라이트 1.0을 사용한 간단한 Javascript 애플케이션을 만들고 같은 호스트의 웹서버에 호스팅을 원합니다. 그러나 인터넷 서비스 공급자는 WPF 가 준비되지 않았고, IIS 는 Unknown content type(XAML) 을 응답합니다. 예를들어, 컨트롤을 만들어도 XAML 이 로드되지 못하면 실버라이트 컨트롤은 공백이 됩니다.
 
이 아티클은 ISP(인터넷 서비스 공급자)나 MIME Type 이 IIS 에 등록되지 않아도 XAML 파일이 블록된 실버라이트 애플케이션에서 사용할 수 있습니다.
 
 
Background
 
Silverlight 컨트롤이 만들어진 후에 XAML 파일이 로드되기 위한 source 프로퍼티를 포함합니다. Visual Studio 2005(필자는 VS2005 를 사용하였다)의 Silverlight Javascript 애플케이션의 코드 생성기를 참조하세요.
 
서버의 XAML 파일을 참조하는 Javascript 함수의 createSilverlight() 가 만들어집니다. 이 코드가 실행되고 Silverlight 가 XAML 파일을 호출할 때, 호출결과가 리턴되지 않고 막혀있다면 blank 페이지가 나타납니다(에러는 없음)
 
 
Solution
 
문제를 해결하는 하나의 방법은 createSilverlight() 메서드의 source 파일명의 확장자를 XML 이나 TXT 와 같이 바꾸십시오. 배포를 준비하고 있고 프로젝트의 종료가 하루전이라면 이것이 가장 빠른 해결책입니다.
 
배포전에 파일 확장자와 Javascript 파일을 바꾸는 것과 같이 배포 문제의 해결방법은 오래걸릴 수도 있습니다. (매우 다양하고 XAML 파일이 하나 이상일 때)
 
XAML 파일을 고유의 ASP.NET Handler 가 있으면 배포와 개발에 있어 훨씬 좋은 해결방법이 됩니다. 이것은 IIS 에 MIME 형태로 등록하거나 web.config 파일을 수정하지 않아도 됩니다. 또한, XAML 과 Javascript 그리고 다른 확정없이 영향을 미치는 실버라이트 애플케이션을 만드는 것에 유의하십시오.
 
public class GetXAMLFile : IHttpHandler
    {
        string fileList = ",scene.xaml,";
        public void ProcessRequest(HttpContext context)
        {
            string fname = context.Request["fname"].ToString().ToLower();
            // check if the file is in xaml file list you want to send
            // for your applications only
            if (fileList.IndexOf("," + fname + ",") == -1)
                context.Response.End();
            context.Response.ContentType = "text/xaml";
            string uri = context.Request.Url.AbsoluteUri;
            string xamlstring = System.IO.File.ReadAllText(
                context.Server.MapPath(fname));
            context.Response.Write(xamlstring);
            context.Response.Flush();
            context.Response.End();
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
 
내용을 보기전에 요청된 파일을 체크하는 라인을 보면 위의 Handler 가 악의적인 애플케이션에 의해 호출되는 것을 피하기 위해 XAML 파일을 고쳐보았습니다.
 
Handler 를 만들고, createSilverlight() 함수의 source 라인을 고쳐보겠습니다.
 
source: 'GetXAMLFile.ashx?fname=Scene.xaml'
 
Silverlight 컨트롤이 ASHX Handler 의 호출로 로드될 때 Client 로 XAML 파일의 내용이 보내지게 됩니다.
 
IIS 와 ASP.NET 의 조합의 경우 다른 웹서버나 비슷한 문제에 대면할 경우 확장 타입의 스크립트를 호출하여 쿼리문자열 또는 XAML 파일의 내용을 보내는 처리를 할 수 있습니다. Response content type 은 ‘text/xaml’ 의 형태로 되는 것에 주의하시면 됩니다.
 
 
License
 
이 아티클은 어떠한 라이센스를 명시하지 않았지만, 이 아티클의 내용이나 다운로드 파일을 포함할 수 있습니다. 계약 내용에 문의사항이 있으시면 아래의 게시판을 통해 문의하세요.
 
제작 라이센스 리스트는 여기에서 볼 수 있습니다.
 
 
About the Author
 
Sriram Chitturi


 
 
Occupation:
Web Developer
Location:
United States

Posted by 땡초 POWERUMC

댓글을 달아 주세요

간만에 실버라이트 샘플들을 살펴보면서, 짧은 시간에 퀄리티 좋은 샘플이 많은 나와 있었다. 그럼 한번 살펴보도록 하자.
 
[
그림1] 실버라이트로만든크리스마스트리입니다. 재미있네요~
 
 
[
그림2] 심플하고깔끔한기능의슬라이드쇼네요~
 
 
 
[그림3] 3D 입체 사각형이 회전하면서 그 안에 공이 튀기는 데모입니다. 마우스로 이리저리 끌면 입체 사각형이 회전도 한답니다.
 
[그림4] 자유곡선의 Path 를 따라 움직입니다. 1,2 의 작은 점을 드래그 하여 자유곡선의 수치를 조정할 수 있답니다. 좋은 샘플이네요~
 
l VendorForm.com
 
 

이곳에 가면 상당량의 게임/컨트롤/미디어 관련 샘플을 볼 수 있다. 더욱 더 환영할 만한건 샘플코드도 전부 공개되어있다. 샘플의 양이 상당하기 때문에 전부 캡춰를 하지 못했으므로 관심있는 분은 꼭 한번 방문해 보세요
~

l Silverlight Toolbar Tutorial

실버라이트도 네비게이트 툴바를 만들어 보는 Tutorial 이다. 블랜드에서 작성내용을 친절히 캡춰하면서 따라해 볼 수 있게 친절히 설명해 놓았답니다
.


l Image Zoom page

[
그림9] 이미지갤러리와비슷하지만, 이미지를특정영역을확대/축소있답니다.

l Silverlight TruckWars v1.3


[그림10] 탱크게임이다. 초록색자신의탱크를조종하면서상대적군을모두부수면된다. 간단하면서도재미(?)있는게임^^;


-- UPDATE 2007-12-15

l Custom Animations

상당한 퀄리티의 애니매이션입니다. 그럼에도 불구하고 친절히 따라할 수 있게 설명해 놓았네요~

Posted by 땡초 POWERUMC

댓글을 달아 주세요

최근 Rick Barraza 라는 사람의 블로그에서 Silverlight 로 제작된 심상치 않은 몇가지 데모가 소개 되었다.
 
말이 필요 없다. 링크를 타고 감상먼저 해보자.
 
l Flash to Silverlight Project 01: Cynergy Matrix with Editor

화면에 마우스를 가져다 대면 마우스 좌표로부터 뿌려지는 조그마한 사각형들이 모여 영문자를 만드는 데모이다. 디자인 감각이나 정교함은 Flash 디자이너 못지 않지만, 그 구현은 더욱 더 놀랍다
.


l Flash to Silverlight Project 02: Dynamic HexPhoto Gallery

포토겔러리를 구현하였다. 여러 육각면체에 사진들이 가득하며 좌측, 우측 끝으로 마우스가 가져가면 스크롤 된다. 사진에 마우스를 눌렀을 경우 또 한번 자연스럽게 펼쳐지는 애니메이션에 경악
!


l DD#01: Dynamically Attaching Controls in Silverlight

요건 동적으로 컨트롤을 생성하여 제어하는 샘플인데, 안봐도 될 듯



l DD#02: Dynamic Storyboards

동적으로 스토리보드를 제어하는 샘플이다. 샘플의 퀄리티도 무척 높다. 따라하기 좋게 아티클을 작성하여 Silverlight 를 시작하는 이들에게 굉장히 유용한 아티클이 될 것 같다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

자바스크립트를 이용하여 각각 브라우져별로 프레임 테스트를 한 내용입니다.

http://firejune.com/1208

 

실버라이트로 3D 로 테스트 한 내용도 있답니다.

http://bubblemark.com/3d/silverlight1.1.htm

멋지네요^^

소스코드도 다운받을 수 있습니다.

3D 테스트에서

노트북 코어2듀오 2.0 에서 최대 38 프레임..

데스트탑 쿼드코어에서 최대 53프레임이 나오네요~

컴퓨터 사양에 굉장히 민감합니다. 실버라이트~~

Posted by 땡초 POWERUMC

댓글을 달아 주세요


SilverLight's powerpoint-alike demo released!
 
Some a you asked us for creating a SilverLight sample of our PowerPoint-alike demo.
We did it and more! You may now download the whole source code of this sample application. 
As I said in a previous post, this is not a state of the art application, it has been developed by junior developers during last summer.
Here is the link to the demo  and here to the source code.
Enjoy!
 
원문 - http://blogs.netikatech.com/JeanGab/

다음의 샘플도 참고해 보세요. 마치 오피스를 띄워놓은 것 같네요.
http://community.netikatech.com/demos/silverlight/pp/

다음의 샘플은 비쥬얼스튜디오의 디자이너와 비슷한데, 감탄입니다.
http://community.netikatech.com/demos/silverlight/designer/

개발자의 말에 따르면 여름기간동안 내내 열심히 개발을 했다고 하네요. 
위의 데모 링크를 클릭해서 직접 확인해 보세요. 
WinForm 컨트롤과 비교해보면 Silverlight 데모의 컨트롤과 WinForm 컨트롤은 퀄리티 면에서 거의 맞먹더군요. 
매우 훌륭합니다. 
그래서 이 포스트에 별점 5개를 주고 왔답니다 ^^ㅋ
어서 Silverlight 의 훌륭한 오픈소스 컨트롤들이 쏟아져 나왔으면 하네요~
Posted by 땡초 POWERUMC

댓글을 달아 주세요

역어셈블리
 
역어셈블리는 예전 기계어 코드(0과 1의 비트 조합의 코드)를 Assembler(어셈블러) 언어로 변환시키는데 사용되어졌다. 특히, XT/AT/286 시절 게임 프로그래밍에서는 C와 PASCAL 로 주로 작업을 하였으나, 최적의 성능을 요구되는 그래픽 엔진에는 어셈블리어(Assembly Language) 를 주로 사용하였다.
특히, 불법 복사를 막기 위해 게임 실행을 위해 암호(Password)를 입력해야 플레이가 가능한 게임들이 많았으며, 이런 류의 암호를 깨기 위해 Disassembler 를 사용하였다. 간결한 암호화의 경우 메모리상의 어셈블리어의 CMP 코드의 조작만으로 암호를 깰 수 있었으며, 실행파일의 HEX 코드를 조작하여 Crack 을 제작할 수도 있다. 또한, 게임을 이어서 하기 위해 세이브 파일(Save File) 의 케릭터의 성향 또는 능력을 조작하여 무적이 될 수 도 있었다.
아마도 MS 기술의 대부분의 컴파일 언어(원시코드->object코드->목적파일)는 역어셈블리가 가능하다. (LINUX 계열은 모르니, 패스)
 
 
Reflector & Reflector Silverlight Addin
 
Reflector 는 .NET 어셈블리를 역어셈블리하는 프로그램이다. 쉽게 말해서, .NET 으로 작성된 어셈블리를 소스코드로 복원한다고 말하면 알기 쉬울 것이다.
Reflector 는 소스코드가 공개되어지지 않은 .NET 어셈블리의 EXE, DLL 을 까 볼 수 있는 유용한 유틸리티다. 좀더 유용하게 활용하자면, 자신의 소스 코드가 타인에게 공개되었을 때, 중요한 보안설정 및 개인정보 등이 노출되는지 그렇지 않은지 판별할 수 있다. 더불어 .NET Framework 의 내부를 훤히 들여다 볼 수도 있다.
 
Reflector 다운로드
http://www.aisto.com/roeder/dotnet/
 
 
Silverlight Browser With Reflector
 
Reflector 는 참으로 유용하게 Addin 도 존재한다. 그 중 가장 이슈인 Silverlight Addin 도 존재한다. Reflector 가 그러하듯, 아무런 설치 없이 압축을 푸는 것 만으로 Addin 설치 또한 간편하다.
 
Reflector Addins 다운로드
http://www.codeplex.com/reflectoraddins
 
 
우선 Reflector 를 설치한 후, Silverlight Browser 를 다운받아 적절한 폴더에(또는 같은 폴더) 압축을 푼 후, 아래의 그림과 같이 Addin 을 지정해 주면 된다.
 
 
 
Addin 파일을 잘 지정해 주었다면, 다음과 같이 File->Open Silverlight Url 항목이 추가된 것을 확인할 수 있다.
 
 
그럼, Silverlight Url 란에 원하는 실버라이트 페이지의 URL 을 적은 후에, GO 버튼을 클릭해 보자.
 
 
그림에 보듯이, js 스크립트 파일과 xaml, cs 파일의 코드가 그대로 드러나는 것을 볼 수 있다.
 
2009-06-20 아래의 경로는 접속할 수 없습니다
여러분의 테스트를 위해 다음의 URL 을 제공합니다 ㅋ;;
http://umc.pe.kr/Sample/Silverlight/Silverlight-Picture/SilverlightPicture.html
 
 
.NET 의 역어셈블리 방지 (Disassembly Protect)
 
현재 닷넷 어셈블리를 방지하기 위해 3 가지 기술이 존재한다.
 
Obfuscation ( 변수명, 메서드 명 규칙을 변형 )
Control flow obfuscation ( 코드의 로직을 변형 )
Native code ( IL코드를 Native 코드로 컴파일하여 변형 )
 
어떤 방법으로 닷넷 어셈블리를 보호 하는지 자세한 내용은 http://flutia.egloos.com/1409086 를 참고하면 된다.
 
Obfuscation 를 지원하는 역어셈블리 방지 프로그램은 Spices.Net 이 있다. Spices.Net 은 http://www.9rays.net/download.aspx 에서 다운받을 수 있다.
하지만, Obfuscation Option 을 조정해 가며 보호 강도를 높여 테스트 해본 결과 중간 이상 수준의 Obfuscation Option 이 요구되면 아예 닷넷 어셈블리가 제대로 바인딩 되지 않는 상황이 벌어 지기도 한다. Spices.Net 이 기본적으로 설정한 Obfuscation Option 수준이라면 어떤 어셈블리도 문제없이 Protected 될 것이다.(변수명, 메서드명 규칙이 바뀌는 방식의 어셈블리 보호)
 
 
실버라이트 Reflector Addin 의 소개와 함께 역어셈블리의와 역어셈블리 방지 기술에 대해 알아보았다. 주로 Reflector 는 남의 소스 훔쳐보기용으로 사용하고 있으나(필자의 경우^^;) 나중이라도 자신의 프로그램을 배포하게 된다면 반드시 Reflector 로 중요 정보가 노출되었는지, 또는 중요한 로직이 노출되는지를 반드시 확인할 필요가 있다.
Posted by 땡초 POWERUMC

댓글을 달아 주세요



실버라이트 시작하기
 
우선 Visual Studio 2008 Beta 2 와 실버라이트 개발 툴을 설치를 하자.
 
훈스 닷넷 실버라이트 강좌 ( 실버라이트 개발 환경 설정하기 )
http://www.hoonsbara.com/hoonsboard.aspx?table_name=sivlerlighttip&board_idx=452919&page=1&keyword=&search=&boardmode=2

2009-06-20 아래의 경로는 접속할 수 없습니다
실버라이트 그림판 예제
http://umc.pe.kr/Sample/Silverlight/Silverlight-Picture/SilverlightPicture.html

 
새 프로젝트를 통해 Silverlight 프로젝트를 만들자.
 
새 프로젝트를 통해 Silverlight Project 만들기
 
실버라이트 프로젝트를 만들게 되면, 기본적으로 개발에 필요한 xaml 과 html, js 파일들이 만들어 진다.
 
그럼 Page_Loaded 에 다음과 같이 이벤트를 등록하는 코드를 작성해 보자.
 
public void Page_Loaded(object o, EventArgs e)
{
         InitializeComponent();
         this.MouseLeftButtonDown += new MouseEventHandler(Page_MouseLeftButtonDown);
         this.MouseLeftButtonUp += new MouseEventHandler(Page_MouseLeftButtonUp);
         this.MouseMove += new MouseEventHandler(Page_MouseMove);
}
 
실버라이트는 마우스 오픈쪽 버튼에 대한 이벤트가 제공되지 않는다.
웹에 표시된 후, 실버라이트 영역에서 마우스 오른쪽 버튼을 누르면 기본적으로
Silverlight Configuration 컨텍스트 메뉴가 뜨기 때문에, 제공되지 않는 듯 하다.
 
그럼 코드에서 등록한 이벤트 메서드를 보자.
 
private bool isDrawing = false;
private Point lastPoint = new Point();
 
void Page_MouseMove(object sender, MouseEventArgs e)
{
         if (!isDrawing) return;
         Line line = new Line();
         line.X1 = lastPoint.X;
         line.Y1 = lastPoint.Y;
         line.X2 = e.GetPosition(null).X;
         line.Y2 = e.GetPosition(null).Y;
         line.Stroke = new SolidColorBrush(Color.FromRgb(0, 0, 0));
         line.StrokeThickness = 2;
 
         Canvas canvas = ((Canvas)sender);
         canvas.Children.Add(line);
 
         lastPoint.X = e.GetPosition(null).X;
         lastPoint.Y = e.GetPosition(null).Y;
}
 
void Page_MouseLeftButtonUp(object sender, MouseEventArgs e)
{
         isDrawing = false;
}
 
void Page_MouseLeftButtonDown(object sender, MouseEventArgs e)
{
         isDrawing = true;
         lastPoint.X = e.GetPosition(null).X;
         lastPoint.Y = e.GetPosition(null).Y;
}
 
그럼 위 소스를 실행해 보자.
 
소스코드 실행
 
 
과연 실버라이트?
 
위처럼 굉장히 짧은 코드로 자바스크립트로 표현하기 힘든 부분을 무척 간단하게 작성할 수 있다.
아마 최근 가장 이슈가 되고 있는 실버라이트… 과연, 실무에서도?
MS 엔 실버라이트가 있지만, 이미 광범위하게 Adobe 의 Flex 가 자리잡고 있다.
하지만, 그것이 문제는 아니다. Flex 진영에선 Flex 전문 디자이너 및 개발자가 있지만,
실버라이트는 개발, 디자인을 모두 개발자가 한다?
.NET 을 개발하고 있는 개발자에겐 무척이나 매력적인 기술이겠지만, 디자이너에겐
실버라이트와 Blend 툴이 밥줄이 될 수 있을까 하는 걱정이다.
Xaml 과 같은 마크업 랭귀지의 등장이 디자이너와 개발자의 업무를 분리시키는 동시에
협업에 파격적인 변화를 줄거라고 생각하지만,
위의 디자이너 영역을 개발자가 왠지 떠맡게 될 것 같은 느낌이 드는건 나만 그럴까?
우리나라와 같은 기형적인 IT 환경에선 충분히 가능한 업무구조가 될 것 같다.
아무튼, 가장 주목받고 있는 기술인 만큼 그 릴리즈를 무척 기대해보며 이만 마친다.
Posted by 땡초 POWERUMC

댓글을 달아 주세요