한 주 동안 .NET 생태계에서 있었던 주요 이슈와 아티클, 기술 트렌드를 정리해 소개합니다.
.NET 10 Validation
- 저자: Ricardo Peres (Evolve Software Team Leader)
- 태그: dotnet10 #validation #api
주요 내용
- Microsoft.Extensions.Validation 네임스페이스 통한 새로운 검증 API
- [ValidatableType], [SkipValidation] 속성으로 타입 및 멤버 검증 제어
- ASP.NET Core Minimal APIs와 Blazor에 네이티브 검증 지원
- 중첩된 객체와 요소 컬렉션 검증을 선택적으로 활성화 가능
Entity Framework Core 10의 명명된 전역 쿼리 필터
- 저자: Tim Deschryver
- 태그: #efcore dotnet10 #queryfilters
주요 내용
- 엔티티당 여러 개의 필터를 각각 고유한 이름으로 정의 가능
HasQueryFilter메서드로 명명된 필터 정의IgnoreQueryFilters메서드로 선택적으로 개별 필터 비활성화- Soft delete, Multi-tenancy, 권한 기반 필터링 등 복잡한 시나리오에 유용
시니어 C# 개발자가 Reddit C# 커뮤니티에 답하다 (Hot Takes만)
주요 내용
- Reddit C# 커뮤니티의 주요 논쟁적 의견들
- 시니어 개발자 관점에서의 반응과 실무 조언
- C# 생태계의 현재 트렌드와 논쟁점 분석
.NET 10: 모든 개발자와 Fractional CTO가 관심 가져야 할 업그레이드
- 저자: sthomason
- 태그: dotnet10 #performance #leadership
주요 내용
- .NET 10의 속도, 단순성, 장기 안정성 중심 개선사항
- Devirtualized Loops로 최대 4배 속도 향상 (주요 코드 변경 없음)
- Hot Path Enhancements로 렌더링, 요청 처리, 메시지 처리 최적화
- 개발자들이 수년간 다뤄온 마찰 제거 및 확장 가능한 시스템 경로 제공
실제로 확장 가능한 .NET 솔루션 구조 방법: Clean Architecture 가이드
- 저자: Mashrul Haque (15년+ 경력 Systems Architect)
- 태그: #cleanarchitecture #architecture dotnet
주요 내용
- 5개 핵심 계층: Domain, Application, Infrastructure, API, Shared.Kernel
- “의존성은 항상 내향으로 흐른다” - Api → Application → Domain 방향만 참조
- 기능별 수직 슬라이스 폴더 구조로 자기 완결적 기능 구성
- NetArchTest를 활용한 아키텍처 규칙 자동화
간단하게 설명하는 Vertical Slice Architecture
https://medium.com/@denmaklucky/vertical-slice-architecture-in-simple-terms-4cc996ca9893
- 저자: denmaklucky
- 태그: #verticalslice #architecture #simplicity
주요 내용
- Vertical Slice Architecture의 기본 개념과 원칙
- 전통적 계층형 아키텍처와의 차이점
- 각 기능을 독립적인 슬라이스로 구성하는 장점
Vertical Slice Architecture: 공유 로직은 어디에 둘까?
- 저자: Milan Jovanović (소프트웨어 아키텍처 강의자)
- 태그: #verticalslice #architecture #sharedlogic
주요 내용
- 3계층 공유 로직 배치 전략
- Tier 1: 기술 인프라 (Shared.Kernel/Infrastructure)
- Tier 2: 도메인 개념 (엔티티와 값 객체)
- Tier 3: 피처별 로직 (Features/[Name]/Shared)
- “Duplication is cheaper than the wrong abstraction” 원칙
.NET에서의 데이터 접근: ORM 및 매핑 전략 비교 (Part 1, 2)
- 저자: Scott Galloway
- 태그: #orm #efcore #dapper #dataaccess
주요 내용
- EF Core, Dapper, Raw Npgsql 성능 및 생산성 비교
- Part 1: EF Core의 프록시 사용 위험성과 N+1 쿼리 문제
- Part 2: Dapper 경량 성능 vs EF Core 풍부한 기능
- 하이브리드 CQRS 패턴: EF Core(쓰기) + Dapper(읽기) 조합 권장
Repository Pattern vs Direct EF Core: 큰 논쟁
- 저자: Adrian Bailador
- 태그: repository #efcore #architecture
주요 내용
- Repository Pattern과 DbContext 직접 사용 비교
- Repository Pattern의 장점: 테스트 용이성, 추상화
- Direct EF Core의 장점: 단순성, 직접적 제어
- 실제 예제, 성능 벤치마크, 실전 시나리오 분석
Entity Framework Core 디버깅: 실전 8가지 쿼리 안티패턴 (및 해결 방법)
- 저자: Chris Woodruff (Fractional Architect)
- 태그: #efcore #performance
데이터베이스 Q&A
주요 내용
- 8가지 실무 안티패턴: 날짜 문자열 저장, 텍스트 조인, FK 인덱스 미생성 등
- "즉시 해결책(Quick DB-side)"과 “근본 해결책(Right fix)” 이원화 접근
- SQL Server 실행 계획 수준의 구체적 성능 분석
- 실제 마이그레이션 코드 및 EF Core 모델 설정 예제 포함
.NET에서의 분산 도메인 이벤트: 장애를 견디는 이벤트 흐름 설계 (RabbitMQ 버전)
- 저자: Vahid Bakhtiaryinfo
- 태그: #domainevents #rabbitmq #outbox #resilience
주요 내용
- Domain Events vs Distributed Domain Events 차이점
- Publish Outbox Anti-Pattern의 실제 문제점
- 올바른 아키텍처: Outbox + RabbitMQ 패턴
- .NET 프로덕션급 Outbox 구현 (Outbox 테이블, 트랜잭션, Worker Service)
아무도 경고하지 않는 async/await 뒤의 숨겨진 버그
- 저자: Donie Sweeton
- 태그: async #await #bugs #antipatterns
주요 내용
- 7가지 숨겨진 버그: .Result/.Wait() Deadlock, ConfigureAwait(false) 누락 등
- Fire-and-Forget 잘못 사용과 async void의 위험성
- 동기/비동기 코드 혼합 문제
- 각 버그의 원인과 해결 방법 상세 설명
.NET 성능: 효율적인 Async 코드
주요 내용
- .NET 애플리케이션에서 효율적인 비동기 코드 작성 방법
- async/await 패턴의 올바른 사용법
- 성능 최적화 팁과 베스트 프랙티스
Model View Update 패턴을 사용하여 버그 줄이기
- 저자: Cameron Presley (함수형 프로그래밍 실무 멘토)
- 태그: #mvu #architecture #functionalprogramming
주요 내용
- Elm 언어에서 영감 받은 Model View Update(MVU) 패턴
- Model, View, Command, Update 함수 4가지 핵심 요소
- UI가 모델을 직접 조작할 수 없는 단방향 데이터 흐름
- 명확한 책임 분리로 버그 감소 및 테스트 가능성 향상
NetEscapades.EnumGenerators 최근 업데이트: [EnumMember] 지원, Analyzers, 버그 수정
- 저자: Andrew Lock (.NET Escapades 블로그 운영자)
- 태그: #sourcegenerator #enum #performance
주요 내용
- v1.0.0-beta.16 주요 업데이트: [EnumMember] 속성 지원
- 새로운 분석기: NEEG001-003 (이름 충돌, 제네릭 타입, 중복 값)
- C# 예약어 식별자 올바른 이스케이프 처리
- 기본 ToString() 대비 수천 배 빠른 성능
C#에서 Avalonia를 위한 DSL 생성하기
https://medium.com/@krendelia2021/creating-a-dsl-in-c-baf20e1ef9cd
- 저자: krendelia2021
- 태그: #dsl #compiler avalonia
주요 내용
- Avalonia 기반 React-like UI 라이브러리 Akbura 소개
- C#에서 DSL 생성하는 시리즈 시작
- Akbura 자체와 내부 C# 코드 두 레벨 파싱
- Red-Green Trees 개념 기반 구문 분석
가벼운 읽을거리
후보 항목 중 이슈로 선정되지 않은 가벼운 읽을거리들
Windows 11, WinUI 3로 구축된 현대적 Windows Run (Win+R) 도입 예정
- WinUI 3 기반으로 재구축된 선택적 Windows Run 대화상자
- Fluent Design 원칙, 둥근 모서리, 다크 모드 지원
- Advanced Settings 범주로 개발자 중심 향상 암시
FastCloner 오픈소스 공개
- 가장 빠르고 신뢰할 수 있는 .NET deep cloning 라이브러리
- 오픈소스로 공개
ABP.IO Platform 10.0 Final 출시!
- ABP.IO Platform 10.0 stable 버전 공식 출시
- ABP Studio 또는 ABP CLI로 기존 솔루션 업그레이드 가능
- v9.x에서 업그레이드 시 Migration Guide 참고 필요
C#에서 문자열을 안전하게 연결하는 방법
- SQL Injection 등 실제 보안 사고 사례 기반 가이드
- 2008 Heartland Payment Systems, 2009 RockYou.com 사례
- 안전한 문자열 연결 방법과 성능 고려사항
.NET에서 예외 처리 및 발생: 개발자를 위한 완전한 가이드
- .NET 런타임의 예외 처리 메커니즘부터 고급 패턴까지
- Try-catch-finally 패턴과 모범 사례
- throw; 사용한 스택 추적 보존, Serilog 구조화된 로깅
- 예외 필터, AggregateException, 중앙집중식 미들웨어
초보자가 ASP.NET Core에서 범하는 10가지 흔한 실수
- DbContext Singleton 주입, appsettings.json 미사용 등
- [ApiController] 누락, async/await 잘못 사용
- AddScoped vs AddTransient vs AddSingleton 혼동
.NET 매핑 도구 성능 비교
- .NET 환경의 다양한 객체 매핑 도구 벤치마크
- AutoMapper, Mapster 등 성능 비교
