Qt Bridge for C#는 UI를 QML로 한 번 작성해 Windows, macOS, Linux에서 실행하고 애플리케이션 로직은 C#으로 유지할 수 있게 한다. 일반 Linux처럼 동작하는 임베디드 Linux도 지원하지만, Technology Preview에서는 iOS, Android, 웹을 지원하지 않는다.
Qt에 따르면 QML은 XML 대신 사용하는 선언형 UI 언어다. UI가 어떻게 보여야 하는지 기술하면 Qt Quick이 C# 백엔드 로직과 UI를 동기화한다. QML은 UI용으로 설계됐으며 속성 바인딩과 JavaScript 표현식을 지원한다. 빠른 반복 작업에는 해석 방식으로, 예측 가능한 성능이 필요할 때는 컴파일 방식으로 사용할 수 있다. Qt는 QML이 UI 코드를 짧고 읽기 쉽게 하며 프로토타이핑을 빠르게 할 수 있다고 설명한다.
기존 C# 데스크톱 애플리케이션에서 백엔드와 UI가 분리돼 있다면 백엔드를 바꾸지 않고 새 UI를 구성할 수 있다. 기존 C# 라이브러리와 NuGet 의존성, 개발 방식을 유지하면서 C# 객체와 데이터 모델을 QML 프런트엔드에 직접 노출할 수 있다. MVVM도 사용할 수 있다. 별도의 속성 없이 공개 멤버를 기본 노출하고, INotifyPropertyChanged를 구현한 속성은 바인딩할 수 있으며, C# 이벤트는 QML 신호 처리기로 연결된다. 속성을 사용해 노출 범위를 세밀하게 조정할 수도 있다.
C++를 작성하거나 Qt의 컨테이너 유형을 배울 필요는 없지만, QML과 일부 Qt 개념은 익혀야 한다. 그 밖에는 기존 C# 개발 환경과 도구를 계속 사용할 수 있다.
Qt는 데이터 시각화용 Qt Quick 그래프와 고급 2D·3D 그래픽을 C# 백엔드에서 사용할 수 있다고 설명한다. 데이터 처리는 C#에 두고 QML에서 데이터에 직접 바인딩할 수 있으며, 렌더링은 Qt Quick의 장면 그래프를 통해 GPU 가속을 받는다. Qt는 이 방식이 시각 요소가 많은 인터페이스의 런타임 메모리 사용량도 줄인다고 주장한다.
메모리 안전성과 관련해 Qt는 애플리케이션 코드를 메모리 안전 언어인 C#과 QML로 작성한다고 설명한다. 다만 다른 C# UI 프레임워크와 마찬가지로 렌더링에는 네이티브 코드가 쓰이며, Qt의 경우 C++가 해당한다. Qt는 핵심 코드를 공개 보안 정책에 따라 유지 관리하고, Qt Bridge가 수동 메모리 관리 위험에 노출되는 애플리케이션 코드의 양을 줄인다고 밝혔다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요