한 주 동안 .NET 생태계에서 있었던 주요 이슈와 아티클, 기술 트렌드를 정리해 소개합니다.
.NET 11 Preview 2 출시
- 저자: .NET Team
- 태그: #dotnet11 #preview #release
주요 내용
- Runtime Async V2, JIT 최적화, 캐시된 인터페이스 디스패치 등 런타임 성능 개선
- ASP.NET Core 네이티브 OpenTelemetry 트레이싱, Blazor TempData 지원 추가
- EF Core에서 LINQ MaxBy/MinBy, SQL Server DiskANN 벡터 인덱스, JSON_CONTAINS() 지원
- SDK 컨테이너 이미지 17% 축소, Linux/macOS 설치 파일 경량화
- F# simplified DIM 인터페이스, overload resolution 캐싱,
#elif전처리기 지원
C# 15 유니언: 드디어 .NET에 유니언이 온다
https://medium.com/@benjaminabt/c-15-unions-unions-are-finally-in-net-ben-abt-f4493c1e9ffc
- 저자: Ben Abt
- 태그: #csharp15 #unions #language
주요 내용
- C# 15에서
union키워드로 discriminated union을 1급 시민으로 도입 - 암시적 변환, 패턴 매칭 언래핑, switch 완전성 검사(exhaustiveness checking) 지원
- 기본 구현은 struct + object Value 저장 방식으로 값 타입 박싱 발생
- UnionAttribute 기반 확장으로 수동 정의 타입도 유니언 동작 참여 가능
- .NET 8~10용 Unio 라이브러리에서 네이티브 C# 15 유니언으로의 마이그레이션 경로 제시
"정상"만으로는 부족하다: C#에서 실제 준비 상태를 검증하는 헬스체크 구축
- 저자: Martin Andersen
- 태그: aspnetcore #healthcheck #kubernetes #deployment
주요 내용
- 연결성만 확인하는 기본 헬스체크의 맹점: DB 연결은 되지만 마이그레이션 미적용 시 트래픽 수신 후 크래시
- Liveness(프로세스 생존)와 Readiness(트래픽 수신 가능 여부) 구분
- EF Core 미적용 마이그레이션을 감지하는 DbContextMigrationsHealthCheck 구현
- 캐시 워밍, 데이터 임포트, 서명 키 로딩 등으로 확장 가능한 Readiness 검증 패턴
.NET에서 소스 생성 기반 CQRS: Axent 소개
https://medium.com/@magmablinker/source-generated-cqrs-in-net-meet-axent-b86e61dba3e5
- 저자: magmablinker
- 태그: #cqrs #sourcegenerator #axent #mediatr
주요 내용
- 소스 제네레이션 기반 CQRS 디스패치로 리플렉션 런타임 오버헤드 제거
- MediatR v12.5 대비 약 2배 성능, 메모리 할당 감소
- 글로벌/요청별 타입드 파이프라인과 ASP.NET Core 통합 지원
- AddAxent()와 ISender를 통한 Minimal API 환경 사용 예시
.NET 10.0.5 긴급 패치 릴리스 - macOS 디버거 수정
- 저자: Rahul Bhandari
- 태그: dotnet10 #bugfix #macos #debugger
주요 내용
- .NET 10.0.4에서 도입된 회귀 버그로 macOS(Apple Silicon ARM64)에서 VS Code 디버깅 시 크래시 발생
- .NET SDK 10.0.104, 10.0.200 설치자에게 영향, Windows/Linux는 해당 없음
- 10.0.4의 보안 수정과는 무관한 기능성 이슈
- macOS 개발자는 .NET 10.0.5 설치 후 에디터 재시작 필요
.NET에서 async/await가 실제로 동작하는 방식
https://medium.com/@elvin-asadov/how-async-await-actually-works-in-net-3df9b9732c36
- 저자: Elvin Asadov
- 태그: async #await #internals #threading
주요 내용
- Task는 논리적 작업 단위, Thread는 물리적 OS 리소스로 별개 개념
- I/O-bound 작업 시 워커 스레드 즉시 해제, OS가 비동기 처리 후 IOCP로 완료 신호
- 컴파일러가 async 메서드를 IAsyncStateMachine 상태 머신으로 변환하는 과정
- 수천 개 동시 I/O를 스레드 증가 없이 처리하는 확장성 구조
.NET 대량 데이터베이스 업데이트 최적화: 초보적 방법에서 초고속까지
- 저자: Milan Jovanović
- 태그: #performance #postgresql #efcore #dapper
주요 내용
- PostgreSQL 10,000행 업데이트를 7가지 방식으로 벤치마크 비교
- Naive Dapper Loop(2,414ms) → EF Core SaveChanges(1,030ms) → VALUES(89ms) → UNNEST/COPY(41ms)
- UNNEST는 파라미터 2개로 쿼리 플랜 안정, Binary COPY는 파라미터 제한 없이 대량 처리
- DB 라운드트립 수 감소가 핵심이며 EF Core와 Dapper 병용 전략 제시
- 25,000행에서도 UNNEST/COPY가 92~93ms로 선형 확장성 확인
가벼운 읽을거리
후보 항목 중 이슈로 선정되지 않은 가벼운 읽을거리들
당신의 .NET 코드는 클린 아키텍처가 아니다. 클린 아키텍처 연극이다
- 의존성은 항상 안쪽으로 향해야 한다는 핵심 원칙과 4계층(Domain→Application→Infrastructure→Presentation) 역할 정리
- DbContext를 Domain에 주입, 컨트롤러에 비즈니스 로직 배치 등 흔한 안티패턴 지적
C#은 더 좋아지고 있다 — 최신 기능에 대해 알아야 할 모든 것
- C# 13의 params 컬렉션 확장, Lock 타입 개선, async 내 ref 로컬 등 주요 변경사항
- C# 14의 Extension Members, field 키워드, null 조건부 할당 등 새 기능 소개
Undo/Redo 기능 설계
- Memento 디자인 패턴(Memento, Originator, Caretaker)으로 상태 저장/복원 구현
- React + .NET Core 비디오 에디터에서 Redis/DB 기반 상태 관리와 SignalR 동기화
10만 건 이메일 악몽: 탄력적인 비동기 알림 시스템 설계
- 대량 알림 동기 전송의 문제(타임아웃, 메모리 고갈)와 이벤트 드리븐 비동기 처리 전환
- Redis TTL 기반 멱등성 체크, Dead Letter Queue로 포이즌 메시지 격리
윈도우 클립보드란?
- 클립보드의 RAM 저장 구조, 세션 격리, 다중 포맷(CF_TEXT, CF_HDROP 등) 태깅 시스템
- GlobalAlloc/OpenClipboard 등 Win32 API 구현과 안티바이러스 플래그 트리거 원리
