예제로 쉽게 배우는 프로페셔널 ASP.NET MVC
개발도서/ASP.NET 2009. 10. 22. 14:12번역은 국내 Microsoft ASP/ASP.NET MVP로 활동중인 장현희 님이 맡아 진행해 주셨네요.
특히 전체 600페이지 중 번역서 1장의 내용(216페이지, 책 전체의 약 1/3이네요)을 PDF파일로 다운로드 받아서 보실 수 있습니다. http://jpub.tistory.com/53 에서 다운로드 가능합니다.
- 출판사 : 제이펍 (http://jpub.tistory.com)
- 원출판사 : Wrox (원서 ISBN 9780470384619)
- 원서명 : Professional ASP.NET MVC 1.0
- 저자명 : 롭 코너리(Rob Conery), 스콧 핸슬만(Scott Hanselman), 필 해크(Phil Hacck), 스콧 구스리(Scott Guthrie)
- 역자명 : 장현희
- 출판일 : 2009년 10월 22일
- 페이지 : 600쪽
- 판 형 : 4*6배판 변형(188*245) 반양장(Soft Cover)
- 정 가 : 28,000원
- ISBN : 978-89-962410-5-8 부가기호: 13560
- 분 야 : 닷넷 / ASP.NET / 웹 프로그래밍
도서 소개
마이크로소프트 ASP.NET MVC 개발팀이 직접 집필!
한국 마이크로소프트 ASP.NET MVP가 번역!
ASP.NET MVC는 모든 것을 개발자가 직접 제어할 수 있는 높은 자유도와 개발자가 원하는 대로 프레임워크의 기능 자체를 변경하거나 확장할 수 있는 뛰어난 확장성을 제공한다. 또한 웹 개발 분야에서는 폭넓게 활용되는 MVC 패턴이 그대로 적용되어 있기 때문에 Classic ASP나 PHP, JSP, Ruby on Rails, Django 등 다른 웹 개발 프레임워크를 사용하는 개발자들도 어렵지 않게 ASP.NET MVC를 접할 수 있는 장점이 있다.
이 책은 ASP.NET MVC 개발팀이 직접 집필하였기 때문에 ASP.NET MVC 프레임워크의 내부 동작은 물론, MVC 패턴을 구성하는 각 컴포넌트를 구현하는 방법부터 컴포넌트들의 상호 연동에 이르기까지 상세한 내용을 설명하고 있다. 여기에 역자의 풍부한 ASP.NET 개발 경험과 ASP.NET MVC에 관한 해박한 지식으로 독자들의 이해를 높이기 위한 적재적소의 역자 설명이 돋보이는 책이라 말씀드리고 싶다. 베타 리더였던 권호중 님의 후기에서처럼 번역의 질 또한 높다고 감히 자부한다.
“초벌 번역에 대한 베타 리딩을 진행하면서 역자의 원고가 크게 고칠 필요가 없을 정도로 깔끔해서 역자가 얼마나 세심한 노력과 정성을 기울였는지 알 수 있었습니다.”
_베타 리더 권효중 님의 후기 중에서...
'예제로 쉽게 배우는'이란 부제가 붙은 이유는 1장의 NerdDinner 애플리케이션을 구현하는 전 과정을 그림과 함께 자세히 설명하고 있고, 다른 장들 또한 적절한 예제 코드를 통해 관련 기술인 URL과 라우팅, 컨트롤러, 뷰, AJAX, 필터, 보안 등을 설명하고 있어 초보자들이 쉽고 빠르게 ASP.NET MVC의 기능을 익힐 수 있도록 구성되었기 때문이다.
뒷표지 내용
ASP.NET MVC 프레임워크는 확장성과 테스트 용이성, 그리고 역할의 분리와 같은 핵심 개념들을 처음부터 염두에 두고 만들어진 프레임워크이다. 이 프레임워크에는 개발자들을 ‘성공의 지름길’로 인도하며 웹 개발에 적합한 간결한 개발 경험을 제공하는 다양한 규칙들이 구현되어 있다.
추상화 계층을 파헤치며 그 본질에 더욱 가까이 다가가고자 노력하는 개발자에게는 ASP.NET MVC 프레임워크가 매우 적합할 것이다. 자신들이 사용하는 프레임워크들을 서로 통합하는 방법에 대해 민감한 개발자에게 ASP.NET MVC는 거의 모든 부분을 커스터마이징할 수 있거나 혹은 개발자의 입맛에 따라 완전히 대체할 수 있을 정도로 뛰어난 확장성을 제공한다.
이 책은 ASP.NET 개발팀의 팀원들이 직접 집필했으며, ASP.NET의 권위자인 스콧 구스리(Scott Guthrie)가 제1장을 통해 애플리케이션을 구현하는 방법을 처음부터 끝까지 소개하고 있다. 또한 스콧 구스리가 NerdDinner.com을 소재로 집필한 제1장은 http://tinyurl.com/aspnetmvc를 통해 친구들과 공유할 수도 있다. 그 이후에는 모델-뷰-컨트롤러(MVC: Model-View-Controller) 패턴의 개념과 역사에 대해 깊이 있게 학습하며, ASP.NET MVC가 이와 같은 개념을 어떻게 구현하고 있는지에 대해서도 알게 된다.
또한 컨트롤러와 뷰에 대해 학습하게 되며, ASP.NET MVC 프레임워크를 확장하는 수많은 예제들을 통해 AJAX와 URL들이 애플리케이션에서 어떤 역할을 하는지 알게 될 것이다. 이 책을 읽는 동안 여러분은 기존의 ASP.NET 웹 폼 개발 방식에서 ASP.NET MVC 방식으로 이동하기 위해 필요한 의식의 변화와 그런 변화 이후에 얻게 될 다양한 이점에 대해서 충분히 이해하게 될 것이다.
이 책에서 배우게 될 주요 내용은 다음과 같다.
- MVC를 보완하기 위한 SubSonic, LINQ, jQuery 그리고 REST와 같은 다양한 도구와 기술들
- 표준 ASP.NET MVC 애플리케이션의 구조
- 고급 라우팅 전략과 ASP.NET MVC 프레임워크를 확장하기 위한 고급 기법들
- ASP.NET MVC와 ASP.NET 웹 폼의 차이점 및 이 두 기술 간의 데이터의 교환 방법
- ASP.NET MVC 애플리케이션의 보안을 강화하는 방법
이 책의 대상 독자
이 책은 역할의 분리와 확장성 그리고 웹 애플리케이션의 마크업 코드에 대한 전체적인 제어를 원하는 ASP.NET MVC 개발자를 위한 책이다. C#을 이용한 ASP.NET 개발에 대한 충분한 이해가 필요하다.
이 책의 구성
이 책은 크게 세 부분으로 나뉘며 각 부분은 몇 개의 장으로 구성되어 있다.
이 책의 첫 번째 파트는 MVC 패턴을 소개하고 ASP.NET MVC가 MVC 패턴을 어떻게 구현하고 있는지에 대해 설명한다.
제1장
모델-뷰-컨트롤러 패턴에 대한 설명으로 시작하여 MVC 패턴의 기본 개념과 그 역사에 대해 소개한다. 또한 웹에서 ASP.NET MVC와 같은 다양한 프레임워크로 구현되고 있는 MVC 패턴의 현 상태에 대해 조명한다.
제2장
ASP.NET MVC와 ASP.NET 웹 폼의 차이를 설명하고 ASP.NET MVC가 동작하는 방식에 대해 설명한다.
제3장
표준 MVC 애플리케이션의 구조와 그에 대해 여러분이 알아야 할 내용들을 설명한다. 또한 ASP.NET MVC 프레임워크에서 사용하는 일련의 규칙들을 소개하고, ASP.NET MVC 요청의 전체적인 라이프사이클을 이해하기 위해 ASP.NET MVC 프레임워크의 내부 동작에 대해 알아본다.
제4장
애플리케이션에서의 URL의 역할에 대해 알아보고 URL을 구성하기 위한 라우팅 엔진에 대해 설명한다. 또한 URL 재작성 기법과의 차이점을 살펴보고, 라우팅 엔진을 확장하는 방법과 라우팅 엔진을 위한 테스트 코드를 작성하는 방법을 다룬다.
제5장
컨트롤러와 컨트롤러 액션을 소개하고 이들을 구현하는 방법을 다룬다. 또한 컨트롤러 액션이 리턴하는 액션 결과(Action Results)에 대해서도 설명한다.
제6장 제7장
뷰와 뷰 엔진에 대해 소개하며 뷰에서 AJAX 기법을 구현하는 방법에 대해 살펴본다.
이 책의 두 번째 파트는 ASP.NET MVC 프레임워크의 고급 기술과 확장 기법에 대해 설명한다.
제8장
액션 필터에 대해 자세히 살펴보고, 액션 메서드의 동작을 변경함으로써 프레임워크를 확장하는 방법을 설명한다.
제9장
보안에 대해 설명하며 안전한 애플리케이션 구현을 위한 훌륭한 예들을 소개한다.
제10장
웹에서 구현할 수 있는 다양한 서비스들을 구현하고 상호 작용하기 위한 여러 가지 기법들을 소개한다.
제11장
ASP.NET MVC에도 이미 적용되어 있는 테스트 주도 개발(TDD: Test Driven Development)에 대해 간략하게 소개한다. 그런 후 테스트가 가능한 애플리케이션을 구현하기 위한 실례와 실습을 제공한다.
이 책의 마지막 파트는 ASP.NET MVC 플랫폼을 기반으로 애플리케이션을 구성하기 위한 가이드와 실전 예제를 제공하며, ASP.NET MVC 플랫폼의 미래에 대해 소개한다.
제12장
웹 폼과 MVC 플랫폼이 공존하는 애플리케이션을 구현하는 방법을 소개하고, 웹 폼 애플리케이션을 MVC 애플리케이션으로 마이그레이션하는 방법을 소개한다.
우리는 이 책을 순서대로 읽을 수 있도록 구성했으며 각각의 장은 앞장의 내용을 토대로 작성되었다. 만일 여러분이 이미 ASP.NET MVC에 익숙하다면 앞부분은 건너뛰고 제4장부터 읽어도 무방하다.
저자 소개
롭 코너리(Rob Conery)
마이크로소프트의 ASP.NET 팀에서 근무한다. SubSonic의 개발자이며 (무료로 공개된 .NET용 전자상거래 솔루션인) Commerce Starter Kit의 수석 설계자이다. 하와이의 카와이(Kauai)에서 아내와 두 딸(Maddy와 Ruby)과 함께 살고 있다.
스콧 핸슬만(Scott Hanselman)
마이크로소프트의 개발자 부서의 수석 프로그램 매니저로 마이크로소프트 기술을 이용한 소프트웨어 개발에 대한 조언을 제공하고 있다. 이전에는 6년 이상 온라인 신용 기관에서 근무했으며 그 전에는 약 7년간 수석 컨설턴트이자 마이크로소프트의 파트너로 활약했다. 또한 MVP나 RD 프로그램 등에 참여하여 많은 사람들에게 컴퓨터와 관련된 강의를 제공하고 있다. 그는 블로그(www.hanselman.com)와 팟캐스트(www.hanselminutes.com)를 운영하며 www.asp.net, www.windowsclient.net 그리고 www.silverlight.net 등 다양한 커뮤니티에 참여하고 있다. 또한 트위터(www.twitter.com)에서도 심심찮게 만날 수 있다.
필 해크(Phil Hacck)
ASP.NET MVC를 개발하는 ASP.NET 팀의 선임 개발자로 근무하고 있다. 마이크로소프트에 입사하기 전에는 코드 검색 엔진의 제품 관리자와 온라인 게임 회사의 개발 관리자, 그리고 유명한 스페인어 방송국의 선임 소프트웨어 설계자를 역임했다. 필은 코드를 작성하는 것을 좋아하며 소프트웨어를 개발할 뿐 아니라 자신의 블로그에 소프트웨어 개발과 소프트웨어 관리에 대한 글을 쓰는 것을 즐긴다. 그는 다양한 오픈 소스 프로젝트에 참여하고 있으며 최근 ASP.NET MVC를 이용해 다시 개발하고 있는 Subtext 블로그 프로젝트의 창립자이기도 하다.
스콧 구스리(Scott Guthrie)
마이크로소프트의 .NET 개발자 부서의 부사장으로 클라이언트 및 웹 애플리케이션 개발을 위한 마이크로소프트 Visual Studio 개발자 도구 및 .NET 프레임워크 기술을 개발하는 개발 팀을 이끌고 있다. .NET 프로젝트의 초기 멤버인 구스리는 1999년부터 Visual Studio와 .NET 프레임워크의 디자인 및 설계 부분에서 핵심 역할을 담당하고 있다. 또한 마이크로소프트의 웹 서버 플랫폼과 개발 도구 팀을 책임지고 있기도 하다. 최근에는 웹 환경에서 차세대 미디어 경험과 리치 인터넷 애플리케이션을 개발할 수 있는 크로스 브라우저, 크로스 플랫폼 개발 환경인 Silverlight 플러그인의 개발을 주도하고 있다. 현재 구스리는 공용 언어 런타임(CLR: Common Language Runtime), ASP.NET, Silverlight, WPF (Windows Presentation Foundation), IIS, Commerce Server와 Visual Studio의 웹, 클라이언트 및 Silverlight 관련 개발 도구들의 개발을 직접 지휘하고 있다. 구스리는 듀크(Duke) 대학에서 컴퓨터 공학 학위를 받았다.
역자 소개
장현희 http://www.mvpmagazine.net
국내 최고의 원격 지원 기술을 보유한 (주)알서포트의 웹개발 팀장으로 근무 중이며, 2005년 4월부터 현재까지 ASP/ASP.NET 분야 Microsoft MVP로 활동 중이다. 마이크로소프트의 DevDays와 Remix를 비롯한 다수의 세미나에 발표자로 참여하는 동시에 3년 전부터 ‘웹지니의 웹스쿨’이라는 제목으로 매년 개인 세미나를 진행하고 있다. 『RIA 시대의 새로운 웹 전략 Silverlight 2』, 『웹지니의 ASP.NET AJAX 프로그래밍』, 『Programming WPF』 등 다수의 .NET 관련 서적의 저자 및 번역자이기도 하다. 온라인에서 ‘웹지니’라는 필명을 사용하는 역자는 개인 블로그(www.mvpmagazine.net)를 통해 .NET 관련 소식을 여러 개발자들과 공유하는 것을 즐긴다.
차 례
01장 NerdDinner 애플리케이션
NerdDinner
파일 -> 새 프로젝트
데이터베이스 생성하기
모델 객체 구현하기
컨트롤러와 뷰
데이터의 생성, 수정 및 삭제 양식을 위한 시나리오
ViewData와 ViewModel
부분 뷰와 마스터 페이지
페이징 기능 구현하기
인증과 권한 설정
모임 참여 기능에 AJAX 적용하기
AJAX를 이용하여 지도 통합하기
단위 테스트 수행하기
NerdDinner 애플리케이션 다시 둘러보기
02장 MVC 패턴과 ASP.NET
Model-View-Controller 패턴이란?
웹에서의 MVC 패턴의 활용
ASP.NET MVC: 새로운 MVC 프레임워크
요약
03장 ASP.NET이 ASP.NET MVC보다 뛰어나다
추상화 - 웹 폼이 잘하는 일들
웹 폼이 적합하지 않은 부분들
ASP.NET MVC의 설계 방침
테스트 적합성을 확보하기
ASP.NET MVC에 대한 부정적인 견해들
ASP.NET이 ASP.NET MVC보다 뛰어난 이유
요약
04장 URL과 라우팅
라우팅이란?
라우팅 엔진이 URL과 액션 메서드를 연결하는 방법
사용자 정의 제약 조건
라우팅 엔진의 확장
웹 폼에서 라우팅 엔진 활용하기
요약
05장 컨트롤러
컨트롤러의 역사
컨트롤러 정의하기: IController 인터페이스
ControllerBase 추상 클래스
Controller 클래스와 액션 메서드
ActionResult 클래스
액션 호출자
요약
06장 뷰
뷰의 역할
뷰가 해서는 안 되는 일
뷰 지정하기
강력하게 형식화된 뷰
HTML 핼퍼 메서드
뷰 엔진
새로운 뷰 엔진을 구현할 것인가 아니면 ActionResult 객체를 구현할 것인가?
요약
07장 AJAX
AJAX는 언제 사용해야 하는가?
AJAX에 대한 오해
AJAX 예제들
요약
08장 필터
ASP.NET MVC에 포함된 필터들
사용자 정의 액션 필터 구현하기
사용자 정의 인증 필터 구현하기
사용자 정의 예외 필터 구현하기
필터의 실행 순서
필터의 이름 규칙
요약
09장 애플리케이션의 보안
이것은 전쟁이다
그들의 무기
위협: 크로스 사이트 스크립팅(XSS)
위협: 크로스 사이트 요청 위조
위협: 쿠키 훔치기
HttpOnly 쿠키를 이용하여 쿠키의 도난을 방지하기
적절한 오류 보고와 스택 추적
라우트 규칙이 아닌 컨트롤러에 보안을 적용하라
[NonAction] 특성으로 공용 메서드 보호하기
폼 바인딩에 허용 목록 지정하기
요약: 모든 것은 여러분에게 달려있다
10장 ASP.NET MVC와 테스트 주도 개발
TDD에 대한 간략한 소개
ASP.NET MVC에 TDD 적용하기
요약
11장 테스트를 고려한 디자인 패턴
왜 테스트 용이성을 염두에 두어야 하는가?
여러분은 테스트가 수월한 코드를 작성하기를 원한다
여러분이 한 일을 증명하기 위해 테스트를 수행하라
테스트에 용이한 애플리케이션을 디자인하기
테스트가 수월한 데이터 액세스 코드
서비스 계층을 이용하여 비즈니스 로직 구현하기
요약
12장 웹 폼과 MVC의 결합
어떻게 가능할까?
기존의 웹 폼 애플리케이션에 MVC를 추가하기
기존의 ASP.NET MVC 애플리케이션에 웹 폼 추가하기
웹 폼과 MVC 간의 데이터 공유
웹 폼을 MVC로 마이그레이션 하기
요약