◈ 이 책에서 다루는 내용 ◈
◆ 블레이저, 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)를 사용해 트리거에 응답하는 클라우드 호스팅 기능을 소개한다.
19장, ".NET MAUI를 사용해 모바일 및 데스크톱 앱 빌드"에서는 안드로이드(Android), iOS, 맥OS, 윈도우용 크로스 플랫폼 모바일 및 데스크톱 앱을 빌드하는 방법을 다룬다. 앱의 사용자 인터페이스를 정의하기 위한 XAML의 기본 사항을 배운다.
20장, "데이터 및 애플리케이션 보호"에서는 악의적인 사용자가 데이터를 보지 못하도록 암호화를 사용하는 방법, 해싱(hashing) 및 서명을 사용해 조작 또는 손상되지 않도록 데이터를 보호하는 방법을 설명한다. 승인되지 않은 사용자로부터 애플리케이션을 보호하기 위한 인증 및 권한 부여에 대해 알아본다.
부록, "연습문제 해답’은 각 장 마지막의 문제에 대한 해답을 제공한다.
◈ 옮긴이의 말 ◈
이 책의 원서는 『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 프로그래밍 여정에 작은 도움이 되기를 바랍니다.