주말 아침 - 주간 닷넷 #2

주말 아침 - 주간 닷넷 #2

한 주 동안 .NET 생태계에서 있었던 주요 이슈와 아티클, 기술 트렌드를 정리해 소개합니다.


.NET 10 발표

주요 내용

  • 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 첫 공개

주요 내용

  • 코드를 최우선으로 하는 설계 철학 채택
  • 시각적 일관성 강화를 위한 아이콘 및 타이포그래피 개선
  • 현대적이고 투명한 설정 인터페이스, 개선된 검색 기능, 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

주요 내용

  • 기존 GroupJoinDefaultIfEmpty 조합의 복잡한 패턴 제거
  • 명확한 의도를 나타내는 LeftJoinRightJoin 메서드 제공
  • 간결한 코드로 동일한 결과 달성
  • 모든 좌측/우측 행을 유지하는 명확한 조인 전략

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를 호출할 수 없는 핵심 제약
  • ValueTaskIsCompletedSuccessfully 속성을 활용한 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 에디션)

https://medium.com/@pavanpitthdiya/the-ultimate-guide-to-dapper-in-net-everything-you-need-to-know-2025-edition-295ab8a4ced8

  • 저자: 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으로 다양한 프로젝트 시나리오 지원
16개의 좋아요