윈도우 폼
1. 개요
1. 개요
윈도우 폼은 마이크로소프트의 닷넷 프레임워크에 포함된 API로, 마이크로소프트 윈도우용 데스크톱 응용 프로그램의 GUI를 개발하기 위한 기술이다. 이는 기존의 C++ 기반 마이크로소프트 파운데이션 클래스 라이브러리를 대체하는 더 단순화된 접근 방식을 제공하며, 관리 코드 환경에서 윈도우 API를 쉽게 활용할 수 있도록 래핑한다.
주요 용도는 윈도우 운영 체제에서 실행되는 데스크톱 응용 프로그램을 빠르게 구축하는 것이다. 개발자는 비주얼 스튜디오와 같은 통합 개발 환경 내의 폼 디자이너를 사용하여 버튼, 텍스트 상자, 목록 상자 같은 컨트롤을 시각적으로 배치하고, 이벤트 기반 프로그래밍 모델을 통해 사용자 상호작용을 처리할 수 있다.
이 기술은 RAD 개념을 잘 지원하여 생산성을 높인다. 그러나 모델-뷰-컨트롤러 패러다임을 기본적으로 제공하지는 않아, 복잡한 사용자 인터페이스를 가진 현대적 애플리케이션 개발에는 WPF나 WinUI 같은 후속 기술이 권장되기도 한다.
2. 역사와 배경
2. 역사와 배경
윈도우 폼은 마이크로소프트가 닷넷 프레임워크 1.0과 함께 2002년 처음 공개한 그래픽 사용자 인터페이스(GUI) 응용 프로그램 개발용 API이다. 이 기술은 닷넷 프레임워크의 핵심 구성 요소로 포함되어, C++와 같은 비관리 코드를 사용하는 기존 윈도우 API 기반 개발의 복잡성을 크게 줄이는 것을 목표로 설계되었다.
주요 목적은 마이크로소프트 파운데이션 클래스 라이브러리와 같은 이전의 복잡한 C++ 기반 프레임워크를 대체하여, 닷넷의 관리 코드 환경에서 보다 쉽고 빠르게 윈도우 데스크톱 응용 프로그램을 구축할 수 있는 길을 열어주는 것이었다. 이를 위해 기존의 윈도우 API를 닷넷의 관리 코드로 완전히 래핑하여, 개발자가 C 샤프나 비주얼 베이직 닷넷 같은 언어로 GUI 프로그래밍을 할 수 있도록 했다.
이러한 접근 방식은 이벤트 기반 프로그래밍 모델과 비주얼 스튜디오에 통합된 폼 디자이너 도구와 결합되어, 신속 응용 프로그램 개발을 가능하게 했다. 결과적으로 윈도우 폼은 닷넷 생태계 내에서 수많은 비즈니스 응용 프로그램과 내부 도구를 개발하는 데 있어 사실상의 표준 GUI 프레임워크로 자리 잡았다.
3. 아키텍처 및 특징
3. 아키텍처 및 특징
3.1. 관리 코드와 윈도우 API 래핑
3.1. 관리 코드와 윈도우 API 래핑
윈도우 폼은 마이크로소프트 닷넷 프레임워크에서 제공하는 GUI 라이브러리로, 기존 윈도우 API를 관리 코드로 감싸는 방식으로 설계되었다. 이는 개발자가 C++와 같은 비관리 언어를 직접 사용하지 않고도, C 샤프나 비주얼 베이직 닷넷과 같은 닷넷 언어를 통해 표준 윈도우 데스크톱 응용 프로그램을 구축할 수 있게 해준다. 본질적으로 기존의 복잡한 윈도우 API 호출을 추상화하고 단순화한 래퍼 계층을 제공한다.
이러한 접근 방식은 초기의 C++ 기반 GUI 프레임워크였던 마이크로소프트 파운데이션 클래스 라이브러리를 대체하는 역할을 했다. MFC에 비해 윈도우 폼은 더 직관적이고 생산적인 개발 모델을 제공하며, 메모리 관리와 같은 복잡한 작업을 공통 언어 런타임이 담당하도록 함으로써 개발자의 부담을 줄였다. 결과적으로 RAD 환경 하에서 빠르게 데스크톱 애플리케이션을 개발하는 데 널리 채택되었다.
3.2. 이벤트 기반 프로그래밍 모델
3.2. 이벤트 기반 프로그래밍 모델
윈도우 폼의 프로그래밍 모델은 이벤트 기반 아키텍처를 중심으로 구축된다. 이 모델은 사용자의 행동이나 시스템에서 발생하는 특정 사건(예: 마우스 클릭, 키 입력, 타이머 만료)을 이벤트로 정의하고, 개발자가 이러한 이벤트에 반응하는 코드를 작성하도록 한다. 폼이나 버튼 같은 각 컨트롤은 자신이 발생시킬 수 있는 다양한 이벤트(예: Click, KeyPress, TextChanged)를 노출하며, 개발자는 특정 이벤트가 발생했을 때 실행될 메서드를 이벤트에 연결한다.
이 연결은 델리게이트라는 특별한 형식을 통해 이루어진다. 델리게이트는 메서드에 대한 참조를 안전하게 캡슐화하는 객체로, 윈도우 폼에서는 이벤트 핸들러 메서드를 이벤트에 구독(subscribe)하는 표준 메커니즘으로 사용된다. 예를 들어, 버튼의 Click 이벤트에 메서드를 연결하면, 사용자가 버튼을 클릭할 때마다 해당 메서드가 자동으로 호출되어 비즈니스 로직을 수행한다. 이 방식은 메시지 루프와 윈도우 API의 복잡한 메시지 처리 방식을 추상화하여, 개발자가 애플리케이션의 응답 논리에 더 집중할 수 있게 해준다.
이러한 이벤트 구독 모델은 비주얼 스튜디오의 폼 디자이너와 긴밀하게 통합되어 있다. 개발자는 디자이너 화면에서 컨트롤을 더블클릭하는 것만으로 해당 컨트롤의 기본 이벤트 핸들러 메서드 스텁을 코드에 자동으로 생성할 수 있다. 이는 신속 애플리케이션 개발 접근 방식을 가능하게 하는 핵심 요소 중 하나이다. 결과적으로, 윈도우 폼 애플리케이션의 실행 흐름은 미리 정의된 선형 경로가 아니라, 사용자와 시스템의 상호작용에 의해 동적으로 트리거되는 일련의 이벤트 핸들러에 의해 주도된다.
3.3. 폼 디자이너와 RAD
3.3. 폼 디자이너와 RAD
윈도우 폼의 핵심 개발 도구는 비주얼 스튜디오에 통합된 폼 디자이너이다. 이는 시각적 프로그래밍 환경을 제공하여, 개발자가 코드를 직접 작성하지 않고도 마우스 드래그 앤 드롭 방식으로 버튼, 텍스트 상자, 레이블과 같은 컨트롤을 폼 위에 배치하고 속성을 설정할 수 있게 한다. 이렇게 시각적으로 사용자 인터페이스를 구성하는 방식은 전통적인 코드 중심 개발에 비해 생산성을 크게 향상시킨다.
이 접근법은 RAD의 전형적인 특징을 보여준다. RAD는 빠른 애플리케이션 개발을 의미하며, 프로토타이핑과 반복적인 설계를 강조한다. 윈도우 폼과 폼 디자이너는 개발자가 GUI 레이아웃을 즉시 확인하고 수정할 수 있도록 함으로써 이 개발 철학을 실현한다. 결과적으로 비즈니스 로직에 집중할 수 있는 시간이 늘어나며, 전체적인 소프트웨어 개발 생명 주기가 단축된다.
폼 디자이너에서 수행하는 모든 시각적 조작은 실제로는 백그라운드에서 자동으로 C 샤프 또는 비주얼 베이직 닷넷 코드를 생성한다. 디자이너 화면과 이렇게 생성된 코드는 완전히 동기화되어 있어, 개발자가 코드 편집기에서 컨트롤을 수동으로 추가하거나 디자이너에서 속성을 변경하면 양쪽에서 모두 즉시 반영된다. 이러한 이중 편집 모드는 윈도우 폼 개발의 유연성을 보여준다.
이러한 도구의 통합과 RAD 지원은 윈도우 폼이 닷넷 프레임워크 초기부터 데스크톱 애플리케이션 개발의 표준 방법론으로 자리 잡는 데 기여했다. 특히 데이터베이스와 연동하는 비즈니스 애플리케이션이나 내부 업무 도구를 빠르게 구축해야 하는 시나리오에서 그 강점을 발휘했다.
4. 주요 구성 요소
4. 주요 구성 요소
4.1. 폼(Form)
4.1. 폼(Form)
윈도우 폼에서 폼은 응용 프로그램의 기본 창 또는 대화 상자를 나타내는 핵심 객체이다. 모든 GUI 응용 프로그램은 최소한 하나의 폼을 가지며, 이 폼은 사용자 인터페이스의 컨테이너 역할을 한다. 폼 자체는 컨트롤 클래스에서 상속받은 특수한 컨트롤로, 다른 컨트롤들을 배치할 수 있는 표면을 제공한다.
폼은 닷넷 프레임워크의 System.Windows.Forms.Form 클래스에 의해 정의된다. 개발자는 이 클래스를 상속받아 사용자 정의 폼을 만들고, 속성을 설정하여 창의 제목, 크기, 아이콘, 배경색 등을 지정한다. 또한 폼은 다른 컨트롤들과 마찬가지로 마우스 클릭, 키 누름, 창 크기 변경과 같은 다양한 이벤트를 발생시키고 처리할 수 있다.
주요 속성으로는 창의 초기 상태를 결정하는 WindowState, 최소화 및 최대화 버튼의 표시 여부를 설정하는 MinimizeBox와 MaximizeBox, 폼의 테두리 스타일을 정의하는 FormBorderStyle 등이 있다. 이러한 속성들은 비주얼 스튜디오의 속성 창을 통해 시각적으로 쉽게 설정할 수 있어 RAD 개발을 지원한다.
폼은 모달 또는 모달리스 방식으로 표시될 수 있으며, MDI 응용 프로그램에서는 부모 폼과 자식 폼의 관계를 구성하는 데 사용된다. 이처럼 폼은 윈도우 폼 애플리케이션의 구조적 기반이 되며, 사용자와의 상호작용을 위한 기본 창을 구성하는 데 필수적이다.
4.2. 컨트롤(Control)
4.2. 컨트롤(Control)
윈도우 폼 애플리케이션의 사용자 인터페이스를 구성하는 기본적인 빌딩 블록은 컨트롤이다. 컨트롤은 버튼, 텍스트 상자, 레이블, 목록 상자, 데이터 그리드 등 사용자와 상호작용하거나 정보를 표시하는 시각적 구성 요소를 말한다. 모든 컨트롤은 System.Windows.Forms.Control 클래스에서 상속받으며, 공통적인 속성, 메서드, 이벤트 집합을 공유한다. 개발자는 이러한 컨트롤을 폼 위에 배치하고, 속성을 설정하며, 이벤트 처리기를 연결함으로써 애플리케이션의 기능을 구현한다.
윈도우 폼은 풍부한 기본 컨트롤 라이브러리를 제공하며, 크게 표준 컨트롤, 컨테이너 컨트롤, 데이터 바인딩 컨트롤, 대화 상자 컨트롤 등으로 구분할 수 있다. 컨테이너 컨트롤인 패널이나 그룹 박스는 다른 컨트롤들을 그룹화하고 레이아웃을 관리하는 데 사용된다. 또한, 개발자는 기존 컨트롤을 상속받아 사용자 정의 컨트롤을 만들거나, 완전히 새로운 컨트롤을 디자인하여 라이브러리에 추가할 수 있는 확장성을 갖추고 있다.
컨트롤의 동작은 이벤트 기반 모델에 따라 이루어진다. 사용자가 마우스를 클릭하거나 키보드를 누르는 것과 같은 동작은 해당 컨트롤에서 특정 이벤트를 발생시킨다. 개발자는 이 이벤트에 반응하는 코드, 즉 이벤트 처리기를 작성하여 애플리케이션의 로직을 구동한다. 예를 들어, 버튼 컨트롤의 Click 이벤트에 처리기를 연결하면 사용자가 그 버튼을 클릭했을 때 원하는 작업을 수행할 수 있다.
이러한 컨트롤 기반의 접근 방식은 비주얼 스튜디오에 통합된 폼 디자이너와 결합되어 빠른 애플리케이션 개발을 가능하게 한다. 개발자는 도구 상자에서 컨트롤을 끌어다 폼 위에 놓는 직관적인 방식으로 GUI를 설계할 수 있으며, 속성 창을 통해 컨트롤의 모양과 동작을 쉽게 설정할 수 있다.
4.3. 이벤트(Event)와 델리게이트(Delegate)
4.3. 이벤트(Event)와 델리게이트(Delegate)
윈도우 폼의 상호작용은 이벤트와 델리게이트라는 핵심 메커니즘을 기반으로 한다. 이 모델은 사용자의 버튼 클릭이나 키 입력, 시스템에서 발생하는 타이머 이벤트 등 다양한 동작을 프로그램이 감지하고 응답할 수 있게 한다. 델리게이트는 특정 시그니처를 가진 메서드를 참조할 수 있는 안전한 함수 포인터로, 이벤트가 발생했을 때 호출될 메서드를 연결하는 역할을 한다.
개발자는 비주얼 스튜디오의 폼 디자이너를 사용해 컨트롤을 더블클릭하는 것만으로 해당 컨트롤의 기본 이벤트 핸들러를 자동 생성할 수 있다. 예를 들어, 버튼의 Click 이벤트나 텍스트 상자의 TextChanged 이벤트에 대한 핸들러가 이에 해당한다. 또한, 속성 창의 이벤트 목록을 통해 다양한 이벤트를 수동으로 연결하거나, 코드에서 직접 델리게이트를 이벤트에 추가하는 방식으로 프로그래밍할 수 있다.
이러한 이벤트 기반 프로그래밍 패러다임은 애플리케이션의 흐름 제어를 개발자가 명시적으로 관리하는 것이 아니라, 사용자나 시스템의 동작에 의해 주도되도록 한다. 이는 마이크로소프트 파운데이션 클래스 라이브러리와 같은 이전 기술에 비해 직관적이고 생산적인 개발을 가능하게 하는 윈도우 폼의 주요 특징 중 하나이다.
5. 개발 환경
5. 개발 환경
5.1. 비주얼 스튜디오 통합
5.1. 비주얼 스튜디오 통합
윈도우 폼 개발은 마이크로소프트 비주얼 스튜디오와 깊게 통합되어 있다. 비주얼 스튜디오는 윈도우 폼 응용 프로그램을 구축, 디자인, 디버그 및 배포하기 위한 포괄적인 통합 개발 환경을 제공한다. 이 통합은 개발자가 코드 작성과 GUI 디자인을 효율적으로 병행할 수 있게 해주는 핵심 요소이다.
주요 통합 기능으로는 폼 디자이너가 있다. 이는 비주얼 스튜디오 내부에 내장된 WYSIWYG 디자인 도구로, 개발자가 코드를 직접 작성하지 않고도 마우스 드래그 앤 드롭으로 버튼, 텍스트 상자, 레이블 같은 컨트롤을 폼 위에 배치하고 속성을 설정할 수 있게 한다. 디자이너에서의 모든 변경 사항은 자동으로 뒷단의 C# 또는 비주얼 베이직 닷넷 소스 코드 파일에 반영되어, RAD 접근 방식을 실현한다.
또한 속성 창을 통해 선택한 컨트롤이나 폼의 다양한 속성(예: 크기, 색상, 글꼴, 데이터 바인딩 설정)을 시각적으로 편집할 수 있다. 이벤트 처리기 생성도 간편한데, 속성 창의 이벤트 탭이나 디자이너에서 컨트롤을 더블클릭하면 해당 이벤트에 대한 핸들러 메서드 스텁 코드가 자동으로 생성된다. 이 모든 도구들은 솔루션 탐색기, 도구 상자, IntelliSense 코드 완성 기능과 함께 작동하여 생산성을 극대화한다.
6. 장단점
6. 장단점
윈도우 폼은 전통적인 윈도우 데스크톱 응용 프로그램 개발에 있어 뚜렷한 장점을 제공한다. 가장 큰 장점은 학습 곡선이 비교적 낮고 개발 속도가 빠르다는 점이다. 비주얼 스튜디오에 통합된 폼 디자이너를 통해 개발자는 GUI를 직관적으로 디자인하고, 이벤트 기반 프로그래밍 모델을 통해 컨트롤의 동작을 쉽게 구현할 수 있다. 이는 RAD를 가능하게 하여 비즈니스 애플리케이션과 내부 도구를 빠르게 구축하는 데 매우 적합하다. 또한, 기존 윈도우 API를 관리 코드로 래핑했기 때문에, 네이티브 윈도우 컨트롤과의 호환성이 뛰어나고 성능이 안정적이다.
반면, 윈도우 폼은 현대적인 애플리케이션 개발 요구사항에 있어 몇 가지 한계를 보인다. 가장 큰 단점은 시각적으로 정적인 사용자 인터페이스를 생성한다는 점이다. 벡터 그래픽 기반의 하드웨어 가속 렌더링이나 풍부한 스타일링, 애니메이션, 데이터 바인딩과 같은 현대적 UI/UX 기능을 기본적으로 지원하지 않는다. 또한, 모델-뷰-컨트롤러와 같은 구조화된 설계 패러다임을 강제하지 않아, 대규모 애플리케이션에서는 코드와 사용자 인터페이스 로직이 밀접하게 결합되어 유지보수가 어려워질 수 있다.
기술적 측면에서 윈도우 폼은 주로 닷넷 프레임워크와 강하게 결합되어 있으며, 최신 크로스 플랫폼 개발에는 적합하지 않다. 이는 마이크로소프트의 후속 기술인 WPF나 UWP에 비해 디자인 유연성과 확장성이 부족하다는 평가를 받는다. 그러나 이러한 단점에도 불구하고, 레거시 시스템 유지보수, 빠른 프로토타이핑, 또는 복잡한 그래픽이 필요 없는 전통적인 윈도우 프로그램 개발에서는 여전히 실용적인 선택지로 남아 있다.
7. 대체 기술 및 비교
7. 대체 기술 및 비교
7.1. WPF(Windows Presentation Foundation)
7.1. WPF(Windows Presentation Foundation)
WPF(Windows Presentation Foundation)는 마이크로소프트가 윈도우 폼의 후속 기술로 개발한 현대적인 GUI 응용 프로그램 개발 프레임워크이다. 닷넷 프레임워크 3.0의 일부로 도입되었으며, 풍부한 시각적 경험을 제공하는 데스크톱 응용 프로그램을 구축하는 데 주로 사용된다. 윈도우 폼이 기존 윈도우 API를 관리 코드로 래핑하는 방식인 반면, WPF는 벡터 기반의 새로운 렌더링 엔진과 XAML(eXtensible Application Markup Language)을 기반으로 하여 디자인과 로직을 명확히 분리한다.
WPF의 핵심 특징은 선언적 마크업 언어인 XAML을 사용하여 사용자 인터페이스를 설계한다는 점이다. 이를 통해 디자이너와 개발자가 협업하기 쉬워지고, 애니메이션, 3D 그래픽, 복잡한 데이터 바인딩, 다양한 스타일 및 템플릿 기능을 쉽게 구현할 수 있다. 또한, 해상도 독립적인 렌더링을 지원하여 다양한 DPI의 화면에서도 선명한 화면을 제공한다.
윈도우 폼과 비교했을 때 WPF는 더 유연하고 강력한 사용자 인터페이스 제작이 가능하지만, 학습 곡선이 더 가파르고 상대적으로 시스템 자원을 더 많이 사용할 수 있다는 평가를 받는다. WPF는 복잡한 데이터 시각화, 미디어 중심 애플리케이션, 고도로 맞춤화된 비즈니스 애플리케이션 개발에 적합한 기술이다.
7.2. ASP.NET Web Forms
7.2. ASP.NET Web Forms
ASP.NET Web Forms는 마이크로소프트가 닷넷 프레임워크 초기 버전과 함께 출시한 웹 애플리케이션 개발 모델이다. 이 기술은 데스크톱 애플리케이션 개발에 사용되던 윈도우 폼의 이벤트 기반 프로그래밍 모델과 RAD 접근 방식을 웹 환경으로 가져왔다. 개발자는 비주얼 스튜디오의 디자이너 화면에서 서버 컨트롤을 드래그 앤 드롭하여 UI를 구성하고, 버튼 클릭 같은 사용자 동작에 대한 이벤트 처리기를 관리 코드(C# 또는 VB.NET)로 작성할 수 있었다.
이 모델의 핵심은 웹 폼 페이지 라이프사이클과 뷰스테이트라는 개념이다. 각 웹 페이지는 서버 측에서 폼 컨트롤로 표현되며, 사용자의 상호작용은 서버로의 포스트백을 유발한다. 서버는 전체 페이지 라이프사이클을 실행하여 이벤트를 처리하고, 뷰스테이트에 UI 상태를 저장함으로써 웹의 무상태(stateless) 특성을 극복하려 했다. 이는 전통적인 HTML과 자바스크립트만으로는 구현하기 복잡한 풍부한 상호작용을 비교적 쉽게 구현할 수 있게 했다.
그러나 ASP.NET Web Forms는 몇 가지 한계를 지니고 있다. 뷰스테이트의 과도한 사용은 페이지 크기를 증가시키고 성능에 부정적 영향을 미칠 수 있으며, 서버 컨트롤이 자동으로 생성하는 복잡한 HTML과 클라이언트 스크립트는 개발자의 정밀한 제어를 어렵게 만들었다. 또한, 코드 비하인드 모델이 UI 마크업과 로직을 강하게 결합시켜, 테스트와 유지보수가 어려운 구조를 만들기도 했다.
이러한 한계로 인해, 마이크로소프트는 이후 더욱 모듈화되고 테스트 가능하며 RESTful 아키텍처에 친화적인 ASP.NET MVC 프레임워크를 발표했다. 시간이 지나면서 ASP.NET Core가 등장하며 현대적인 웹 개발의 표준이 되었지만, ASP.NET Web Forms는 여전히 레거시 엔터프라이즈 웹 애플리케이션에서 널리 사용되고 있다.
7.3. UWP(Universal Windows Platform)
7.3. UWP(Universal Windows Platform)
UWP(Universal Windows Platform)는 마이크로소프트가 개발한 애플리케이션 개발 플랫폼 및 API 집합이다. 이 플랫폼은 윈도우 10 및 이후 버전의 운영 체제를 위해 설계되었으며, 하나의 앱 패키지로 데스크톱 컴퓨터, 노트북, 태블릿, 스마트폰, 엑스박스, 홀로렌즈 등 다양한 윈도우 10 디바이스에서 실행되는 유니버설 앱을 만들 수 있게 한다. 이는 기존의 윈도우 폼이나 WPF가 주로 데스크톱 환경에 국한되었던 것과 대비되는 중요한 차이점이다.
UWP의 핵심 목표는 개발 효율성과 사용자 경험의 일관성을 높이는 것이다. 이를 위해 터치 입력, 모바일 장치의 다양한 화면 크기 및 해상도, 모던 UI 디자인 언어(이전 명칭 메트로)에 대한 기본 지원을 제공한다. 또한 윈도우 스토어를 통한 통합된 배포 및 업데이트 모델, 향상된 보안을 위한 샌드박스 실행 환경, 배터리 수명을 고려한 라이프사이클 관리 등 모던 앱에 필요한 기능들을 플랫폼 차원에서 표준화했다.
UWP 앱은 C++, C#, 비주얼 베이직 닷넷 언어와 함께 윈도우 런타임 API를 사용하여 개발한다. XAML은 WPF 및 실버라이트와 마찬가지로 UWP에서도 주요 UI 마크업 언어로 사용되어 풍부한 사용자 인터페이스를 정의한다. 그러나 UWP는 윈도우 폼의 라피드 애플리케이션 개발 접근 방식보다는 WPF의 선언적이고 데이터 바인딩 중심의 개발 모델에 더 가깝다. 최근에는 WinUI 라이브러리가 UWP 및 기타 윈도우 앱을 위한 최신 네이티브 UI 플랫폼으로 발전하고 있으며, 크로스 플랫폼 프레임워크인 .NET MAUI도 등장했다.
7.4. WinUI 및 .NET MAUI
7.4. WinUI 및 .NET MAUI
WinUI는 마이크로소프트의 최신 네이티브 사용자 인터페이스 플랫폼으로, 윈도우 10 및 윈도우 11을 위한 현대적이고 일관된 디자인을 제공한다. 이는 윈도우 SDK의 일부로 제공되며, XAML을 사용하여 고성능의 플루언트 디자인 기반 애플리케이션을 구축할 수 있다. WinUI는 UWP 및 데스크톱 앱을 포함한 다양한 윈도우 앱 개발 모델에서 사용될 수 있으며, 윈도우 폼이나 WPF 애플리케이션에 최신 UI 컨트롤을 통합하는 데에도 활용된다.
.NET MAUI는 크로스 플랫폼 프레임워크로, 개발자가 단일 코드베이스로 안드로이드, iOS, macOS, 윈도우용 애플리케이션을 만들 수 있게 한다. 이는 Xamarin.Forms의 진화된 형태이며, .NET 6 이상의 통합된 플랫폼을 목표로 한다. .NET MAUI는 네이티브 성능과 네이티브 UI 컨트롤을 활용하면서도 공통된 개발 경험을 제공한다. 윈도우 플랫폼에서 .NET MAUI는 내부적으로 WinUI 3를 사용하여 UI를 렌더링한다.
이 두 기술은 윈도우 폼과의 관계에서 대체 또는 보완 역할을 한다. WinUI는 윈도우 플랫폼에 특화된 현대적 UI 솔루션을 제공하며, .NET MAUI는 여러 플랫폼을 대상으로 하는 애플리케이션 개발에 중점을 둔다. 따라서 새로운 데스크톱 애플리케이션을 개발할 때, 순수 윈도우 데스크톱 앱이라면 WinUI를, 모바일과 데스크톱을 모두 아우르는 앱이라면 .NET MAUI를 고려할 수 있다. 이들은 마이크로소프트의 장기적인 닷넷 생태계 전략에서 윈도우 폼의 레거시를 넘어서는 현대적 개발 방향성을 보여준다.
