• 실버라이트 2 인 액션

  • 차드 캠벨, 존 스탁턴 지음
  • 박용우, 석재헌 옮김

  • 오픈소스 & 웹 시리즈 _ 011
  • ISBN: 9788992939201
  • 26,000원 | 2009년 03월 11일 발행 | 464쪽



실버라이트 2.0은 RIA를 개발하기 위한 진정한 플랫폼이자 프레임워크이다. 실버라이트 1.0이 웹 브라우저를 위한 강력한 플러그인이라면 실버라이트 2.0은 1.0이 가지는 모든 기능을 포함할 뿐만 아니라 서버 개발자를 위한 컨트롤이나 강력한 네트워킹 기능, 그리고 리소스 사용자 정의 컨트롤이나 리소스 배포 방법 등 다양한 서버 개발 환경을 함께 제공하고 있다.

이 책은 실버라이트 도서 분야에서 마이크로소프트가 직접 추천하는 도서로서 아마존을 비롯해 많은 온라인 판매몰에서 최근 도서평이 별 다섯 개 만점을 연이어 평가받은 인기 도서이다. 실버라이트를 개발하고자 하는 개발자들이 반드시 알아야 할 개념들을 일목요연하게 정리하여 설명하고 있기 때문에, 그동안 실버라이트를 체계적으로 학습하려는 개발자들에게 이 책은 단비와 같은 책이 아닐 수 없다.

 

추천글

“이 책은 꼭 여러분 옆에 두고 있어야 합니다” - 애쉬시 세티의 서문 중 일부, 마이크로소프트 실버라이트 프로그램 매니저

“실버라이트 2를 배우길 원한다면, 이 책을 읽어 보시기 바랍니다. 최고입니다!.” - 피터 브라운, 마이크로소프트 MVP

“실버라이트 2의 개발자를 위한 완전한 정수.” - 『ASP.NET AJAX 인 액션』의 저자 데이빗 바르콜

“이 책은 저의 실버라이트 지식을 엄청나게 향상시켜 주었습니다.” - 마크 몬스터 소프트웨어 엔지니어, 루비콘

“이 책은 여러분에게 실버라이트 2의 요령을 터득하게 해줄 것입니다!” - 데이빗 코런 .NET 아키텍트 소셜 솔루션스

“깊이 있고 읽기 쉬운 책” - 『ASP.NET AJAX 인 액션』의 저자 라마 크리쉬나 바빌라라

차드 캠벨(Chad A. Campbell)

차드 캠벨은 마이크로소프트 MVP이며 솔루션 아키텍트이다. 그는 1999년부터 여러 방면의 기업용 웹 응용 프로그램을 개발하고 있다. 2006년의 초기 공개 버전부터 시작해서 열심히 실버라이트를 연구하고 사용하고 있으며 MCSD와 MCTS 자격증을 가지고 있다. 퍼듀 대학을 졸업했으며, 컴퓨터 사이언스를 전공했고 부전공으로 심리학을 공부했다.

존 스탁턴(John Stockton)

존 스탁턴은 지난 10년간 마이크로소프트의 기술을 사용해서 미국의 500대 대기업과 정부 기관을 위한 복잡한 웹 응용 프로그램을 개발하고 있다. 그는 지역사회를 위한 여러 일들에 적극적으로 활동하고 있으며, 실버라이트 온라인 커뮤니티에서도 활발한 활동을 하고 있다. 두살 난 아들과 즐겁게 노는 것을 좋아하며, 모형 철도의 제작과 목제를 이용한 세공, 여러 야외활동을 취미로 가지고 있다.

박용우

국내에 닷넷 관련 책자가 없던 시기에 최초로 C#을 소개하는 책을 번역하면서 .NET과 인연을 맺게 되었다. 지금까지 닷넷 경력만 약 10년이라는 경험을 이용해 국내 SI 업체나 재직자들을 대상으로 교육을 하고 있다. RIA와 Computer Graphics 그리고 분산 프로그래밍과 보안 분야에 관심을 가지고 있으며, 현재는 (주)쌍용정보통신 교육센터에서 보안이나 닷넷에 대한 강의를 맡고 있다.

석재헌 linoshok@hotmail.com

9년의 경력을 가진 소프트웨어 엔지니어로, 그동안 멀티미디어 방송 솔루션 및 여러 온라인 게임의 인증 및 빌링 솔루션의 개발에 참여했다. 현재는 넥슨 미국 법인에서 차세대 온라인 게임의 관리및 백엔드 솔루션을 개발하고 있으며, 시스템 측면에서 온라인 게임이 가지고 있는 의미와 앞으로의 발전 방향에 큰 관심을 가지고 있다. 한양대학교를 졸업했으며 2007, 2008년 Visual C MVP를 지냈다

 

옮긴이 글

과거 수십 년 동안 사용자와 상호작용하기 위한 입력 방법은 크게 세 번의 변화를 거쳐왔다. 처음에는 일괄 입력 방식을 사용하던 방식에서 키보드를 사용한 입력으로 바뀌었으며, 최근에는 마우스를 기본 입력 방식으로 변화되었고, 현재는 마우스를 이용한 윈도우 프로그램이 사용자와의 상호작용을 위한 기본 수단으로 사용되고 있다. 하지만 미래는 손가락이 새로운 입력 장치로 사용될 것이다. 엄밀히 말하면 미래가 아니라 현재라고 해도 무방하다.

현재 우리는 핸드폰을 사용하면서도 터치스크린을 사용하는 경우가 많아졌다. 뿐만 아니라 넷북이나 PMP, 심지어는 TV까지도 손가락 터치로 모든 정보를 입력할 수 있다는 것을 알 수 있다. 현재보다 미래 사회에서는 마우스 오른쪽 버튼을 이용한 메뉴가 아니라, 손가락 하나만으로 모든 메뉴를 대신할 수 있는 직관적이며 상호작용이 심화된 사용자 환경을 가지게 될 것이 자명하다. 사용자 인증 방법 또한 키보드를 사용하는 현재 방식에서 앞으로는 RFID를 사용하거나 또는 지문과 같은 것이 키보드 입력을 대신할 수 있을 것이다.

이런 환경에서 사용자 UI에서 가장 중요한 부분은 손가락으로 드래그하는 작업, 손가락으로 선택한 아이템을 회전하는 작업 등이 UI의 주류를 이룰 것이며, 이것을 쉽고 빠르게 개발할 수 있는 플랫폼이나 프레임워크를 사용하는 것이 응용프로그램을 빠르게 개발할 수 있는 척도가 될 것이다. WPF는 이런 미래 사회를 위해서 태어난 프레젠테이션 기술이며 플랫폼이며 프레임워크이다. 이러한 환경을 사용하여 만든 애플리케이션을 우리는 RIA(Rich Interactive Applicaton)이라고 부른다. 그 중에서 실버라이트는 좀 더 웹에 특화된 RIA를 구현할 수 있게 하는 웹 전문 플랫폼이자 프레임워크이다.

작년 한해는 RIA라는 용어로 뜨거웠던 한해였던 것 같다. 그 열기가 올해는 더욱 거세질 것으로 생각되며, 아마도 올해는 RIA를 구축하는 사례가 더욱 많아질 것으로 예상된다. 이런 가운데 RIA를 개발해야 하는 개발자들에게는 그를 뒷받침 해줄 수 있는 관련 기술들에 대한 지식습득이 무엇보다 필요할 것으로 보인다.

불과 2년 전인 2007년 후반에 마이크로소프트에서는 RIA를 위한 실버라이트 1.0을 발표하였다. 하지만 실버라이트 1.0은 RIA를 위한 기술이라기보다는 웹에 멀티미디어와 애니메이션을 지원하기 위한 리치 클라언트 플러그인에 불과해 보였다. 왜냐하면 실버라이트 1.0은 웹 어플리케이션 개발을 지원하기 위한 서버 플랫폼 기반 기술이 아니라 브라우저를 기반으로 하는 기술이었기 때문이다. 그로부터 1년이 지나서 2008년 10월에 마이크로소프트에서는 RIA를 구현하기 위한 실버라이트 2.0을 정식 출시하게 되었다.

실버라이트 2.0은 1.0이 가지고 있는 애니메이션, 멀티미디어, 강력한 그래픽 기능을 서버 플랫폼에서 개발할 수 있도록 해줄 뿐만 아니라, 웹 애플리케이션 개발을 위한 컨트롤들과 네트워크 기능 그리고 사용자 정의 기능들을 많이 추가하였다.

이제 인터렉티브한 사용자 환경을 쉽게 구축하기 위한 기반 기술이 서버개발자들에게도 준비된 것이라고 할 수 있다. 하지만 역자가 만나본 많은 개발자들은 실버라이트에 대한 관심은 많이 있지만 실버라이트 2.0을 습득할 만한 교재가 많지 않다는 말을 하고 있다. 사실 국내에 실버라이트 관련 서적이 전무한 상태인 것은 사실이다. WPF를 비롯해서 실버라이트 초기 시절부터 재직자들을 교육시켜온 역자로서는 교재에 대한 필요성을 절실히 느끼고 있었다. 그러던 중 위키북스 출판사의 관계자로부터 미국에서 『Silverlight 2.0 in Action』이라는 책이 집필 중에 있다는 것을 알게 되었으며, 내용을 검토해본 결과 실버라이트를 학습하고자 하는 개발자들에게 도움을 줄 수 있을 만한 책이라고 확신하게 되었다. 물론 활용서적은 아니지만, 활용을 하기 위해서 알아야 할 기반 기술을 모두 정리하고 있는 것을 알 수 있다.

이 책은 마이크로소프트에서 공식 인정하는 서적으로서 실버라이트 2.0을 설명하는 전문 서적이다. 실버라이트 2.0은 WPF 기술을 웹 기술에서도 사용할 수 있도록 분사되어 나온 기술로 WPF(Window Presentation Foundation)라는 용어에서도 알 수 있듯이 앞으로는 UI를 구성하는 기술로 WPF와 실버라이트가 주류를 이룰 것이라 확신한다. 역자는 이러한 책을 조금이라도 많은 개발자들에게 소개하고자 미국에서 이 책이 나오는 시기와 비슷한 시기에 국내에도 출간될 수 있도록 빠른 번역을 하려고 노력하였다. 혹시 미비한 점이 있더라도 독자분들의 넓은 아량으로 이해해주시리라 믿는다. 부디 이 책이 조금이나마 RIA를 개발하려는 학생이나 개발자들에게 목을 축일 수 있는 책이 되었으면 한다.

  • 1장 실버라이트 소개
    • 1.1 실버라이트는 여러분의 인생을 즐겁게 해줄 것이다!
      • 1.1.1 생산성
      • 1.1.2 성능
      • 1.1.3 이동성
    • 1.2 왜 디자이너와 개발자들은 사이좋게 일하기가 힘들까?
      • 1.2.1 개발자 경험
      • 1.2.2 디자이너 경험
    • 1.3 XAML
      • 1.3.1 코드비하인드
      • 1.3.2 네임스페이스
      • 1.3.3 복합 속성
      • 1.3.4 연결된 속성
    • 1.4 블랜드와 함께 작업하기
    • 1.5 요약
  •  
  • 2장 웹과의 조화
    • 2.1 실버라이트와 HTML DOM의 관계
      • 2.1.1 HTML Document 객체 모델
      • 2.1.2 실버라이트 플러그인
      • 2.1.3 실버라이트 객체 모델
    • 2.2 실버라이트 플러그인 생성하기
      • 2.2.1 실버라이트 유틸리티 파일:Silverlight.js
      • 2.2.2 실버라이트 플러그인의 인스턴스 생성하기
    • 2.3 실버라이트 플러그인 통합하기
      • 2.3.1 실버라이트 응용프로그램과 HTML DOM 연결하기
      • 2.3.2 초기환경 설정하기
      • 2.3.3 플러그인 이벤트 다루기
      • 2.3.4 초기화 매개변수 전달하기
    • 2.4 실버라이트 응용프로그램 모델
      • 2.4.1 매니페스트 파일
      • 2.4.2 실버라이트 응용프로그램
      • 2.4.3 응용프로그램 부속물
    • 2.5 HTML DOM과 상호작용하기
      • 2.5.1 관리 코드에서 웹 페이지를 관리하기
      • 2.5.2 사용자의 브라우저 윈도우 다루기
      • 2.5.3 스크립팅의 세계와 관리 코드의 세계를 연결하기
    • 2.6 요약
  •  
  • 3장 기본으로 돌아가기: 배치와 텍스트
    • 3.1 당신의 상상력을 위한 캔버스
      • 3.1.1 캔버스에 콘텐트 배치하기
      • 3.1.2 캔버스: 강력한 성능 상의 이점
    • 3.2 스택패널
    • 3.3 강력한 그리드 패널
      • 3.3.1 그리드 안에 콘텐트 배치하기
      • 3.3.2 크기 변경하기
      • 3.3.3 프로그래밍을 해서 그리드 제어하기
      • 3.3.4 셀 크기 조절하기
    • 3.4 텍스트 보여주기
      • 3.4.1 폰트 속성들
      • 3.4.2 흐름 제어
      • 3.4.3 텍스트 속성들
      • 3.4.4 간격 설정하기
    • 3.5 UIElement와 FrameworkElement
      • 3.5.1 속성들
      • 3.5.2 메서드
    • 3.6 요약
  •  
  • 4장 사용자와의 상호작용 다루기
    • 4.1 지원하는 장치에 대한 이해
      • 4.1.1 키보드 이벤트 수집하기
      • 4.1.2 마우스 입력받기
    • 4.2 텍스트 컨트롤 사용하기
      • 4.2.1 기본적인 텍스트 다루기
      • 4.2.2 보안에 민감한 데이터 수집하기
    • 4.3 버튼 컨트롤
      • 4.3.1 Button
      • 4.3.2 HyperlinkButton
      • 4.3.3 RadioButton
      • 4.3.4 CheckBox
    • 4.4 ItemsControl
      • 4.4.1 ListBox
      • 4.4.2 ComboBox
      • 4.4.3 TabControl
    • 4.5 날짜 컨트롤
      • 4.5.1 Calendar
      • 4.5.2 DatePicker
    • 4.6 숫자 범위에서 선택하기
      • 4.6.1 ProgressBar 사용하기
      • 4.6.2 Slider 구현하기
    • 4.7 프롬프트 띄우기
      • 4.7.1 다이얼로그 박스 띄우기
      • 4.7.2 파일 입/출력을 위한 프롬프트
    • 4.8 그 밖의 잡다한 컨트롤들
      • 4.8.1 경계선 생성하기
      • 4.8.2 드로잉 입력정보 수집하기
    • 4.9 요약
  •  
  • 5장 데이터 바인딩 알아보기
    • 5.1 데이터 바인딩하기
      • 5.1.1 바인딩 구문 마스터하기
      • 5.1.2 바인딩 모델 선택하기
    • 5.2 데이터 원본 이해하기
      • 5.2.1 속성에 바인딩하기
      • 5.2.2 객체 바인딩하기
      • 5.2.3 콜렉션 바인딩하기
    • 5.3 원하는 대로 화면 변경하기
      • 5.3.1 바인딩 시에 값을 컨버팅하기
      • 5.3.2 데이터 템플릿 생성하기
    • 5.4 데이터 그리드
      • 5.4.1 데이터 표시하기
      • 5.4.2 그리드 데이터 편집하기
      • 5.4.3 아이템 정렬하기
    • 5.5 Language Integrated Query (LINQ)
      • 5.5.1 LINQ 소개하기
      • 5.5.2 LINQ to Objects
      • 5.5.3 LINQ to XML
      • 5.5.4 여러 데이터 타입을 LINQ를 통해서 연결하기
    • 5.6 요약
  •  
  • 6장 네트워킹과 통신
    • 6.1 신뢰성, 보안 그리고 브라우저의 한계
      • 6.1.1 신뢰성 문제의 모든 것
      • 6.1.2 응용프로그램 안전하게 만들기
      • 6.1.3 브라우저 제한
    • 6.2 데이터소스 연결하기
      • 6.2.1 SOAP 서비스 사용하기
      • 6.2.2 REST를 위한 시간
    • 6.3 유용한 데이터로 만들기
      • 6.3.1 POX 읽기
      • 6.3.2 JSON 변환하기
      • 6.3.3 공개 피드 읽기
    • 6.4 고급 서비스들 사용하기
      • 6.4.1 WCF 서비스 개선
      • 6.4.2 WCF 이중(Duplex) 서비스들
      • 6.4.3 소켓 연결하기
    • 6.5 요약
  •  
  • 7장 디지털 미디어 관리하기
    • 7.1 생생한 오디오와 비디오
      • 7.1.1 소스에 접근하기
      • 7.1.2 공통 속성들
      • 7.1.3 오디오 전용 속성들
      • 7.1.4 비디오 전용 속성들
      • 7.1.5 미디어 파일의 생명주기
    • 7.2 플레이리스트: 웹 기반의 믹스테입
      • 7.2.1 클라이언트 플레이리스트 이해하기
      • 7.2.2 서버 플레이리스트 사용하기
    • 7.3 인터랙티브한 재생
      • 7.3.1 재생 상태 조절하기
      • 7.3.2 시간에 따른 인터렉션
      • 7.3.3 전체 스크린 모드로 변경하기
    • 7.4 보호된 콘텐트 사용하기
      • 7.4.1 보호된 콘텐트를 요청하기
      • 7.4.2 PlayReady 컴포넌트 가져오기
      • 7.4.3 보호된 콘텐트 풀기
    • 7.5 이미지를 응용프로그램에서 사용하기
      • 7.5.1 Basic imaging 기본 이미징
      • 7.5.2 딥 줌
    • 7.6 이미지 늘리기와 줄이기
      • 7.6.1 저는 별로 이미지를 늘리고 싶지 않아요!
      • 7.6.2 균일한 크기 변환
      • 7.6.3 전체 영역 채우기
      • 7.6.4 UniformToFill
    • 7.7 요약
  •  
  • 8장 그래픽에 대한 개념잡기
    • 8.1 Getting in shape
      • 8.1.1 모래 위에 그어진 선
      • 8.1.2 Rectangle
      • 8.1.3 Ellipse
      • 8.1.4 Polyline
      • 8.1.5 Polygon
    • 8.2 Geometry
      • 8.2.1 단순 기하
      • 8.2.2 Path 기하
      • 8.2.3 혼합 기하
    • 8.3 브러쉬
      • 8.3.1 SolidColorBrush
      • 8.3.2 LinearGradientBrush
      • 8.3.3 RadialGradientBrush
      • 8.3.4 ImageBrush
      • 8.3.5 VideoBrush
    • 8.4 Transforms
      • 8.4.1 RotateTransform
      • 8.4.2 ScaleTransform
      • 8.4.3 SkewTransform
      • 8.4.4 TranslateTransform
      • 8.4.5 TransformGroup
    • 8.5 블랜드를 사용하여 작업하기
    • 8.6 요약
  •  
  • 9장 이미지에 생명을 불어넣기: 애니메이션
    • 9.1 애니메이션: 이제 때가 되었습니다
    • 9.2 타임라인 정복하기
      • 9.2.1 어떤 타입 형식을 이용해서 애니메이션을 하고 있나?
      • 9.2.2 어디서부터 시작해서 어디로 가고 있나?
      • 9.2.3 얼마나 오래 애니메이션을 지속해야 하나?
    • 9.3 스토리보드
      • 9.3.1 스토리 보드 이해하기
      • 9.3.2 스토리 보드의 대상 속성 접근하기
      • 9.3.3 스토리 보드 조정하기
      • 9.3.4 리소스로 정의하기
    • 9.4 키프레이밍
      • 9.4.1 보간법들
      • 9.4.2 타이밍
    • 9.5 요약
  •  
  • 10장 스타일 입히기
    • 10.1 리소스로 다루기
      • 10.1.1 선언적인 리소스들
      • 10.1.2 느슨한 리소스 접근하기
      • 10.1.3 리소스 묶기
    • 10.2 엘리먼트에 스타일 입히기
      • 10.2.1 모양 정의하기
      • 10.2.2 스타일 적용 대상 지정하기
    • 10.3 템플릿 생성하기
      • 10.3.1 컨트롤 템플릿 만들기
      • 10.3.2 재사용 가능한 템플릿 생성하기
    • 10.4 상태를 이용한 모양 다루기
      • 10.4.1 컴포넌트 이해하기
    • 10.5 VisualStateManager 이용하기
    • 10.6 효과 공유하기
    • 10.7 요약
  •  
  • 11장 스타일 입히기
    • 11.1 격리 저장소에 데이터 저장하기
      • 11.1.1 IsolatedStorageFile: 가상 파일 시스템
      • 11.1.2 파일을 읽거나 쓰기: 격리 저장소방식
      • 11.1.3 격리 저장소관리하기
    • 11.2 런타임에 XAML 사용하기
    • 11.3 BackgroundWorker
      • 11.3.1 작업 수행하기
      • 11.3.2 UI 업데이트하기
    • 11.4 온디멘드 콘텐트 받아오기
      • 11.4.1 콘텐트 요청하기
      • 11.4.3 콘텐트 불러오기
    • 11.5 동적 언어 런타임(Dynamic Language Runtime: DLR)
      • 11.5.1 동적 타입 정의
      • 11.5.2 Metaprogramming 메타프로그래밍
    • 11.6 요약
  •  
  • 12장 빛을 나누다: 배포하기
    • 12.1 사용자 컨트롤 생성하기
      • 12.1.1 모양 정의하기
      • 12.1.2 행위자 정의하기
      • 12.1.3 컨트롤 사용하기
    • 12.2 실버라이트에서 페이지 전환 구성하기
      • 12.2.1 구조 설정하기
      • 12.2.2 페이지 전환 구현하기
      • 12.2.3 페이지 전환하기
    • 12.3 스플레쉬 화면
      • 12.3.1 모양 정의하기
      • 12.3.2 스플레쉬 화면 통합하기
      • 12.3.3 로드 과정 감독하기
    • 12.4 실버라이트 스트리밍 호스팅하기
      • 12.4.1 스트리밍 준비하기
      • 12.4.2 포장하기
      • 12.4.3 적재하기
      • 12.4.4 사용하기
  • 53, 103, 167, 243, 249쪽

    (~)Element을 -> (~)Element를

  • 95, 242쪽

    (~)Height과 -> (~)Height와

  • 105, 244, 248쪽

    (~)Element이 -> (~)Element가

  • 237, 236, 241쪽

    (~)Element은 -> (~)Element는

예제코드 관련 GitHub 페이지

관련 글


엮인 글

엮인 글 주소: http://wikibook.co.kr/silverlight-2/trackback/