Top

크로스 플랫폼 개발을 위한 C# 10과 .NET 6 6/e [비주얼 스튜디오 2022, 비주얼 스튜디오 코드로 만드는]

  • 원서명C# 10 and .NET 6 - Modern Cross-Platform Development: Build apps, websites, and services with ASP.NET Core 6, Blazor, and EF Core 6 using Visual Studio 2022 and Visual Studio Code, 6th Edition (ISBN 9781801077361)
  • 지은이마크 프라이스(Mark J. Price)
  • 옮긴이김현욱
  • ISBN : 9791161757667
  • 60,000원
  • 2023년 07월 20일 펴냄
  • 페이퍼백 | 1,028쪽 | 188*235mm
  • 시리즈 : 프로그래밍 언어

책 소개

요약

C# 10의 새로운 기능과 .NET 6의 전반적인 내용을 다룬다. 설명은 최소한으로 줄인 대신, 예제 코드를 직접 타이핑하면서 익힐 수 있도록 흥미롭게 구성됐다. C#의 기본 문법부터 고급 기능, .NET을 활용한 콘솔, 데이터베이스, 웹 프로그래밍까지의 과정을 비주얼 스튜디오 2022, 비주얼 스튜디오 코드를 사용해 배운다. .NET과 C#을 처음 접하는 개발자를 비롯해, 새로운 기능을 살펴보고 싶은 기존 개발자들이 짧은 시간에 전체 구성을 이해하고 활용할 수 있게 돕는다.

이 책에서 다루는 내용

◆ 블레이저, Razor Pages, MVC 패턴과 ASP.NET Core 기능을 사용한 웹 개발
◆ 객체지향 프로그래밍으로 나만의 형식 구축
◆ 코드 작성, 테스트, 디버깅
◆ LINQ를 사용한 데이터 쿼리 및 조작
◆ 엔티티 프레임워크 코어, 마이크로소프트 SQL 서버 및 SQLite를 사용한 데이터베이스 통합 및 업데이트

이 책의 대상 독자

크로스 플랫폼 .NET을 사용해 모던 C#을 학습하기 위한 단계별 안내서로, 개발 가능한 실용적인 예제를 제공한다. C# 및 .NET 초보자나 C#으로 작업을 해 왔지만 최근 몇 년간의 변화에 익숙하지 않은 프로그래머에게 적합하다.

이 책의 구성

1장, 'C#, 그리고 .NET 만나기'에서는 C# 개발 환경을 설정하고 비주얼 스튜디오 2022나 비주얼 스튜디오 코드를 사용해 C# 및 .NET으로 간단한 콘솔 애플리케이션을 만든다. 콘솔 애플리케이션을 만들면서 C# 10에 도입된 기능을 사용한다. 언어 구성 및 라이브러리 기능 작성 방법을 배우고자 .NET 인터랙티브를 사용하며 도움말을 찾는 방법, 저자에게 연락하는 방법, 깃허브 저장소를 통해 이 책과 다음 버전을 개선하기 위한 피드백 제공하는 방법도 살펴본다.
2장, 'C# 문법과 키워드'에서는 C# 버전을 소개하고 각 버전별로 어떤 기능이 제공되는지 설명한다. 앞으로 C# 언어를 다루면서 항상 마주하게 될 문법과 키워드를 알아본다. 특히 다양한 형식의 변수를 선언하고 다루는 방법을 배운다.
3장, '흐름 제어 및 형식 변환'에서는 연산자를 사용해 코드 분기, 비교, C# 7에서 C# 10으로의 패턴 일치, 반복, 형식 간의 변환, 예외 처리를 위한 방어 코드 작성법을 배운다.
4장, '함수 작성, 디버깅, 테스트'에서는 명령형과 함수형 구현 스타일을 모두 사용해 재사용 가능한 함수를 작성해서 DRY(Don’t Repeat Yourself) 원칙을 따르는 방법을 설명한다. 디버깅 도구를 사용해 버그를 찾아 제거하고, 런타임 시 코드를 모니터링해 문제를 진단하고, 엄격한 테스트를 통해 버그를 제거해, 배포하기 전에 안정성과 신뢰성을 보장하는 방법을 배운다.
5장, 'OOP로 사용자 정의 형식 만들기'에서는 데이터를 저장하는 필드(field)와 행동을 수행하는 함수(method)를 포함해 형식이 가질 수 있는 멤버의 모든 종류에 관해 알아본다. 집합(aggregation)이나 캡슐화(encapsulation) 같은 OOP(Object-Oriented Programming) 개념을 사용해 보고 튜플(tuple) 구문이나 단순화된 out 변수, 기본 리터럴, 유추된 튜플 이름 등의 언어 기능을 배운다. record 키워드, init 전용 속성, C# 9에 도입된 with 표현식을 사용해 불변 형식을 정의하고 사용하는 방법을 배운다.
6장, '인터페이스 구현 및 클래스 상속하기'에서는 OOP를 사용해 이미 존재하는 형식으로부터 새로운 형식을 파생시키는 법을 알아본다. 연산자를 정의하는 방법과 지역 함수(local function), 델리게이트(delegate), 이벤트에 대해 배우며 기본 및 파생 클래스에 대한 인터페이스 구현 방법, 형식 멤버 재정의, 다형성(polymorphism), 확장 메서드(extension method)와 상속 관계(inheritance hierarchy) 클래스들 사이의 캐스팅, nullable 참조 타입 도입으로 인한 C# 8의 큰 변화를 살펴본다.
7장, '.NET 형식을 패키징하고 배포하기'에서는 .NET 버전을 소개하고 새로운 라이브러리 기능을 도입한 버전을 설명하며 .NET 표준(.NET Standard)을 준수하는 형식과 C#의 관계를 알아본다. 윈도우, 맥OS(macOS), 리눅스에서 코드를 작성하고 컴파일하는 방법을 배운다. 앱과 라이브러리를 패키징하고 배포하는 방법도 알아본다.
8장, '공용 .NET 형식 다루기'에서는 숫자 및 텍스트, 날짜 및 시간 조작, 컬렉션에 항목 저장, 네트워크 작업 및 이미지 조작, 국제화(internationalization) 처리 같은 작업을 처리할 수 있는 타입을 설명한다.
9장, '파일, 스트림, 직렬화 사용하기'에서는 파일 시스템 다루기, 파일과 스트림을 읽고 쓰기, 텍스트 인코딩, JSON이나 XML 같은 직렬화 타입, System.Text.Json의 향상된 기능에 관해 배운다.
10장, '엔티티 프레임워크 코어로 데이터 다루기'에서는 엔티티 프레임워크 코어(EF Core, Entity Framework Core)라고 부르는 객체 관계 매핑 기술(ORM, Object-Relational Mapping)을 사용해 마이크로소프트 SQL 서버, SQLite 같은 데이터베이스를 읽고 쓰는 방법을 다룬다. 테이블에 매핑되는 엔티티 모델을 정의하는 방법, 런타임에 테이블 및 데이터베이스를 생성할 수 있는 코드 주도(Code First) 모델을 정의하는 방법을 알아본다.
11장, 'LINQ를 사용해 데이터 쿼리하고 조작하기'에서는 컬렉션의 아이템을 대상으로 필터링, 정렬 등의 작업을 처리하고 다른 출력으로 투영(project)할 수 있게 하는 언어 확장인 LINQ(Language Integrated Queries)를 다룬다. 병렬 LINQ(PLINQ, Parallel LINQ)와 LINQ to XML 같은 특수 기능을 배운다.
12장, '멀티태스킹으로 성능과 확장성 향상하기'에서는 성능, 확장성, 유저 생산성을 높이고자 동시에 여러 작업을 처리하는 방법을 알아본다. async Main과 System.Diagnostics를 사용해 코드를 모니터링하고 성능과 효율성을 측정하는 방법을 배운다. 13장, 'C#과 .NET으로 만드는 실용적인 애플리케이션'에서는 C# 및 .NET으로 개발하는 크로스플랫폼 애플리케이션 타입을 알아본다. 나머지 장에서 사용하는 Northwind 데이터베이스를 표현하는 EF 코어 모델도 빌드한다.
14장, 'ASP.NET Core Razor 페이지를 사용해 웹사이트 만들기'에서는 ASP.NET Core를 사용해 최신 HTTP 아키텍처로 서버에서 웹 사이트를 개발할 때 필요한 내용을 다룬다. 작은 웹 사이트 개발을 위해 동적 웹 페이지 생성을 간소화하는 Razor Pages라는 ASP. NET Core 기능과 HTTP 요청 및 응답 파이프라인 구축 방법을 배운다.
15장, '모델-뷰-컨트롤러 패턴을 이용한 웹 사이트 개발'에서는 ASP.NET Core MVC를 사용해 규모가 크고 복잡한 웹 사이트를 단위 테스트 및 유지 보수가 용이하도록 구축하는 방법을 다룬다. 구성, 인증, 라우트, 모델, 뷰, 컨트롤러에 대해 배운다.
16장, '웹서비스 개발 및 사용하기'에서는 ASP.NET Core 웹 API를 사용해 백엔드 REST 아키텍처 웹서비스를 만들고 인스턴스화된 HTTP 클라이언트를 사용해 이를 활용하는 방법을 알아본다.
17장, '블레이저로 사용자 인터페이스 만들기'에서는 블레이저(Blazor)를 사용해 서버 또는 클라이언트 웹 브라우저에서 실행할 수 있는 사용자 인터페이스 구성 요소 개발 방법을 다룬다. 블레이저 서버와 블레이저 WebAssembly 간의 차이점 및 두 모델 간 전환이 용이한 구성 요소 개발 방법을 알아본다.18장, '특수 서비스 개발 및 사용'에서는 gRPC를 사용해 서비스 구축, SignalR을 사용해 서버와 클라이언트 간의 실시간 통신 구현, OData를 사용해 EF 코어 모델 노출, 애저 함수(Azure Function)를 사용해 트리거에 응답하는 클라우드 호스팅 기능을 소개한다.

저자/역자 소개

지은이의 말

시중에는 C# 언어, .NET 라이브러리, 웹사이트, 서비스, 데스크톱, 모바일 앱(app, application) 같은 앱 모델에 대해 광범위한 설명을 담은 수천 페이지의 책들이 있다.
이 책은 다르다. 간결하고 실용적인 실습을 따라하면서 빠르게 읽어볼 수 있도록 구성했다. 많은 주제를 다루기 때문에 깊이 있는 설명을 배제하는 경우도 있지만 필요하다면 더 상세한 내용을 찾아볼 수 있도록 했다.
이 책은 C#의 멋진 기능과 특징들을 소개하고 있다. 책을 다 읽고 나면 생산성을 높이고, 동료나 상급자에게 깊은 인상을 심어줄 수 있는 지식을 얻게 될 것이다. 일부 낯선 용어는 웹 검색을 활용해 찾아볼 수 있을 것으로 가정하고, 사소한 부분까지 설명하는 바람에 읽는 속도를 늦추고 지루해지지 않도록 했다.

지은이 소개

마크 프라이스(Mark J. Price)

C# 프로그래밍과 마이크로소프트 애저(Azure) 솔루션 분야의 전문가다. 20년 이상의 프로그래밍 경력을 가지고 있다.
1993년부터 80개 이상의 마이크로소프트 프로그래밍 자격 시험을 통과했으며, 시험을 준비하는 다른 사람들도 전문적으로 가르치고 있다. 또한 2001년부터 2003년까지 미국 레드몬드(Redmond)의 마이크로소프트에서 공식 코스웨어(courseware) 개발을 담당했다. 그의 팀은 초기 알파 버전이었던 C#의 첫 번째 교육 코스를 만들었고, C# 및 .NET 분야의 다른 공인 강사들을 훈련시키면서 그들의 수준을 빠른 속도로 끌어올렸다. 현재는 옵티마이즐리(Optimizely)의 디지털 경험 플랫폼(DXP)에 대한 교육 과정을 만들어 제공하고 있다. 컴퓨터 과학 학위가 있다.

옮긴이의 말

이 책의 원서는 『C# 10 and .NET 6 Modern Cross-Platform Development – 6th edition』입니다. 2016년에 처음 출간된 『C# 6 and .NET Core 1.0』의 6번째 버전입니다. 7번째 버전이 최근에 출간되기도 했지만, 이 번역서는 6번째 버전을 기준으로 합니다. 독자 여러분이 혼란스럽지 않도록, 버전업이 되면서 달라진 용어나 계획에서 확정으로 확인된 사실들은 간략하게나마 역자 주석으로 추가했습니다.
.NET 5에서 시작된 .NET 코어, .NET 프레임워크, 자마린 통합 계획은 .NET 6이 출시되고 2022년 5월 업데이트로 .NET MAUI가 포함되면서 그 목표에 도달했습니다. 또한 향상된 성능 제공과 C# 10에 추가된 새로운 언어 기능을 사용할 수 있으며 3년간 지원을 받을 수 있는 LTS 버전이기도 합니다. 이 책이 C# 10, .NET 6과 함께하는 여러분의 .NET 프로그래밍 여정에 작은 도움이 되기를 바랍니다.

옮긴이 소개

김현욱

몇몇 게임 회사를 거치며 게임 플랫폼을 개발 중이다. 새로운 것을 익히고 자신의 것으로 만들어 가는 과정을 좋아한다. 『모던 C++로 배우는 함수형 프로그래밍』(에이콘, 2018), 『실전 스케일링 파이썬 프로그래밍』(인사이트, 2018) 등을 번역했다.

목차

목차
  • 1장. C# 그리고 .NET 만나기
    • 개발 환경 구성
      • 적합한 도구 및 애플리케이션 선택
        • 폴리글랏 노트북 확장의 장점과 단점
        • 크로스 플랫폼 개발에 비주얼 스튜디오 코드 사용하기
        • 클라우드 개발을 위한 깃허브 Codespaces
        • 맥용 비주얼 스튜디오 2022
        • 윈도우용 비주얼 스튜디오
        • 이 책에서 사용한 개발 환경
      • 크로스 플랫폼 배포
      • 윈도우용 비주얼 스튜디오 2022 설치하기
        • 윈도우용 비주얼 스튜디오 키보드 바로 가기 키
      • 비주얼 스튜디오 코드 설치하기
        • 다른 확장 설치
        • 비주얼 스튜디오 코드 버전 이해하기
        • 비주얼 스튜디오 코드 키보드 단축키
    • .NET 이해하기
      • .NET 프레임워크 이해하기
      • 모노, 자마린, 유니티 프로젝트 이해하기
      • .NET 코어 이해하기
      • .NET 로드맵
      • .NET 지원
        • .NET 런타임과 .NET SDK 버전
        • 이전 버전 제거하기
      • 모던 .NET의 차이점
        • 윈도우 개발
        • 웹 개발
        • 데이터베이스 개발
      • 모던 .NET 테마
      • .NET 표준 이해하기
      • 이 책에 사용된 .NET 플랫폼과 도구들
      • IL 이해하기
    • 비주얼 스튜디오 2022로 콘솔 앱 만들기
      • 비주얼 스튜디오 2022에서 여러 프로젝트 관리하기
      • 비주얼 스튜디오 2022에서 코드 작성
      • 비주얼 스튜디오에서 컴파일하고 실행하기
        • 컴파일러가 생성한 폴더와 파일
      • 최상위 문 작성
      • 비주얼 스튜디오 2022 솔루션에 두 번째 프로젝트 추가하기
        • 암시적으로 가져온 네임스페이스
    • 비주얼 스튜디오 코드로 콘솔 앱 만들기
      • 비주얼 스튜디오 코드로 여러 개의 프로젝트 관리하기
      • 비주얼 스튜디오 코드로 코드 작성하기
      • dotnet CLI를 사용해 코드 컴파일하고 실행하기
      • 비주얼 스튜디오 코드에 두 번째 프로젝트 추가하기
      • 비주얼 스튜디오 코드에서 여러 개의 파일 다루기
    • 폴리글랏 노트북을 사용해 코드 탐색하기
      • 노트북 생성
      • 노트북에서 코드 작성 및 실행하기
      • 노트북 저장하기
      • 노트북에 마크다운 및 특수 명령 추가
      • 여러 개의 셀에서 코드 실행
      • 폴리글랏 노트북에서 이 책의 예제 코드 사용하기
    • 프로젝트 폴더 및 파일 구성
      • 공통 폴더와 파일
      • 깃허브 솔루션 코드
    • 이 책의 깃허브 저장소 활용 방법
      • 책에 대한 문제 제기
      • 책에 대한 피드백
      • 깃허브 저장소에서 솔루션 코드 다운로드
      • 비주얼 스튜디오 코드 및 명령줄에서 깃 사용
        • 솔루션 코드 저장소 복제
    • 도움말 찾기
      • 마이크로소프트 문서 읽기
      • dotnet 도구에 대한 도움 얻기
      • 형식 정의와 멤버 정보 얻기
      • 스택 오버플로 사용하기
      • 구글 사용하기
      • 공식 .NET 블로그 구독하기
      • 스콧 한셀만 유투브 채널
    • 연습 및 탐구
      • 연습 1.1 - 복습
      • 연습 1.2 - 웹에서 코딩하기
      • 연습 1.3 - 탐구
    • 마무리
      • 코드 저장소
      • Discord 채널 참여

  • 2장. C# 문법과 키워드
    • C# 소개
      • 언어 버전과 기능 이해하기
        • C# 1.0
        • C# 2.0
        • C# 3.0
        • C# 4.0
        • C# 5.0
        • C# 6.0
        • C# 7.0
        • C# 7.1
        • C# 7.2
        • C# 7.3
        • C# 8
        • C# 9
        • C# 10
      • C# 표준 이해하기
      • C# 컴파일러 버전 확인하기
        • SDK 버전 출력하기
        • 특정 언어 버전 컴파일러 활성화하기
    • C# 문법과 어휘 이해하기
      • 컴파일러 버전 표시하기
      • C# 문법 이해하기
      • 구문
      • 주석
      • 블록
      • 구문과 블록의 예
      • C# 어휘 이해하기
      • 프로그래밍 언어와 인간의 언어 비교
      • C# 구문에 대한 색 구성표 변경
        • 정확한 코드 작성을 위한 도구
      • 네임스페이스 가져오기
        • 암시적 및 전역적으로 네임스페이스 가져오기
      • 동사는 메서드
      • 명사는 형식, 필드, 변수, 속성
      • 형식과 메서드 개수 구하기
    • 변수 다루기
      • 변수 이름 규칙
      • 리터럴 값
      • 텍스트 저장
        • 축약 문자열 이해하기
      • 숫자 저장
        • 양의 정수 저장
        • 향상된 숫자 지원
        • 양의 정수 살펴보기
      • 실수 저장
        • 숫자 형식 범위 살펴보기
        • double과 decimal 비교
      • 불린 형식
      • object 형식
      • dynamic 형식
      • 지역 변수
        • 지역 변수의 형식 지정
        • 지역 변수의 형식 추론
        • 대상으로 형식화된 new
      • 형식 기본값 가져오기 및 설정
      • 배열에 여러 값 저장하기
    • 콘솔 애플리케이션 알아보기
      • 콘솔 출력
        • 번호가 지정된 위치 인수로 형식화하기
        • 문자열 보간
        • 문자열 형식화
      • 콘솔 입력
      • 콘솔 사용 단순화
      • 사용자에게 키 입력받기
      • 콘솔 앱에 인수 전달
      • 인수로 옵션 설정
      • 플랫폼에서 지원하지 않는 API 처리
    • 연습 및 탐구
      • 연습 2.1 - 복습
      • 연습 2.2
      • 연습 2.3 - 숫자 크기와 범위
      • 연습 2.4 - 탐구
    • 마무리

  • 3장. 흐름 제어 및 형식 변환
    • 변수에 대한 작업
      • 단항 연산자
      • 이항 산술 연산자
      • 대입 연산자
      • 논리 연산자
      • 조건부 논리 연산자
      • 비트 및 이항 시프트 연산자
      • 그 외 연산자
    • 선택문 이해하기
      • if 문으로 분기
        • if 문에 항상 중괄호를 사용해야 하는 이유
      • if 문과 패턴 매칭
      • switch 문으로 분기하기
      • switch 문과 패턴 매칭
      • swith 표현식으로 switch 문 단순화하기
    • 반복문 이해하기
      • while 문 루프
      • do 문 루프
      • for 문 루프
      • foreach 문 루프
        • foreach의 동작 방식 이해하기
    • 형식 변환
      • 숫자의 암시적, 명시적 변환
      • System.Convert로 형식 변환
      • 숫자 반올림
        • 기본 반올림 규칙 이해하기
      • 반올림 규칙 제어
      • 모든 형식을 string으로 변환
      • 바이너리 객체를 string으로 변환
      • string을 숫자, 날짜, 시간으로 파싱하기
        • Parse 사용 시 주의할 점
        • TryParse 메서드로 예외 피하기
    • 예외 다루기
      • try 블록으로 예외가 발생할 수 있는 코드 감싸기
        • 모든 예외 잡기
        • 특정 예외 잡기
        • 필터 사용
    • 오버플로 검사
      • checked 문을 사용해서 오버플로 예외 던지기
      • unchecked 문으로 컴파일러의 오버플로 검사 비활성하기
    • 연습 및 탐구
      • 연습 3.1 - 복습
      • 연습 3.2 - 루프와 오버플로 탐구
      • 연습 3.3 - 루프와 연산자 연습
      • 연습 3.4 - 예외 처리 연습
      • 연습 3.5 - 연산자 복습
      • 연습 3.6 - 탐구
    • 마무리

  • 4장. 함수 작성, 디버깅, 테스트
    • 함수 만들기
      • 구구단 함수 만들기
      • 값을 반환하는 함수 만들기
      • 기수에서 서수로 숫자 변환하기
      • 재귀로 팩토리얼 계산하기
        • XML 주석으로 함수 문서화하기
        • 함수 구현에 람다 사용하기
    • 디버깅
      • 고의적인 버그 만들기
      • 중단점 설정 및 디버깅 시작
        • 비주얼 스튜디오 2022 사용하기
        • 비주얼 스튜디오 코드 사용하기
      • 디버깅 도구 모음
      • 디버깅 윈도우
      • 단계별 코드 실행
      • 중단점 커스터마이징
    • 개발 및 런타임 로깅
      • 로깅 옵션
      • 디버그와 추적을 통한 계측
        • 기본 추적 수신기 사용하기
      • 추적 수신기 구성하기
      • 추적 레벨 스위치
        • 비주얼 스튜디오 코드 프로젝트에 패키지 추가
        • 비주얼 스튜디오 2022 프로젝트에 패키지 추가
        • 프로젝트 패키지 살펴보기
    • 단위 테스트
      • 테스트 형식
      • 테스트에 필요한 클래스 라이브러리 만들기
      • 단위 테스트 만들기
        • 비주얼 스튜디오 코드에서 단위 테스트 실행
        • 비주얼 스튜디오 2022에서 단위 테스트 실행
        • 버그 수정
    • 함수에서 예외 처리
      • 사용 오류 및 실행 오류
      • 함수에서 일반적으로 발생하는 예외
      • 호출 스택
      • 예외를 처리하는 위치
      • 예외 다시 던지기
      • 테스터-도어 패턴
      • 테스터-도어 패턴의 문제
    • 연습 및 탐구
      • 연습 4.1 - 복습
      • 연습 4.2 - 디버깅 및 단위 테스트로 함수 작성 연습하기
      • 연습 4.3 - 탐구
    • 마무리
      • 코드 저장소
      • Discord 채널 참여

  • 5장. OOP로 사용자 정의 형식 만들기
    • OOP에 관해서
    • 클래스 라이브러리 만들기
      • 클래스 라이브러리 생성
      • 네임스페이스에 클래스 정의하기
        • 네임스페이스 선언 간소화
      • 멤버 이해하기
      • 클래스 인스턴스화
        • 어셈블리 참조
      • 형식 사용을 위해 네임스페이스 가져오기
      • 객체 이해하기
        • System.Object 상속하기
    • 필드에 데이터 저장하기
      • 필드 선언
      • 접근 지시자 이해하기
      • 필드 값 설정하고 출력하기
      • enum 형식으로 값 저장하기
        • enum 형식으로 여러 값 저장하기
    • 컬렉션을 사용해 여러 개의 값 저장하기
      • 제네릭 컬렉션
      • 정적 필드 만들기
      • 상수 필드
      • 읽기 전용 필드 만들기
      • 생성자로 필드 초기화하기
        • 여러 개의 생성자 정의
    • 메서드 작성 및 호출하기
      • 메서드에서 값 반환하기
      • 튜플로 여러 개의 반환 값 조합하기
        • 튜플 구문 지원
        • 튜플 필드에 고유 이름 지정하기
        • 튜플 이름 추론
        • 튜플 분해하기
        • 형식 분해하기
      • 메서드에 매개 변수 정의하고 전달하기
      • 메서드 오버로딩
      • 선택적 매개 변수와 이름 지정 매개 변수 전달하기
        • 이름 지정 매개 변수
      • 매개 변수 전달 제어하기
        • out 변수 단순화
      • ref 반환 값 이해하기
      • partial로 클래스 분리하기
    • 속성과 인덱서로 접근 제어하기
      • 읽기 전용 속성 정의하기
      • 설정 가능한 속성 정의하기
      • 초기화 시에 필수 속성 설정
      • 인덱서 정의하기
    • 객체 패턴 매칭
      • .NET 6 클래스 라이브러리 생성하고 참조하기
      • 패턴 매칭 이해하기
      • C# 9 이상에서 향상된 패턴 매칭
    • 레코드 사용하기
      • 초깃값 전용 속성
      • 레코드 이해하기
      • 레코드의 위치 데이터 멤버
        • 레코드에서 데이터 멤버 단순화
    • 연습 및 탐구
      • 연습 5.1 - 복습
      • 연습 5.2 - 탐구
    • 마무리

  • 6장. 인터페이스 구현 및 클래스 상속하기
    • 클래스 라이브러리와 콘솔 애플리케이션 설정
    • 메서드 더 알아보기
      • 메서드를 사용해 기능 구현하기
      • 연산자로 기능 구현하기
      • 로컬 함수 정의하기
    • 이벤트 발생 및 처리하기
      • 델리게이트를 사용해서 메서드 호출하기
      • 델리게이트 정의하고 처리하기
      • 이벤트 정의하고 처리하기
    • 제네릭으로 안전한 형식 사용하기
      • 제네릭을 사용하지 않은 형식으로 작업하기
      • 제네릭 형식 사용하기
    • 인터페이스 구현하기
      • 공통 인터페이스
      • 정렬을 위한 객체 비교
      • 분리된 클래스를 사용해서 객체 비교하기
      • 암시적, 명시적 인터페이스 구현
      • 기본 구현으로 인터페이스 정의하기
    • 참조와 값 형식으로 메모리 관리하기
      • 참조 형식과 값 형식
      • 참조와 값 형식이 메모리에 저장되는 방식
      • 형식의 동등성
      • 구조체 정의하기
      • record struct 형식 사용하기
      • 관리되지 않은 리소스 해제하기
      • 확실하게 dispose 호출하기
    • null 값 사용하기
      • null 허용 값 형식 만들기
      • null이 가능한 참조 형식
      • null 허용 및 null 비 허용 참조 형식 활성화
      • null 비허용 변수 및 매개 변수 선언
      • null 확인
        • 메서드 매개 변수에서 null 확인
    • 클래스 상속
      • 함수를 추가해 클래스 확장
      • 멤버 숨기기
      • 멤버 오버라이딩
      • 추상 클래스에서 상속
      • 상속과 오버라이딩 막기
      • 다형성
    • 상속 관계 내에서 변환하기
      • 암시적 캐스팅
      • 명시적 캐스팅
      • 캐스팅 예외 다루기
    • .NET 형식을 상속하고 확장하기
      • 예외 상속하기
      • 상속할 수 없을 때 형식 확장
        • 기능 재사용을 위해 static 메서드 사용하기
        • 기능 재사용을 위해 확장 메서드 사용하기
    • 분석기를 사용해 더 나은 코드 만들기
      • 경고 비활성화
      • 코드 수정
      • StyleCop 권장 사항
    • 연습 및 탐구
      • 연습 6.1 - 복습
      • 연습 6.2 - 상속 관계 만들기
      • 연습 6.3 - 탐구
    • 마무리

  • 7장. .NET 형식을 패키징하고 배포하기
    • .NET 6로 가는 길
      • .NET 코어 1.0
      • .NET 코어 1.1
      • .NET 코어 2.0
      • .NET 코어 2.1
      • .NET 코어 2.2
      • .NET 코어 3.0
      • .NET 코어 3.1
      • .NET 5.0
      • .NET 6.0
      • .NET 코어 2.0부터 .NET 5.0까지의 성능 개선
      • .NET SDK 업데이트 확인
    • .NET 컴포넌트 이해하기
      • 어셈블리, NuGet 패키지, 네임스페이스 이해하기
        • 네임스페이스란?
        • 종속 어셈블리 이해하기
      • 마이크로소프트 .NET 프로젝트 SDK 이해하기
      • 어셈블리의 네임스페이스 및 형식 이해하기
      • NuGet 패키지 이해하기
      • 프레임워크 이해하기
      • 형식 사용을 위해 네임 스페이스 가져오기
      • C# 키워드와 .NET 형식 연관성
        • C# 키워드와 .NET 형식 연결
        • 기본 크기 정수
        • 형식 위치 찾기
      • .NET 표준을 사용해 레거시 플랫폼과 코드 공유하기
      • 서로 다른 SDK를 사용하는 클래스 라이브러리의 기본값 이해하기
      • .NET 표준 2.0 클래스 라이브러리 생성하기
      • .NET SDK 제어하기
    • 배포용 코드 게시하기
      • 배포할 콘솔 애플리케이션 만들기
      • .NET 명령 이해하기
        • 새 프로젝트 만들기
      • .NET 및 환경 정보 얻기
      • 프로젝트 관리
      • 독립형 애플리케이션 게시하기
      • 단일 파일 앱 게시하기
      • 앱 다듬기를 사용해 크기 줄이기
        • 어셈블리 레벨 다듬기 활성화
        • 형식 레벨과 멤버 레벨 다듬기 활성화
    • .NET 어셈블리 디컴파일
      • 비주얼 스튜디오 2022 ILSpy 확장을 사용한 디컴파일
        • 디컴파일링 방지
    • NuGet 배포를 위한 라이브러리 패키징
      • NuGet 패키지 참조
        • 의존성 고정
      • NuGet용 라이브러리 패키징
        • 공개 NuGet 피드에 패키지 게시하기
        • 비공개 NuGet 피드에 패키지 게시하기
      • NuGet 패키지 탐색하기
      • 클래스 라이브러리 패키지 테스트
    • .NET 프레임워크에서 모던 .NET으로 이식하기
      • 이식 가능 여부
      • 이식 필요 여부
      • .NET 프레임워크와 모던 .NET 간의 차이점
      • .NET 이식성 분석기
      • .NET 업그레이드 도우미
      • .NET 표준이 아닌 라이브러리 사용
    • 미리보기 기능
      • 미리보기 기능 특성
      • 미리보기 기능 활성화하기
      • 일반 수학
    • 연습 및 탐구
      • 연습 7.1 - 복습
      • 연습 7.2 - 탐구
      • 연습 7.3 - 파워셸 살펴보기
    • 마무리

  • 8장. 공용 .NET 형식 다루기
    • 숫자 다루기
      • BigInteger 다루기
      • 복소수 다루기
      • 쿼터니언 이해하기
    • 텍스트 다루기
      • 문자열의 길이 구하기
      • 문자열 안의 문자 가져오기
      • 문자열 분할하기
      • 문자열의 일부 가져오기
      • 문자열 내용 확인
      • Join, Format, 그 외의 다른 string 멤버
      • 효과적으로 문자열 빌드하기
    • 날짜와 시간 다루기
      • 날짜 및 시간 값 지정하기
      • 날짜와 시간을 사용한 세계화
      • 날짜 또는 시간 중 하나만 사용하기
    • 정규 표현식을 사용한 패턴 매칭
      • 텍스트로 입력된 숫자 검사
      • 정규 표현식 성능 향상
      • 정규 표현식 구문 이해하기
      • 정규 표현식의 예
      • 쉼표로 구분된 문자열 나누기
    • 컬렉션에 여러 개의 객체 저장하기
      • 모든 컬렉션이 갖는 공통 기능
      • 컬렉션의 용량을 확보해 성능 향상하기
      • 컬렉션 선택
        • 리스트
        • 딕셔너리
        • 스택
        • 세트
        • 컬렉션 메서드 요약
      • 리스트 다루기
      • 딕셔너리 다루기
      • 큐 사용하기
      • 컬렉션 정렬하기
      • 그 외 특수 컬렉션
        • 비트 값의 간소한 배열 다루기
        • 효과적으로 리스트 다루기
        • 불변 컬렉션 사용하기
      • 컬렉션 모범 사례
    • 범위, 인덱스, 영역 다루기
      • Span을 활용해 효과적으로 메모리 사용하기
      • Index 형식으로 위치 식별하기
      • Range 형식으로 범위 식별하기
      • index, range, span 사용하기
    • 네트워크 리소스 다루기
      • URI, DNS, IP 주소 다루기
      • 서버에 ping 보내기
    • 리플렉션과 특성 다루기
      • 어셈블리 버저닝
      • 어셈블리 메타데이터 읽기
      • 사용자 정의 특성 만들기
      • 리플렉션에 대해 좀 더 알아보기
      • 이미지 다루기
    • 코드 국제화
      • 현재 문화권을 가져오고 변경하기
    • 연습 및 탐구
      • 연습 8.1 - 복습
      • 연습 8.2 - 정규 표현식 연습
      • 연습 8.3 - 확장 메서드 연습
      • 연습 8.4 탐구
    • 마무리
      • 코드 저장소
      • Discord 채널 참여

  • 9장. 파일, 스트림, 직렬화 사용하기
    • 파일 시스템 다루기
      • 크로스 플랫폼 환경과 파일 시스템 다루기
      • 드라이브 다루기
      • 디렉터리 다루기
      • 파일 다루기
      • 경로 다루기
      • 파일의 정보 얻기
      • 파일 작업 방식 제어하기
    • 스트림으로 읽고 쓰기
      • 스트림의 추상화, 구체화 이해하기
      • 스토리지 스트림
      • function 스트림
      • 스트림 도우미
      • 텍스트 스트림에 쓰기
      • XML 스트림에 쓰기
      • 파일 리소스 정리하기
        • using 문을 사용해서 dispose 단순화하기
      • 스트림 압축하기
      • 브로틀리 알고리듬으로 압축하기
    • 텍스트 인코딩과 디코딩
      • 바이트 배열로 문자열 인코딩
      • 파일의 텍스트 인코딩, 디코딩
    • 객체 그래프 직렬화하기
      • XML 직렬화
      • 컴팩트 XML 생성
      • XML 역직렬화
      • JSON 직렬화
      • 고성능 JSON 처리
    • JSON 다루기
      • HTTP 응답을 위한 새로운 JSON 확장 메서드
      • Newtonsoft에서 새 JSON으로 마이그레이션
    • 연습 및 탐구
      • 연습 9.1 - 복습
      • 연습 9.2 - XML 직렬화 연습
      • 연습 9.3 - 탐구
    • 마무리

  • 10장. 엔티티 프레임워크 코어로 데이터 다루기
    • 최신 데이터베이스 이해하기
      • 레거시 엔티티 프레임워크
        • 레거시 엔티티 프레임워크 6.3 이상 사용하기
      • 엔티티 프레임워크 코어 이해하기
      • EF 코어 작업을 위한 콘솔 앱 만들기
      • 샘플 관계형 데이터베이스 사용하기
      • 윈도우용 마이크로소프트 SQL 서버 사용하기
      • SQL 서버 다운로드하고 설치하기
      • SQL Server용 Northwind 샘플 데이터베이스 생성
      • 서버 탐색기에서 Northwind 샘플 데이터베이스 다루기
      • SQLite 사용하기
        • 맥OS에서 SQLite 설정
        • 윈도우에서 SQLite 설정
        • 다른 OS에서 SQLite 설정
      • SQLite용 Northwind 샘플 데이터베이스 생성하기
      • SQLiteStudio로 Northwind 샘플 데이터베이스 다루기
    • EF 코어 설정하기
      • EF 코어 데이터 공급자 선택하기
      • 데이터베이스 연결하기
      • Northwind 데이터베이스 콘텍스트 클래스 정의하기
    • EF 코어 모델 정의하기
      • 모델을 정의하는 EF 코어 규칙 사용하기
      • EF 코어 주석 특성을 사용해 모델 정의하기
      • EF 코어 Fluent API를 사용해 모델 정의하기
        • Fluent API로 데이터 시딩
      • Northwind 테이블용 EF 코어 모델 빌드
        • Category와 Product 엔티티 클래스 정의
      • Northwind 데이터베이스 콘텍스트 클래스에 테이블 추가하기
      • dotnet-ef 도구 설정하기
      • 기존 데이터베이스를 사용한 스캐폴딩
      • 사전 규칙 모델 구성하기
    • EF 코어 모델 쿼리하기
      • 포함되는 엔티티 필터링하기
        • 윈도우 콘솔에서 유니코드 문자
      • 필터링과 정렬
      • 생성된 SQL 확인하기
      • 사용자 정의 로깅 공급자를 사용해 EF 코어 로깅하기
        • 공급자 지정 값으로 로그 필터링
        • 쿼리 태그 로깅
      • Like로 패턴 매칭
      • 전역 필터 정의하기
    • EF 코어 로딩 패턴
      • 즉시 로딩
      • 지연 로딩 활성화
      • 명시적 로딩
    • EF 코어로 데이터 조작하기
      • 엔티티 삽입
      • 엔티티 업데이트
      • 엔티티 삭제
      • 데이터베이스 콘텍스트 풀링
    • 트랜잭션 다루기
      • 격리 수준에 따른 트랜잭션 제어
      • 명시적 트랜잭션 선언하기
    • 코드 주도 EF 코어 모델
      • 마이그레이션
    • 연습 및 탐구
      • 연습 10.1 - 복습
      • 연습 10.2 - 다른 직렬화 포맷을 사용해 데이터 내보내기 연습
      • 연습 10.3 - 주제 탐구
      • 연습 10.4 - NoSQL 데이터베이스 탐구
    • 마무리
      • 코드 저장소
      • Discord 채널 참여

  • 11장. LINQ를 사용해 데이터 쿼리하고 조작하기
    • LINQ 표현식 작성하기
      • LINQ의 구성 요소
      • Enumerable 클래스로 LINQ 표현식 만들기
        • 지연 실행
      • Where로 엔티티 필터링하기
      • 이름 있는 메서드 타기팅
      • 명시적 델리게이트 인스턴스화를 제거해서 코드 단순화하기
      • 람다 표현식 타기팅
      • 엔티티 정렬하기
        • OrderBy를 사용해 단일 프로퍼티 정렬하기
        • ThenBy 메서드로 여러 개의 속성 정렬하기
      • var 또는 특정 형식을 사용해 쿼리 선언하기
      • 형식 필터링
      • LINQ를 사용해 set, multiset 다루기
    • EF 코어와 LINQ 사용하기
      • EF 코어 모델 만들기
      • 시퀀스 필터링과 정렬
      • 새로운 형식에 시퀀스 투영하기
      • 시퀀스 Join과 group
        • 시퀀스 조인
        • 시퀀스 GroupJoin
      • 시퀀스 집계
    • 간편 표기법으로 LINQ 구문 단순화하기
    • 병렬 LINQ로 멀티 스레드 사용하기
      • 멀티 스레드 장점을 이용하는 앱 만들기
        • 윈도우
        • 맥OS
        • 모든 운영체제
    • 사용자 정의 LINQ 확장 메서드 만들기
      • 연결 가능한 확장 메서드 호출하기
      • MODE와 MEDIAN 메서드 만들기
    • LINQ to XML 사용하기
      • LINQ to XML을 사용해서 XML 생성하기
      • LINQ to XML을 사용해 XML 읽기
    • 연습 및 탐구
      • 연습 11.1 - 복습
      • 연습 11.2 - LINQ 쿼리 연습
      • 연습 11.3 - 탐구
    • 마무리

  • 12장. 멀티태스킹으로 성능과 확장성 향상하기
    • 프로세스, 스레드, 태스크 이해하기
    • 성능과 리소스 사용량 모니터링
      • 형식 효율성 평가
      • Diagnostics를 사용한 성능 및 메모리 모니터링
        • Stopwatch와 Process 형식의 유용한 멤버
        • Recorder 클래스 구현하기
      • 문자열 처리 효율성 측정
      • Benchmark.NET으로 성능 및 메모리 모니터링
    • 비동기로 태스크 실행하기
      • 동기로 여러 개의 작업 수행하기
      • 태스크를 사용해 비동기로 여러 작업 수행하기
        • 태스크 시작하기
      • 태스크 대기하기
        • 태스크에 대기 메서드 사용하기
      • 다른 태스크 계속 실행하기
      • 중첩된 태스크와 자식 태스크
      • 객체를 태스크로 감싸기
    • 공유 리소스에 동기적으로 접근하기
      • 멀티 스레드에서 리소스 접근하기
      • 리소스에 상호 배제 잠금 적용하기
        • 잠금 코드 이해하기
        • 데드락 회피하기
      • 이벤트 동기화
      • 원자적 CPU 연산 만들기
      • 다른 동기화 형식 적용하기
    • async와 await 이해하기
      • 콘솔 앱의 응답성 향상시키기
      • GUI 앱의 응답성 개선하기
      • 웹 애플리케이션과 웹 서비스의 확장성 향상하기
      • 멀티태스킹을 지원하는 공통 형식
      • catch 블록에서 await 사용하기
      • async 스트림 다루기
    • 연습 및 탐구
      • 연습 12.1 - 복습
      • 연습 12.2 - 탐구
    • 마무리

  • 13장. C#과 .NET으로 만드는 실용적인 애플리케이션
    • C# 및 .NET용 앱 모델 이해
      • ASP.NET Core를 사용해 웹사이트 만들기
        • 콘텐츠 관리 시스템을 사용해 웹사이트 만들기
        • SPA 프레임워크로 웹 애플리케이션 만들기
      • 모바일 및 데스크톱 앱 빌드
      • .NET MAUI의 대안
        • Uno 플랫폼
        • 아발로니아
    • ASP.NET Core의 새로운 기능
      • ASP.NET Core 1.0
      • ASP.NET Core 1.1
      • ASP.NET Core 2.0
      • ASP.NET Core 2.1
      • ASP.NET Core 2.2
      • ASP.NET Core 3.0
      • ASP.NET Core 3.1
      • 블레이저 웹어셈블리 3.2
      • ASP.NET Core 5.0
      • ASP.NET Core 6.0
    • 윈도우 전용 데스크톱 앱 만들기
      • 레거시 윈도우 애플리케이션 플랫폼 이해하기
      • 레거시 윈도우 플랫폼에 대한 최신 .NET 지원 이해하기
    • 프로젝트 구조화
      • 솔루션이나 작업 영역에서 프로젝트 구조화
    • 다른 프로젝트 템플릿 사용하기
      • 추가 템플릿 팩 설치하기
    • Northwind용 엔티티 데이터 모델 만들기
      • SQLite를 사용해 엔티티 모델용 클래스 라이브러리 만들기
        • 클래스-테이블 매핑 개선
        • Northwind 데이터베이스 콘텍스트에 대한 클래스 라이브러리 만들기
      • SQL 서버를 사용해 엔티티 모델용 클래스 라이브러리 만들기
    • 연습 및 탐구
      • 연습 13.1 - 복습
      • 연습 13.2 - 탐구
    • 마무리
      • 코드 저장소
      • Discord 채널 참여

  • 14장. ASP.NET Core Razor 페이지를 사용해 웹사이트 만들기
    • 웹 개발 이해하기
      • HTTP 이해하기
        • URL의 구성 요소 이해
        • 이 책의 프로젝트에서 사용하는 포트 번호
      • 크롬을 사용해 HTTP 요청 보내기
      • 클라이언트 웹 개발 기술 이해하기
    • ASP.NET Core 이해하기
      • 클래식 ASP.NET과 모던 ASP.NET Core
      • 비어 있는 ASP.NET Core 프로젝트 만들기
      • 웹사이트 테스트 및 보안
        • 더 엄격한 보안 활성화 및 보안 연결로 리다이렉트
      • 호스팅 환경 제어
      • 서비스 및 파이프라인 구성 분리
      • 웹사이트에서 정적 콘텐츠를 제공하도록 설정
        • 정적 파일 및 웹 페이지를 위한 폴더 생성
        • 정적 및 기본 파일 활성화
    • ASP.NET Core Razor 페이지 살펴보기
      • Razor 페이지 활성화
      • Razor 페이지에 코드 추가하기
      • Razor 페이지에서 공유 레이아웃 사용하기
      • Razor 페이지에서 코드 숨김 파일 사용하기
    • ASP.NET Core와 엔티티 프레임워크 코어 사용하기
      • 엔티티 프레임워크 코어를 서비스로 구성하기
      • Razor Page를 사용한 데이터 조작
        • 모델에 엔티티 추가가 가능하도록 설정
        • 새 공급자를 추가하기 위한 양식 정의
      • Razor Page에 종속성 서비스 주입
      • Razor 클래스 라이브러리 사용하기
      • Razor 클래스 라이브러리 만들기
      • 비주얼 스튜디오 코드의 압축 형식으로 폴더 렌더링 기능 비활성화
      • EF 코어를 사용해 직원 정보 출력
      • 단일 직원 정보를 표시하는 partial 보기 구현
      • Razor 클래스 라이브러리 사용 및 테스트
    • 서비스 및 HTTP 요청 파이프라인 구성하기
      • 엔드포인트 라우팅 이해하기
        • 엔드포인트 라우팅 구성
      • 엔드포인트 라우팅 구성 살펴보기
        • ConfigureServices 메서드에 서비스 등록
        • Configure 메서드에 HTTP 요청 파이프라인 설정
      • 주요 미들웨어 확장 방법 요약
      • HTTP 파이프라인 시각화
      • 미들웨어로 익명 인라인 대리자 구현
    • 연습 및 탐구
      • 연습 14.1 - 복습
      • 연습 14.2 - 데이터 기반 웹 페이지 구축 연습
      • 연습 14.3 - 콘솔 앱 용 웹 페이지 구축
      • 연습 14.4 - 탐구
    • 마무리

  • 15장. 모델-뷰-컨트롤러 패턴을 이용한 웹사이트 개발
    • ASP.NET Core MVC 웹사이트 설정
      • ASP.NET Core MVC 웹사이트 만들기
      • SQL Server LocalDB에 대한 인증 데이터베이스 생성
      • 기본 ASP.NET Core 웹사이트 살펴보기
        • 새 계정 생성하기
      • MVC 웹사이트 프로젝트 구조 살펴보기
      • ASP.NET Core Identity 데이터베이스 검토
    • ASP.NET Core MVC 웹사이트 살펴보기
      • ASP.NET Core MVC 초기화
      • 기본 MVC 라우터 이해하기
      • 컨트롤러와 액션 이해하기
        • ControllerBase 클래스 이해하기
        • 컨트롤러 클래스 이해하기
        • 컨트롤러 책임 이해하기
      • 뷰 탐색 경로 규칙
      • 로깅
      • 필터
        • 필터를 사용한 액션 메서드 보안 처리
        • 역할 관리 활성화 및 프로그래밍 방식으로 역할 생성하기
        • 필터를 사용해 응답 캐시하기
        • 필터를 사용해 사용자 지정 라우트 정의
      • 엔티티 및 뷰 모델 이해하기
      • 뷰 이해하기
    • ASP.NET Core MVC 웹사이트 사용자 지정
      • 사용자 정의 스타일
      • 카테고리 이미지 설정
      • Razor 구문 이해하기
      • 형식화된 뷰 정의
      • 사용자 정의 홈페이지 결과 확인
      • 경로를 사용해 매개 변수 전달
      • 모델 바인더 자세히 이해하기
        • 모호한 불일치 예외 해결
        • 경로 매개 변수 전달
        • 폼 매개 변수 전달
      • 모델 검증
      • 뷰 도우미 메서드 이해하기
    • 데이터베이스 쿼리 및 디스플레이 템플릿 사용
    • 비동기 작업을 사용해 확장성 향상
      • 컨트롤러 작업 메서드를 비동기로 만들기
    • 연습 및 탐구
      • 연습 15.1 - 복습
      • 연습 15.2 - 카테고리 세부 정보 페이지를 구현해 MVC 구현 연습
      • 연습 15.3 - 비동기 작업 방법을 이해하고 구현해 확장성 향상 연습
      • 연습 15.4 - MVC 컨트롤러 단위 테스트 연습
      • 연습 15.5 - 탐구
    • 마무리
      • 코드 저장소
      • Discord 채널 참여

  • 16장. 웹 서비스 개발 및 사용하기
    • ASP.NET Core Web API를 사용해 웹 서비스 개발
      • 웹 서비스 용어 이해
        • WCF
        • WCF의 대안
      • Web API에 대한 HTTP 요청 및 응답 이해
      • ASP.NET Core 웹 API 프로젝트 생성하기
      • 웹 서비스 기능 확인
      • Northwind 데이터베이스용 웹 서비스 만들기
      • 엔티티용 데이터 저장소 만들기
      • Web API 컨트롤러 구현
        • 작업 메서드 반환 유형
      • 고객 데이터 저장소 및 웹 API 컨트롤러 구성
      • 문제 세부 정보 지정
      • XML 직렬화 제어
    • 웹 서비스 문서화 및 테스트
      • 브라우저를 사용한 GET 요청 테스트
      • REST Client 확장으로 HTTP 요청 테스트
        • REST Client를 사용해 GET 요청하기
        • REST Client로 다른 요청 보내기
      • Swagger
      • Swagger UI로 요청 테스트
      • HTTP 로깅 활성화
    • HTTP 클라이언트를 사용해 웹 서비스 사용
      • HttpClient
      • HttpClientFactory를 사용해 HTTP 클라이언트 구성
      • 컨트롤러에서 고객 데이터를 JSON으로 가져오기
      • 교차 출처 리소스 공유 활성화
    • 웹 서비스를 위한 고급 기능 구현
      • 상태 확인 API 구현
      • Open API 분석기 및 규칙 구현
      • 일시적인 오류 처리 구현
      • 보안 HTTP 헤더 추가
    • 최소한의 API를 사용해 웹 서비스 개발
      • 최소한의 API를 사용해 일기 예보 서비스 구축
      • 최소한의 일기 예보 서비스 테스트
      • Northwind 웹사이트 홈페이지에 일기 예보 추가
    • 연습 및 탐구
      • 연습 16.1 - 복습
      • 연습 16.2 - HttpClient로 고객 데이터 생성 및 삭제
      • 연습 16.3 - 탐구
    • 마무리

  • 17장. 블레이저로 사용자 인터페이스 만들기
    • 블레이저 이해하기
      • 자바스크립트 친화적
      • 실버라이트 - 플러그인을 사용하는 C# 및 .NET
      • 웹어셈블리 - 블레이저 대상
      • 블레이저 호스팅 모델 이해
      • 블레이저 구성 요소 이해
      • 블레이저와 Razor의 차이점
    • 블레이저 프로젝트 템플릿 비교
      • 블레이저 서버 프로젝트 템플릿
        • CSS와 자바스크립트 격리
      • 페이지 구성 요소에 대한 블레이저 라우팅
      • 라우팅 가능한 페이지 구성 요소를 정의하는 방법
      • 블레이저 라우팅 탐색 방법
      • 경로 매개 변수를 전달하는 방법
      • 기본 구성 요소 클래스
      • 경로와 탐색 링크 구성 요소 사용하기
    • 블레이저 서버 프로젝트 템플릿 실행
    • 블레이저 웹어셈블리 프로젝트 템플릿
    • 블레이저 서버로 구성 요소 만들기
      • 구성 요소 정의 및 테스트
      • 라우팅 가능한 페이지 구성 요소로 바꾸기
      • 구성 요소에서 엔티티 조회
    • 블레이저 구성 요소에 대한 서비스 추상화
      • EditForm 구성 요소로 폼 정의하기
      • 고객 양식 구성 요소
      • 고객 정보 양식 구성 요소 테스트
    • 블레이저 웹어셈블리를 사용해 구성 요소 만들기
      • 블레이저 웹어셈블리용 서버 구성
      • 블레이저 웹어셈블리용 클라이언트 구성
      • 블레이저 웹어셈블리 구성 요소 및 서비스 테스트
    • 블레이저 웹어셈블리 앱 개선
      • 블레이저 웹어셈블리 AOT 활성화
      • 프로그레시브 웹 앱 지원
        • PWA에 대한 오프라인 지원 구현
      • 블레이저 웹어셈블리용 브라우저 호환성 분석기 이해
      • 클래스 라이브러리에서 블레이저 구성 요소 공유
      • 자바스크립트 상호 운용성
      • 블레이저 구성 요소 라이브러리
    • 연습 및 탐구
      • 연습 17.1 - 복습
      • 연습 17.2 - 시간표 구성 요소 만들기
      • 연습 17.3 - 국가 탐색 항목 만들기
      • 연습 17.4 - 탐구
    • 마무리
      • 코드 저장소
      • Discord 채널 참여

  • 18장. 에필로그
    • C# 및 .NET 학습의 다음 단계
      • 디자인 가이드라인으로 실력 향상
    • .NET MAUI 지연에 대한 소식
      • 원서의 다음 버전
      • 마치며

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안