주말 아침 - 주간 닷넷 #2
한 주 동안 .NET 생태계에서 있었던 주요 이슈와 아티클, 기술 트렌드를 정리해 소개합니다.
.NET 10 발표
- 저자: .NET Team
- 태그: dotnet10
주요 내용
- 2028년 11월까지 3년간 지원되는 LTS(장기 지원) 릴리스
- C# 14 필드 지원 속성, F# 10 ValueOption 선택적 매개변수 지원
Visual Studio 2026 출시: 더 빠르고 스마트한 IDE
- 저자: Mads Kristensen
- 태그: #vs2026 ai
주요 내용
- VS 2022 대비 솔루션 로드 시간 단축 및 UI 응답성 50% 이상 향상
- 세계 최초 Intelligent Developer Environment: 디버깅, 프로파일링 시 AI 기능 자동 제공
- 지난 12개월간 5,000개 이상 버그 수정 및 300개 기능 요청 구현
- VS 2022 프로젝트 및 4,000개 이상 확장 프로그램과 완벽 호환
- IDE와 .NET/C++ 빌드 도구 분리로 독립적 업데이트 가능
Visual Studio 2026의 새로운 UX 첫 공개
- 저자: Ruben Rios
- 태그: visualstudio #ux #design
주요 내용
- 코드를 최우선으로 하는 설계 철학 채택
- 시각적 일관성 강화를 위한 아이콘 및 타이포그래피 개선
- 현대적이고 투명한 설정 인터페이스, 개선된 검색 기능, JSON 기반 파일 지원
.NET 10 프로젝트 업데이트 단계
- 저자: Round The Code
- 태그: dotnet10 #vs2026
주요 내용
- Visual Studio 2022는 .NET 10 SDK를 다운로드하지만 프로젝트 생성 시 .NET 9까지만 제공
- .NET 10 프로젝트 개발을 위해서는 Visual Studio 2026 필요
- .NET 10 출시와 함께 VS 2022 패치 릴리스만 제공, 메이저 버전은 VS 2026으로 전환
.NET 및 C# 버전 히스토리
주요 내용
- .NET Framework 1.0부터 .NET 10까지 전체 버전 히스토리
- C# 1.0부터 14까지의 언어 진화 과정
C# 14의 흥미로운 새 기능들
- 저자: Thomas Levesque
- 태그: #csharp14 dotnet10
주요 내용
- Field-backed Properties: 새로운
field키워드로 backing field에 직접 접근 - Partial Events and Constructors: 이벤트와 생성자도 partial 선언 가능
- Extension Members: extension 블록으로 인스턴스/정적 메서드와 속성 추가
- Null-conditional Assignment:
?.연산자를 할당에도 활용 가능
C# 14 새 기능, .NET 10 업데이트 가치 있을까?
- 저자: Round The Code
- 태그: #csharp14 dotnet10
주요 내용
- Extension members: 기존 타입에 새로운 멤버 추가 가능
field키워드: 속성의 backing field 직접 접근- Unbound generic types in
nameof: 제네릭 타입의 이름을nameof로 가져오기 - 델리게이트 메서드에서 매개변수 타입 지정 불필요
- Partial constructors and events: 생성자와 이벤트도
partial지원 - User-defined compound assignment 및 Null-conditional assignment
C# 14 확장 멤버: AKA 확장 가능한 모든 것
- 저자: NDepend Team
- 태그: #csharp14 #extensions dotnet10
주요 내용
- C# 14에서 확장 멤버(Extension Members) 도입 → 메서드뿐 아니라 속성·정적 멤버·연산자까지 확장 가능
- 새로운 구문
extension(Type) { ... }지원 → 기존 static 확장 메서드 패턴과 병행 사용, 완전 대체 아님 - 일부 기존 확장 메서드는 새 문법으로 변환 불가(예: 제네릭 파라미터 위치 제약 등)
- 기능 확장으로 표현력과 일관성은 강화되지만, 남용 시 타입 경계 흐림 등 설계 상 주의 필요
.NET 10의 UnsafeAccessorType으로 더 쉬워진 리플렉션
- 저자: Andrew Lock
- 태그: dotnet10 #reflection #unsafeaccessor
주요 내용
- .NET 8-9의 UnsafeAccessor는 컴파일 시점 참조 가능한 타입에만 작동
- UnsafeAccessorType은 문자열로 타입명 지정하여 내부/비공개 타입 접근 가능
- 성능상 이점을 제공하면서도 기존 리플렉션의 제약 완화
최신 .NET 리플렉션: UnsafeAccessor
- 저자: NDepend Team
- 태그: dotnet #reflection #unsafeaccessor
주요 내용
- .NET 8.0의
UnsafeAccessor는 private 멤버 접근을 위한 zero-overhead 솔루션 - 기존 리플렉션 대비 약 4배 빠른 성능 (0.93ns vs 3.49ns)
- .NET 10 UnsafeAccessorType으로 비공개 중첩 타입 접근
EF Core 10의 LeftJoin과 RightJoin LINQ 연산자
- 저자: Milan Jovanović
- 태그: #efcore10 linq
주요 내용
- 기존
GroupJoin과DefaultIfEmpty조합의 복잡한 패턴 제거 - 명확한 의도를 나타내는
LeftJoin과RightJoin메서드 제공 - 간결한 코드로 동일한 결과 달성
- 모든 좌측/우측 행을 유지하는 명확한 조인 전략
Utf8JsonReader와 Utf8JsonWriter로 JSON 성능 극대화
- 저자: Abdul Rahman (Bhai)
- 태그: #json #performance dotnet
주요 내용
- 순차적 UTF-8 인코딩 JSON 처리를 위한 저수준 API
- 토큰 단위로 JSON을 읽어 메모리 할당 최소화
- 대규모 파일(수 GB 로그) 처리에 최적화
ValueTextEquals로 효율적 속성 비교, BOM 제거, 청크 단위 대용량 파일 처리
내 타입에서 컬렉션 표현식 활용하기
- 저자: Bart Wullems
- 태그: csharp
주요 내용
- C# 12 컬렉션 표현식을 사용자 정의 타입에 적용하는 방법
CollectionBuilderAttribute로 팩토리 메서드를 포함할 정적 클래스 생성
Red, Blue, Purple: 함수 색상화
- 저자: Szymon Kulec
- 태그: async
주요 내용
- Blue(동기), Red(비동기/
async), Purple(혼합) 함수 색상화 멘탈 모델 - async-await 컴파일러의 내부 상태머신 관리
- Blue는 절대 Red를 호출할 수 없는 핵심 제약
ValueTask와IsCompletedSuccessfully속성을 활용한 Purple 패턴- RavenDB 샤딩 환경에서의 Purple 패턴 적용 사례
Repository 패턴 vs Specification 패턴: 어느 것이 더 유지보수하기 좋을까?
- 저자: Ali Hamza Ansari
- 태그: #architecture
주요 내용
- Repository 패턴: 간단하고 직관적이지만 복잡한 쿼리에서 코드 중복 발생
- Specification 패턴: 재사용 가능하고 조합 가능하며 테스트 가능한 쿼리 로직
- Specification 패턴이 더 유지보수하기 좋음: 새로운 쿼리 추가 시 새로운 스펙 클래스만 생성
- 역할 기반 접근 제어(RBAC) 구현 가능
- 간단한 CRUD 애플리케이션에는 Specification 패턴이 과도할 수 있음
고성능 C#을 위한 메모리 관리 마스터클래스
- 저자: Sudhir Mangla
- 태그: #performance #memory #span
주요 내용
- Stack vs Heap: Stack은 매우 빠르지만 작음(~1-4MB), Heap은 GC 관리 및 오버헤드 존재
Span<T>와ReadOnlySpan<T>: 복사 없이 메모리 슬라이싱, 스택 전용으로await통과 불가Memory<T>와ReadOnlyMemory<T>:Span<T>의 힙 안전 버전, 비동기 작업과 필드 저장 지원ArrayPool<T>: 재사용 가능한 배열 풀로 대용량 LOH 할당 방지- GC 부하 감소로 P99 지연시간을 120ms에서 7ms로 단축 사례
무설정(Zero Configuration) .NET Standards 패키지 구축하기
https://medium.com/@tatteddev/building-a-zero-configuration-net-standards-package-a5ec05b43611
- 저자: Tatted Dev
- 태그: dotnet #nuget
주요 내용
- 모든 .NET 조직은 수십 개 솔루션에서 코드 품질 일관성 유지 문제에 직면
- .editorconfig 파일 복사, 분석기 추가 방식은 시간이 지나면서 설정 불일치 발생
- HoneyDrunk.Standards: 코드 품질을 인프라로 전환하는 단일 NuGet 패키지
- 규칙, 분석기, 빌드 설정을 전체 에코시스템에 자동 적용
- 전체 조직의 코드 품질과 빌드 일관성 자동 유지
EF Core의 멀티테넌시 기법
- 저자: Ricardo Peres
- 태그: #efcore #architecture
주요 내용
- 멀티테넌시 - DB 접근 시 현재 테넌트의 데이터만 다루기 위한 기본 전략 소개
- 데이터베이스 전략 3가지: 컬럼 분리 / 스키마 분리 / DB 분리
- EF Core 적용 지점: 테넌트 식별 → 쿼리 필터/스키마/커넥션 결정 → OnModelCreating·OnConfiguring에서 반영
- TenantId 적용 방식 3가지: 생성자 주입 / 루트 서비스에서 가져오기 / 커스텀 DbContextFactory
더 나은 (초급) C# 프로그래머가 되는 10가지 필수 수정사항
- 저자: Amit Mohanty
- 태그: csharp
주요 내용
- 많은 C# 개발자가 무의식적으로 비효율성과 버그를 코드에 도입
- 일반적인 코딩 실수 10가지와 수정 방법 제시
- 코드 품질 향상으로 디버깅, 확장, 최적화가 용이한 코드 작성
Dapper 완벽 가이드 (2025 에디션)
- 저자: Pavan Pitthdiya
- 태그: #dapper #orm
주요 내용
- Stack Overflow 팀이 개발한 경량 마이크로 ORM으로 ORM 오버헤드 없이 편리함 제공
- Entity Framework 대비 속도와 SQL 제어에 강점, EF Core는 마이그레이션과 LINQ에 유리
- QueryAsync, ExecuteAsync, QueryFirst, QuerySingle, ExecuteScalar 등 핵심 메서드
- 저장 프로시저, 트랜잭션, 페이지네이션, Unit of Work 패턴 지원
- Dapper.Contrib, Dapper.SqlBuilder, Dapper.FluentMap 확장 라이브러리 제공
Uno Platform Studio 2.0 출시: AI로 빌드하기
- 저자: Uno Platform Team
- 태그: #uno ai
주요 내용
- AI 기반의 크로스플랫폼 .NET 애플리케이션 개발 도구
- C# 및 WinUI로 다중 플랫폼 애플리케이션 개발 지원
- Hot Design Agent로 설계 자동화
- MCP + App MCP 고급 통합 프로토콜
Cake v6.0.0 릴리스
- 저자: devlead
- 태그: #cake dotnet10
주요 내용
- .NET 10 및 C# 14 완전 지원
- Cake.Sdk: 정규 .NET 콘솔 애플리케이션에서 Cake 도구 스크립팅 경험 제공
- 최소한의 프로젝트 구성, 파일 기반 빌드 스크립트 지원
- Cake.Template으로 다양한 프로젝트 시나리오 지원
