주말 아침 - 주간 닷넷 #7


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


:pushpin: C#의 미래가 더 빠른 이유

https://medium.com/@schmidt.jeanbaptiste/why-the-future-of-c-is-faster-0949e30fe8bd

  • 저자: Jean-Baptiste S.
  • 태그: #performance async #runtime

주요 내용

  • .NET 10+ Runtime-Async 기능으로 상태 머신 오버헤드 제거
  • 비동기 메서드의 런타임 수준 최적화로 성능 대폭 향상
  • 벤치마크를 통한 async/await 패턴의 미래 발전 방향 제시

:pushpin: 새로운 .slnx 솔루션 형식 (마이그레이션 가이드)

주요 내용

  • GUID 기반 .sln 파일의 병합 충돌 문제를 XML 기반 .slnx로 해결
  • dotnet sln migrate 명령어로 간편한 마이그레이션
  • .NET 9 SDK, Visual Studio 2022(v17.13+), Rider 지원
  • Git 병합 충돌 감소로 팀 협업 생산성 향상

:pushpin: .NET에서 플러그인 지원 모듈식 모놀리스 구축하기

  • 저자: Sudhir Mangla
  • 태그: #architecture #modulith #plugins

주요 내용

  • 모놀리스 단순성과 마이크로서비스 유연성을 결합한 모듈식 아키텍처
  • AssemblyLoadContext를 통한 동적 플러그인 로딩과 버전 충돌 방지
  • Module Installer 패턴으로 중앙 집중식 등록 제거
  • 모듈별 데이터 격리와 Mediator 기반 이벤트 통신

:pushpin: Silhouette를 사용하여 C#과 NativeAOT로 .NET CLR 프로파일러 만들기

  • 저자: Andrew Lock
  • 태그: #profiler nativeaot #internals

주요 내용

  • Silhouette 라이브러리로 C++ 대신 C#으로 .NET 프로파일러 구축
  • NativeAOT 컴파일로 네이티브 바이너리 출력
  • 복잡한 COM interop 세부사항 추상화와 HResult<T> 패턴
  • 환경 변수 설정으로 대상 애플리케이션에 프로파일러 연결

:pushpin: Entity Framework Core Raw SQL — FromSql()에서 프로덕션 수준 안전성까지

  • 저자: Cristian Sifuentes
  • 태그: #entityframework #sql #security

주요 내용

  • FromSqlInterpolated()로 자동 매개변수화, FromSqlRaw()는 수동 제어
  • 매개변수화된 쿼리로 SQL Injection 방지 및 실행 계획 재사용으로 성능 향상
  • 더 이상 사용되지 않는 FromSql(), ExecuteSql(), SqlQuery() 제거
  • 실무 체크리스트: 매개변수화만 사용, 문자열 연결 금지, 부하 테스트

:pushpin: SQLite를 사용한 멀티플랫폼 AOT: 작동 방법

  • 저자: Scott Galloway
  • 태그: nativeaot #sqlite #crossplatform

주요 내용

  • Native AOT로 독립 실행형 실행 파일(10-30MB) 생성, 80% 빠른 시작 시간
  • SQLitePCLRaw.bundle_e_sqlite3 패키지와 초기화 필수
  • GitHub Actions로 Windows, Linux, macOS 멀티플랫폼 자동 빌드
  • CLI 도구, 마이크로서비스에 적합, 리플렉션 많은 앱은 부적합

:pushpin: C#의 클린 코드: SonarQube & .NET 단계별 가이드

https://medium.com/@lakshitha_madhuwantha/clean-code-in-c-a-step-by-step-guide-to-sonarqube-net-d345173f2ef2

  • 저자: Lakshitha Madhuwantha
  • 태그: #cleancode #codequality #sonarqube

주요 내용

  • SonarQube를 .NET 프로젝트에 통합해 코드 품질 자동 분석
  • null 참조 예외, 코드 냄새, 보안 취약점 조기 발견
  • 단계별 설정 가이드와 CI 파이프라인 코드 품질 게이트 설정

:pushpin: Visual Studio의 데드락 조사하기

  • 저자: Kevin Gosse
  • 태그: #debugging #profiler #internals

주요 내용

  • Visual Studio responsiveness monitor의 주 스레드 검사 중 데드락 발생
  • RtlLookupFunctionEntry 락과 일시 중단된 스레드 락의 충돌
  • 데드락 모니터와 함수 detour 기법으로 해결
  • .NET 런타임 SuspendRuntime API로 안전한 스레드 일시 중단

:pushpin: 엔터프라이즈 패턴, 실제 코드: C#으로 Fowler의 아이디어 구현하기

  • 저자: Chris Woodruff
  • 태그: #architecture #patterns #enterprisepatterns

주요 내용

  • Martin Fowler의 엔터프라이즈 애플리케이션 아키텍처 패턴을 C#으로 구현
  • 레이어드 아키텍처, 트랜잭션 스크립트, 도메인 모델 등 13개 핵심 패턴
  • 계층 붕괴 상태 개선 방법과 패턴별 적용 시점, 트레이드오프 설명
  • 패턴 간 연결 고리를 통한 통합 아키텍처 이해

:bookmark_tabs: 가벼운 읽을거리

후보 항목 중 이슈로 선정되지 않은 가벼운 읽을거리들


Uno Platform에 DOOM 가져오기

  • Claude Opus 4.5와 Uno Platform MCP를 사용한 AI 에이전트 기반 개발
  • WebAssembly, Android, iOS 멀티플랫폼 지원

LINQ 성능 최적화: 모든 C# 개발자가 알아야 할 5가지 패턴

  • 프로덕션 환경에서 검증된 빠른 쿼리와 낮은 메모리 사용 패턴
  • 대용량 컬렉션 처리 성능 최적화

.NET 10과 C# 14의 새로운 기능: 로그 집계 작업의 최적화

  • .NET 8 대비 최대 38% 실행 시간 단축
  • Span와 Utf8JsonReader 최적화

C# 14의 확장 멤버로 타입을 깔끔하게 확장하기

  • Extension Methods를 넘어서는 확장성 개선
  • 코드 가독성과 유지보수성 향상

C# 14의 Null 조건부 할당 연산자로 더 깔끔한 코드 작성하기

  • customer?.Order = GetOrder(id) 같은 간결한 구문
  • 복합 할당 연산자 지원

레거시 C# 코드베이스 리팩터링: async void와 ArrayList에서 현대적이고 안전한 C#으로

  • Strangler Fig 패턴을 활용한 점진적 현대화
  • async void 제거, 제네릭 컬렉션, nullable 참조 타입 도입

스트림은 진실을 기록하고, 큐는 작업을 수행한다: 이를 명확히 구분하는 .NET 방식

  • 이벤트 허브(스트림)와 서비스 버스(큐)의 올바른 분리
  • 멱등성과 “최소 한 번 + 멱등성” 원칙

Zod를 C#으로 포팅하기: ZodSharp – .NET을 위한 무할당, 고성능 스키마 검증 라이브러리

  • Source Generator 기반 컴파일 타임 스키마 생성
  • 리플렉션 대비 15-16배 빠른 성능

C# BlockingCollection을 사용한 동시성 및 생산자-소비자 패턴

  • 스레드 안전한 생산자-소비자 패턴 구현
  • 멀티스레드 환경 안전한 데이터 공유

.NET의 Parallel.ForEachAsync 이해하기

  • 비동기 병렬 처리의 현대적 접근법
  • I/O 바운드 작업 병렬 처리 최적화

프로덕션을 위한 .NET 앱 최적화 — 완전한 체크리스트 (파트 2)

  • 성능, 보안, 모니터링, 로깅 최적화 전략
  • 프로덕션 배포 전 포괄적 체크리스트

DDD & CQRS를 적용한 Blazor의 클린 아키텍처

  • Blazor 애플리케이션에 엔터프라이즈급 아키텍처 패턴 적용
  • 명령-쿼리 분리를 통한 확장 가능한 설계
7개의 좋아요