MVC - 해당되는 글 13건

 

 

 

 

제대로 배우는 Backbone.js 프로그래밍

저자 애디 오스마니

역자 이지훈

출간예정 2014623()

정가 28,000

 

페이지 400

판형 173 * 230

ISBN 978-89-94774-68-8 (93000)

원서정보 Developing Backbone.js Applications

 

 

책 소개

 

Backbone.js 애플리케이션 개발하기

 

유용하고 실용적인 이 책 《제대로 배우는 Backbone.js 프로그래밍》에서는 Backbone.js를 이용해 단일 페이지 애플리케이션(SPA) 모델로 사이트를 구축하는 방법뿐만 아니라, 모델--컨트롤러(MVC) 아키텍처의 Backbone 특유의 맛을 살려 구조화된 자바스크립트 애플리케이션을 만드는 방법을 배울 수 있다.

 

MVC, SPA, Backbone의 기본적인 사항들을 시작으로, Backbone으로 간단한 Todo 리스트 앱, RESTful 책 라이브러리 앱, 그리고 모듈화된 앱과 같은 샘플 애플리케이션을 직접 구축해볼 것이다. 구글 크롬팀의 엔지니어이기도 한 이 책의 저자는 또한 프레임워크의 고급 사용법에 대해서도 다루고 있다.

 

- Backbone.js MVC가 클라이언트 측에 이득을 줄 수 있도록 하는 방법을 배운다.

- 쉽게 읽을 수 있고, 구조화하고, 확장할 수 있는 코드를 작성한다.

- Backbone.MarionetteThorax 확장 프레임워크로 작업한다.

- Backbone.js를 사용하면서 쉽게 접할 수 있는 문제를 해결한다.

- AMD RequireJS를 사용하여 코드를 모듈로 구성한다.

- Backbone.Paginator 플러그인으로 컬렉션에 대한 데이터의 페이지를 매긴다.

- 보일러플레이트 코드로 새로운 Backbone.js 애플리케이션을 부트스트랩한다.

- jQuery Mobile과 함께 Backbone을 사용하면서 이들 간의 경로 문제를 해결한다.

- Jasmine, QUnit, SinonJS로 여러분이 구축한 Backbone 앱을 단위 테스트한다.

 

 

웹 애플리케이션을 작성하는 것은 복잡한 과정이지만, 저자는 Backone.js를 사용하여 그 과정을 간단하고 쉽게 세분화했다.”

— Samuel Clay, NewsBlur의 설립자

 

“Backbone.js를 이용해서 확장과 축소가 용이하며, 유지하기 쉽고 데이터가 풍부한 웹 애플리케이션을 만들기 시작할 때 필요한 모든 것을 다루고 있다."

— Marc Friedman, CommScope, Inc의 선임 수석 소프트웨어 연구원

 

 

독자 대상

초중급

 

책은 초보자뿐만 아니라, 클라이언트 코드를 보다 만들고 싶어하는 중급 개발자들을 위해 쓰였다. 책을 최대한 활용하기 위해서는 자바스크립트의 기초 사항을 이해하고 있어야 하지만, 가능한 책에 그러한 설명을 넣기 위해 애썼다.

 

 

소스 코드 다운로드

http://shop.oreilly.com/product/0636920025344.do

 

 

저자 소개

 

애디 오스마니 Addy Osmani

구글 크롬팀의 프로그램 엔지니어이며, 자바스크립트 애플리케이션 아키텍처에 대한 열정이 있다. 그는 TodoMVC와 같은 잘 알려진 프로젝트를 생성했으며, Yeoman, Modernizr, jQuery와 같은 다른 오픈 소스 프로젝트에도 기여했다. 파워 블로거(http://addyosmani.com/blog/)인 애디는 《Learning JavaScript Design Patterns(O’Reilly)를 집필하기도 했다.

 

 

역자 소개

 

이지훈

컴퓨터시스템응용기술사이자 정보시스템 수석감리원이다. 12년차 자바 개발자로 SDS SK C&C에서 근무했으며, 현재 LG 전자에서 스마트TV 관련 시스템을 운영 중이다. 안드로이드와 아이폰앱 개발자로 활동하고 있고, 새로운 기술을 접하길 좋아한다. 《나 홀로 개발자를 위한 안드로이드 프로그래밍의 모든 것》(에이콘출판사)을 집필했고, 《알기 쉬운 UX 디자인 평가: 대규모 온라인 사용성 조사 가이드》(지앤선), HBase 인액션: 빅데이터를 위한 NoSQL 데이터베이스》(비제이퍼블릭)를 번역했다.

 

 

목차

 

1. 개요

- MVC

- Backbone.js

- 자바스크립트 MVC 프레임워크는 언제 필요하나

- Backbone.js를 고려해야 하는가

- 이 책의 구성

 

2. 기초

- MVC

- MVC가 주는 이점

- 정리

 

3. Backbone의 기본

- Backbone 설치 가이드

- 모델

-

- 컬렉션

- RESTful 지속성

- 이벤트

- 라우터

- Backbone Sync API

- 의존성

- 요약

 

4. 연습 1: Todos - 첫 번째 Backbone.js

- 정적 HTML

- Todo 모델

- Todo 컬렉션

- 애플리케이션 뷰

- 개별 TodoView

- 시작

- 실행

- 완료와 삭제기능

- Todo 라우팅

- 요약

 

5. 연습 2: 책 라이브러리 - 첫 번째 REST ful Backbone.js

- 설정

- 인터페이스 엮기

- 백엔드 생성

- 서버와 통신하기

- 요약

 

6. Backbone 익스텐션

- MarionetteJS (Backbone.Marionette)

- Thorax

- 요약

 

7. 문제와 해결책

- 중첩 뷰 다루기

- 중첩 뷰 내에서의 모델 관리

- 자식 뷰에서 부모 뷰 렌더링

- 뷰 계층구조 배치

- 뷰 계층구조 렌더링

- 중첩 모델 또는 중첩 컬렉션으로 작업하기

- 모델 속성 검증

- 다수의 Backbone 버전들 사용 시 충돌 피하기

- 모델과 뷰 계층구조 만들기

- 이벤트 수집기와 중재기

 

8. 모듈 개발

- RequireJS AMD를 이용하여 모듈화하기

 

9. 연습 3: Backbone RequireJS 모듈 앱

- 개요

- 마크업

- 설정 옵션

- 모델, , 컬렉션의 모듈화

- 라우터 기반의 모듈 로딩

- 의존성 관리를 위한 또 다른 패키지

 

10. Backbone.js 요청과 컬렉션의 페이지 처리

- Backbone.Paginator

- Paginator.requestPager

- Paginator.clientPager

- 요약

 

11. Backbone 보일러 플레이트와 Grunt-BBB

- 시작하기

- 새로운 프로젝트 생성

- 다른 유용한 툴과 프로젝트들

- 요약

 

12. Backbone jQuery Mobile

- jQuery Mobile을 이용한 모바일 앱 개발

- jQuery Mobile을 위한 기본 Backbone 앱 설정

- Backbone jQueryMobile을 이용한 워크플로우

- Backbone jQM 고급 기술 적용하기

 

13. Jasmine

- 행위 주도 개발

- 테스트 슈트, 스펙, 그리고 스파이

- beforeEach() afterEach()

- 공유된 스코프

- 설치하기

- Backbone을 이용한 TDD

- 컬렉션

-

- 연습

- 참고 문헌

- 요약

 

14. QUnit

- 시작하기

- 단정문

- 단정문에 구조 추가하기

- 단정문 예제

- 픽스처

- 비동기 코드

 

15. SinonJS

- SinonJS?

- 스텁과 목

- 연습

- 더 읽을 거리

 

16. 결론

 

부록 A. 심화 학습

- 간단한 JavaScript MVC 구현

- MVP

- MVP 또는 MVC?

- MVC, MVP 그리고 Backbone.js

- 네임스페이싱

- Backbone 종속성

- Backbone vs 다른 라이브러리와 프레임워크

 

부록 B. 리소스

- 학습을 위한 도서와 과정

- 익스텐션/라이브러리

 

 

출판사 리뷰

 

해외에서는 전부터 Backbone.js Angular.js 같은 자바스크립트 MV*프레임워크가 많이 사용되었지만, 국내에 이들이 알려지기 시작한지는 얼마 되지 않았다. MV* 프레임워크를 소개하는 수준의 서적은 있었지만, Backbone.js 본격적으로 심도 있게 다루는 서적인 아마 책이 처음일 것이다.

 

Backbone.js Javascript MV* 프레임워크 중에 가장 많은 라이브러리와 Q&A 가지고 있다. Stackoverflow에서 Backbone.js 찾아보면 많은 질문과 답변들이 이루어졌다는 사실을 있다. 근래에는 Angular.js ember.js 등도 많이 사용되고 있다. 저자도 책의 후반부에서 소개했지만, Angular.js, ember.js, backbone.js 중에 어느 것이 가장 좋다라고 단정 짓는 것은 바보 같은 행위다. 현재 가장 인기 있다고 좋은 프레임워크도 아니고, 가장 많은 라이브러리를 가지고 있다고 좋은 프레임워크도 아니다.

 

프레임워크를 선택할 때에는 프로젝트의 성격과 범위에 맞아야 하고 향후 유지보수를 위한 지원까지 고려해서 결정해야 한다.

 

Backbone.js Angular.js 다르게 Full-Stack 라이브러리를 제공하지 않고 최소한의 필수 기능만 제공하여 개발자들이 유연하게 사용할 있도록 제공한다. 부족할 수도 있는 기능들은 Marionette 같은 Backbone.js 기반의 라이브러를 사용해서 해결할 있다. Backbone.js jQuery Underscore.js 같은 유틸리티 라이브러리에 강한 의존성을 가지고 있기 때문에 풍부한 jQuery 셀렉터와 강력한 Underscore.js 유틸리티를 같이 사용할 있다. Angular.js jQuery Lite에서 제공하는 수준의 셀렉터를 제공한다. 이와 같이 Backbone.js 다른 MV* 프레임워크와 다르게 최소한의 기능만 제공하기 때문에 다른 프레임워크와 같이 쉽게 융합하여 사용할 있다는 장점이 있다. 이는 애플리케이션 개발 시에 문제가 발생하였을 다른 오픈소스를 이용하거나, 오픈소스를 분석해서 문제를 쉽게 해결하는 것이 가능하다는 것을 의미한다. Angular.js ember.js 같이 Full-Stack기능을 제공하는 프레임워크도 오픈소스이긴 하지만, 프레임워크에서 가해지는 제약사항이 Backbone보다 크고 다른 오픈소스와의 융합도 어렵다.

 

 

신고
Trackback 0 | Comment 1

비제이퍼블릭의 트위터 이벤트, [IT 열정 이벤트]팔로우+RT하고 [프로 ASP.NET MVC 프레임워크: Taeyo's Choice] 받자![10명 추첨]의 당첨자를 발표해 드립니다. http://bjpublic.tistory.com/73

혹시 이번 기회에 당첨이 되지 못하신 응모자분은 너무 상심하시지 마시고 다음 이벤트를 기대해 주시길 바라겠습니다~^^

당첨자 명단
@barry_lee
@june1004
@letter20
@momoniki
@comet1004
@kangjin
@KellyShim
@cogitur
@prily
@utpsoft

*당첨자분들은 아래 내용을 DM으로 @bjpub에게  발송 부탁드리겠습니다.
1. 이름
2. 도서 받으실 주소
3. 전화번호(택배 배송시 연락 받을 번호)

도서는 월요일 택배로 발송될 예정입니다.
모두 진심으로 축하드리며 다른 이벤트로 또 찾아뵙도록 하겠습니다.
많은 성원 감사드립니다~!


신고
Trackback 0 | Comment 0


 

*이벤트 도서는 Pro ASP.NET MVC Framework by Sanderson의 번역서인 [프로 ASP.NET MVC 프레임워크: Taeyo's Choice]입니다.


비제이퍼블릭의 IT 도서 증정 이벤트 #2 (10명 추첨)

기간: 5월 13일 13시 ~ 5월 14일 13시



[이벤트 응모 방법]

1. @Bjpub을 팔로우한다.
2. 트위터에서 @Bjpub [IT 도서증정 이벤트]비제이퍼블릭 팔로우+RT하고 [프로 ASP.NET MVC 프레임워크:Taeyo's Choice] 받자! http://bit.ly/9fK9Rg 글을 RT한다.
3. 5월 14일 14시 @Bjpub에서 추첨(10명)에 당첨된 당첨자 확인을 한다.
4. 당첨자는 @Bjpub에 DM으로 이름, 책을 받을 주소, 전화번호(택배 발송시 필요)를 남긴다.
5. [프로 ASP.NET MVC 프레임워크: taeyo's Choice]를 받아서 열심히 공부한다!


[도서 상세보기]
http://bjpublic.tistory.com/45


[도서 관련자료 상세보기]
http://bjpublic.tistory.com/47

 

신고
Trackback 0 | Comment 0

이미 모두 아시겠지만 지난 3월 ASP.NET MVC V2가 릴리즈 되었습니다.
다운로드는 다음 링크에서 가능합니다.


ASP.NET MVC V2의 새로운 기능들은 다음과 같습니다.

자세한 내용은 다음의 스캇 구스리의 블로그에서 확인이 가능합니다.
http://weblogs.asp.net/scottgu/archive/2009/07/31/asp-net-mvc-v2-preview-1-released.aspx

음, 잠깐 그의 블로그를 방문해 보니 스캇 구스리의 블로그에도 저희 『프로 ASP.NET MVC 프레임워크: Taeyo's Choice』의 원서가 걸려있군요.^^



프로 ASP.NET MVC 프레임워크
카테고리 컴퓨터/IT
지은이 스티븐 샌더슨 (비제이퍼블릭, 2009년)
상세보기


 

신고
Trackback 0 | Comment 0

오늘 드디어 비제이퍼블릭의 첫 두 도서(프로 ASP.NET MVC 프레임워크 + 오브젝티브-C 2.0)의 광고가 실린 마이크로소프트웨어(이하 '마소')의 10월호가 도착했습니다. 우려했던 것과는 달리 정말 짧은 시간에 만들어낸 것에 비해 만족할만한 상태로 당당히 실려 있었습니다.

 


이 광고를 보고 많은 개발자분들께서 저희 비제이퍼블릭 출판사에 조금이나마 관심을 가지고, 꾸준히 지켜봐주셨으면 하는 바램입니다.

참고로 비제이퍼블릭의 홈페이지에서는 IT/컴퓨터 도서 관련 집필/번역을 원하시는 개발자분들께서 제안을 하실 수 있도록 출간제의를 받고 있습니다. 다음 링크를 통해 정보를 기입해 주시면 확인하는대로 즉시 연락을 드리도록 하겠습니다.

[번역제의] [집필제의]

어느분에게나 활짝! 문이 열려있으니 언제라도 궁금하신 사항이 있으시면 부담없이 편하게 연락주시길 바랍니다.
junepk@bjpublic.co.kr
02-739-0739
김범준 실장

프로 ASP.NET MVC 프레임워크
카테고리 컴퓨터/IT
지은이 스티븐 샌더슨 (비제이퍼블릭, 2009년)
상세보기

Objective-C 2.0(오브젝티브-C 2.0)
카테고리 컴퓨터/IT
지은이 마크 달림플 (비제이퍼블릭, 2009년)
상세보기

신고
Trackback 0 | Comment 0

도서가 출간된 4월부터 지금까지 꾸준히 아마존 사이트의 프로그래밍 > ASP 분야의 1위(물론 간간이 2위로 내려가지도 하지만 오래 머물지는 않습니다^^;)를 차지하고 있는 Apress 출판사의 Pro ASP.NET MVC Framework(Steven Sanderson)의 아마존 리뷰 내용을 번역하여 올려드립니다. 랭킹은 다음 링크에서 확인해 보실 수 있습니다.

Programming > ASP

 



마이크로소프트(Miscrosoft)의 스콧 구스리(Scott Guthrie) 부사장이 직접 아마존에 리뷰평을 남겼다는 것이 흥미롭습니다. 원문은 다음의 링크에서 확인해 보실 수 있습니다.

[아마존 리뷰 바로가기]


이 도서의 번역서의 정보는 다음 링크에서 확인하실 수 있습니다.


번역서의 경우, 현재 인터넷 서점에서 예약 판매를 시행중에 있습니다.



아마존 추천평


제목: 경이로운 책
리뷰자: 스콧 구스리(Scott Guthrie)

분명하건데, 이 책은 ASP.NET MVC에 관한 환상적인 책이다.

스티븐 샌더슨의 『프로 ASP.NET MVC 프레임워크』는 ASP.NET MVC를 배워 그것을 실용적인 프로젝트에 실제로 사용하기를 원하는 개발자들에게 꼭 필요하면서도 딱 맞는 책이다.이 책의 앞부분에서 저자는 단위 테스트(unit testing)와 느슨히 결합된 디자인 개념들(POCO 클래스, 의존성 주입(DI, dependency injection), IoC(inversion of control) 등)에 대한 소개를 하며, 그리고 나서 ASP.NET MVC 응용 프로그램을 빌드할 때 그들을 어떻게 사용하는지에 대해 설명을 한다.

만약 여러분이 지금까지는 이러한 개념들에 생소하였더라도 저자의 따라 하기 쉽고도 자세한 접근 방식으로 인하여 쉽게 이해가 가능할 것이며, 실무에서 바로 사용이 가능한 ASP.NET MVC 응용 프로그램을 개발하기 위한 능력을 자연스레 가지게 될 것이다.


이 책의 후반부를 차지하는 두 번째 파트는 ASP.NET MVC을 심층 분석하며 어떻게 그들을 최대한 활용하여 사용할 수 있는지를 경이적이라고 할 정도로 잘 설명하고 있다. 저자는 특징적인 부분들을 각 특징들의 최대 이점을 살릴 수 있는 방법과 피해야 할 함정들에 관한 실용적인 조언들과 잘 혼합하여 독자들에게 전달하고 있으며, 왜 그와 같은 방법으로 작동이 되어야 하는지에 대해서도 설명하고 있다.

한 책에 모든 내용이 담겨있는 놀랄 만큼 대단한 도서이며, 적극 권장한다!


제목: 간단 명료하다
리뷰자: 폴 벤실 “Ajax 개발자”


나는 록스(Wrox)에서 발간한 스콧 구스리 외 3명의 저자가 쓴 MVC 책을 읽은 다음, 일주일 정도 후에 이 책을 읽었다.

두 책을 구지 비유를 하자면 “밤”과 “낮”의 차이였다. 이 책은 간결하지만 완벽하다. 한번 읽기 시작하자 도저히 내려놓을 수가 없었다. 이 책의 저자인 스티븐 샌더슨은 “Hello, MVC"에서부터 고급 응용 프로그램의 개념에 이르기까지, 나에게 ”좋은“ 프로그래밍 책이란 바로 이런 것이라는 생각을 하게끔 만든 대단한 일을 해냈다.

이 책을 통해서 저자는 디자인의 개요, TDD(Test-Driven Design) 패턴, 도메인 모델링(Domain Modeling), 그리고 의존성 주입(DI, Dependency Injection)에 대해 간결하고도 명확한 설명을 하고 있다. 저자는 이 책에서 (다른 리뷰자의 말을 빌리자면) 결코 “상아탑(Ivory Tower)"의 관점(즉, 추상적인 개념으로)으로부터의 설명을 하고 있지 않는다. 그는 항상 실무의 개발자들이 필요로 하고 응용 프로그램에 필요한 근거로부터 접근을 하여 설명을 하고 있다.

정말로 이 저자의 다른 프로그래밍 책을 만날 수 있기를 간절히 바랄 뿐이다.


제목: 훌륭한 책! 머스트-해브(Must-Have) 도서
리뷰자: 데이비드 해이던 “개발자"

이 책은 확실히 현재까지 출간된 MVC 서적 중에서 최고라고 할 수 있다.이 책은 매우 논리적이고 시스템적이며, 그러면서도 친절한 설명을 통해 여러분이 ASP.NET MVC 프레임워크를 배우기 위한 특징들을 잘 알 수 있도록 해주는 전자상거래 웹사이트를 생성하는 것으로부터 시작한다. 이러한 방법은 처음 이 기술을 접하는 독자들에게는 아무리 설명을 해봤자 알아들을 수 없는 디테일한 설명으로 시작하는 것에 비해서 탁월한 선택이라고 할 수 있다.

여러분은 카탈로그 페이지, 장바구니, 관리자 페이지 등을 만들 것이다. 이 책은 이러한 것들의 생성 과정을 통해 여러분들에게 C# 언어의 특징들을 자연스레 설명할 것이며, 코드를 통한 설명과 점차적으로 진행 속도를 높이는 방법으로 단위 테스트(unit testing)와 mocking, LINQ to SQL의 사용, 그리고 DDD(Domain-Driven Desing)에 대해서도 설명할 것이다. 이러한 방법을 통해 여러분은 ASP.NET MVC 프레임워크를 정말 쉽게 터득할 수 있다.


이 책의 두 번째 파트는 ASP.NET MVC 요청의 “파이프라인”을 소개하는 것으로 ASP.NET MVC 프레임워크의 심오한 내용을 다룰 것이며, 그리고 나서 그것을 세분화하여 이해가 쉽도록 설명할 것이다. 실제로 바로 그 일들이 발생할 때 무슨 일들이 일어나는지, 어떻게 각각의 부분들을 조정하고 만들어내서 여러분의 의지대로 움직일 수 있도록 ASP.NET MVC 프레임워크를 정복해 나갈 수 있는지에 대한 저자의 설명은 정말 환상적이다. 만약 여러분이 나처럼 확장성에 대해 매우 관심이 많다면, MVC 프레임워크의 확장에 대한 예제들만으로도 이 책은 값어치를 다 했다고 느낄 수 있을 것이다.여기서 끝이 아니다.

더불어 CAPTCHA(자동생성방지), RSS 피드 생성, HMAC 코드와 암호 프로토콜 확인 링크(tamper-proof confirmation links)에 대한 많은 실용적인 예제도 포함하고 있다. 보안에 관련된 부분은 반드시 읽어 보아야 하며, 여러분에게 XSS(Cross-Site Scripting)와 HTML Injection, 섹션 하이재킹(Session Hijacking), 사이트 간 요청 변조(CSRF, Cross-Site Request Forgery) 등을 회피할 수 있는 여러 가지 방법에 대해서도 설명하고 있다.이 책에 대한 칭찬은 정말 끝이 없을 것 같다. 정말로 제대로 집필된 도서이고, 나는 이 책을 항상 손 뻗으면 닿을 수 있는 위치에 두고 생활을 하고 있다.


제목: NerdDinner 다음으로 필요한 과정
리뷰자: 케빈 C. 스티븐슨 “소프트웨어 공학자”


최근 몇 개월 동안 이 책을 살펴보고 있으며, 다음과 같은 매우 심오한 지식을 얻을 수 있었다.
- MVC framework
- Dependency Injection을 사용하는 방법- 소프트웨어 개발 연습과 유연한 소프트웨어를 빌드하는 법

저자인 샌더슨은 프레임워크의 모든 부분을 설명하는데 있어서 스스로가 매우 엄격했다.나의 솔직한 제안은 현재 배포되고 있는 Nerd Dinner의 pdf를 다운로드 받아서 MVC의 습득에 시동을 걸고(단지 몇 시간밖에 걸리지 않을 것이다), 그리고 나서 스티브 샌더슨의 프로 ASP.NET MVC 프레임워크를 한 부분도 빼놓지 않고 읽어보는 것이다. 여러분은 이렇게 하는 것을 절대 후회하지 않을 것이다. Nerd Dinner는 훌륭하고 ASP.NET MVC 입문을 위한 좋은 자료이긴 하지만, 실무에서 상용을 목적으로 하는 코드를 개발하기 위해서는 내가 제안한 방법으로 공부하는 것이 절대적으로 필요할 것이다.


제목: 속이 꽉 찬 도서
리뷰자: 제이크 모닝


나는 이 책이 나와 같은 초보자에게도 매우 유용하다고 생각한다. 예제들은 VS에 정말 처음인 사람들도 잘 따라할 수 있도록 필요한 과정을 모두 친절히 설명하고 있으며, 아무 문제없이 예제들을 작동할 수 있었다. 모든 코드들은 제대로 설명이 되어 있으며, 예제들 또한 매우 실용적이다. ASP.NET MVC의 기초를 알기 원하는 모두에게 이 책을 권한다.


제목: ASP.NET MVC를 위한 바로 그 책
리뷰자: 리차드 트린


스티븐 샌더슨의 『프로 ASP.NET MVC 프레임워크』는 바로 딱! ASP.NET MVC를 위한 책이다. 나는 ASP.NET에 대해 거의 모른 채로 이 책을 읽었으며, 진행하고 있던 프로젝트의 문제점에 대한 거의 모든 해답을 구할 수 있었다. 샌더슨은 정말 많은 양의 정보를 제공하면서도 유머를 적절히 사용하여 독자들이 지루해 지지 않도록 만들고 있다.

이 책을 읽은 후, NerdDinner의 무료로 제공되는 샘플 챕터를 보고 비교를 해보니, 이 책이 MVC의 입문을 위해 더욱 적합하고, 설명의 흐름 또한 더 낫다는 것을 발견할 수 있었다. 각각의 주제들을 하나하나 설명해 나가는 대신에 하나의 간단한 전자상거래 사이트를 만들어 보면서 설명이 필요한 다른 특징들을 천천히 추가 설명하고 있다.


이 책의 제목에 물론 “프로”가 붙기는 했지만, 나는 여전히 모든 수준의 개발자들에게 이 책을 강력히 추천한다.


제목: 뛰어난 도서
리뷰자: 로저 펜스


샌더슨은 이 책에서 약간 돌발적이라고 할 수 있는 구성으로 독자를 이끌어 나가고 있다. MVC의 간략한 소개 후 그는 갑자기 방향을 바꾸어 “사전 지식”(3장)에 대한 이야기를 한다. 나는 이 책에서 이 부분이 있어야 할 위치에 대해 의구심이 생겼고, 그런 내용보다는 MVC에 대해 좀 더 심오하게 알아보고 싶었다. 결국은 3장을 뛰어 넘고 읽기로 결정하였고, 그것은 바보 같은 짓이었다.

샌더슨의 직감은 매우 잘 맞아 떨어졌다. “사전 지식”을 다루는 3장은 MVC를 사용하는 것에 대한 동기 부여에 대해 더욱 명쾌하고, 결코 추상적이지 않은 논리적인 설명을 제공한다. 3장은 근본적인 원칙과 특정 제품, 그리고 기술적인 논의를 위한 사전 정보들에 대해 설명한다. 그리고 나서 샌더슨은 이 책의 나머지 부분들과 마찬가지의 확신과 목적을 가지고 MVC의 세부 사항을 파고든다.샌더슨이라는 이름은 지금가지 그다지 알려진 것이 없었기에, 나는 거의 이 책 대신에 Wrox의 책을 사려고도 했었다.

그러나 지금은 이 책을 선택하여 매우 기쁘다. 이 책은 “굉장한” 책이다.


제목: MVC를 배우기에 최적화된 책
리뷰자: 로이 브래들리


이 책은 기존의 클래식 ASP.NET(웹폼)에서 새로운 ASP.NET MVC로 전환하기 위해 여러분에게 꼭 필요한 책이다.


제목: 최근 읽어본 최고의 기술 서적
리뷰자: 웹 듀드

나는 지금까지 수많은 기술 서적들을 읽어왔고, 단지 정말 수준 이하의 도서들(독자들에게 조언을 해주기 위해)과 최상의 도서들(칭찬을 위해) 만을 위해서 리뷰를 작성한다.

이 책은 물론 후자 쪽에 속한다. 저자는 ASP.NET MVC 프레임워크에 대한 전반적인 내용으로 대단한 책을 집필을 하였다. 그러나 무엇보다도 이 책을 더욱 빛나게 하는 것은 관련된 다른 기술들에 대한 대단히 간명한 설명들과 책의 전반에 걸쳐 나오는 짧은 노트들과 팁들 때문이다.사실상 내가 가장 마음에 들어 하는 부분은 실제 프로젝트에 바로 사용할 수 있도록 ASP.NET MVC와 근접하게 관계를 가지고 있는 기술들에 대해 다룬 3장이다(DDD와 TDD, 심지어 LINQ to SQL과 C# 3.0의 람다 식까지 다루고 있다).

이 책의 초보자들에게는 간단하면서도 명료하게 접근 가능한 입문서 역할을 할 것이고, 좀 더 익숙한 개발자들에게는 전체적으로 다시 한 번 훑어볼 수 있는 좋은 자료가 될 것이다. 간단한 예로, 저자는 평이 좋은 다른 LINQ 책에서나 볼 수 있는 LINQ to SQL을 사용기 위한 각각 다른 접근법에 대한 훌륭한 요약을 제공하고 있다.


위에서 언급한 부분은 단지 이 책의 하나의 예에 불구하지만, 이미 다른 리뷰자들이 이 책이 다루고 있는 ASP.NET MVC에 대해서는 충분히 내가 하고 싶은 이야기를 하고 있으므로, MVC 프레임워크를 적용하든 안하든, 그 어떤 ASP.NET 개발자들도 이 책에서부터 얻을 것이 있다는 말을 하고 싶었을 뿐이다.만약 여러분이 웹폼 개발자이며 현재 나처럼 MVC의 벽에 부딪혀 있다면, 여러분은 이 책에서 “웹폼과 MVC"에 대한 의문점이 일어날 때마다 많은 해결점을 찾을 수 있을 것이다.

저자, 샌더슨의 다음 책도 정말 기대가 된다.


제목: MVC 개발자를 위한 완벽한 책
리뷰자: By 숀 자이오


나는 정말 이 책을 권장한다. 이 책은 여러분이 ASP.NET MVC가 무엇인지 이해하기 쉽게 써졌을 뿐만 아니라 그것이 어떻게 동작을 하는지에 대한 상세한 내용도 포함하고 있다. 첫 번째 파트는 여러분에게 MVC가 무엇인지에 대한 명확한 이해와 현재의 ASP.NET 개발에 왜 MVC가 필요한지를 설명하고 있다.

1장에서 3장까지는 ASP.NET MVC에 대한 여러분의 기반 지식을 탄탄히 다져준다. 특히 저자는 도메인 모델링(Domain Modeling)이 간단히 LINQ에서 SQL로 생성되는 엔티티 클래스(entity classes)가 아니라는 것을 강조한다. 또한 개발자가 MVC에서 “모델”이란 무엇인지 완전한 이해를 돕기 위해 DDD(Domaini-Driven Design)에 대해서도 다루고 있다.

다음의 4장에서 6장까지는 잘 구성된 예제들을 다루고 있는데, 실무에서 여러분만의 실용적인 ASP.NET MVC 응용 프로그램을 빌드하기 위한 내용들이다.

이 책의 두 번째 파트는 ASP.NET MVC 프레임워크에 대한 좀 더 심오한 지식을 다루고 있다. 마이크로소프트로부터 제공된 ASP.NET MVC 소스 코드와 함께 독자들은 MVC 프레임워크의 각각의 특징들에 대한 체계적인 이해가 가능하고, 또한 라우팅(Routing)하는 방법에 대한 완전한 이해도 가능할 것이다.

그뿐만 아니라 컨트롤러과 뷰, 그리고 AJAX 구현 방법과 기존 웹폼에 대해서도 배울 수 있다.새롭게 시작하는 초보자이거나 이미 MVC에 익숙한 개발자이든 간에, 여러분은 이 책에서 MVC 웹 개발을 위한 매우 유용한 정보들을 발견할 것이다.


제목: 또 하나의 별 다섯 개 리뷰
리뷰자: 무명


정말 개념적으로 잘 써진 기술서이다.

이 주제에 대한 스티브 샌더슨의 지식은 분명 완전 그 자체이고, 글의 문장력 또한 대단하여 독자들의 질문을 꿰뚫어 보는 듯해, 이 책을 읽는 동안 단 한번의 “왜?”라는 의문도 가지질 않았다.

요즘은 개발적인 측면이 많은 부분을 차지하고 있어서 저자는 기꺼이 테스트와 IOC를 위해 다른 소프트웨어 툴을 이용하여 설명을 하고 있다. 아마존 리뷰에서 이렇게 많은 별 다섯 개 리뷰를 가진 기술 서적은 좀처럼 찾아보기가 힘들다. 이 책은 그럴만한 가치가 충분히 있다.


제목: 반드시 봐야할 책
리뷰자: 패트릭 쿠퍼


나는 항상 한 권의 책을 모두 읽고 그 책에 대한 리뷰를 쓰는 것을 즐기며, 그렇게 함으로써 그 책에서 내가 얼마나 많은 부분을 얻었는지 가늠해 보곤 한다. 그러면서 내가 얼마나 많이 책의 내용을 다시 살펴보는지에 따라서 그 책의 가치를 나름대로 생각해 보기도 한다. 그런 점에서, 스티브 샌더슨의 『프로 ASP.NET MVC 프레임워크』는 정말 오랫동안 발견할 수 없었던 대단한 책이다!

이 책은 ASP.NET MVC에 관하여 머리에서 발끝까지, 처음부터 끝까지 모든 주제들을 다루고 있다. 정말 대단한 일을 스티브 샌더슨이 해낸 것이다. 여러분은 이 책을 따라 굉장히 빨리 응용 프로그램들을 만들 수 있으며, 지속 가능한 하부 구조도 빌드할 수 있다.

이 책이 더욱 가치가 있는 것은 MVC의 기초 지식을 넘어선 스티브 샌더슨의 내공 때문이다. 나는 23년 동안 이 분야에서 일을 했으며, 자신이 하는 일에 매우 열정적인 사람들을 만날 때마다 매우 흥분이 된다. 그리고 그들은 그러한 열정을 가지고 모든 측면에서부터 자신을 일을 바라보며, 실무에서의 응용 프로그램과 그와 관련된 것들로 그들의 견해와 통찰력을 공유한다.

웹 프로젝트와 관련되었다면 어떤 사람들이라도 이 책을 읽어볼 것을 적극 추천한다. 여러분은 ASP.NET MVC에 대한 모든 것을 알 수 있을 뿐만 아니라 여러분이 주의해야할 웹 기술과 응용 프로그램의 핵심에 대한 매우 예리한 통찰력도 갖게 될 것이다.

마지막으로, 어떤 실습을 해보기 이전에 먼저 이 책을 처음부터 끝까지 모두 읽어볼 것을 권장한다. 왜냐하면 스티브 샌더슨의 치밀하게 계획된 전체적인 관점을 이해하고 나면, 여러분은 심지어 그 접근 방법과 결과에 더욱 감명을 받을 것이다.


제목: 훌륭하고 빠른 이해가 가능한 책
리뷰자: 아그리스막 네오크램


나는 ASP.NET 웹폼을 약 5년 동안 다뤄온 프로그래머이며, 최근에야 MVC에 뛰어 들었다. 샌더슨의 『프로 ASP.NET MVC 프레임워크』는 ASP.NET MVC 분야에 있어서 최고의 책이다. 이해하기가 쉽게 써져서 빠른 독파가 가능하다. 이 책은, 비록 Model이 단순하기는 하지만, 하나의 완전한 웹사이트 예제와 함께 시작한다.

그러나 이 책은 LINQ to SQL 책이 아니므로, 나는 Sports Store에서 좀 더 복잡한 Model을 다루기를 원했고, LINQ와 MVC를 사용한 부모/자식 간의 관계를 구현하는 방법을 보여줬으면 하고 생각하기도 한다.이 책을 .net 세계의 MVC에 뛰어들기를 원하는 개발자들에게 적극 추천한다.


제목: 완벽한 MVC 지침서
리뷰자: 벤 밀스


웹폼(기존의 ASP.NET)에서 ASP.NET MVC로의 전환은 온라인에서 단지 한두 줄의 글을 읽어서 해결이 되는 것이 아니다.MVC는 기존의 웹폼과 비교해 매우 다른 방법으로 웹 응용 프로그램을 빌드하며, 정말로 그를 위한 적응이 필요하다. 나는 얼마 동안 MVC를 이용하여 응용 프로그램을 작성하려고 노력 했지만, Data entry validation를 하는 방법 같은 문제에 꾸준히 부딪히게 되었다. 그리고 나의 웹 응용 프로그램에 대해 생각하는 것보다 더 많은 시간을 새 MVC 응용 프로그램을 붙잡고 씨름을 하는데

비해야만 했다.이 책은 내가 직면한 대부분의 문제를 해결해 주었으며, MVC 프레임워크가 미래의 응용 프로그램을 위한 올바른 선택이라는 것에 대한 확신도 얻게 되었다. 이 책은 매우 간결하게 잘 써졌으며, 아직 확실히 정해진 패턴이 없는 주제들에 대해 매우 실용적인 조언을 해주고 있다.


제목: ASP.NET MVC에 대한 최고의 책
리뷰자: 슈치지엘


나는 PHP 프로그래머다. 이 책은 며칠 전에 구입을 했으며, 모두 읽는데 약 일주일 정도가 걸렸다. 그 후, 나는 MVC를 이용해 ASP에서 나의 “첫 응용 프로그램”을 디자인하고, 계획하고, 변경하기 시작했다. 저자는 필요할 때 꼭 사용할 수 있는 실용적인 디자인 패턴을 사용하여 더 나은 프로그래머가 될 수 있는 방법을 이 책을 통해 보여주고 있다.




신고
Trackback 0 | Comment 0


Apress의 Pro ASP.NET MVC Framework의 번역서인 『프로 ASP.NET MVC 프레임워크』가 10월 13일 출간 예정입니다.

현재 다음의 서점에서 예약 판매를 진행중에 있으나 오늘 부터 시작이 되어 도서의 서지정보가 아직 기입이 안된 사이트도 있는 점을 양해 부탁드립니다.


출간 예정일: 2009년 10월 13일
예약 판매일: 2009년 9월 25일 ~ 2009년 10월 12일
저자: 스티븐 샌더슨
역자: 김태영, 송원석
가격: 33,000원
ISBN: 978-89-962765-2-4
페이지: 700





[아마존 소개 보러가기]
[아마존 랭킹 보러가기]





예전 글(2009/09/14 - [출간예정]프로 ASP.NET MVC 프레임워크(Pro ASP.NET MVC Framework))에서도 알려드렸었지만, 이 책은 taeyo.net의 운영자이신 김태영(taeyo)님과 시삽이신 송원석(songgun)님께서 번역을 맡아 주셨습니다. 따라서, 도서를 읽고 궁금하신 점이 있으시면 언제든지 taeyo.net의 "ASP 게시판"에 올려주시면 여러 관계자분들께서 친절히 답변해 주시길 것입니다.

오늘은 도서와 저/역자분들의 간단한 소개를 먼저 해드리고 다음주 안으로 이 책의 4장인 "스포츠스토어: 실무 응용 프로그램" 부분을 공개해 드리도록 하겠습니다. 감사합니다.

책소개

이 책은 Apress의 Pro ASP.NET Framework(Sanderson 저)의 번역서로, 원서는 아마존(Amazon) 사이트의 프로그래밍/ASP 분야에서 출간 당시부터 베스트셀러에 속하여 현재까지 당당히 1위를 차지하고 있는 도서이다.

새로운 ASP.NET MVC 프레임워크는 마이크로소프트 웹 개발에 있어서 ASP.NET이 처음으로 공개된 2002년 이후 가장 큰 변화를 의미한다. ASP.NET MVC 프레임워크는 HTML 마크업, URL 스키마, 그리고 요청 및 응답의 사용을 매우 훌륭하게 제어할 수 있도록 지원해주고 있을 뿐만 아니라 깔끔한 응용 프로그램 아키텍처를 권장하고 단위 테스트에 대한 풍부한 지원을 제공해주며, 써드 파티 자바스크립트 라이브러리 및 Ajax 툴킷과도 손쉽게 통합할 수 있도록 지원해 주고 있다.
이 책은 단순히 ASP.NET MVC에서 어떤 기능들이 제공되는지, 그리고 그 기능들을 어떻게 사용하는지를 설명할 뿐만 아니라 그런 방식으로 설계된 이유는 무엇이며, 그 원리를 적용하여 여러분의 코드를 향상시킬 수 있는 방법은 무엇인지에 대해서도 깊게 이해할 수 있게 해준다.
또한 정상적으로 동작하는 기능들은 물론이고 여러분이 직면하게 될 제약 사항들과 대안들, 그리고 여러분이 사용하면 좋을 만한 오픈 소스 도구들에 대해서도 자유롭게 분석하고 검토하고 있다.

이 책의 설명과 따라하기 형식의 튜토리얼 등을 통해서 여러분은 다음과 같은 내용들을 알 수 있게 될 것이다.

  • 라우팅, 컨트롤러, 필터, 뷰, 모델 바인딩 등을 포함한 MVC 프레임워크의 강력한 기능들
  • 아키텍처: 모델-뷰-컨트롤러(MVC, Model-View-Controller) 패턴, 느슨한 결합, 테스트 용이성, 테스트 주도 개발(TDD, Test-Driven Development), 그리고 관련 디자인 패턴들
  • MVC 프레임워크의 요청 처리 파이프라인 확장 및 사용자 정의
  • MVC 응용 프로그램 보호 및 윈도우 서버로의 배포
  • MVC 응용 프로그램에서 ASP.NET 핵심 플랫폼 기능 사용하기
  • 기존 ASP.NET 응용 프로그램과의 통합 또는 ASP.NET MVC로의 마이그레이션

    http://taeyo.net
    책을 읽다가 궁금하거나 의아한 내용이 있다면 태오 사이트의 ‘ASP.NET 게시판’을 통해서 같이 이야기를 나누길 바란다. 내게 궁금한 것은 일반적으로 남에게도 궁금한 것이곤 하기에, 나중에라도 동일한 내용을 궁금해 하는 사람이 쉽게 찾아볼 수 있도록 하기 위해 역자는 그러한 궁금증을 게시판을 통해서 공유하길 좋아한다.


    독자대상: 초중급
    이 책은 ASP.NET과 C#에 어느 정도의 기본 지식을 가지고 있으면서 새로운 ASP.NET MVC 프레임워크를 사용하기 원하는 개발자들을 위한 책이다. 만약 여러분들이 웹폼으로 알려진 기존의 ASP.NET을 사용해 본 경험이 있다면 더욱 도움이 될 것이다.
    그러나 이 책은 초보자에게도 여전히 매우 유용하다. 예제들은 따라하기 방식으로 필요한 과정을 모두 친절히 설명하고 있으며, 아무 문제없이 작동되어 진다. 모든 코드들은 제대로 설명이 되어 있고 실용적이므로, ASP.NET MVC의 기초를 알기 원하는 모두에게 이 책을 권한다.


    *출판사 리뷰

    ASP.NET MVC는 모델-뷰-컨트롤러(MVC, Model-View-Controller) 아키텍처의 효율성과 깔끔함, 애자일 개발(Agile Development)의 최신 개념과 기술, 그리고 기존 ASP.NET 플랫폼에서 가장 뛰어난 부분들만을 결합한 마이크로소프트의 웹 개발 프레임워크이며, 웹 개발 프로젝트의 아주 사소한 부분들을 제외한 거의 모든 부분에 있어 상당한 이점들을 제공하는 "기존 ASP.NET 웹폼"에 대한 완벽한 대안이기도 하다.

    지난 몇 년 동안 우리들이 직접 경험해 왔던 것처럼, 마이크로소프트의 웹 개발 플랫폼들은 그 기능과 함께 (불행하게도) 복잡성도 점차 증가하고 있고 새로운 플랫폼들은 언제나 이전 플랫폼이 갖고 있던 단점들을 해소하고자 노력해왔다. 마찬가지로 ASP.NET MVC도 기존 ASP.NET 웹폼의 단점들을 해결하려는 목표를 갖고 설계되었으며, 특히 이번에는 간결함을 강조하고 있다.

    기존의 ASP.NET은 상당히 좋은 발상이었으며 처음에는 굉장한 기대를 모았으나, 현실은 예상했던 것보다 훨씬 더 복잡했다. 지난 몇 년간 실무에서 웹폼이 사용된 결과, ViewState, 페이지 수명 주기, HTML 기반의 콘트롤에 대한 제약, 관계 분리의 취약성, 테스트의 어려움 등에서 많은 문제점들이 발견되었다.

    마이크로소프트와 같은 거대 기업은 잠시 동안은 현재의 영광에 만족할 수 있겠지만, 언제까지나 그 상태로 안주할 수만은 없다. ASP.NET은 지금까지 큰 상업적 성공을 거뒀으나 그 동안 다른 웹 개발 업계는 계속 변화해왔으며, 비록 마이크로소프트가 꾸준히 웹폼의 문제점들을 해결해 나간다 하더라도 이미 웹폼의 주요 설계는 시대에 많이 뒤쳐진 것처럼 보인다.

    2007년 10월, 텍사스 오스틴에서 개최된 첫 번째 ALT.NET 컨퍼런스에서 마이크로소프트의 부사장 스콧 구스리(Scott Guthrie)는 지금까지 살펴본 비난들에 대한 직접적인 응답으로 명확하게 설계된 ASP.NET 기반의 새로운 MVC 웹 개발 플랫폼을 소개하고 시연했다. 이 새로운 플랫폼이 어떻게 ASP.NET이 갖고 있는 제약들을 극복하고 마이크로소프트의 플랫폼을 다시 첨단 기술로 복귀시킬 것인지 이 책을 통해서 함께 살펴보도록 하자.

    저자: 스티븐 샌더슨(STEVEN SANDERSON)

    그는 코모도어(Commodore) VIC-20 사용 설명서에 기재된 BASIC 프로그램을 따라 해보면서 처음 컴퓨터 프로그램을 접했다. 그리고 이것이 그가 처음 읽기를 배운 방법이기도 하다. 스티브는 영국의 셰필드(Sheffield)에서 태어났으며 캠브리지 대학에서 수학을 공부했고, 지금은 브리스톨(Bristol)에 거주하고 있다. 그는 거대 투자 은행과 조그마한 신생 기업에서 일했으며, 그 뒤로 독립하기 전까지 프리랜서 웹 개발자, 컨설턴트 및 트레이너로 중간 규모의 ISV에서 근무했다. 스티브는 영국의 .NET 커뮤니티에서 활동하면서 사용자 그룹에 참여하기 위해 노력하고 있으며, 기회가 허락될 때마다 컨퍼런스에서 무료 강연을 하고 있다. 그는 모든 형태의 기술적인 진보에 애착이 있으며, 반짝이는 LED만 갖고 있다면 어떤 기계 장치든 구입하곤 한다.


    기술 감수자: 앤디 올센(ANDY OLSEN)

    그는 영국에서 활동 중인 프리랜서 개발자이자 컨설턴트다. 앤디는 베타1 시절부터 .NET을 사용하여 작업해왔으며, Apress 출판사에서 C#, 비주얼 베이직, ASP.NET, 그리고 그 밖의 주제들을 다루는 몇 권의 책들을 공저하거나 감수했다. 그는 축구와 럭비의 열광적인 팬이며 달리기와 스키(비록 서툴지만)를 즐긴다. 지금은 그의 아내인 재인, 그리고 그의 아이들, 에밀리와 토마스와 함께 스완시(Swansea)의 해변에 거주하고 있고, 이제 막 서핑의 짜릿함을 발견하여 그가 경험한 그 어느 것보다도 멋져 보인다고 생각하고 있다.


    역자: 김태영(Taeyo)

    Taeyo라는 온라인 아이디로 유명한 그는 ASP/ASP.NET 기술에 관한 한 국내에서 전설적인 전도사로 불린다. Taeyo.NET이라는 유명 커뮤니티의 대표 운영자이며, 현재까지도 스테디셀러인 수 많은 책들의 저자이기도 하다. 더불어, 한국인으로서는 유일하게 Microsoft MVP Insider를 수상하기도 하였다. 현재는 ㈜이노가드에서 기술이사로 재직하고 있으며, 꾸준히 온라인을 통해서 다양한 웹 프로그래밍 기술을 공유하고 있다. 그를 만나보고 싶다면, 강남역이나 선릉역 주변의 선술집들을 둘러보라. 간혹 프로그래밍과 전혀 관계없는 주제로 신나있는 그를 볼 수 있을지도 모른다.


    역자: 송원석

    현재 ㈜이노가드에서 솔루션 사업부 차장으로 근무하고 있다. 지난 3년간 마이크로소프트 MVP(IIS)를 수상했으며, 국내 최대의 ASP & ASP.NET 커뮤니티인 Taeyo.NET에서 IIS 게시판 시삽으로 활동하고 있다. 최근 몇 년간 개인 홈페이지(http://www.egocube.pe.kr/)를 통해서 IIS7 관련 문서들의 번역 작업을 꾸준히 진행해오고 있으며, 특히 IIS 관리 자동화에 관심이 많다.

    *목차

    저자서문
    감사의글

    역자서문

    1부 ASP.NET MVC 소개

    1장. 전체 개요
       웹 개발의 간략한 역사

       최근의 웹 개발

       ASP.NET MVC 의 주요 장점

       누가 ASP.NET MVC 를 사용해야 하는가?

    2장. 첫 번째 ASP.NET MVC 응용 프로그램
       작업용 컴퓨터 준비하기

       새로운 ASP.NET MVC 프로젝트 생성하기

       웹 페이지 렌더링

       첫 응용 프로그램

    3장. 사전지식
       모델-뷰-컨트롤러(MVC, Model-View-Controller) 아키텍처의 이해

       도메인 모델링

       느슨하게 연결된 구성 요소 작성하기

       자동화된 테스트 시작하기

       새로운 C# 3 언어 기능들

    4장. 스포츠스토어: 실무 응용 프로그램
       시작하기

       도메인 모델 작업하기

       제품 목록 출력하기

       데이터베이스 연결하기

       IoC설정하기

       자동화된 테스트 생성하기

       사용자 정의 URL 스키마 구성하기

       모양 꾸미기

    5장. 스포츠스토어: 탐색 및 장바구니
       탐색 컨트롤 추가하기

       장바구니 구현하기

       주문 전송하기

    6장. 스포츠스토어: 관리기능 및 마무리 개선 작업
       카탈로그 관리 추가하기

       관리 기능 보안

       이미지 업로드

     

    2부 ASP.NET MVC 심화

    7장. ASP.NET MVC 프로젝트 개요
       비주얼 스튜디오로 MVC 애플리케이션 개발하기

       요청 처리 파이프라인

    8장 URL과 라우팅
       개발자가 제어할 수 있다

       라우트 설정하기

       출력용 URL 생성하기

       라우트를 단위 테스트하기

       중급 사용자 정의

       URL 스키마 지침

    9장. 컨트롤러와 액션
       개요

       입력 수신하기

       출력 생성하기

       필터에 재사용 가능한 동작 추가하기

       요청 처리 파이프라인의 일부인 컨트롤러

       컨트롤러와 액션 테스트하기

    10장. 뷰
       ASP.NET MVC와 뷰와의 조화

       웹폼 뷰 엔진 기초

       인라인 코드 사용하기

       MVC 뷰는 실제로 어떻게 동작하는가

       HTML 도우미 메서드 사용하기

       파샬 뷰 사용하기

       애플리케이션 로직을 갖는 재사용 가능한 위젯을 만들기 위해서 Html.RenderAction 사용하기

       마스터 페이지를 사용하여 페이지 레이아웃 공유하기

       사용자 정의 뷰 엔진 구현하기

       다른 뷰 엔진 사용하기

    11장. 데이터 엔트리
       모델 바인딩

       유효성 검사

       위저드와 다단계 폼

       검증

    12장. Ajax와 클라이언트 스크립팅
       왜 자바스크립트 툴킷을 사용해야만 하는가

       ASP.NET MVC의 Ajax 도우미

       ASP.NET MVC에서 jQuery 사용하기

    13장. 보안과 약점
       모든 입력은 위조될 수 있다

       크로스-사이트 스크립팅과 HTML 인젝션

       세션 하이재킹

       크로스 사이트 요청 위조(CSRF)

       SQL 인젝션

       MVC 프레임워크를 보안적으로 사용하기

    14장. 배포
       서버 요구사항

       IIS 기본

       애플리케이션 배포하기

       애플리케이션을 운영 서버에서도 잘 동작하게 만들기

    15장. ASP.NET 플랫폼 기능
       윈도우 인증

       폼 인증

       멤버십, 역할, 및 프로필

       URL 기반 권한 부여

       데이터 캐싱

       사이트 맵

       국제화

       성능

    16장. MVC와 웹폼의 결합
       MVC 응용 프로그램에서 웹폼 기술 사용하기

       웹폼 응용 프로그램에서 ASP.NET MVC 사용하기

    찾아보기





  • 신고
    Trackback 0 | Comment 0


    현재 10월 중(다음달)으로 번역서가 출간될 Apress의 프로 ASP.NET MVC 프레임워크(Pro ASP.NET MVC Framwork)를 출판사의 압박!으로 열심히 번역하고 계신 김태영(태오)님과 송원석(송군)님이 운영자이자 운영진으로 계신 Taeyo.net에서 작년(2008년)에 태오님께서 올리신 MVC 관련 강좌를 발견하였습니다. 4회까지 연재를 하신 것 같으신데, 모두 올려드리도록 하겠습니다. 원본은 다음 링크에서 확인 가능합니다.

    강좌 #2 [바로가기]

    웹 폼 기반의 개발과 MVC 기반의 개발


     

    M/V/C 로의 분리

    우선 웹 애플리케이션의 구조를 Model(모델), View(뷰), Controller(컨트롤러)로 분리하는 MVC 패턴에서 각각의 그러한 컴포넌트들의 역할에 대해서 먼저 살펴보도록 하겠습니다. 각각의 분리는 물리적인 분리라기 보다는 논리적인 분리임을 기억하시고 다음 내용을 살펴보시기 바랍니다.

    Model(모델)

    모델은 실제 로직을 구현하는 애플리케이션의 중요한 부분입니다. 이는 일반적으로 데이터베이스로부터 데이터를 가져와서 담아두거나, 데이터베이스로 저장하는 역할을 수행합니다. 주로 모델링을 통해서 산출된 엔터티들이 이러한 모델에 속하게 되지만, 작은 규모에서는 DataSet도 모델로서 사용될 수 있습니다.

    View(뷰)

    뷰는 사용자 인터페이스 즉, UI을 출력하는 컴포넌트입니다. 일반적으로 UI는 모델의 데이터를 기반으로 만들어집니다. 화면 출력과 관계된 로직을 포함할 수는 있지만, 사용자 입력이나 인터렉션, 업무와 관계된 로직은 결코 View가 가져서는 안됩니다. 이는 오로지 화면을 출력하기 위한 역할만을 담당하기 때문입니다.

    Controller(컨트롤러)

    어찌 보면 MVC에서 가장 핵심이 되는 컴포넌트입니다. 사용자의 인터렉션을 처리하고, 모델을 조작하며, 최종 UI로 출력될 뷰를 결정하는 역할을 담당합니다. 전체적인 코디네이터 역할을 한다고 볼 수 있는데요. 이는 사용자의 입력 값을 수신하고 데이터 모델을 통해서 필요한 데이터를 가져와 응답(Response)을 구성하는 전반적인 책임을 담당합니다.

    이러한 MVC 패턴에 따라 애플리케이션을 3개의 컴포넌트로 나누어 구성하게 되면, 각 요소 간에 연결을 보다 느슨하게 구성할 수가 있게 되기에 복잡한 애플리케이션을 관리하기에 용이하며, 병행 개발(동시에 각각의 컴포넌트를 개발하는 방식)이 가능하다는 장점이 있습니다. 그리고, 이러한 분리로 인해 기존의 ASP.NET 애플리케이션보다 훨씬 테스트하기가 용이하다는 이점을 얻을 수도 있습니다.

    기존 ASP.NET 애플리케이션은 테스트를 하기 위해서 사용자 입력에 따라 전반적인 ASP.NET의 프로세스(페이지 클래스를 생성, 초기화하고, 개체 트리에 속해있는 모든 컨트롤들을 생성하는 등) 를 모두 거쳐가며 테스트해야 했기에 그 절차가 약간 복잡했고 또한, 테스트를 위해서는 반드시 웹 서버가 요구된다는 제약이 있었지만, MVC 패턴을 적용해서 구성하게 되면 개별적인 컴포넌트를 독립적으로 테스트할 수 있게 되기에 애플리케이션의 개발과 테스트가 상대적으로 용이하다는 이점을 얻을 수 있으며, 이는 TDD(Test-Driven Development)에도 부합한다고 볼 수 있습니다.

    어떻게 모듈을 나눠야 하고, 어떤 코드를 어디에 작성해야 하는 지는 지금 고민하지 않아도 됩니다. 그에 대한 템플릿과 규칙을 ASP.NET MVC 프레임워크가 제공하고 있기에 그가 제안하는 규칙에 따라 개발을 하면 되기 때문이지요. 이에 대한 본격적인 이야기는 다음 강좌부터 시작합니다.

    웹 폼 기반의 개발과 MVC 기반의 개발

    조금쯤은 새로 사귄 친구의 편을 들어 설명하다 보니, 자칫하면 이러한 설명이 마치 기존의 ASP.NET 애플리케이션은 그다지 매력이 없고 MVC만이 훌륭한 것처럼 느껴지게 설명한 것도 같은데요. 앞에서도 말씀 드렸지만, 그게 꼭 그런 것만은 아닙니다. 기존 웹 폼 방식의 ASP.NET도 많은 장점들을 가지고 있으니까요. 말이 나온 김에 간단하게 두 기술이 가진 각각의 장점을 간략하게 정리해 보도록 하겠습니다.

    웹 폼 기반의 웹 애플리케이션의 장점

  • 각각의 페이지 단위로 기능을 작성하는 Page Controller 패턴을 사용한다.
    : 개별 화면 단위 중심적인 업무를 개발하기에 매우 적합하다.
  • 이벤트 중심의 프로그래밍 모델을 제공한다.
    : 다양한 이벤트를 제공하는 수 많은 서버 컨트롤이 제공되기에, 이벤트 중심적인 개발을 통해 업무 화면을 직관적으로 작성할 수 있다.
  • 뷰상태(ViewState)와 서버 기반의 폼을 사용하기에, 상태 정보를 관리하기에 용이하다.
  • MVC 기반의 웹 애플리케이션의 장점

  • 모든 요청을 단일 컨트롤러를 통해서 처리하는 Front Controller 패턴을 사용한다
    : 모든 요청을 단일 컨트롤러를 통해 처리하므로, 라우팅(routing) 하부구조를 지원하는 애플리케이션을 개발할 수 있다.
  • 애플리케이션을 3개의 논리 모듈로 분리하기에 애플리케이션의 복잡성을 관리하기 쉽게 한다.
  • 뷰상태나 서버 기반의 폼을 사용하지 않는다
    : 개발자가 애플리케이션의 동작방식을 전체적으로 제어할 수 있으므로 세밀하게 애플리케이션을 조작하고 싶은 이들에게 적합하다. 단, 이러한 기능(상태정보 관리)이 필요할 경우 추가적인 작업이 요구된다.
  • 이제 MVC 모델이 어떻게 우리를 즐겁게 해줄 수 있을 것인지 개념적으로는 약간의 기대가 충전되었을 것이라 생각합니다. 막상 사용하다 보면 웹 폼 기반의 개발이 그리워지는 경우도 적지 않지만(이벤트 프로그래밍 모델도 꽤나 개발에 편리한 모델이기에), MVC는 MVC대로 유용한 많은 기능들을 제공하기에 이를 통한 개발이 한동안은 꽤 선전하지 않을까 예상이 됩니다. 물론, 그렇다 하더라도 많은 애플리케이션은 여전히 웹 폼 기반으로 개발될 것이며, 심지어는 웹 폼 기반과 MVC 기반이 혼합되는 애플리케이션도 생겨날 수 있겠지만 말입니다.

    그렇다면, 이러한 지식을 머리에 담아두고, 다음 강좌부터는 본격적으로 ASP.NET MVC 프레임워크가 지원하는 기능들에 대해서 설명을 해보도록 하겠습니다. 프레임워크에서 지원하는 기능을 간략하게 살펴본 뒤, 그에 따라 가벼운 샘플 애플리케이션을 모델/뷰/컨트롤로로 분리하여 전체적인 구동 예제를 완성하는 식으로 강좌를 진행해 볼까 합니다.

    기대가 되신다면~ Talk 게시판에 응원의 글을 남겨주십시오!!! 감사합니다.




    신고
    Trackback 0 | Comment 0


    현재 10월 중(다음달)으로 번역서가 출간될 Apress의 프로 ASP.NET MVC 프레임워크(Pro ASP.NET MVC Framwork)를 출판사의 압박!으로 열심히 번역하고 계신 김태영(태오)님과 송원석(송군)님이 운영자이자 운영진으로 계신 Taeyo.net에서 작년에 태오님께서 올리신 MVC 관련 강좌를 발견하였습니다. 4회까지 연재를 하신 것 같으신데, 모두 올려드리도록 하겠습니다. 원본은 다음 링크에서 확인 가능합니다.

    강좌 #1 [바로가기]

    ASP.NET MVC 프레임워크의 등장


    ASP.NET MVC 프레임워크는 현재 ASP.NET 3.5에 추가적으로 준비되고 있는 MVC(Model-View-Controller) 개발 지원을 위한 프레임워크입니다. 이제 ASP.NET도 공식적으로 MVC 패턴을 지원하기 시작한다는 것은 꽤나 기쁜 소식이 아닐 수 없습니다. 물론, ASP.NET에 MVC 패턴을 적용하는 것이 기존에도 불가능한 것은 아니었지만 공식적인 프레임워크가 지원된다는 것은 ASP.NET 기반의 개발에서도 다양한 개발 방법을 개발자가 선택해서 사용할 수 있다는 것을 의미하므로 더욱 개발환경이 풍부해지는 느낌을 갖게 합니다.

    하여, 태오는 이번 강좌를 시작으로 연재 식으로 4-5회에 걸쳐 ASP.NET MVC 프레임워크에 대한 이야기를 해볼까 합니다. 그럼 이제 MVC에 대한 이야기를 시작으로 해서 하나씩 이야기 보따리를 풀어보겠습니다~ 아라비안나잇!! 펼쳐라 펼쳐라~ 너의 모험담~ 불끈불끈 용기가~~~ -_-;;

    물론, 이미 MVC 패턴에 대해서는 많이들 알고 계실 것이라 생각합니다. 이는 꽤 오랫동안 각광을 받아 온 패턴이기 때문이죠. 아? 잘 모르시겠다고요? 아~~ 괜찮습니다. 충분히 그럴 수 있습니다. 잘 몰라도 크게 문제가 될 것은 없습니다. 이제부터 알아나가면 되니까요(단, 스스로 학습을 통해서 말이죠 ㅎㅎ) 하지만, 이 패턴이 무엇을 의미하는 지는 몰라도 MVC라는 용어는 지난 날 한번씩은 들어보지 않으셨나요? 하하. 못 들어 보셨다구요? 하하~ -_-; (이거 어쩐다..)

    MVC는 애플리케이션의 구조를 모델과 컨트롤러 그리고 뷰라는 3가지 컴포넌트로 분리하여 보다 효율적인 개발을 가능하게 하는 개발 패턴입니다. 이는 각 컴포넌트 간의 종속성을 줄이고, 각 모듈의 역할을 명확히 분리하여 TDD(Test-Driven Dev)를 가능하게 함과 동시에, 병행적인 개발을 원활하게 하는 기반을 제공합니다. 이미 웹 애플리케이션 개발에 있어 폭넓게 사용되고 있는 패턴이며, 몇몇 소프트웨어 벤더들은 이를 쉽게 개발에 적용할 수 있게 하는 다양한 프레임워크들을 제공하고 있기도 합니다.

    하지만, 그 동안의 ASP.NET 기술은 MVC 모델보다는 개별 페이지 단위로 기능을 소화하는 Page 컨트롤러 패턴을 사용해 왔습니다. 우리가 친숙한 웹폼(Web-Form) 프로그래밍 방식이 바로 그 대표적인 예이죠. 웹 폼 방식은 페이지의 상태 정보를 유지하기 쉽게 하고, 이벤트 중심적인 개발을 가능하게 하기에 웹 애플리케이션의 개발을 편리하게 했던 것이 사실입니다. 사실, MVC 패턴이나 Page 컨트롤러 패턴인 웹폼 방식이나 모두 웹 애플리케이션 개발에 있어 나름대로의 장단점을 가지고 있어서, 어떤 것이 절대적으로 좋은 패턴이라고는 말하기 어렵습니다. MVC 패턴이 더 효과적인지, Page 컨트롤러 패턴이 더 효과적인지는 주어진 시나리오나 개발 환경 및 웹 사이트의 설계 기반에 따라 달라질 수 있기 때문입니다.

    현재 ASP.NET이 MVC 프레임워크를 지원하겠다고 발표한 것이 MVC 패턴이 웹 개발에 있어 궁극적인 개발 패턴이라는 것을 의미하지는 않습니다. 이는 기존 ASP.NET 기술이 웹 폼 방식을 위한 프레임워크만을 지원해 왔고, MVC 패턴을 위한 프레임워크를 지원하지 않은 상황이었기에, 이를 제공하겠다는 결정이 박수를 받고 있는 것이지, 웹 폼이 불 합리한 기술이었기에 MVC로 대체하겠다는 의미는 아니기 때문입니다. 이 부분은 오해를 하시면 안 됩니다. 개발자들이 혹은 설계자들이 선택해서 사용할 수 있는 프레임워크가 하나 더 제공되는 것이기에, 그에 따라 선택의 폭이 넓어지고 다양한 시도가 가능해질 것으로 보이기 때문에 현재 주목을 받고 있는 것입니다. ^^;

    ASP.NET을 능숙하게 다루시는 분들은 "무슨 소리야~ 기존에도 MVC 패턴을 ASP.NET에 적용하는 것이 그렇게 어려운 일은 아니었다고!"하시는 분들도 계시겠지만, 어쨌든 기존의 ASP.NET은 프레임워크 차원에서의 MVC 패턴은 지원하지 않았습니다. 물론, ASP.NET 숙련자들이 생각하고 계시는 것처럼 MVC 패턴을 ASP.NET에서 구현할 수 없었던 것은 아닙니다만, 쉽게 MVC를 개발할 수 있게 하는 기반 구조는 별도로 제공되지 않았기에, 경험이 많은 개발자들이 직접 기반 구조를 작성해서 사용할 수 밖에 없었다는 것입니다. 그리고, 그렇게 개발된 모듈들은 업무 인수인계나 전파 교육이 제대로 이루어지지 않을 경우, 해당 숙련자가 프로젝트에서 제외된 상황에서는 오히려 복잡한 구성으로 취급되고, 사후 관리나 유지보수가 쉽지 않은 문제를 일으키기에 잘 만들어진 골치거리로 다루어지기도 했습니다.

    예를 들면, ASP.NET에 MVC 패턴을 적용한 예로는 제가 2년 전에 작성했던 "UserControl 템플릿을 이용한 공통 UI 렌더링( View.aspx?SEQ=187&PSEQ=8&IDX=0)" 강좌를 들 수 있습니다. User Control을 사용해서 뷰를 독립적으로 구성하게 하는 그 강좌는 MVC 패턴을 ASP.NET에 적용한 하나의 예라고 볼 수 있습니다. 하지만, 강좌에서 보이다시피 관련된 모든 기능을 개발자가 직접 작성하고 구성해야 하는 불편함(?)이 존재하죠. 그리고, 그러한 내용은 어느 정도 ASP.NET 기술에 능숙한 사람들은 이해할 수 있지만, 경력 2-3년 차의 개발자들에게는 쓸데없이 복잡한 방법처럼 보일 수 있습니다. 굳이 그 방법을 사용하지 않고 ASPX 페이지를 직접 작성해도 동일한 결과를 얻을 수 있기에, 초급자들에게는 그 강좌가 쉬운 방법을 괜히 어렵게 꼬아놓은 것처럼 보일 수 있을테니까요.

    Microsoft는 MVC 패턴의 효용성이 업계에서 폭넓게 수용되고, 여타 벤더들의 기술에도 MVC가 널리 적용되기 시작하자, ASP.NET에서도 이를 위한 프레임워크를 포함시키기로 한 것 같습니다. 다른 벤더에 비해 약간 늦게 제공하는 감은 없지 않지만, 이는 매우 훌륭한 결정으로 받아들여지고 있으며, 그 프레임워크가 어떤 기능들을 제공할 지에 많은 관심이 몰리고 있습니다. 현재도 커뮤니티의 피드백을 통해서 기능이 보강되고 있는 상황이기에(아직 CTP 버전이기에), 최종 버전이 제공하는 기능들은 대단히 풍부할 것으로 기대되고 있습니다.

    Microsoft의 ASP.NET 팀이 MVC 패턴을 위한 프레임워크를 지원하기로 결정한 데에는 SEO(Search Engine Optimization)과 REST(Representational State Transfer)와 같은 기법이 현재의 웹에서 중요한 의미로 다루어지기 시작하면서 더욱 더 힘을 얻은 것으로 보이기도 합니다(ASP.NET MVC의 핵심 기능 중 하나에는 이와 관련된 URL 매핑 기법이 들어있습니다).

    SEO(Search Engine Optimization)란 검색 엔진의 검색에 자사의 웹 사이트로 향하는 트래픽의 질과 양을 더욱 높게 만들고자 하는 작업을 말합니다. 즉, 콘텐트나 링크 URL에 검색어와 관련된 내용이 많으면 많을수록 검색 랭킹에서는 상위에 놓여질 수 있으며, 이는 웹 사이트를 고객에게 보다 효과적으로 노출할 수 있게 되기 때문입니다. 단적인 예로, 자사 웹 사이트에 노트북과 관계된 제품 목록을 나열하는 페이지가 있다고 가정할 경우, 이 URL로 /Data/List.asp?category=1과 같이 그 회사 사람들만이 알아볼 수 있는 경로를 사용하는 것 보다는 /Product/Notebook/ 과 같이 검색엔진과 사용자들도 쉽게 알아볼 수 있는 경로를 사용하는 것이 보다 SEO에 부합하는 행동으로 평가를 받습니다. 왜냐하면, 이렇게 URL을 제공하는 것이 검색엔진을 통한 노출에 있어 훨씬 상위 랭크를 차지할 수 있을 것이기 때문입니다.

    하지만, 주의하셔야 할 사항은(거듭 강조드립니다만) MVC 프레임워크가 ASP.NET 기반 개발의 궁극적인 모델이라거나 기존의 개발된 모든 웹 애플리케이션들도 이후에는 MVC를 적용한 모델로 바꿔야 한다거나 하는 것이 아니라는 겁니다. 이는 개발자들이 선택할 수 있는 또 하나의 선택적인 기법일 뿐입니다. ASP.NET MVC의 등장은 기존 웹폼 모델이 그릇되었다는 것을 증명하기 위한 것이 아니며, MVC 패턴 개발을 좋아하는 개발자들에게 또 하나의 선택을 제시하고자 함을 이해하셔야 합니다(그렇다 하더라도, 이후의 개발은 MVC 쪽에 많은 무게를 둘 것 같기는 합니다만). Microsoft의 공식 입장도 웹 폼과 MVC는 각각 발전시켜 나갈 것이라고 하고 있으며, MVC가 웹 폼의 대안이 되는 기술이 아닌 선택적으로 사용할 수 있는 기술이라고 이야기하고 있다는 것을 기억하세요.

    그렇다면, 이제 ASP.NET MVC 프레임워크 자체에 대해서 구체적으로 알아보는 시간을 시작하도록하겠습니다. 이것이 여러분에게 웹 폼 기반의 개발보다 그럴듯한 기술인지, 아니면 여러분에게는 웹폼 모델보다 그다지 매력적이지 않은지는 강좌가 모두 끝난 뒤에 스스로 판단할 수 있을 것입니다. 비록, 그 선택이 남과 다르다 해서 문제가 되는 것은 없습니다. 이미 말했듯이, 이러한 선택은 다양한 요소들에 의해 변할 수 있으며, 특정 환경에서는 특정 패턴이 더 나을 수도 있기 때문입니다.

    패턴은 단지 패턴일 뿐! 왼손은 거들 뿐! (응?)




    신고
    Trackback 0 | Comment 0



    현재 10월 중(다음달)으로 번역서가 출간될 Apress의 프로 ASP.NET MVC 프레임워크(Pro ASP.NET MVC Framwork)를 출판사의 압박!으로 열심히 번역하고 계신 김태영(태오)님과 송원석(송군)님이 운영자이자 운영진으로 계신 Taeyo.net에서 작년(2008년)에 태오님께서 올리신 MVC 관련 강좌를 발견하였습니다. 4회까지 연재를 하신 것 같으신데, 모두 올려드리도록 하겠습니다. 원본은 다음 링크에서 확인 가능합니다.

    강좌 #4 [바로가기]

    MVC : Model 구성하기


    ASP.NET MVC 프레임워크에서 모델(Model)은 핵심 로직을 수행하고 데이터를 조작하는 역할을 담당합니다. 일반적으로 데이터베이스와 같은 데이터 저장소에 존재하는 데이터에 접근하고, 그 데이터에 대해 업무 로직을 수행하는 것이죠. 이러한 모델은 개발하려는 애플리케이션에 맞춰 설계가 되어야 하는 부분이기에 그 형식이 고정되어 있거나 하지 않습니다. 기업 환경의 경우에는 업무 분석을 통해서 산출된 엔터티들의 집합이 이러한 모델에 속하곤 하지만, .NET이 기본적으로 제공하는 DataSet과 같은 형식도 모델로서 다루어질 수 있습니다(여기까지는 MSDN에 나오는 모델에 대한 설명과 큰 차이가 없죠. 하하).

    데이터 모델은 여러 개의 클래스로 구성될 수 있는데, 여기에는 업무 분석을 통해 산출된 엔터티 클래스들과 그 엔터티들을 사용하여 데이터를 다루는 기능을 갖는 컨텍스트 클래스 등이 포함될 수 있습니다(경우에 따라서는 컨텍스트가 수행하는 기능이 컨트롤러로 빠지는 경우도 있습니다만, ASP.NET MVC에서는 이도 데이터 모델에 포함하고 있습니다). 엔터티들은 일반적으로 데이터베이스에 존재하는 특정 테이블의 스키마와 유사하긴 합니다만, 항상 그런 것은 아닙니다. 소규모 웹 애플리케이션의 경우는 테이블 스키마를 기반으로 엔터티 클래스를 구성하여 사용해도 크게 문제가 없는 편이지만(이러한 작업을 자동화하기 위한 ORM 도구들을 이용하기도 합니다), 규모가 있는 애플리케이션의 경우는 테이블 스키마를 기반으로 엔터티를 도출하는 것이 오히려 적절하지 않은 경우도 많기 때문에 주의해야 합니다. 데이터베이스 테이블은 관계적 구조로 설계되어 있지만, OOP로 작성되는 엔터티 클래스들은 상속 구조로 설계되기 때문에 구조적인 차이로 인한 보정이 요구되는 것도 있고, 테이블 스키마에 기반한 클래스 설계는 데이터베이스에 대한 종속성을 갖게 하기에 그를 독립적으로 운용하기 위한 고려가 요구되는 등 이러한 모델링은 고민해야 할 다양한 요소들이 존재하기에 간단한 작업이 아닙니다. 해서, 이러한 모델링만을 별도로 수행하는 전문가들 및 기업들도 존재하고 있지요. 사실, 이러한 작업은 기능성 작업의 구현을 좋아라하는 저희 같은 개발자들에게는 다소 지루한 부분이기도 합니다.

    해서, 기존의 ASP.NET 웹 애플리케이션을 비롯한 다양한 웹 기반의 프로젝트들(스마트 클라이언트 등)에서는 보편적으로 DataSet을 사용하곤 했습니다. 왜냐구요? DataSet은 그냥 이것 저것 고민하지 않고 쉽게 사용할 수 있으니까요. 사실, 엔터티 기반의 애플리케이션을 개발하는 것은 상당히 많은 자원(시간, 노력, 인원)을 요구하는 편입니다. 뽀대가 난다는 이유로 섣불리 엔터티를 도입하여 배보다 배꼽이 더 커지는 당황스런 경험을 해 본 개발자라면 엔터티 기반의 애플리케이션 개발에 고개를 사정없이 흔들기도 할 것입니다. 그런 의미에서 보면, 엔터티의 적용은 대규모 애플리케이션보다는 소규모 애플리케이션에 오히려 더 부합할 수도 있습니다. 그래서, 오히려 대형일수록 엔터티보다는 DataSet을 더 유용하게 사용하는 것인지도 모릅니다. 엔터티를 사용할 경우에 수반되는 생산성 문제 등 다양한 고민거리들에 대해 이것 저것 고민할 필요가 없으니 말이죠.

    그렇기에, 데이터 모델로써 여전히 DataSet을 사용할 수는 있습니다만(그리고, 실제로도 DataSet을 여전히 널리 사용하고 있습니다만), Microsoft는 VS 2008을 기점으로 하여(실은 그 전부터이긴 하지만) 가급적 DataSet보다는 사용자 정의 타입인 엔터티 클래스를 만들어서 사용할 것을 살포시 권유(?)하고 있으며, 심지어, VS 2008에서는 그러한 작업을 자동적으로 해주는(물론, 데이터베이스 테이블 스키마 기반으로) LINQ to SQL이라는 클래스를 제공하고 있기도 합니다. 이는 데이터베이스의 테이블 스키마를 기반으로 엔터티 클래스를 자동으로 만들어주는 ORM(Object-Relational Mapping) 도구라고 보시면 됩니다. 매우 유용하긴 하지만 이를 통해 생성된 엔터티 클래스는 다소 복잡한 환경의 애플리케이션에서는 많은 보정작업이 필요할 수도 있으며, 더불어 병행 개발 시의 참조 문제나 배포관련 문제도 고민거리 중에 하나이기에 면밀히 설계 및 검토한 뒤 사용하셔야 합니다.

    엔터티가 여러 측면에서 많은 장점을 가지고 있는 것은 사실입니다만, 그 멋진 모습 이면에는 숨겨진 많은 고민거리들이 존재하고 있기에, 애플리케이션을 엔터티 기반으로 구성하는 것이 최고의 답은 아니라는 점은 명심하시기 바랍니다(이에 대해서는 유경상 수석이 "DataSet 예찬론(?)"이란 가제로 글을 준비하고 있기도 합니다. 문제는 글이 언제 올라오느냐겠죠! 버럭!).

    그렇긴 하지만, 저는 이어지는 예제에서 LINQ to SQL Class를 사용해서 엔터티를 생성하여 사용할 예정입니다. 비록 이러한 작업이 대형 규모에서는 오히려 피곤한 방법이 될런 지는 모르겠지만, 일반적인 환경(예를 들면, 태오 사이트 같은 중,소 규모 사이트?)에서는 유용하고 쓸만한 방법이기 때문입니다(그리고, 사용해봐야 뭐가 불편한 것인지도 깨달을 수 있겠죠?).

    대부분 엔터프라이즈 환경에 계신 분들은 엔터티 기반으로 개발을 진행하는 경우, 데이터 모델 구성 작업을 위해서 모델링 컨설턴트를 고용한다거나, 자체 TFT를 구성하여 작업을 하셨을 것이니 이미 데이터 모델을 가지고 있는 상태이실 것입니다. ^^ 그렇기에, 그 분들에게는 LINQ to SQL 클래스를 이용하는 별도의 모델 구성 작업은 필요 없을 것입니다.

    더불어, 사실 기업 환경(엔터프라이즈라고 주로 불리는)이라 해도 항상 엄청난 규모의 프로젝트만을 하는 것은 아닙니다. 대형 프로젝트라 해도 그 내부적으로는 일반적으로 작은 규모의 애플리케이션들이 많이 존재하는 편이니까요. 그리고, 그러한 작은 프로젝트에서는 이러한 방식(LINQ to SQL 클래스를 사용하여 테이블 스키마 기반으로 모델을 구성하는 방식)으로 모델을 구성하는 것도 충분히 가능합니다(초기 프로젝트 지침서에서는 권장하지 않을지도 모르지만, 사는 게 그렇지 않습니까? 하하). 사실, 거대 프로젝트의 일부이긴 하지만 여러 개의 작은 웹 사이트들로 구성된 애플리케이션을 개발하는 경우에 수 많은 게시판을 주먹구구 식으로 개발해왔던 지난 개발환경을 생각해보면, 이 방식이 생각보다 오히려 많이 사용될 수 있어 보이기도 합니다(사실, 엔터프라이즈 환경에서 LINQ나 LINQ to SQL 관련 기술의 적용은 다소 비관적인 편이긴 합니다만, 세상의 모든 프로젝트가 모두 엔터프라이즈 급인 것은 아닐 뿐더러, 적절하게 사용하면 좋을 곳은 분명히 많을테니 말입니다).

    드원 테크놀로지의 유경상 수석과 리필 의존적인 커피타임을 가지면서 이에 대한 의견을 교환하다가 느낀 점을 추가적으로 언급하자면, 제가 LINQ to SQL이 중,소 규모에서 그런대로 쓸만하다고 말씀드린 부분은 웹 애플리케이션을 대상으로 한 의견이라는 것입니다. 스마트 클라이언트나 웹 서비스 연동의 윈도우 애플리케이션의 경우는 사실상 서버에서부터 클라이언트까지 이어지는 이러한 엔터티 라이브러리의 연계에 상당히 많은 고민거리들이 있을 수 있습니다. 사실, 이 문제는 닷넷엑스퍼트의 안재우 수석이 이미 자신의 블로그를 통해서 강조한 적도 있습니다. 다음 컬럼을 한번 읽어보세요(시간이 넉넉치 않으신 분은 그 컬럼의 하단에 LINQ to SQL의 문제를 지적한 부분만을 읽어보셔도 됩니다).

    http://blog.naver.com/saltynut/120045036743

    LINQ to SQL이 생성해주는 엔터티들 뿐만 아니라 실제 기업 환경에서 요구되는 엔터티들이 데이터베이스에 종속성을 갖는 부분에 대한 고민(설계적인 문제) 외에도 개발 생산성과 관련하여 병행 개발 시의 라이브러리 참조문제 및 운영 측면에서의 배포 문제 등은 현재까지도 꾸준히 이어져 오고 있는 고민거리입니다. 간단하게 설명 드리자면, 개발 중에 데이터베이스 스키마에 변경이 생겼다면(생각보다 이런 일이 현실에서는 자주 일어나죠), 그에 따라 엔터티 라이브러리도 재 빌드가 되어야 할 것이며, 그 라이브러리를 참조하고 있는 애플리케이션들도 모두 재 빌드 해야 한다는 것이죠. 프로젝트가 3-4개 정도인 가벼운 규모라면 '그게 무슨 문제가 돼?'라고 말씀하실 수도 있지만, 프로젝트가 수십 개 혹은 수백 개로 이루어지는 경우에는 이 작업은 대단한 부담이 됩니다. 더불어, 1차 배포가 완료되어 실제로 애플리케이션을 운영 중인 상황에서, 컬럼명이 변경된다거나 스키마에 변경이 가해진다거나 하면 위의 작업을 계속적으로 반복해야 하는 것 뿐만 아니라, 엔터티 라이브러리를 클라이언트에게까지 재 배포(스마트 클라이언트와 같은 윈도우 애플리케이션의 경우) 해야 하는 부담도 존재합니다. 그리고, 이런 작은 수정이 빈번하게 발생하게 된다면(주로 배포 초기에 이런 일이 잦은 편이죠), 이러한 복잡하고도 피곤한 작업을 매번 반복해야만 합니다. 해서, 오히려 개발하는 데 드는 시간보다, 빌드하고 배포하는 데에 더 많은 시간과 노력이 요구됩니다. 결국, 프로젝트 완료 전에 이러한 문제들에 대해서 깔끔하게 대처할 수 있는 방안을 세워놓지 않는다면, 프로젝트 끝나고도 수 개월간 뒤치다꺼리에 치여 살게 될 수 있다는 것이죠.

    그래서, 기업 중에는 엔터티를 도입하려다가 중도에 포기하는 경우도 꽤 있으며, 혹은 성공적으로(일단은) 프로젝트를 끝낸 뒤에도 산출된 엔터티 라이브러리를 재사용하지 않는 경우도 있습니다.

    해서, LINQ to SQL의 효용성, 더 나아가 엔터티 라이브러리의 효율적인 사용에 대해서는 가볍게 이야기할 수 있는 부분이 아닙니다. 효율성에 대한 고민은 다양한 환경에서 유사하지만 약간씩 다른 경험을 한 여러 전문가들, 선배들, 동료들과 의견을 교환하면서 계속적으로 더 나은 방법을 찾아나가야 하지 않나 합니다. 최고의 방법이 아닌 최선의 방법을 찾기 위해서 말이죠~

    누군가 그러더군요. "엔터티를 적용한다는 것은 매우 유용하며 효과적인 것임에는 틀림이 없다. 그러나, 그것을 효과적으로 사용하기 위해 드는 비용은 엔터티를 사용하는 것이 과연 좋은 지를 의심하게 하곤 한다"고요. (호오~ 쓰고 보니 그럴 듯 한걸~)

    PS : 오해의 소지가 있을까 봐 덧붙입니다. LINQ 기술에 오로지 LINQ to SQL 만 존재하는 것은 아닙니다. LINQ to XML이나 LINQ to DataSets 등의 기술도 존재하고 있으며 이들은 꽤나 유용할 것으로 보입니다. 그렇기에, LINQ 기술 자체는 상당히 흥미로운 기술이며, 관심을 가져볼 만 합니다. 다음 링크도 한번 참고해 보세요.

    http://blogs.msdn.com/charlie/archive/2008/02/28/link-to-everything-a-list-of-linq-providers.aspx

    뭔가 태오의 글 답지 않게 추상적이면서, 어려워 보이는 말들이 많았는데요. 역시나 이런 류의 아는 척은 저와는 왠지 어울리지 않는 듯 하네요 하하하.

    그럼. 이러니 저러니 하는 복잡한 이야기들은 잠시 뒤로 미뤄놓고요. 이제 데이터 모델을 한번 만들어 보도록 하겠습니다? 원론적인 이야기들은 어차피 강좌와 별도로 꾸준히 토론이 되어야 할 부분일 테니까요.

    우선, 데이터베이스가 필요합니다. 그렇다면, SQL 서버와 같은 데이터베이스 서버 제품을 또 설치해야 하는 것일까요? 이미 그러한 데이터베이스 서버를 보유하고 있다면 그를 연결해서 사용하시면 되겠지만, 소프트웨어가 없다고 해서 걱정하실 필요는 없습니다. VS 2008은 기본적으로 SQL Server 2008 Express 버전을 탑재하고 있으므로, 별도의 데이터베이스 서버를 설치하지 않으셔도 일단은 사용이 가능합니다.

    다음 그림과 같이 App_Data 폴더에 마우스 우측 클릭하여 새로운 항목(SQL Server 데이터베이스)을 추가하도록 하세요. 저는 데이터베이스 파일의 이름으로 MyData.mdf를 주었습니다만, 이 이름은 여러분이 편한 이름으로 지정하셔도 됩니다.

    그리고, 생성된 mdf를 더블 클릭하신 뒤, 비어있는 데이터베이스에 다음 그림을 참고로 하여 테이블을 하나 추가해 주세요. 다만, 테이블의 이름은 Memo로 해주시고, Seq 컬럼은 반드시 키 컬럼으로 잡아주시고, Identity 설정도 Yes(예)로 설정하셔서 자동으로 값이 증가하는 컬럼으로 만들어 주시기 바랍니다. 그리고, TransDate라는 컬럼에 대해서는 기본 값을 getdate() 를 지정하도록 하세요. 그래야, 데이터가 입력될 때 날짜도 현재 시간으로 자동 저장될테니까요.

    이제 데이터베이스와 테이블은 준비가 되었네요 ^^; 그렇다면, 만들어진 기념으로 테이블을 열고 2-3건의 데이터를 입력해 두시기 바랍니다. 나중에 출력이 잘 되는지 확인하기 위해서 미리 약간의 데이터가 들어있으면 매우 좋으니까요 ^^ (어떻게 입력하냐고요? 서버 탐색기에서 Memo 테이블을 선택하고 마우스 우측클릭 한 뒤, [테이블 데이터 표시]를 선택하시면 기존 데이터를 살펴볼 수 있을 뿐만 아니라, 입력하실 수도 있습니다) 다음 그림처럼 말이죠.

    데이터베이스가 준비되었으니, 이제, 진짜로!! 모델을 만들기 위해서 Models 폴더에 LINQ to SQL 클래스를 하나 생성해 보도록 하겠습니다. Models 폴더에 마우스 우측 클릭을 한 뒤, 새로운 항목을 추가하세요. 다음과 같이 말이죠.

    그러면, Memo.dbml 이라는 파일이 Models 폴더에 생성됨과 동시에, VS 2008은 그림과 같이 [개체 관계형 디자이너]를 나타내게 되는데요. 여기에 Memo 테이블을 드래그 앤 드롭하여 올려놓으시면 됩니다.

    그리고, 저장! 하시면, VS 2008은 자동으로 테이블 스키마를 기반으로 하여 Memo 클래스와 이 를 이용하여 데이터를 처리할 수 있도록 지원하는 MemoDataContext 클래스를 생성해 줍니다(이를 확인하시려면 Memo.dbml 파일을 확장하여 Memo.designer.cs 파일을 열어보시면 됩니다). 이로써 아주 간단하게 데이터 모델이 만들어진 것입니다. 정말 쉽죠?

    다만, 이는 1회성의 생성이기에 자동 생성된 데이터 클래스가 데이터베이스 테이블(Memo)과 동기화가 되거나 하지는 않습니다. 즉, 테이블의 스키마가 변경되었다고 해서 자동으로 Memo 클래스도 변경(즉, 재생성)된다거나, Memo 클래스에 추가 속성을 넣는다고 해서 데이터베이스 테이블에도 그 필드가 반영되지는 않는다는 것이죠. 그렇기에, 테이블 스키마가 변경되면 다시금 위의 작업을 반복하여 Memo 클래스를 재생성 해주어야 합니다(여기서, 여러분은 불편함 중 한 가지를 알게 되신 겁니다). ^^

    하지만, LINQ to SQL 클래스를 사용함으로써 매우 쉽게 우리는 사용자 정의 타입을 작성할 수 있었습니다. 그쵸? 그리고, 이로써 이제 데이터베이스와 그를 기반으로 하는 데이터 모델은 준비가 완료되었습니다. 즉, MVC 중 M에 해당하는 부분은 준비가 되었다는 것이지요.

    그럼, 이제 컨트롤러를 제작하는 쪽으로 넘어가 보도록 하죠. 물론, 그에 앞서 MVC 프레임워크가 지원하는 URL 매핑 방식을 먼저 이해하고 나서 말이죠~ (그러니깐, 이 말은 다음 강좌는 URL 매핑에 관한 이야기라는 것입니다)



    신고
    Trackback 0 | Comment 0

    퍼블릭's Blog is powered by Daum & tistory