피드로 돌아가기
InfoQInfoQ
Frontend

.NET 11 Preview 2 Updates MAUI with Performance Improvements and Platform Refinements

.NET 11 Preview 2가 MAUI의 Map 컨트롤, 데이터 바인딩, API 일관성을 개선해 TypedBinding 실행 시간 31% 단축 및 메모리 할당 50% 감소

Edin Kapić2026년 3월 25일8intermediate

Context

개발자들은 지도 기반 UI에서 XAML 작성의 장황함, 데이터 바인딩의 비효율성, 그리고 API 설계의 불일치로 인한 번거로움을 겪고 있었다. 특히 맵 좌표 정의, 빈번한 바인딩 평가가 필요한 데이터 집약적 애플리케이션, 그리고 VisualStateManager의 비일관적인 인터페이스가 문제였다.

Technical Solution

  • Map 컨트롤에 TypeConverter 추가: Location과 MapSpan에 대해 x:Arguments 없이 XAML에서 직접 좌표 정의 가능하게 개선
  • Map.Region 바인더블 속성 신규 추가: 선언형으로 표시할 맵 영역을 초기화할 수 있도록 지원
  • 맵 도형에 IsVisible 및 ZIndex 속성 구현: Polygon, Polyline, Circle 등이 요소 제거 없이 렌더링 순서 제어 및 표시 여부 토글 가능하게 설정
  • 맵 도형에 클릭 이벤트 추가: Android, iOS, Mac Catalyst 전체 플랫폼에서 커스텀 플랫폼 코드 없이 인터랙티브 오버레이 구현 가능
  • TypedBinding과 SourceGeneratedBinding 최적화: 델리게이트 캐싱, 바인딩 모드 캐싱, 불필요한 변환 제거를 통해 성능 향상
  • Color 타입에 ImmutableObject(true) 어노테이션 추가 및 Font를 읽기 전용 구조체로 변환: XAML 소스 생성기가 인스턴스를 안전하게 캐시하고 효율적인 코드 경로 생성 가능
  • VisualStateManager.GetVisualStateGroups 반환 타입 변경: IList 대신 VisualStateGroupList 반환하도록 SetVisualStateGroups API와 일치시킴
  • Entry.Text를 nullable 값 타입(int? 등)과 바인딩할 때 수정: 입력을 지우면 이전 값 유지가 아닌 null로 올바르게 설정

Impact

  • TypedBinding 실행 시간: 47.47ns에서 32.90ns로 31% 단축
  • TypedBinding 메모리 할당: 128바이트에서 64바이트로 50% 감소
  • SourceGeneratedBinding: 약 25% 빠른 실행 속도 및 50% 메모리 사용량 감소

Key Takeaway

빈번하게 평가되는 바인딩과 불변 타입의 캐싱 최적화는 런타임 성능에 직접 영향을 미치며, 점진적인 API 일관성 개선과 구체적 사용 사례 해결이 기존 애플리케이션의 재작업 없이 개발 생산성을 향상시킬 수 있다.


MAUI를 사용하는 모바일 개발 팀에서 데이터 집약적 UI 구현 시 TypedBinding 또는 SourceGeneratedBinding을 활용하면 바인딩 기반 성능 병목을 30% 이상 해결할 수 있으며, Map 컨트롤의 새로운 TypeConverter와 Region 바인더블 속성을 사용하면 지도 기반 화면의 XAML 코드량과 보일러플레이트를 대폭 줄일 수 있다.

원문 읽기