한 주 동안 .NET 생태계에서 있었던 주요 이슈와 아티클, 기술 트렌드를 정리해 소개합니다.
.NET 11 Preview 6
- 저자: Jon Galloway
- 태그: #dotnet11 #preview #csharp15 aspnetcore
주요 내용
- C#: extension indexer 추가, union 타입 지원 프레임워크 내장(
System.Text.Json직렬화 포함) - ASP.NET Core: Minimal API용 비동기 검증(
AsyncValidationAttribute,IAsyncValidatableObject) 도입 - ASP.NET Core: 별도 설정 없이 기본 적용되는 자동 Cross-Origin(CSRF) 보호 기능
- 런타임: Runtime-async 성능 개선(JIT async 전용 컴파일, ExecutionContext 캡처 생략), NativeAOT 인터페이스 디스패치 속도 개선
- Blazor: Virtualize 컴포넌트의 특정 항목 스크롤(
ScrollToIndexAsync), 서버발 클라이언트 옵션 구성(WithBrowserOptions)
.NET 및 .NET Framework 2026년 7월 서비싱 업데이트
- 태그: dotnet #security #cve #servicing
주요 내용
- 2026년 7월 14일, .NET 10.0.10 / 9.0.18 / 8.0.29 보안 및 비보안 패치 동시 발표
- CVE-2026-47300 ~ CVE-2026-57108 범위의 17개 취약점 수정(원격 코드 실행, 서비스 거부, 권한 상승, 스푸핑, 변조, 보안 기능 우회 포함)
- ASP.NET Core, Entity Framework Core, 런타임 컴포넌트에 대한 패치 포함
- .NET Framework 서비싱 업데이트도 별도 릴리스 노트로 함께 발표
AI 시대에 BenchmarkDotNet으로 가장 빠른 C# 코드 작성하기
- 저자: Yoshifumi Kawai (neuecc)
- 태그: #benchmarkdotnet #performance #simd
주요 내용
- BenchmarkDotNet에 DisassemblyDiagnoser와 분기 오예측(Branch Mispredictions) 측정을 추가해 AI가 반복적으로 코드를 최적화하는 워크플로 제시
- Sum 벤치마크: 기본 for 루프 211.31ns → SIMD 벡터화 18.36ns → TensorPrimitives.Sum 13.54ns까지 3라운드에 걸쳐 개선
- MessagePack Write 벤치마크: if-else 캐스케이드 8.53ns를 분기 없는(Branchless) 구현으로 1.64ns까지 단축, 분기 오예측 0회 달성
- 분기 예측기가 패턴을 학습하는 문제를 피하기 위해 Count를 1,000에서 100,000으로 늘려 벤치마크 신뢰성 확보
- 분기 제거로 인한 코드 가독성 저하, 코드 크기 증가(최대 280바이트) 등 트레이드오프 명시
굶주린 개발자 — .NET의 메모리 절제와 GC 인식
- 저자: Bipin Joshi
- 태그: dotnet #gc #performance
주요 내용
- Gen 0/1/2 세대별 GC 비용 차이와 객체 승격(promotion) 문제 분석
dotnet-trace, PerfView, BenchmarkDotNet을 이용한 실측 성능 측정 방법readonly struct,Span<T>,stackalloc을 활용한 힙 할당 회피 기법string.Create로 중간 버퍼 없이 문자열을 한 번에 생성하는 패턴SearchValues<T>(.NET 8+)의 SIMD 기반 벡터화 문자 검색과ArrayPool<T>버퍼 재사용, split 방식(72~96바이트 할당) 대비 span 방식(0바이트 할당) 벤치마크 비교
수직 슬라이스 아키텍처를 테스트하는 방법
- 저자: Milan Jovanović
- 태그: #verticalslicearchitecture #testing dotnet
주요 내용
- 슬라이스를 요청-응답 단위 기능으로 취급해 HTTP 엔드포인트부터 실제 DB까지 전체 경로를 테스트
WebApplicationFactory로 인메모리 앱을 호스팅하고 Testcontainers로 Postgres 등 실제 인프라 컨테이너 구동- 테스트 클래스당 컨테이너를 한 번만 부팅하는 공유
ApiFixture구조와 테스트마다ResetAsync()로 상태 초기화 CreateShipmentTests등 실제 엔드포인트 테스트 예시와 아키텍처 테스트로 슬라이스 간 독립성 검증- 얇은 핸들러는 단위 테스트 불필요, 복잡한 도메인 로직만 별도 추출해 테스트
.NET GC를 우회해 C# 네이티브 임베디드 데이터베이스로 초당 230만 작업 달성하기
- 저자: Arintonakos
- 태그: #dotnetperformance #gc #embeddeddatabase
주요 내용
- Arena 기반 LSM 트리와 ArrayPool의 32MB 슬랩 재사용으로 GC 할당을 최소화하는 DataVo 임베디드 데이터베이스 구조
- Roslyn 소스 제너레이터로 SQL 쿼리를 컴파일 타임에 코드화해 런타임 파싱 제거
- SIMD 기반 벡터 검색(Flat 완전 스캔, HNSW 근사 색인) 두 전략 비교
- 동시 쓰기 처리량 2,368,026 OPS(SQLite 대비 약 12배), 벡터 메모리 사용량 10.3MB(SQLite+sqlite-vec 63MB, LiteDB 208GB) 등 수치 제시
- 단일 벡터 쿼리 지연(3.1ms vs 10.5ms)과 HNSW 구축 시간(0.5초 vs 160초)은 SQLite가 우세하다는 한계도 공개
EF Core 인터셉터 완벽 가이드 (.NET 10)
- 저자: Mukesh Murugan
- 태그: #efcore dotnet10 #interceptors
주요 내용
SaveChangesInterceptor,DbCommandInterceptor등 7가지 인터셉터 타입별 용도 구분SaveChangesInterceptor로CreatedAtUtc/UpdatedBy등 감사 필드를 자동 스탬프하는 패턴- 싱글톤 vs 스코프 등록 차이와
ICurrentUser주입 시 발생하는 함정 - DELETE를 UPDATE로 치환하는 소프트 삭제 구현과 전역 쿼리 필터 연동
- 동기(
SavingChanges)와 비동기(SavingChangesAsync) 메서드를 모두 오버라이드해야 하는 이유
당신은 이미 .NET의 ChangeToken을 사용하고 있다
- 저자: Khalid Abuhakmeh, AL Rodriguez
- 태그: dotnet #changetoken configuration
주요 내용
IChangeToken인터페이스 기반의 원샷(one-shot) 옵저버 패턴 변경 알림 모델HasChanged,ActiveChangeCallbacks,RegisterChangeCallback세 멤버의 동작 구조ChangeToken.OnChange()정적 메서드가 토큰 재등록 루프를 자동화하는 방식- 설정 파일 핫리로드,
IOptionsMonitor, 캐시 만료,IFileProvider.Watch등 실사용 사례 PhysicalFileProvider기반 디렉터리 감시 전체 코드 예제와 부적합 사용처(고빈도 스트림, 보장된 전달, 단순 이벤트) 구분
redb.Identity 전체 투어 — .NET용 전송 계층 독립적 OAuth 2.1/OpenID Connect 서버
- 저자: Rinat Kozin
- 태그: dotnet #oauth2 #openidconnect #identity
주요 내용
- HTTP 미들웨어에 종속되지 않고
direct-vm://등 여러 전송 계층에서 동일 코어 로직을 노출하는 transport-agnostic 아키텍처 - Entity Framework 대신 자체 redb 기반 스키마리스 저장 모델(
[RedbScheme]특성)로 PostgreSQL/MSSQL/SQLite를 동일 코드로 지원 - RFC 6749/6750, DCR, 디바이스 플로우, DPoP, SCIM 2.0 등 약 40개 표준 구현, OpenID Foundation 컨포먼스 스위트 35개 모듈 전부 통과
- 무중단 JWKS 로테이션, 클러스터 안전 동시성 제어, 116종 감사 이벤트와 다중 싱크(Kafka, Elasticsearch 등) 파노아웃
- 컨포먼스 테스트에서 발견된 id_token PII 유출 결함과 수정 과정 공개, 61개 PowerShell 데모로 재현 가능성 제시
ASP.NET Core Identity API 엔드포인트, 언제 써야 하나 (.NET 10)
- 저자: Mukesh Murugan
- 태그: aspnetcore #identity dotnet10
주요 내용
MapIdentityApi3줄 설정과 자동 노출되는 10개 엔드포인트(등록, 로그인, 토큰 갱신, 2FA 등)MapIdentityApi가 발급하는 토큰이 JWT가 아닌 불투명 문자열이라는 점과 그 한계- 단일 SPA/Blazor/모바일 앱처럼 적합한 상황과 소셜 로그인/커스텀 등록 필드가 필요한 부적합 상황 구분
- Identity Endpoints, Custom JWT, OIDC Provider 세 가지 대안의 비교
- Identity는 유지하되
MapIdentityApi대신 커스텀 JWT를 발급하는 “escape hatch” 전략
가벼운 읽을거리
후보 항목 중 이슈로 선정되지 않은 가벼운 읽을거리들
FILE_FLAG_DELETE_ON_CLOSE로 파일을 열었는데, 이제 마음이 바뀌었다면
CreateFile()에서 한 번 설정한FILE_FLAG_DELETE_ON_CLOSE는 되돌릴 수 없다는 Win32 API 제약SetFileInformationByHandle()과FileDispositionInfo를 이용해 삭제 여부를 런타임에 토글하는 대안 코드
.NET 2026년 7월 보안 업데이트가 Duende 배포에 미치는 영향
- 17건의 CVE 중 XML 암호화·TLS DoS·인증서 파싱 DoS 등 Duende 제품에 실제 영향을 주는 항목 판단
- Duende 패키지 자체는 별도 패치 불필요하나 .NET 런타임 업데이트와 컨테이너 재빌드 권장
Visual Studio 2026 릴리스 노트 — 7월 업데이트
- 버전 18.8: GitHub Copilot 내장 스킬, SDK 기반 신규 에이전트(Preview), 선택 영역 코드 리뷰 추가
- CVE-2026-47300 등 15건 보안 권고 반영(.NET 권한 상승/DoS, WPF RCE, VS MOTW 우회 포함)
KirillOsenkov/XmlParser — Roslyn 스타일 XML 파서
- Roslyn의 VB XML 리터럴 파서를 이식한 완전 충실도(full-fidelity) XML 파서, green/red 트리 분리 구조로 불변 노드 재사용
- 증분 파싱 지원, DTD 미지원 등 한계를 README에 명시
Composition Ring Spinner (Avalonia)
- UI 스레드가 블로킹된 상태에서도 부드럽게 동작하는 프로그레스 스피너를 Avalonia 컴포지션 렌더러로 구현
CompositionCustomVisual기반 고빈도 렌더링과 컨트롤 비가시 시 애니메이션 중지 최적화
