한 주 동안 .NET 생태계에서 있었던 주요 이슈와 아티클, 기술 트렌드를 정리해 소개합니다.
Reflection과 Dynamic Methods를 사용하여 IEnumerable의 foreach를 할당 없이 만들기
- 저자: Andrew Lock
- 태그: #performance #allocation #reflection
주요 내용
- IEnumerable의 foreach가 struct enumerator 박싱으로 힙 할당 발생
- .NET 10의 “deabstraction” 기술로 할당 불필요화
- Reflection.Emit과 DynamicMethod를 통한 구버전 .NET 솔루션 제시
- .NET Framework, .NET 9, .NET 10 벤치마크 비교
winapp, Windows 앱 개발 CLI 발표
- 저자: Nikola Metulev
- 태그: windows #cli #tooling
주요 내용
- init 명령으로 SDK 다운로드, projection 생성, 프로젝트 설정 자동화
- 전체 패키징 없이 패키지 ID 추가로 빠른 디버깅 가능
- appxmanifest.xml 및 자체 서명 인증서 자동 관리
- Electron, .NET, C++/CMake, Rust 등 다중 프레임워크 지원
Redis Stack으로 실시간 시스템 아키텍팅
- 저자: Sudhir Mangla
- 태그: #redis #realtime #architecture
주요 내용
- Redis Stack: JSON, Search, TimeSeries, Streams를 멀티모델 플랫폼으로 통합
- RedisJSON과 Redis Search로 별도 문서 DB 없이 복잡한 엔티티 모델링
- Redis Streams로 내구성 있는 순서화된 이벤트 로그와 소비자 그룹 제공
- Sentinel/Cluster 토폴로지의 내구성, 고가용성, 확장 전략
C# 15+의 컬렉션 표현식 인자
- 저자: Steven Giesel
- 태그: #csharp15 #collections #proposal
주요 내용
- 컬렉션 표현식 [2, 4, 6, 8] 구문에 생성자 인자 전달 기능 제안
- 예시: List allNumbers = [args(capacity: 32), 0, ..evenNumbers, ..oddNumbers];
- 용량이나 비교자 사전 지정으로 성능 최적화 가능
- HashSet 예시: args(comparer: StringComparer.OrdinalIgnoreCase)
.NET 마이크로서비스에서 Transactional Outbox 패턴 구현: 최종 일관성 보장
- 저자: Recep Serit
- 태그: #microservices #outbox #eventualconsistency
주요 내용
- “Dual-write 문제” 해결: DB 커밋 성공 후 메시지 발행 실패로 인한 데이터 불일치
- 비즈니스 데이터와 메시지를 Outbox 테이블에 원자적 트랜잭션으로 저장
- BackgroundService로 Outbox 테이블을 비동기 폴링하여 메시지 큐에 발행
- Entity Framework, BackgroundService, RabbitMQ 패턴의 실용적 C# 구현 예제
C#/.NET에서 Zero Allocation 파서 만들기
https://jordansrowles.medium.com/building-zero-allocation-parsers-in-c-net-348ce6d124f1
- 저자: Jordan Rowles
- 태그: #performance #span #zeroallocation
주요 내용
- 기존 문자열 파싱(Split, Substring)이 불필요한 힙 할당을 발생시켜 GC 부담 증가
- Span와 ReadOnlySpan로 복사나 할당 없이 메모리 영역 참조
- ref struct 타입은 스택에만 존재하며 컴파일 타임 안전성 보장
- CSV/JSON 파싱 구현 예제: 약 2배 성능 향상과 제로 할당 달성
잘못된 C# 컬렉션 선택이 코드를 서서히 망가뜨리는 이유
- 저자: Curious Orbit
- 태그: #collections #performance csharp
주요 내용
- 컬렉션 선택(순서, 조회 속도, 중복, 동시성)이 성능 저하 방지의 핵심
- List는 검색 중심 로직에 부적합, Dictionary는 O(1) 조회
- HashSet는 설계상 유일성 보장, Queue/Stack은 행위 의도 표현
- 읽기 전용/동시성 컬렉션으로 데이터 보호
7가지 Entity Framework Core 최적화 기법
https://medium.com/@cankutukoglu03/7-entity-framework-core-optimization-techniques-7c1757ed2b47
- 저자: Can Kutukoglu
- 태그: #efcore #performance #optimization
주요 내용
- N+1 쿼리 문제 해결: Projection과 Eager Loading 전략
- Select()를 통한 선택적 쿼리로 메모리 오버헤드 감소
- ExecuteUpdateAsync()를 활용한 대량 업데이트와 컨텍스트 동기화 관리
- AsNoTracking()으로 읽기 전용 쿼리 성능 향상 (61.3% 개선 벤치마크)
내가 첫 .NET 패키지를 만들고 500 다운로드를 얻은 방법
- 저자: RecurPixel
- 태그: #nuget #opensource #library
주요 내용
- 반복되는 API 응답 메시지 불일치 문제 해결용 라이브러리 개발
- 13개 메시지 카테고리, Fluent API, JSON/XML/콘솔 출력 지원
- 문자열 캐싱으로 메모리 할당 28% 감소 최적화
- “동작→최적화→리팩터링” 3단계 개발 접근법
가벼운 읽을거리
후보 항목 중 이슈로 선정되지 않은 가벼운 읽을거리들
.NET의 코드 커버리지에서 신뢰까지
- 커버리지는 품질 지표가 아닌 측정 도구: 라인, 브랜치, 메서드 커버리지 개념
- coverlet.runsettings 설정과 PowerShell 자동화 스크립트 제공
.NET에서 추상화 이해하기
- 추상화는 "의도와 구현의 분리"이며 단순 기술적 기능이 아님
- IOrderProcessor, BillingService, Repository 패턴으로 구체적 시연
C# 예외 처리: try-catch가 있어도 앱이 여전히 크래시되는 이유
- 제네릭 Exception 캐치의 문제점: 버그 은닉과 시스템 상태 손상
- ASP.NET Core 미들웨어를 통한 중앙 집중식 예외 처리 권장
진행 핸들러 연결을 위한 헬퍼 함수
- Windows Runtime의 IAsyncActionWithProgress 인터페이스 ergonomic 개선
- C++/WinRT, C++/CX, C#용 헬퍼 함수 제안
C#을 사용한 SGD 훈련으로 2차 회귀
- 선형 회귀의 한계를 넘어 비선형 구조 데이터 처리
- 제곱 항과 상호작용 항으로 복잡한 데이터 패턴 학습
dotnet 콘솔 마스터하기: 실용 가이드 및 프로젝트 챌린지
- Models, Data, Business, Utilities 레이어로 계층화 아키텍처 시연
- 학생 등록 시스템 참조 구현으로 역할 기반 접근 제어 구현
Pri.ProductivityExtensions.Source 소개
- .NET Standard에서 최신 C# 기능(Range, Index 등) 사용 가능하게 하는 Source-only 패키지
- 최신 .NET 버전과의 충돌 없이 호환성 문제 해결
최근 Wolverine 릴리스 따라잡기
- Wolverine 5.5-5.11 릴리스: Saga 메시지 그룹화, EF Core 통합
- GCP 구독, Redis 메시지 스케줄링, Azure SignalR 통합 추가
.NET vs Java 2026: 하나는 두뇌, 하나는 척추
- Java는 대형 은행/기업 지배, .NET은 클라우드 네이티브 중심
- AI 도구 숙련도로 2026년 양 분야 약 20% 급여 인상 가능
