• 에센셜 실버라이트 3

  • 아슈라프 미하일 지음
  • 박용우, 이재규 옮김

  • 오픈소스 & 웹 시리즈 _ 016
  • ISBN: 9788992939416
  • 22,000원 | 2009년 12월 10일 발행 | 312쪽



『에센셜 실버라이트 3』의 저자 ‘아슈라프 미하일’은 지난 11년 동안 마이크로소프트에서 제작된 수많은 제품군에서 그래픽 시스템과 관련된 일을 담당해왔으며, 2005년부터는 WPF나 실버라이트의 그래픽 시스템을 담당하는 아키텍트로 근무해왔다. 실버라이트에 대해서는 초창기 모델부터 지금까지 모든 것을 직접 설계해왔기 때문에 그 어느 누구보다도 실버라이트의 동작 원리나 구현 방식에 대해서 가장 잘 알고 있다고 해도 과언이 아니다. 따라서 이 책에서도 오랫동안 쌓아 온 저자의 경험과 노하우를 녹여내는 데 초점을 맞추고 있다. 즉, 실버라이트의 구성과 동작 원리 또는 주의할 점이나 성능에 대한 문제점들에 대해서 실버라이트를 제작한 사람의 입장에서 개발자들에게 실버라이트의 이야기를 친절하게 들려주고 있다.

 

책소개

"당신이 잡고 있는 이 책은 실버라이트 3 응용프로그램을 훌륭하게 만들기 위한 아주 중요한 핵심들을 담고 있는 책이다. 그것들을 잘 활용하기 바란다."

-- 스콧 구스리가 작성한 머리글 중에서, 개발자 사업부 부사장, Microsoft 근무

“이 책 Essential Silverlight 3은 단순히 기술만을 자세히 설명한 것이 아니다. 깔끔한 예제와 성능 팁을 알려줌으로써 어떠한 실버라이트 응용프로그램도 한층 뛰어나게 만들 수 있게 할 것이다. 아슈라프는 실버라이트 런타임의 기술 리더만이 알 수 있는 깊이 있는 내부구현까지도 알려주고 있다. 그래픽스 부분을 시작으로 텍스트, 미디어 등등. 이 책은 독자들에게 필요한 실버라이트 3 런타임의 핵심 정보를 모두 알려주고 있다.”

-- 브래드 에이브람스, 제품 단위 매니저, Microsoft 근무

“Essential Silvelright 3은 정말로 실버라이트 개발자의 라이브러리로 없어서는 안 되는 필수 책이다. 각 장마다 실려 있는 ‘하부구조’ 부분에서는 실버라이트가 구현된 방식이 자세히 설명되어 있으며 ‘성능 팁’에서는 소프트웨어를 최대한 활용하기 위한 정보를 사용하는 방법에 대해서 설명하고 있다. 이 엄청난 정보를 내 스스로 알아내야 하고 이해해야만 했는데 그럴 필요가 없게 해줘서 너무 고맙게 생각한다.”

-- 노아 게드리히, 기술이사, BLITZ Agency

“실버라이트의 세 번째 발걸음은 RIA를 구현하게 만드는 커다란 발걸음이다. 아슈라프는 이러한 새로운 개념들을 깊이 있고 간결한 문장으로 그것을 세상 밖에 소개하고 있다.”

-- 제이슨 베레스, Microsoft MVP, author; INETA Speaker

“아슈라프 미하일은 실버라이트를 더 이해하려는 사람이나 마스터하려는 사람 또는 잠재된 모든 기능을 알아보려는 모든 사람들에게 심도 있고 실제적인 책을 전달해주고 있다. 이 책은 정말 훌륭한 실버라이트 응용프로그램을 만들 수 있도록 예제 코드과 성능 팁 그 외의 아주 유용한 충고들을 담고 있다.”

-- 올레그 코코린, CEO, MS Team, LLC

마이크로소프트 실버라이트는 뛰어난 크로스 플랫폼이다. 흔히 RIA라고 불리는 풍부한 인터넷 응용프로그램 기술은 기존 HTML 브라우저 페이지로 가능했던 대화형 웹 응용프로그램보다 훨씬 압도적인 응용프로그램을 만들 수 있게 한다. 실버라이트 3은 기존 버전에 추가로 브라우저 외부에서 응용프로그램을 실행할 수 있는 아웃오브브라우저(out-of-browser) 기능, H.264 비디오, 3D 그래픽스와 실시간 효과와 같은 중요한 개선사항들을 포함하고 있다.

『에센셜 실버라이트 3』은 신뢰할 만한 참고서이며 가이드이다. 이 책은 실버라이트3의 모든 핵심 기능을 다루고 있을 뿐만 아니라 그 기능들을 사용하는 방법에 대해서도 설명하고 있다. 또, ‘하부구조’ 절에서는 각각의 기능들이 왜 그렇게 구현되어야만 했으며 각 작업들이 어떻게 서로 상호작용하는지를 상세하게 설명해주고 있다. 이 책의 문장은 간결하며, 구체적인 성능 팁은 실버라이트 응용프로그램의 속도를 개선하는 데 실질적인 도움을 준다.

저자 아슈라프 미하일은 실버라이트3을 설명할 수 있는 충분한 자격을 가진 적격자이다. 그는 마이크로소프트 실버라이트의 초기 버전부터 현재 버전에 이르기까지 모든 것을 이끌어온 아키텍트이다. 이 책에서 그는 다음과 같은 내용들을 설명하고 있다.

  • 실버라이트의 설계원칙과 실버라이트 응용프로그램의 구성, 그리고 XAML과 .NET 코드의 통합방법
  • 실버라이트 벡터 그래픽, 비트맵 이미지, 애니메이션의 사용방법
  • 플랫폼에 독립적으로 예측 가능하고 읽기 쉬운 텍스트를 출력하는 방법과 애니메이션으로 변환이 되는 텍스트 엘리먼트를 출력하는 방법
  • 마우스의 휠 입력이나 좌표 입력 그리고 키보드로부터 사용자 입력을 받는 방법
  • 용자 인터페이스를 개선하는 부드러운 애니메이션을 구현하는 방법과 응용프로그램이 지루하지 않도록 애니메이션을 이용하는 방법
  • 응용프로그램을 배치하기 위해 Canvas, StackPanel, Grid, Border 엘리먼트를 사용하는 방법과 사용자 레이아웃 엘리먼트를 정의하는 방법
  • 고품질의 비디오, 생방송, 주문형의 비디오와 오디오를 재생하는 방법
  • 내장 컨트롤과 툴킷 컨트롤을 사용자정의하는 방법과 새로운 실버라이트 컨트롤을 작성하는 방법
  • 실버라이트 데이터 바인딩을 사용하여 데이터를 연결하고 동기화하는 방법
  • 내장된 실시간 효과를 사용하는 방법과 사용자형 HLSL 픽셀 셰이더를 정의하는 방법
  • GPU 가속 랜더링을 사용하는 방법

만일 이 글을 읽고 있는 독자가 실버라이트를 이제 시작하려는 개발자이거나 실버라이트 런타임의 내부 동작 방법을 이해하려는 기존 개발자라면, 이 책이 바로 그 두 부류의 독자를 위한 책이 될 것이다.

아슈라프 미하일(Ashraf Michail)

아슈라프 미하일은 실버라이트가 시작된 2005년부터 지금까지 마이크로소프트에서 실버라이트 아키텍트로 근무해왔다. 실버라이트 아키텍트로 근무하기 전에는 수많은 그래픽 관련 일을 해왔으며 UI 프레임워크, Windows Presentation Foundation, Windows Vista, Internet Explorer 내의 인터넷 기술 외에도 마이크로소프트에서 생산하는 수많은 제품 군에서 일을 해왔다. 아슈라프는 11년 동안 마이크로소프트에서 근무하는 동안 많은 그래픽 엔진들을 만들어왔으며 그래픽 엔진과 UI 프레임워크을 위한 아키텍처를 구축해왔다.

박용우

국내에 닷넷 관련 책자가 없던 시기에 최초로 C#을 소개하는 책을 번역하면서 .NET과 인연을 맺게 되었다. 지금까지 닷넷 경력만 약 10년이라는 경험을 이용해 국내 SI 업체나 재직자들을 대상으로 교육을 하고 있다. RIA와 컴퓨터 그래픽스 그리고 분산 프로그래밍과 보안 분야에 관심을 가지고 있으며, 현재는 ㈜이오알(eorworld.com)의 대표로 앤서이즈(www.answeris.net) 커뮤니티 오픈을 준비 중에 있다.

 

이재규

㈜이오알에서 플랫폼 팀의 팀장을 맡고 있다. 프레임워크나 플랫폼 설계에 관심이 많으며 컴퓨터 그래픽스 알고리즘에도 많은 관심을 가지고 있으며, 현재는 앤서이즈 커뮤니티의 UI개발을 담당하고 있다.

 

옮긴이 글

누군가가 필자에게 이 책을 추천하는 이유를 말해보라고 한다면 두 가지로 그 이유를 말할 수 있을 것 같다. 그 첫 번째 이유는 누구라도 이 책을 읽고 나면 실버라이트를 보는 눈이 한층 더 깊어질 수 있다는 점이다. 그리고 두 번째 이유는 실버라이트 2.0의 기능과 3.0에 새로 추가된 차이를 빠르고 간결하게 정리할 수 있다는 점이다.

첫 번째 이유를 이야기 한다면, 우선 이 책의 저자가 누구인지를 아는 것이 중요할 듯하다. 이 책의 저자 ‘아슈라프 미하일’은 지난 11년 동안 마이크로소프트에서 제작된 수많은 제품군에서 그래픽 시스템과 관련된 일을 담당해왔으며, 2005년부터는 WPF나 실버라이트의 그래픽 시스템을 담당하는 아키텍트로 근무해왔다. 실버라이트에 대해서는 초창기 모델부터 지금까지 모든 것을 직접 설계 해왔기 때문에 그 어느 누구보다도 실버라이트의 동작 원리나 구현 방식에 대해서 가장 잘 알고 있다고 해도 과언이 아니다. 따라서 이 책에서도 오랫동안 쌓아 온 저자의 경험과 노하우를 녹여내는 데 초점을 맞추고 있다. 즉, 실버라이트의 구성과 동작 원리 또는 주의할 점이나 성능에 대한 문제점들에 대해서 실버라이트를 제작한 사람의 입장에서 개발자들에게 실버라이트의 이야기를 친절하게 들려주고 있다.

사실 이 책은 실버라이트를 완전 처음 접하는 초보자를 위한 책은 아니다. 하지만 실버라이트 개발자라면 반드시 한 번쯤은 읽어보아야 할 필독서임은 분명하다. 이 책은 초보자를 위한 다른 책들처럼 TextBlock과 같은 컨트롤을 사용하는 방법에 초점을 맞춘 것이 아니다. 대신 실버라이트를 설계한 아키텍트의 입장에서 컨트롤을 사용할 때의 주의점이나 동작 원리에 대해서 설명해주고 있다. 필자 또한 이러한 부분들을 개발자들에게 소개하고 싶은 마음에서 이 책을 번역하게 되었다. 아마도 이 책을 읽고 나면 과거 실버라이트를 개발할 때의 시각과 다른 새로운 시각을 갖게 될 것이다. 이를테면 구현 동작 구현에만 신경 쓰던 나였지만 이제는 나도 모르게 성능을 따지고 있는 자신을 만나게 될 것이다.

두 번째 이유는, 실버라이트뿐만 아니라 새로운 플랫폼이나 프레임워크를 공부해야 할 때의 참고서는 개념 설명과 활용 부분이 분리되어 있어야 공부하기가 편하다. 즉, 처음 접하는 사람들에게 개념과 활용 또는 그 외의 잡다한 내용을 짬뽕해놓은 두꺼운 책은 그것을 읽는 독자들로 하여금 지루함과 난해함을 전해줌으로써 시작하고자 하는 의지마저도 꺾을 수가 있다. 하지만 이 책은 앞 단락에서 언급한 내용만으로도 이미 짐작하겠지만, 불필요한 많은 잡다한 내용으로 책의 지면을 가득 채우고 있지 않다. 이 책의 원서는 300쪽 정도의 분량에 실버라이트 3.0의 모든 내용을 군더더기 없이 설명하고 있다.

또한, 이 책은 실버라이트를 시작하는 사람들이나 기존 개발자들이 실버라이트 2.0/3.0의 개념과 구성을 빠르게 정리할 수 있도록 간단 명료하게 설명해주고 있다. 이 책을 읽고 나면 실버라이트의 구성을 한 번에 정리할 수 있을 뿐만 아니라, 3.0에서 새로 추가된 내용을 별도로 표시해서 설명하고 있기 때문에, 새로운 내용 또한 어떻게 달라졌는지를 빠르게 정리할 수 있을 것이다.

마지막으로 이 책에 대한 추천글 중에서 필자가 가장 공감하는 글 하나를 소개하도록 하겠다. 필자가 공감한 추천글은 노아 게드리히(BLITZ Agency의 기술이사)의 추천글이다.

『Essential Silvelright 3』은 정말로 실버라이트 개발자의 라이브러리로 없어서는 안 되는 필수 책이다. 각 장마다 실려 있는 ‘하부구조’ 부분에서는 실버라이트의 구현방식이 자세히 설명되어 있으며 ‘성능 팁’에서는 소프트웨어를 최대한 활용하기 위한 정보를 사용하는 방법에 대해서 설명하고 있다. 이 엄청난 정보를 내 스스로 알아내야 하고 이해해야만 했는데 그럴 필요를 없게 해줘서 너무 고맙게 생각한다.”

아무쪼록, 이 책이 여러분들에게도 도움이 되었으면 하는 바람이다.

  • 1장 실버라이트 개요
    • 실버라이트 설계 원칙들
      • 웹 개발
      • 보안
      • 미디어와 향상된 인터넷 응용프로그램들
      • 쉬운 개발
      • 플랫폼 독립
    • 실버라이트의 기능
      • 응용프로그램 모델
      • 그래픽스
      • 텍스트
      • 입력
      • 애니메이션
      • 레이아웃
      • 미디어
      • 컨트롤
      • 데이터 바인딩
      • 네트워킹
    • 하부 구조
    • 요점 정리
  •  
  • 02장 응용프로그램
    • 응용프로그램 모델의 설계 원칙
      • 웹 개발과 브라우저 외부에서 실행
      • 플랫폼 라이브러리
      • 디자이너와 개발자의 협업
      • 플랫폼에 독립
      • 보안
    • Visual Studio를 사용하여 응용프로그램 만들기
    • 응용프로그램 구성요소들
      • 브라우저 밖으로 응용프로그램 내보내기(실버라이트 3의 새로운 기능)
      • XAML
      • XAP 패키지
    • 하부구조
      • 아키텍처 개요
      • 실버라이트 플러그인
      • 다운로더
      • XAML 파서
      • .NET 공통 언어 런타임
      • 엘리먼트 트리
      • 이벤트 시스템
      • 애니메이션
      • 레이아웃
      • 렌더링
    • 요점정리
  •  
  • 03장 그래픽스
    • 그래픽 시스템의 설계 원칙
      • 벡터 그래픽과 비트맵 이미지
      • 보유모드
      • 플랫폼 독립의 일관성
      • 도구
      • 이미지 품질과 속도
    • 그래픽 엘리먼트
      • 도형
      • 이미지
      • 브러쉬
      • Image 브러시
      • 외곽선 칠하기
      • Canvas
    • 하부구조
      • 그리기 루프(Draw Loop)
      • 래스터화
      • 변경된 부분 다시 그리기
      • 가려진 영역 찾기(Occlusion Culling)
      • 다중 코어 렌더링
      • 콘텐트가 화면에 출력되는 방법
    • 요점정리
  •  
  • 04장 텍스트
    • 텍스트 설계 원칙들
      • 서로 다른 기종의 플랫폼에서 동일한 특징 유지
      • 크기에 독립적인 레이아웃
      • 가독성을 위한 렌더링
    • Text 엘리먼트들
      • TextBlock
    • 하부구조
      • 폰트 열거
      • 대체 폰트
      • 폰트 다운로드
      • 캐시
      • 래스터화
    • 요점정리
  •  
  • 05장 입력 이벤트들
    • 입력 설계 원칙
      • 웹 브라우저 이벤트 받기
      • 사용자 컨트롤
      • 플랫폼에 독립적인 일관성
      • 다중 언어
    • 입력 이벤트
      • 마우스 입력 이벤트
      • 키보드 이벤트와 포커스
    • 하부구조
      • 마우스 이벤트
      • 키보드 이벤트
      • 비동기적으로 실행되는 이벤트
    • 요점정리
  •  
  • 06장 애니메이션
    • 애니메이션 설계 원칙
      • 시간 기반 애니메이션과 프레임 기반 애니메이션
      • 시간에 따른 속성 변경
      • 사용자 애니메이션
      • 성능
    • 애니메이션 엘리먼트
      • 애니메이션 시작하기
      • 보간과 키 프레임 애니메이션
      • 타임라인
      • 비선형 보간(Easing) 기능(실버라이트3의 새로운 기능)
      • 사용자 애니메이션 기능(실버라이트3의 새로운 기능)
    • 하부구조
      • 애니메이션 틱
      • 속성 변경 속도
      • 화면 출력
    • 요점정리
  •  
  • 07장 레이아웃
    • 레이아웃 설계 원칙
      • 크기와 위치에 대한 자동화
      • 자동화된 응용프로그램 크기
      • 크기에 독립적인 레이아웃
    • 레이아웃 엘리먼트
      • Canvas
      • Border
      • StackPanel
      • Grid
      • 레이아웃 좌표 반올림
      • 커스텀 레이아웃 작성
      • 레이아웃 이벤트
    • 하부 구조
      • 레이아웃 알고리즘
    • 요점 정리
  •  
  • 08장 미디어
    • 미디어 설계 원칙
      • 미디어 통합
      • 콘텐트 전송
      • 전체 화면 재생을 위한 전송
      • Expression Media Encoder으로 플레이어 만들기
    • 미디어 엘리먼트
      • 비디오 재생
      • 재생 컨트롤 만들기
      • 비디오 효과와 변형
      • 전체 화면
      • 응용프로그램에 출력될 비디오 마커에 연결하기
    • 하부구조
      • 소스
      • 플레이어
    • 요점 정리
  •  
  • 09장 컨트롤
    • 컨트롤 설계 원칙
      • 내장 컨트롤
      • 사용자 정의 컨트롤
      • 사용자 정의
    • 컨트롤 엘리먼트
      • ContentControl과 ItemsControl
      • 상태 관리자
      • 스타일 주기
      • 사용자 정의 컨트롤 생성하기
    • 하부 구조
      • 컨트롤 인스턴스
      • 상태 매니저 알고리즘
    • 요점 정리
  •  
  • 10장 데이터 바인딩
    • 데이터 바인딩 설계 원칙
      • 데이터 소스
      • 자동화된 연결과 동기화
      • 선언적인 XAML 모델
    • 데이터 바인딩 객체들
      • 데이터 바인딩
      • DataContext 상속
      • 데이터 동기화와 바인딩 모드
      • 데이터 바인딩 컬렉션
      • 값 변환자
      • 데이터 유효성 검사
      • 엘리먼트와 엘리먼트 바인딩(실버라이트3의 새로운 기능)
    • 하부 구조
      • Binding 객체
      • ItemsControl
    • 요점 정리
  •  
  • 11장 효과
    • 효과 설계 원칙
      • 실시간 속도
      • 내장된 공통 효과들
    • 효과 엘리먼트
      • 효과 적용하기
      • 효과 생성하기
    • 하부구조
      • 출력 면 생성
      • BlurEffect와 DropShadowEffect
    • 요점정리
  •  
  • 12장 GPU 가속
    • GPU 가속을 설계할 때의 원칙들
    • 일반적인 시나리오에서 성능 개선
      • 이미지 품질 유지하기
      • 합리적인 안전성 유지
    • GPU 가속 기능
      • GPU 가속의 필요 조건
      • GPU 가속 활성화하기
      • CacheMode 속성 사용하기
      • 성능문제 진단
    • 하부구조
      • 그래픽 장치 생성
      • 텍스처 생성
      • GPU 가속의 렌더링 단계
      • 다중 모니터 사용
    • 요점정리

예제코드 관련 GitHub 페이지

도서 소개자료

관련 글