한 주 동안 .NET 생태계에서 있었던 주요 이슈와 아티클, 기술 트렌드를 정리해 소개합니다.
.NET 11 Preview 3 출시
- 저자: .NET Team
- 태그: #dotnet11 #preview #release
주요 내용
- .NET 11 Preview 3 공식 릴리스 공지
- Runtime, BCL, ASP.NET Core, EF Core 주요 변경 사항
- SDK 및 C# 언어 기능 업데이트
- 플랫폼별 다운로드 링크와 릴리스 노트
- 커뮤니티 피드백 채널 안내
Visual Studio 2027로 가는 길
- 저자: Patrick Smacchia (NDepend)
- 태그: visualstudio #roadmap ai
주요 내용
- Mads Kristensen의 VS Live! Las Vegas 2026 키노트 정리
- VS 2027은 별도 메이저 버전이 아닌 VS 2026의 in-place 업데이트로 연속 진화
- GA 월간 업데이트 + Insider 주간 업데이트의 새로운 배포 모델
- Copilot이 Profiler/Compiler/Test Runner를 오케스트레이션하는 데모 (QRCoder 63% 성능 향상)
- 향후 방향: Test Explorer 개선, 진단, Build+Run, Jira/GitHub 통합, 코드 리뷰, Meaningful AI
ASP.NET Core 2.3 지원 종료
- 저자: Daniel Roth
- 태그: aspnetcore #eol #support
주요 내용
- ASP.NET Core 2.3 지원 종료 일정 공지
- 지원 종료 이후 보안 패치 및 버그 수정 중단
- LTS 버전과 최신 버전으로의 권장 마이그레이션 경로
- 마이그레이션 가이드 및 업그레이드 도구 링크
- 기업 환경에서 고려해야 할 지원 정책 변경점
타임아웃이 있는 WaitForSingleObject: 왜 예상보다 오래 걸리는가
- 저자: Raymond Chen
- 태그: windows #kernel #timing
주요 내용
WaitForSingleObject타임아웃 동작의 정확도 한계 분석- Windows 스케줄러 quantum과 실제 대기 시간의 관계
timeBeginPeriod호출이 타이머 해상도에 미치는 영향- 밀리초 단위 정확도에 대한 흔한 오해 설명
- 커널 타이머 해상도와 애플리케이션 대기 시간 사이의 차이
DiagnosticSuppressor로 Roslyn 분석기 경고 프로그래밍 방식 억제
- 저자: Gérald Barré
- 태그: #roslyn #analyzer #tooling
주요 내용
DiagnosticSuppressorAPI로 컨텍스트 기반 경고 억제- 속성/패턴을 검사해 조건부로 억제하는 로직 구현 예제
#pragma warning disable및SuppressMessage와의 동작 차이- 억제 대상 진단 ID 등록과
ReportSuppressions호출 흐름 - 팀 공유용 분석기 패키지로 배포하는 방법
.NET에서 pgvector로 간단한 벡터 검색 시작하기
- 저자: Milan Jovanović
- 태그: #pgvector #vector ai
주요 내용
- PostgreSQL
pgvector확장 소개와 설치 방법 Npgsql.EntityFrameworkCore.PostgreSQL로 벡터 컬럼 정의- 임베딩 저장과 코사인 유사도 기반 최근접 이웃 검색
- EF Core LINQ 쿼리로 벡터 검색 수행 예제
- AI/RAG 애플리케이션 통합 시나리오
EF Core Change Tracker 마스터하기: 팬텀 업데이트, 분리된 엔티티, 소프트 삭제
- 저자: Vlad Bayrak
- 태그: #efcore #changetracker #patterns
주요 내용
- EF Core
EntityState와 Change Tracker 내부 동작 - 불필요한 UPDATE가 발생하는 Phantom Update 조건과 회피 방법
- Detached Entity 재부착(
Attach,Update)의 트레이드오프 Query Filter와 결합한 Soft Delete 구현 패턴- 추적 비활성화(
AsNoTracking)가 성능에 미치는 영향
Nullable 값에 대한 LINQ Max
주요 내용
Enumerable.Max()의 nullable vs non-nullable 타입 동작 차이- 빈 시퀀스에서 발생하는
InvalidOperationException Max와MaxBy의 차이 및 도입 배경DefaultIfEmpty를 활용한 예외 회피 패턴- null 요소 처리 방식과 결과 타입 추론
Clean Code가 속도를 죽이는 이유
- 저자: Derek Comartin
- 태그: #cleancode #architecture #design
주요 내용
- Clean Code 원칙의 과도 적용이 초래하는 과도한 추상화 문제
- 단일 책임 원칙, DRY의 맥락 없는 적용 부작용
- YAGNI, KISS와의 균형점
- 도메인 모델 중심 설계와 Clean Code 원칙의 관계
- 팀 규모 및 프로젝트 단계별 적용 전략
고성능 .NET API: Zero-Allocation 직렬화
- 저자: Ace Ventura
- 태그: #performance #serialization #zeroalloc
주요 내용
System.Text.Json의Utf8JsonWriter와IBufferWriter<byte>활용ReadOnlySpan<byte>,ArrayPool<T>기반 제로 할당 패턴- Source Generator로 런타임 리플렉션 제거
- BenchmarkDotNet 측정 결과와 메모리 할당 비교
- 고처리량 API에서의 적용 시나리오
.NET에서 생성된 타입 유출 방지
https://medium.com/@onu.khatri/stop-leaking-generated-types-in-net-adc14459c03b
- 저자: Anup Khatri
- 태그: dotnet #api #encapsulation
주요 내용
- OpenAPI/gRPC/Source Generator가 생성한 타입을 public API로 노출할 때의 문제
- DTO 매핑 계층 분리로 내부 모델 캡슐화
internal+InternalsVisibleTo를 활용한 가시성 제어- 클라이언트 SDK와 내부 구현의 결합도 최소화
- 버전 호환성 유지 및 계약 변경 방지 전략
.NET에서의 AOT 친화적 DTO 매핑
- 저자: El Bruno
- 태그: #aot #mapping dotnet
주요 내용
- AutoMapper의 리플렉션 기반 매핑이 AOT와 호환되지 않는 이유
- Mapperly 등 Source Generator 기반 매퍼 소개
- Trimming과 Native AOT 배포 시 주의점
- 수동 매핑 vs 생성 매핑의 성능 비교
- 기존 코드에서 마이그레이션하는 단계별 접근
가벼운 읽을거리
후보 항목 중 이슈로 선정되지 않은 가벼운 읽을거리들
SOLID C# 리팩토링
- SOLID 원칙을 실제 리팩토링 예제로 단계적 적용
- SRP/OCP 위반 코드 개선과 추상화 도입 시점 판단
C# 문자열 비교: Equals, OrdinalIgnoreCase, StringComparer, Culture 함정
StringComparison옵션별 Ordinal vs Culture 기반 비교 차이- Turkish I 문제 등 Culture 함정 사례와 성능 차이
대부분 개발자가 IEnumerable vs IQueryable을 오해하고 프로덕션에서 대가를 치르는 이유
- 클라이언트 메모리 평가와 DB 레벨 Expression Tree 변환의 차이
.ToList().Where()순서로 인한 전체 데이터 로드 문제와 SQL 프로파일링 방법
디자인 덕목으로서의 명료성
- 이름짓기, 함수 길이, 레이어 경계 등 명료성을 독립적 설계 덕목으로 다룸
- 리팩토링을 통한 명료성 확보 전략과 팀 협업 관점의 가독성
.NET 개발자들이 놓치고 있는 10가지 숨은 기능
Index/Range,IAsyncEnumerable,[CallerArgumentExpression],Span<T>등 기능 소개System.IO.Pipelines,DateOnly/TimeOnly, Source Generator 활용 예제
.NET용 오픈소스 Assertion 라이브러리 만들기
- FluentAssertions 라이선스 변경 이후 대체 라이브러리 개발 과정
- Assertion 파이프라인 설계와 Expression Tree로 표현식 추출
사용을 멈춘 .NET 라이브러리
- AutoMapper, MediatR, FluentValidation 등을 대체한 경험과 선택 근거
- 각 대안의 트레이드오프와 라이선스 이슈 맥락
