책 소개
이 책은 알파인 스키 하우스라는 가상의 회사에서 일하는 한 팀에 의해 재개발되는 애플리케이션의 처음 몇 가지 스프린트를 따라간다. 각 장에는 팀이 당면한 과제와 이를 극복하기 위한 방법에 대한 정보가 담겨있다. 각 장의 짧은 이야기를 통해 ASP.NET Core MVC의 기능뿐만 아니라 개발자가 애플리케이션을 작성, 유지 관리 및 배포하는 데 사용하는 도구에 대해서도 다룬다.
이 책에서는 프로그래머가 ASP.NET Core로 새로운 애플리케이션을 구축하고 인터넷에서 사용할 수 있도록 배포하는 데 필요한 모든 단계를 수행한다. 아직 웹을 돌아다녀보지 않았거나 웹 폼만을 사용해왔고 오늘날 사용 가능한 도구의 전체 영역을 많이 접해보지 않은 개발자의 수가 여전히 많다. 이 책을 마치고 나면 의미 있고 연관성 높은 데이터베이스 기반 애플리케이션을 구축하고 이를 클라우드 기반 환경에 배포할 수 있게 될 것이다.
작가 소개
저 : 제임스 챔버스
James Chambers
5번의 개발 기술 분야 Microsoft MVP 상을 수상하였고, 현재 Azure 및 AWS에서 운영되는 ASP.NET 코어 및 MVC 프레임워크를 개발하고 있다. 그는 독립 컨설턴트, 멘토 및 활동적인 블로거이며 여러 오픈 소스 프로젝트에 기여하고 있다.
저 : 데이비드 파큇
David Paquette
4번의 Microsoft MVP 상을 수상한 소프트웨어 개발자이고 독립 컨설턴트이다. 그는 .NET을 사용하는 웹 기반 및 윈도우즈 애플리케이션 모두를 구축한 경험이 풍부하다. 깊은 소프트웨어 엔지니어링 지식을 갖고 있으며 우수한 사용자 경험에 대한 열정을 공유하고 있다.
저 : 사이먼 팀스
Simon Timms
다년간 Microsoft MVP 상을 수상한 커뮤니티 빌더, 블로거, 개발자 그리고 독립 컨설턴트이다. 그의 기술 관심사는 다양하며 분산 시스템에서 새로운 자바스크립트 프레임워크에 이르기까지 모든 것을 즐긴다. 개발과 운영 모두에 강한 배경지식을 가지고 있어 빌드에서 개발, 서버 프로비저닝에 이르기까지 모든 작업에 참여하여 팀을 미친 듯이 이끌고 있다.
역 : 금재용
로큰롤과 기타 연주를 좋아하는 개발자다. 경북대학교 밴드 동아리 플레이아데스에서 전자기타를 연주했고, 졸업 후에는 동 대학 전산교육센터에서 JSP, ASP.NET, C#을 강의했다. 국내 유수의 대기업 및 대형 병원 프로젝트에 참여했던 풍부한 경험이 있으며, 2012년부터 6년째 Visual Studio and Development Technologies(C#) 분야 마이크로소프트 MVP로 활동 중이다. 와글넷(www.waglwagl.net) 운영진이며, 개인 블로그를 통해 지식을 공유하고 있다. 현재 의료 소프트웨어 전문 개발사인 (주)에프원소프트를 운영하고 있다.
목 차
Chapter 01 여기까지 어떻게 왔나
액티브 서버 페이지
ASP.NET
ASP.NET MVC
웹 API
ASP.NET Core
요약
Chapter 02 영향력
이전 버전과의 호환성
레일즈(Rails)
Node.js
앵귤러(Amgular)와 리액트(React)
오픈 소스
OWIN
요약
Chapter 03 모델, 뷰 및 컨트롤러
M, V, C
단지 MVC에 관한 것이 아니다
요약
Chapter 04 프로젝트 범위 산정
스키 슬로프
API
관리 뷰
조각들 조합하여 가져오기
도메인 정의하기
요약
Chapter 05 빌드
명령줄 빌드
빌드 서버
빌드 파이프라인
알파인 스키 하우스 빌드하기
요약
Chapter 06 배포
웹 서버 선택하기
Kestrel
역방향 프록시
IIS
Nginx
게시
컨테이너 배포
요약
PART 02 스프린트: 1,000단계의 여정
Chapter 07 Microsoft Azure로 웹 애플리케이션 구축
서비스 제공 플랫폼에 대한 생각
플랫폼 서비스를 사용하여 애플리케이션 구축하기
애플리케이션 규모 확장
요약
Chapter 08 교차 플랫폼
우분투에 올리고 실행하기
코드 편집기 선택하기
리눅스상의 알파인 스키 하우스
.NET 코어
요약
Chapter 09 컨테이너
반복 가능한 환경
도커
윈도우 컨테이너
프로덕션에서 도커
클라우드
요약
Chapter 10 엔티티 프레임워크 Core
엔티티 프레임워크 기본
ApplicationDbContext
스키 카드 컨텍스트
패스 유형
패스 및 유효성
요약
Chapter 11 Razor 뷰
현대 개발자로 웹사이트 생성하기
Razor 기본 마스터하기
더 많은 C# 기능 가져오기
레이아웃으로 작업하기
고급 Razor 기능으로 뷰 향상시키기
대체 뷰 엔진 사용하기
요약
Chapter 12 구성 및 로깅
web.config에서 벗어나기
최상급 로깅
요약
PART 03 스프린트: 비스트 밸리
Chapter 13 ID, 보안 및 권한 관리
깊이 있는 방어
사용자 보안
ASP.NET Core MVC 유일성
기타 타사 인증 공급자
인증을 위한 정책 사용하기
요약
Chapter 14 종속성 주입
종속성 주입이란?
ASP.NET Core의 종속성 주입
요약
Chapter 15 자바스크립트의 역할
좋은 자바스크립트 작성하기
자바스크립트가 필요하긴 한가?
조직
SPA용인가 SPA용이 아닌가?
자바스크립트 빌드하기
TypeScript
모듈 로딩
프레임워크 선택하기
요약
Chapter 16 종속성 관리
NuGet
npm
Yarn
Bower
요약
Chapter 17 스타일을 갖는 프론트엔드
스타일시트로 웹사이트 구축하기
자신의 스타일로 멋부리기
개발 워크플로우 설정하기
타사 프레임워크 사용하기
요약
Chapter 18 캐시
캐시 제어 헤더
데이터 캐시 사용하기
어느 정도의 캐시가 큰 것인가?
요약
PART 04 스프린트: 홈 늘이기
Chapter 19 재사용 가능한 구성 요소
태그 도우미
뷰 구성 요소
파샬 뷰
요약
Chapter 20 테스트
단위 테스트
테스트의 기타 형태
요약
Chapter 21 확장성
규약
미들웨어
외부 컨트롤러 및 뷰 로드하기
라우팅
닷넷 도구
자바스크립트 서비스 및 동형 애플리케이션
요약
Chapter 22 국제화
지역화 가능한 텍스트
현재 문화권 설정하기
요약
Chapter 23 리팩토링 및 코드 품질 개선
리팩토링이란 무엇인가?
품질 측정
리팩토링할 시간 찾기
안전망으로 리팩토링하기
데이터 기반 변경
코드 정리 예제
도움이 되는 도구
품질 얻기
요약
Chapter 24 코드 구성
저장소 구조
소스 내부
병렬 구조
MediatR
Areas
요약
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
| 반품사유 | 반품 배송비 부담자 |
|---|---|
| 단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
| 고객 부담이 아닙니다. |
| 진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
|---|---|---|---|
| 어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
| 환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
| 결제수단 | 환불시점 | 환불방법 |
|---|---|---|
| 신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
| 계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
| 휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
| 포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
| 상품군 | 취소/반품 불가사유 |
|---|---|
| 의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
| 계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
| 가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
| 자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
| CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
| 상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
| 노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |










