C# 43

C# 기초부터 고급까지 Chapter 3.10. .NET Core로 REST API 설계 – 보안, 인증 포함

📘 Chapter 3.10: .NET Core로 REST API 설계 – 보안, 인증 포함✅ 이 챕터에서 배울 것 REST API 기본 설계 원칙 API 계층 구성 (Controller → Service → Domain) 인증(Authentication)과 인가(Authorization) JWT 기반 인증 실전 예제 미들웨어 구성 및 정책 적용 실무에서 쓰는 보안 팁1️⃣ REST API란?"HTTP를 활용해 리소스를 표현하고, 행동을 명확히 구분하는 방식"✅ 핵심 원칙 원칙예시 리소스 중심/users, /products HTTP 메서드 사용GET, POST, PUT, DELETE 상태 없는 통신요청마다 인증 포함 표준 응답 구조200, 400, 401,..

C# 2025.05.14

C# 기초부터 고급까지 Chapter 3.9. CQRS + MediatR 패턴 실전 예제

📘 Chapter 3.9: CQRS + MediatR 패턴 실전 예제✅ 이 챕터에서 배울 것 CQRS란 무엇인가? 왜 필요한가? Command vs Query 구조 분리 MediatR이란? 왜 쓰는가? 실무 예제: 사용자 등록 + 사용자 조회 구조 설계 (핸들러, 요청 객체, 응답 객체) 테스트와 확장에 유리한 구조1️⃣ CQRS란?Command Query Responsibility Segregation→ 명령과 조회를 책임에 따라 분리하자! 구분설명 Command데이터를 변경하는 요청 (등록, 수정, 삭제) Query데이터를 읽기 위한 요청 (검색, 조회) ✅ 서로 다른 목적이므로 모델, 핸들러, 구조 분리하는 게 유리함2️⃣ MediatR이란?요청(Reques..

C# 2025.05.13

C# 기초부터 고급까지 Chapter 3.8. Domain-Driven Design(DDD) 도입과 구조 설계

📘 Chapter 3.8: Domain-Driven Design(DDD) 도입과 구조 설계✅ 이 챕터에서 배울 것 DDD란 무엇인가? 왜 쓰는가? 도메인, 유비쿼터스 언어, 애그리거트, 엔티티, 밸류오브젝트 계층별 구성 (Domain, Application, Infra, API) 실무 프로젝트 예제 구조 레이어 간 의존 방향 실무에서 마주치는 DDD 오해와 해결 전략1️⃣ DDD란?"복잡한 비즈니스 도메인을 객체 모델로 설계하는 방법론"마틴 파울러의 말:💬 "도메인 전문가와 개발자가 공통 언어(Ubiquitous Language)를 기반으로 소프트웨어를 만든다."✅ 왜 쓰는가? 문제 상황DDD 도입 효과 요구사항 변경 잦음유연한 구조로 적응 가능 기술 중심 설계비..

C# 2025.05.12

C# 기초부터 고급까지 Chapter 3.7. 커스텀 Attributes, AOP 기법 적용

📘 Chapter 3.7: 커스텀 Attributes, AOP 기법 적용✅ 이 챕터에서 배울 것 Attribute가 뭔가? 커스텀 Attribute 만들기 리플렉션으로 Attribute 읽기 AOP 개념 및 대표 예제 실무 적용 사례: 로깅, 검증, 권한 체크 PostSharp, Castle DynamicProxy, Source Generator 간단 소개1️⃣ Attribute란?"코드에 부착할 수 있는 주석 + 실행 메타 정보"C#에선 [AttributeName] 형태로 클래스, 메서드, 속성 등에 붙일 수 있다.✅ 예시[Obsolete("이 메서드는 쓰지 마세요!")]public void OldMethod() { }✅ 컴파일러가 "이거 쓰지 마라~" 라고 경고 줌💡 어디에 쓰이냐고? ..

C# 2025.05.11

C# 기초부터 고급까지 Chapter 3.6. .NET 메모리 관리 이해 – GC 동작 원리

📘 Chapter 3.6: .NET 메모리 관리 이해 – GC 동작 원리✅ 이 챕터에서 배울 것 .NET의 메모리 구조 (스택 vs 힙) GC가 왜 필요한가? GC의 세대별 구조 (Gen 0, 1, 2) 객체 수명과 Promotion Large Object Heap(LOH) 개념 Finalizer, IDisposable 차이 성능 최적화 팁1️⃣ .NET의 메모리 구조 영역역할 스택(Stack)지역 변수, 메서드 호출, 빠름 힙(Heap)new로 만든 객체, GC가 관리 int x = 10; // 스택에 저장var list = new List(); // 힙에 저장2️⃣ GC란?“사용 안 하는 객체는 내가 알아서 치워줄게”GC는 메모..

C# 2025.05.10

C# 기초부터 고급까지 Chapter 3.5. 코드 분석 및 성능 측정 도구 사용 (BenchmarkDotNet 등)

📘 Chapter 3.5: 코드 분석 및 성능 측정 도구 사용 (BenchmarkDotNet 등)✅ 이 챕터에서 배울 것 왜 성능 측정이 중요한가 BenchmarkDotNet 사용법 (실전 예제 포함) 간단한 Stopwatch 성능 측정 방법 GC, Memory 관련 측정 실무 상황에서 벤치마크 전략 예: for vs foreach, StringBuilder vs +1️⃣ 왜 성능 측정이 중요한가? "느릴 것 같아서 바꿨는데, 더 느려짐" → 실무에서 흔한 일이다✅ 체감 성능 ≠ 실제 성능 컴파일러 최적화 GC 개입 JIT 예열 등으로 오차 생김→ 그러니까 정확한 측정 도구로 정량 분석해야 된다!2️⃣ BenchmarkDotNet – .NET 성능 측정의 정석https://bench..

C# 2025.05.07

C# 기초부터 고급까지 Chapter 3.4. 고급 LINQ 커스터마이징 & 쿼리 최적화

📘 Chapter 3.4: 고급 LINQ 커스터마이징 & 쿼리 최적화✅ 이번 챕터 목표 LINQ의 내부 작동 방식 이해 쿼리식 vs 메서드 체이닝 차이 IEnumerable vs IQueryable 차이 Select, Where 커스터마이징 방법 실무 성능 개선 전략 (지연 실행, ToList, Projection 등)1️⃣ LINQ의 기본 개념 다시 정리LINQ는 2가지 방식으로 쓸 수 있다:✅ 쿼리식 (Query Syntax)var result = from x in list where x > 10 select x * 2;✅ 메서드 체이닝 (Method Syntax)var result = list.Where(x => x > 10) ..

C# 2025.05.06

C# 기초부터 고급까지 Chapter 3.3. Expression Tree로 컴파일 타임 코드 생성

📘 Chapter 3.3: Expression Tree로 컴파일 타임 코드 생성✅ 이 챕터에서 배울 것 Expression Tree란 무엇인가? Func와 Expression> 차이 동적으로 조건 쿼리 만들기 메서드 호출도 Expression으로 표현 가능 실전 예제 – 동적 필터링, 간단한 DSL 리플렉션보다 빠른 이유와 주의점1️⃣ Expression Tree란?C# 코드를 트리 형태로 표현한 객체 구조Expression> expr = x => x + 1;이 코드는 실제로 이렇게 분해된다: 파라미터 x 연산자 + 상수 1→ 전부 트리 형태로 분해돼서 저장됨📦 표현식 구조 살펴보기Expression> expr = x => x + 1;Console.WriteLine(expr.Body)..

C# 2025.05.05

C# 기초부터 고급까지 Chapter 3.2. Reflection & Dynamic Type – 런타임 메타프로그래밍

📘 Chapter 3.2: Reflection & Dynamic Type – 런타임 메타프로그래밍✅ 이 챕터에서 배울 것 리플렉션(Reflection)이란? 어떤 상황에서 쓰는가 (실무 사례) Type, PropertyInfo, MethodInfo 사용법 dynamic 키워드와 ExpandoObject 실전 시나리오 예제 (DTO ↔ Entity, 자동 매핑 등) 성능 이슈와 개선 전략1️⃣ 리플렉션(Reflection)이란?실행 중인 객체, 타입, 메서드, 속성 정보를 코드에서 직접 들여다보고 조작하는 기술C#에서는 System.Reflection 네임스페이스를 통해 사용한다.📦 간단 예제Type type = typeof(string);Console.WriteLine(type.FullNa..

C# 2025.05.05

C# 기초부터 고급까지 Chapter 3.1. Span , Memory , Unsafe – 퍼포먼스 챙기는 C# 코드

📘 Chapter 3.1: Span , Memory , Unsafe – 퍼포먼스 챙기는 C# 코드✅ 이 챕터에서 배울 것 GC 힙이 아닌 스택 메모리 직접 다루기 Span / Memory 차이와 쓰임 stackalloc, ref struct의 역할 unsafe 코드로 포인터 직접 다루는 법 안전성과 성능의 균형 실무 예제 및 성능 비교 (BenchmarkDotNet)1️⃣ 왜 이걸 배워야 하나?✅ C#은 편한 대신 느릴 수 있음하지만 .NET도 진짜 성능 필요한 순간엔 치트키 제공한다! GC 힙 말고 스택 메모리 사용 배열 복사 대신 슬라이스 참조 포인터로 낮은 레벨 직접 접근성능 민감한 작업 (파싱, 문자열 처리, 버퍼 연산)전부 이 챕터에서 다루는 기술이 들어간다!2️⃣ Span –..

C# 2025.05.04