.NET 11 Preview 6의 주요 변화: 실무 관점으로 살펴보기
.NET 11 Preview 6가 공개되며 ASP.NET Core, EF Core, C# 언어 전반에 걸쳐 주목할 만한 업데이트가 포함됐다. Java 백엔드 개발자 입장에서 직접적인 전환을 고려하지 않더라도, 이런 흐름은 현대 웹 프레임워크가 어떤 방향으로 진화하고 있는지를 파악하는 데 중요한 레퍼런스가 된다.
ASP.NET Core: 비동기 유효성 검사, CSRF 자동 보호, OpenAPI 3.2
이번 Preview 6에서 ASP.NET Core에 추가된 세 가지 기능은 API 설계와 보안 운영 측면에서 눈여겨볼 만하다.
비동기 유효성 검사(Async Validation) 는 기존에 동기 방식으로만 처리되던 입력값 검증 로직을 비논기로 수행할 수 있게 한다. 데이터베이스 조회나 외부 API 호출이 수반되는 복잡한 유효성 검사에서 스레드 블로킹 없이 처리할 수 있어 성능 측면에서 실질적인 이득을 가져온다. Java 생태계에서 Bean Validation이 여전히 동기 방식 중심인 점을 감안하면, 이는 비동기 처리 철학을 검증 계층까지 일관되게 밀어붙인 설계 선택이다.
자동 CSRF 보호는 개발자가 명시적으로 토큰을 관리하지 않아도 프레임워크 수준에서 CSRF 방어를 자동으로 적용한다. Spring Security에서 csrf().disable()을 무심코 설정하는 실수가 흔하다는 점을 떠올리면, 보안 기능의 기본 활성화(Secure by Default) 원칙이 얼마나 중요한지 다시 확인하게 된다.
OpenAPI 3.2 기본 지원은 Swagger 대신 최신 명세 기반 문서화를 기본으로 채택했다는 의미다. Spring 진영도 springdoc-openapi를 통해 유사한 흐름을 따르고 있으므로, API 문서 자동화 전략을 점검하는 계기로 삼을 수 있다.
EF Core: FULL OUTER JOIN 변환 지원
EF Core가 이번 업데이트에서 FULL OUTER JOIN의 LINQ 변환을 공식 지원한다. 기존에는 FULL OUTER JOIN을 ORM 수준에서 표현하려면 LEFT JOIN과 RIGHT JOIN 결과를 직접 합치거나 raw SQL을 사용해야 했다. 이제는 LINQ 쿼리가 데이터베이스 레벨의 FULL OUTER JOIN으로 자연스럽게 변환된다.
JPA/Hibernate를 사용하는 Java 백엔드 개발자도 비슷한 고민을 한 번쯤은 겪는다. Hibernate는 FULL JOIN을 제한적으로 지원하거나 Native Query로 우회하는 경우가 많은데, 이는 ORM과 SQL 표현력 사이의 간극이 아직 완전히 해소되지 않았음을 보여준다. EF Core의 이번 변화는 ORM이 SQL 기능을 어디까지 흡수해야 하는가에 대한 실용적 답변이기도 하다.
C# 언어: 확장 인덱서와 내장 유니온 타입
C# 언어 수준에서도 두 가지 주목할 기능이 추가됐다.
확장 인덱서(Extension Indexers) 는 기존 클래스를 수정하지 않고 인덱서 접근 문법(obj[key])을 외부에서 확장할 수 있게 한다. 이는 확장 메서드의 개념을 인덱서까지 넓힌 것으로, 라이브러리 코드에 손대지 않고 표현력 있는 API를 구성할 때 유용하다.
내장 유니온 타입(Built-in Union Types) 은 하나의 변수가 여러 타입 중 하나를 가질 수 있음을 타입 시스템 수준에서 표현하는 기능이다. Java에서는 이를 sealed interface + 패턴 매칭으로 구현하는 방식이 Java 17 이후 점점 보편화되고 있는데, C#은 이를 언어 내장 기능으로 직접 흡수하는 방향을 선택했다.
// 유니온 타입 예시 (예상 문법)
union Result = Success | Failure;
언어 설계 측면에서 두 플랫폼이 비슷한 문제를 서로 다른 방식으로 해결하고 있다는 점은, Java 개발자에게도 타입 안전성과 표현력의 균형을 어디서 찾을 것인지 다시 생각하게 만든다.
정리
- ASP.NET Core의 비동기 유효성 검사·자동 CSRF 보호·OpenAPI 3.2 기본 지원은 보안과 성능을 프레임워크 기본값으로 끌어올리는 방향을 보여준다.
- EF Core의 FULL OUTER JOIN 지원은 ORM과 SQL 표현력 사이의 간극을 좁히려는 실용적 접근이며, JPA 사용자도 이 흐름을 참고할 수 있다.
- C#의 유니온 타입 내장화는 Java sealed interface + 패턴 매칭과 같은 문제를 다루며, 타입 시스템 설계 트렌드를 파악하는 데 유용한 비교 사례가 된다.