! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

MAUI와 Uno의 차이점은 무엇이며, .NET 개발자에게 MAUI와 Uno는 어떤 의미일까요? > 블로그 & Tips

본문 바로가기

ComponentOne

블로그 & Tips

MAUI와 Uno의 차이점은 무엇이며, .NET 개발자에게 MAUI와 Uno는 어떤 의미일까요?

페이지 정보

작성자 GrapeCity 작성일 2021-06-11 15:26 조회 10,511회 댓글 0건

본문

소프트웨어 분야에서 단순성은 뛰어난 품질의 응용 프로그램을 빌드하는 핵심입니다. 하지만 단순성을 원하면 원할수록 점점 더 실현하기가 어렵습니다.

사용자 경험의 핵심은 디지털 세계에 액세스 가능하도록 만드는 것입니다. 한때 소프트웨어 사양은 소프트웨어가 어떤 운영체제(Windows / Linux / Mac)에서 실행되는지와 관련이 있었습니다. 요즘에는 응용 프로그램이 어떤 브라우저에서 실행되는지, Android 및 iOS와 같은 모바일 플랫폼을 지원하는지 물어봅니다.

여러 플랫폼에서 사용할 수 있는 응용 프로그램을 빌드하는 경우 한 플랫폼에서는 사소해 보이지만 다른 플랫폼에서는 심각한 문제들이 있습니다. (예를 들면, 번역을 어떻게 관리할 것인지, 색을 어떻게 유지할 것인지, 이미지 자산은 어떻게 관리할 것인지)

어려운 여정이었지만 우리는 하나의 산업으로 진화했습니다. 로직에서 표시를 구분하는 방법을 배웠고, 새로운 기법을 개발했으며, 개발자 프로세스를 간소화하기 위한 새 도구를 빌드했습니다.

모바일 응용 프로그램을 빌드하기 위해 Xamarin.Forms가 있습니다. .NET 6의 일부로 Microsoft는 Xamarin.Forms를 MAUI(다중 플랫폼 앱 UI) 프레임워크의 다음 수준으로 끌어올려 Xamarin.Forms 기능을 데스크톱 응용 프로그램으로 확장했습니다.

또한 Xamarin의 등장은 개발자가 한 번만 작성하여 모든 위치에서 실행할 수 있는 Uno Platform 등과 같은 기타 다중 플랫폼 기술의 개발로 이어졌습니다. 이 문서에서는 다중 플랫폼 기술에 대해 자세히 살펴보고 MAUI와 Uno 간의 차이점을 살펴봅니다.


Xamarin이란?

Xamarin에 대해 잘 모르는 분들을 위해 설명하자면, .NET 환경에서 Android 및 iOS용 기본 모바일 응용 프로그램과 범용 앱을 작성하기 위한 플랫폼입니다. Xamarin API는 각 응용 프로그램 플랫폼의 서명을 정확히 반영하기 때문에 Xamarin용 코드를 작성하는 것은 .NET 환경에서 네이티브에 가깝습니다.

일반적으로 Xamarin 솔루션은 각각 고유한 빌드 설정이 있는, 지원할 각 플랫폼(Android, iOS, 범용)용 프로젝트 한 개로 구성되어 있습니다. .NET에서 응용 프로그램을 작성한 다음 컴파일러를 사용하면 .NET 코드가 각 플랫폼에서 이해하고 실행할 수 있는 네이티브 응용 프로그램이 됩니다.

즉, 몇 부분을 주의 깊게 설계하면 지원하는 각 플랫폼과 코드를 공유할 수 있습니다. 그러면 다른 플랫폼에서 응용 프로그램을 제공하는 데 들어가는 노력이 줄어들고 동작의 불일치 가능성도 낮출 수 있습니다.

Microsoft에서는 이를 더 발전시켜 Xamarin.Forms에 도입했습니다. 개발자는 Xamarin.Forms를 사용하여 XAML 파일의 코드를 통해 공유 라이브러리에서 UI(사용자 인터페이스) 코드를 작성할 수 있습니다.

Xamarin.Forms 보기의 예를 보려면 Microsoft Xamarin.Forms 애플리케이션 빠른 시작 만들기를 방문해 보십시오(10단계 참조).

공유 라이브러리에서 이 양식을 한 번만 만들면 각 플랫폼에서 해당 컨트롤이 생성됩니다.

Microsoft는 .NET Core 제품군에 Xamarin을 도입하고 있습니다. 지난 몇 년 동안 .NET Core는 큰 성공을 거둬 .NET 개발자의 68%가 이미 .NET Core를 정기적으로 사용하고 있었습니다. 또한 Microsoft는 제품 이름에서 "Core"를 삭제하여 .NET Core가 주요 구현으로 더욱 발전하게 될 것이라고 했습니다. .NET Core의 다음 릴리스는 .NET 6로, MAUI 프레임워크를 포함하고 있습니다.


.NET MAUI란?

.NET MAUI는 Xamarin.Forms의 다음 단계로, 단일 프로젝트에서 모바일 및 데스크톱 개발 경험을 통합하고, 모바일에서의 성공을 데스트톱 응용 프로그램으로 확장하는 순으로 자연스럽게 진행 중입니다. .NET MAUI와 Xamarin.Forms 간의 가장 큰 차이점은 다음과 같습니다.

  1. 모든 플랫폼을 단일 프로젝트에서 관리 가능

  2. 한 곳에서 모든 자산 관리

  3. 플랫폼별 코드를 구성하기 위한 멀티 타겟팅

  4. MVU(Model View Update) 패턴에 대한 기본 지원

  5. Blazor 지원

.NET Core 제품군의 Xamarin을 통해 개발자는 일관된 빌드 프로세스인 .NET CLI를 사용하여 응용 프로그램을 빌드하는 이점을 누립니다. 동일한 명령줄 도구를 사용하여 클라이언트 응용 프로그램과 백엔드 서비스를 모두 빌드할 수 있습니다.


Uno Platform이란?

2013년 nventive에서 개발하고 2018년에 소스를 공개한 Uno Platform을 사용하면 C#으로 크로스 플랫폼 응용 프로그램을 빌드할 수 있습니다. Xamarin.Forms와 마찬가지로 Uno 역시 UWP(범용 Windows 플랫폼) 및 WinUI에서 제공하는 API를 미러링하는 API를 사용하여 "한 번 작성으로 모든 위치에서 실행할 수 있도록 하는 것(write once, run everywhere)"을 목표로 합니다.

이 플랫폼에서는 모바일 및 macOS 개발에 (Forms가 아니라) Xamarin Native 스택을 사용하면서 WebAssembly(Wasm)를 통해 웹으로, Skia를 통해 Linux로 범위를 확장합니다. 즉, (MAUI 및 .NET을 통해) Xamarin에 대한 모든 업데이트가 Uno로 전달됩니다.

Uno를 Xamarin Native의 발전을 위한 대체 경로로 볼 수 있습니다.


.NET MAUI는 Uno와 어떻게 다를까요?

.NET MAUI는 Xamarin.Forms의 다음 단계인 반면, Uno는 .NET MAUI가 자체 로드맵에 있는 것 이상을 제공하기 위해 사용하는 자체 접근 방식입니다.

가장 확실한 첫 번째 차이점은 Uno 플랫폼에서 개발자는 WebAssembly 및 Linux 데스크톱을 빌드할 수 있지만, .NET MAUI에서는 현재 Wasm 또는 Linux를 지원하지 않는다는 점입니다.

또한 두 플랫폼은 모양과 느낌도 다릅니다. .NET MAUI는 기본 경험을 제공하는 데 중점을 두므로, (예를 들어) 리스트가 Android와 iOS 장치에서 다르게 보입니다. 그러나 Uno Platform은 모든 플랫폼에서 동일한 모양과 느낌을 제공합니다. 즉, iOS에서 라디오 버튼이 바로 작동하기 때문에 iOS용으로 사용자 정의 컨트롤을 작성할 필요가 없습니다. 그러나 Uno에서는 필요에 따라 모양이 다른 컨트롤을 빌드할 수 있도록 .NET MAUI처럼 후크를 제공합니다.


개발자 경험

.NET MAUI와 Uno Platform은 모두 .NET 제품군용으로 빌드되었기 때문에 개발자 경험은 유사해야 합니다. 정말 그럴까요?

표면적으로 이 둘은 정확하게 동일한 것처럼 보입니다. .NET MAUI는 Xamarin.Forms의 다음 버전이고, Uno는 Xamarin의 추상화입니다.

그러나 Uno가 UWP에 맞춰 조정된다는 사실이 다음과 같은 큰 차이를 만듭니다.

  1. .NET MAUI와 Uno Platform은 다른 XAML 버전을 사용합니다.

  2. Uno에서는 도우미 함수, 사용자 정의 컨트롤 및 앱 서비스 모음인 Microsoft 커뮤니티 툴킷의 공식 포트를 제공합니다.

  3. .NET MAUI는 설정된 컨트롤, 도우미 함수 및 서비스 컬렉션을 위해 Xamarin 커뮤니티 툴킷을 참조할 가능성이 높습니다.

일반적으로 MVVM(Model-View-View Model)은 Xamarin.Forms 및 Uno Platform에 대해 모두 선택할 수 있는 패턴입니다. .NET MAUI에서는 MVU(모델 보기 업데이트) 패턴을 바로 지원하며, 이는 일부 개발자에게 흥미로울 수 있습니다.


Uno Platform을 사용하여 앱 만들기

Uno Platform을 사용하는 예를 살펴보겠습니다.

  1. Visual Studio에서 시작하기 가이드에 따라 Uno Platform 솔루션 템플릿 확장을 비롯하여 누락된 종속성을 설치합니다.

  2. Visual Studio에서 새 프로젝트를 만듭니다.

  3. Uno Platform 템플릿을 선택합니다.

이렇게 하면 아래 예와 비슷한 솔루션이 생성됩니다. 지원되는 플랫폼마다 프로젝트 하나가 생성됩니다. 대부분의 코드 및 자산은 공유 프로젝트 아래에 있습니다.

uno 공유 프로젝트

데모를 보려면 MainPage.xaml로 이동하여 다음을 추가합니다.

<StackPanel>  
<TextBlock Text="{Binding Value, ElementName=slider}" Margin="20" FontSize="30" />  
<Slider x:Name="slider"/>  
<TextBlock Text="{Binding Text, ElementName=textbox}" Margin="20" FontSize="30" />  
<TextBox x:Name="textbox"  
    AcceptsReturn="True"  
    Height="100"  
    Margin="10,0"  
    PlaceholderText="Enter Text Here" />  
</StackPanel>


이전에 WPF(Windows Presentation Foundation)를 사용한 개발자에게는 XAML 마크업이 친숙할 것입니다. 스택 패널이 슬라이더와 텍스트 상자를 둘러싸고 있고, 이러한 입력값 2개에 레이블이 바인딩되어 있습니다.

WebAssembly 애플리케이션은 브라우저에서 다음과 같이 보입니다.

웹 어셈블리 앱

여기에 크게 흥미로운 부분은 없는데, 모든 플랫폼에 슬라이더 값을 표시하는 앱이 하나 있다는 점이 흥미롭습니다.

Uno Platform에서는 문자열 리소스를 UWP 응용 프로그램으로 관리합니다. 언어 코드 아래에 Resources.resw 파일을 만듭니다. 그러면 다음과 같이 XAML에서 해당 파일을 참조할 수 있습니다.

<TextBlock x:Uid="Demo" Margin="20" FontSize="30" />


uno 앱 공유

uno 앱 공유

여기 상단에 제목이 "Uno App"인 앱이 있습니다.

uno 앱

자세한 내용은 기본 모델 바인딩을 보여주는 자습서를 참조하십시오.

Uno Platform을 보여주는 완전히 작동하는 앱이 여러 개 있다는 점이 좀 더 인상적입니다. 예를 들어, Azure DevOps 앱은 데모 사이트Git 리포지토리와 함께 완전히 제공되는 작업 항목 및 버그를 구성 및 추적합니다.


MAUI(Xamarin.Forms) 앱 샘플

MAUI 샘플은 아직 준비되지 않았지만 .NET MAUI 앱은 Xamarin.Forms 앱과 유사해야 합니다.

Microsoft에서는 .NET MAUI를 계속 사용하려는 사람은 누구나 Xamarin.Forms를 계속 사용하도록 권장합니다. 모든 것이 준비되면 Xamarin.Forms에서는 마이그레이션 경로를 제공합니다.

다음 XAML 마크업을 사용하여 Xamarin.Forms에서 .NET MAUI와 동일한 기능을 얻을 수 있습니다.

<Label  
BindingContext="{x:Reference slider}"  
Text="{Binding Value}" FontSize="Title" Padding="30,10,30,10"/>  
<Slider x:Name="slider" Minimum="0" Maximum="360"/>  
<Label  
Text="{Binding Text}"  
BindingContext="{x:Reference input}"  
/>  
<Entry x:Name="input" />


이 예에서 TextBlocks는 레이블이고, TextBox는 항목으로 매핑됩니다. 이는 API를 UWP에 맞춰 조정하는 Xamarin.Forms 때문입니다.

텍스트 입력

마찬가지로, Xamarin.Forms 앱은 .resx 파일을 사용하여 모든 언어에 대한 문자열 리소스를 관리할 수 있지만 .NET MAUI에서 보다 원활한 경험을 제공하도록 기대합니다.

이 예에서는 프로젝트에 AppResources.resx를 추가했습니다.

xamarin 양식 샘플

xamarin 양식 샘플

Uno 샘플과 달리 요청 속성이 제목에 직접 액세스할 수 있습니다.

maui 앱 데모


.NET 개발자에게 무슨 의미인가요?

이제 흥미로운 내용이 펼쳐집니다. 드디어 코드를 한 번만 작성하면 모든 플랫폼에서 실행할 수 있게 된 걸까요? 수많은 개발자가 다른 플랫폼에서 빌드하는 것이 시간 측면에서 더 낫다고 판단한 후 프로젝트를 폐기합니다. 다중 플랫폼 도구는 개발자가 동일한 코드를 여러 번 재작업하는 대신 뛰어난 새 기능을 만드는 데 시간을 투자하도록 하여 시간을 크게 절약해 줍니다.

새 플랫폼을 지원한다고 해서 더 많은 업무를 의미하는 것은 더 이상 아니며, 기회를 의미합니다.

개발자는 예상 .NET MAUI 릴리스 및 Uno와 같은 플랫폼을 통해 코드를 한 번 작성하여 모든 위치에서 실행할 수 있습니다.

수년 동안 개발자들은 다중 플랫폼 애플리케이션이라는 개념과 씨름했습니다. 그러나 조금 더 자세히 살펴보면 Uno Platform과 같은 프레임워크 형태로 이미 코드를 작성하고 Android, iOS, Windows, macOS 및 브라우저에서 실행할 수 있는 기능을 갖췄음을 알 수 있습니다.

달력에 .NET 6의 예상 출시월인 2021년 11월을 표시해 두세요. Microsoft는 .NET MAUI를 통해 Xamarin.Forms를 한 단계 더 발전시켜 크로스 플랫폼 기능을 데스크톱 애플리케이션으로 확장하는 등 통합 노력을 강화하고 있습니다. Uno Platform이 .NET 기반으로 빌드되었기 때문에 이것은 .NET MAUI를 포기하고 Uno Platform을 선택하더라도 좋은 소식입니다. .NET 6의 모든 성능 이점을 자동으로 누리게 됩니다.

Xamarin.Forms에서 Uno Platform 컨트롤을 사용할 수 있고 Uno를 사용하여 브라우저에서 Xamarin.Forms 앱을 실행할 수 있다는 점이 가장 좋습니다. .NET MAUI가 아직 출시되지 않았지만 계속해서 잘 작동할 것인지 의구심을 가질 이유가 별로 없습니다.

이제 다중 플랫폼 개발부터 시작하여 이 첨단 기술을 활용해 보세요. Uno Platform 또는 Xamarin.Forms를 사용하면 차트, 달력, 리본 등을 비롯한 GrapeCity의 ComponentOne UI 컨트롤 툴킷을 사용하여 개발 시간을 단축할 수 있습니다.




지금 바로 ComponentOne을 다운로드하여 직접 확인해 보세요!

 
  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.