.NET MAUI — nedir, mimarisi ve platformlar arası geliştirme

Yazar: IT Sectr Yayınlanma: 2026-05-01 Okuma süresi: 8 dk

.NET MAUI, C# ve XAML ile yerel uygulamalar oluşturmak için 2022'de .NET 6 ile birlikte piyasaya sürülen, platformlar arası bir Microsoft framework'üdür. Microsoft .NET MAUI Documentation, 2024'e göre MAUI, iOS, Android, Windows, macOS ve Tizen'i destekler ve bunları ortak bir kod tabanına sahip tek bir projede birleştirir. Framework, Xamarin.Forms'un doğrudan halefidir.

Kilit Noktalar

  • .NET MAUI — Xamarin.Forms'un halefi, ayrı bir SDK olmadan .NET 6+'ya entegre
  • Birleşik Single Project, üç ayrı platform projesinin yerini alır
  • XAML ve C#, bildirimsel UI oluşturma ve iş mantığı için kullanılır
  • Handlers, platform soyutlaması için Xamarin.Forms'un eski oluşturucularının yerini aldı
  • 5 platform desteği: iOS, Android, Windows, macOS, Tizen

.NET MAUI Nedir

.NET MAUI (Multi-platform App UI), .NET 6+ için sıfırdan yeniden oluşturulmuş bir Xamarin.Forms evrimidir. Her platform için ayrı projeler gerektiren Xamarin.Forms'un aksine MAUI, ortak bir .csproj dosyası ve Platforms/iOS, Platforms/Android, Platforms/Windows ve Platforms/MacCatalyst platform klasörleriyle tek bir yapı kullanır. İlk kararlı MAUI sürümü Mayıs 2022'de yayınlandı.

.NET MAUI ile selefi arasındaki temel fark, .NET 8 BCL (Temel Sınıf Kütüphanesi) ile tam entegrasyondur. Geliştiriciler, ek bir SDK olmadan doğrudan System.Text.Json, System.Net.Http, System.Linq, System.IO ve diğer API'lere erişebilir. Xamarin.Forms, ortak mantık için .NET Standard 2.0 kullandı ve bu da yeni .NET platform yeteneklerine erişimi sınırladı.

Microsoft Build 2024'e göre .NET MAUI, App Store ve Google Play'de 40.000'den fazla uygulamada kullanılmaktadır. Önemli projeler arasında UPS Mobile, The Weather Channel ve Siemens Teamcenter bulunmaktadır. Microsoft, Kasım 2024 için planlanan .NET 9'un bir parçası olarak MAUI'yi aktif olarak geliştirmektedir.

.NET MAUI'nin Tarihi ve Kökeni

.NET MAUI duyurusu, .NET birleştirme stratejisinin bir parçası olarak Microsoft Build 2020'de yapıldı. Microsoft, .NET Core, Mono ve .NET Framework'ü tek bir .NET 5+ platformunda birleştirdi. Xamarin.Forms, MAUI'nin temeli oldu, ancak kod tabanı tamamen yeniden yazıldı: eski API'ler kaldırıldı, oluşturucular Handlers ile değiştirildi, DependencyService bir DI kapsayıcısıyla değiştirildi.

.NET MAUI 8 (Kasım 2023), Native AOT desteği, iyileştirilmiş CollectionView performansı, Blazor Hybrid (bir MAUI uygulamasına Blazor bileşenleri gömme) ve yeni yazı tipi eşlemesi ekledi. .NET MAUI 9 (2024), C# 12 desteği, iyileştirilmiş WinUI 3 ve macOS Sonoma entegrasyonu ve tüm platformlar için yeni bir Sürükle ve Bırak API'si içerir.

.NET MAUI ve Xamarin.Forms Arasındaki Fark

İlk fark, tek bir uygulamadır. Xamarin.Forms'ta iOS ve Android, bir çözümde iki ayrı proje gerektiriyordu. .NET MAUI'de platform klasörleriyle tek bir proje. Bu, kod gezinmesini, bağımlılık yönetimini ve CI/CD boru hatlarını basitleştirir. .csproj dosyası, TargetFrameworks: net8.0-android, net8.0-ios, net8.0-maccatalyst ile SDK tarzı formatı kullanır.

İkinci fark, oluşturucular yerine Handlers kullanan oluşturma mimarisidir. Xamarin.Forms'ta her öğenin (Button, Label) yerel bir denetim oluşturan kendi Renderer sınıfı vardı. Özelleştirme için Custom Renderer gerekiyordu. MAUI'de Handler, soyut bir öğeyi yerel bir denetime eşleyen ve denetimi yeniden oluşturmadan özellikleri güncellemek için Property Mappers'ı destekleyen hafif bir nesnedir.

Üçüncü fark, birleşik bir DI kapsayıcısı Microsoft.Extensions.DependencyInjection'dır. Xamarin.Forms, platform uygulamalarını kaydetmek için DependencyService kullandı. MAUI, DI'yı framework çekirdeğine gömer: hizmetler MauiAppBuilder'da kaydedilir, denetleyiciler bağımlılıkları yapıcı aracılığıyla alır. Bu, test etmeyi basitleştirir ve modern .NET uygulamalarını takip eder.

.NET MAUI Mimarisi

.NET MAUI Mimarisi çok katmanlı bir modele dayanır. En alt katman .NET BCL ve Mono Runtime (Android) / CoreCLR (Windows) / NativeAOT (iOS)'dur. Orta katman, framework çekirdeği (Handlers, Layout, Graphics, Controls) ile Microsoft.Maui.dll'dir. En üst katman, XAML sayfaları, ViewModel ve hizmetlerle geliştiricinin uygulamasıdır.

Single Project ve Multi-Targeting

Single Project, .NET MAUI'nin önemli bir mimari özelliğidir. Tüm dosyalar üç kategoriye ayrılır: ortak kod (Shared), platform kodu (Platforms) ve kaynaklar (Resources). .csproj dosyasındaki Multi-targeting, uygulamanın hangi platformlar için derlendiğini belirtir. Her platform yalnızca kendi Platforms klasörünü ve ortak kodu derler.

Platform kodu, koşullu klasörlere yerleştirilir. Platforms/Android, MainActivity.cs, MainApplication.cs ve AndroidManifest.xml'i içerir. Platforms/iOS — AppDelegate.cs, Info.plist ve Entitlements.plist. Platforms/Windows — Package.appxmanifest ve App.xaml. Koşullu derleme için kod, #if ANDROID, #if IOS, #if WINDOWS, #if MACCATALYST yönergelerini kullanır.

.NET MAUI'de XAML ve MVVM

XAML, Xamarin.Forms ve WPF'den miras alınan bildirimsel bir işaretleme dilidir. .NET MAUI'de XAML, sayfaları (ContentPage), düzenleri (VerticalStackLayout, Grid, FlexLayout), öğeleri (Label, Entry, Button, Image) ve denetimleri (CollectionView, CarouselView) tanımlamak için kullanılır. XAML, derleme zamanında BAML formatına derlenir.

MVVM deseni, CommunityToolkit.Mvvm (Microsoft'tan açık kaynaklı bir kütüphane) aracılığıyla uygulanır. [ObservableProperty] özelliği INotifyPropertyChanged özellikleri oluşturur, [RelayCommand] yöntemlerden komutlar oluşturur. CommunityToolkit.Mvvm 8.2 Source Generator, kısmi sınıf ViewModel'i dönüştürerek Reflection olmadan ObservableObject oluşturur. Bu, manuel uygulamaya kıyasla Binding'i %30 hızlandırır.

.NET MAUI Uygulama Örneği

csharp
using Microsoft.Maui;
using Microsoft.Maui.Controls;

namespace MauiApp;

public class MainPage : ContentPage
{
    public MainPage()
    {
        Title = "MAUI App";
        
        Content = new VerticalStackLayout
        {
            Spacing = 12,
            Padding = new Thickness(16),
            Children =
            {
                new Label
                {
                    Text = "Hello, .NET MAUI!",
                    FontSize = 24,
                    FontAttributes = FontAttributes.Bold
                },
                new Button
                {
                    Text = "Bana tıkla",
                    BackgroundColor = Colors.Blue,
                    TextColor = Colors.White,
                    Command = new Command(async () =>
                        await DisplayAlert("Merhaba", "Dünya", "OK"))
                }
            }
        };
    }
}

Platformlar ve Destek

.NET MAUI 5 platformu destekler: iOS 15.0+, Android 5.0 (API 21)+, Windows 10 1809+, macOS 12.0+ (MacCatalyst) ve Tizen 6.5+. Her platform kendi denetim ve API setini kullanır. iOS, Mac Catalyst aracılığıyla UIKit kullanır, Android — Xamarin.Android aracılığıyla AndroidX, Windows — WinUI 3, macOS — Mac Catalyst aracılığıyla AppKit.

iOS ve Android'de MAUI, Xamarin.Forms ile aynı oluşturma mekanizmalarını — yerel UI denetimlerini kullanır. Ancak Handlers daha esnek özelleştirme sağlar. iOS'ta platforma özgü Button yapılandırması için PlatformConfiguration.iOS ile OnPlatform<Button> kullanılır. Windows için MAUI, Fluent Design System desteğiyle Microsoft'tan modern bir UI framework'ü olan WinUI 3'ü kullanır.

macOS desteği, Mac'te UIKit uygulamalarını çalıştıran Apple teknolojisi Mac Catalyst aracılığıyla eklendi. Bu, uygulamanın macOS sürümü için MAUI iOS kodunun %100'ünün yeniden kullanılmasını sağlar. Belirli Mac özellikleri (Menu Bar, Touch Bar) için MAUI, Mac Catalyst ve NSView sarmalayıcıları aracılığıyla platform API'leri sağlar.

Tizen, Samsung'un Smart TV, akıllı telefonlar ve akıllı saatler için platformudur. .NET MAUI'de Tizen desteği, Samsung Tizen .NET aracılığıyla uygulanır. MAUI uygulamaları, Samsung TizenFX bağlantıları aracılığıyla Tizen için derlenir. Ancak Tizen, Microsoft için öncelikli bir platform değildir — güncellemeler 1–2 ay gecikmeyle yayınlanır.

PlatformMinimum SürümUI Framework'üDurum
iOSiOS 15.0UIKit (Mac Catalyst)Kararlı
AndroidAPI 21 (5.0)AndroidX / Material 3Kararlı
WindowsWin 10 1809WinUI 3 / Fluent DesignKararlı
macOSmacOS 12.0AppKit (Mac Catalyst)Kararlı
TizenTizen 6.5TizenFX / SamsungEk

.NET MAUI'nin Avantajları

Birleşik kod tabanı — .NET MAUI kod tekrarını azaltır. C# ve XAML ile tek bir proje 5 platform için derlenir ve basit UI'ya sahip uygulamalar için %95'e kadar ortak kod sağlar. İş mantığı, hizmetler, veri modelleri ve HTTP istemcileri ortak koddadır. Yalnızca platforma özgü özellikler (kamera, coğrafi konum, biyometri) DI aracılığıyla ayrı uygulamalar gerektirir.

Performans .NET MAUI'de Xamarin.Forms'tan daha yüksektir. Handlers, oluşturma yükünü azaltır: Microsoft testleri, Xamarin.Forms 5.0'a kıyasla ekran oluşturma süresinde %20–30 azalma gösterir. iOS'ta Native AOT, C# kodunu doğrudan ARM64 talimatlarına derleyerek JIT derlemesini ortadan kaldırır ve başlatma süresini %40 azaltır.

Blazor Hybrid, .NET MAUI'nin benzersiz bir yeteneğidir. BlazorWebView, Blazor bileşenlerini doğrudan bir MAUI uygulamasına gömer. Web arayüzü geliştiricileri, Blazor bileşenlerini (Razor sayfaları, JS birlikte çalışması, CSS stilleri) mobil uygulamada yeniden kullanabilir. Blazor Hybrid, Blazor bileşen kodunu değiştirmeden 5 MAUI platformunun tümünde çalışır.

.NET Ekosistemi — binlerce NuGet paketine erişim: veritabanı işlemleri için Entity Framework Core, günlük kaydı için Serilog, HTTP isteklerini yeniden denemek için Polly, doğrulama için FluentValidation. CommunityToolkit.Maui, kullanıma hazır UI öğeleri sağlar: Popup, Toast, Snackbar, erişilebilirlik için SemanticScreenReader. .NET MAUI, Azure, SignalR ve Microsoft Graph SDK ile entegre olur.

Geliştirme Araçları — Visual Studio 2022 ve JetBrains'ten Rider. XAML Hot Reload, uygulamayı yeniden başlatmadan 1–2 saniye içinde UI'yı günceller. C# Hot Reload (.NET 6+'dan itibaren), işlemi yeniden başlatmadan bir yöntem değişikliğini yeniden derler. Visual Studio Debugger, Profiler ve IntelliCode, performans teşhisi ve kod kalitesi için araç setini tamamlar.

Sıkça Sorulan Sorular

.NET MAUI nedir?

.NET MAUI, iOS, Android, Windows, macOS ve Tizen için C# ve XAML ile yerel uygulamalar oluşturmaya yönelik Microsoft'un platformlar arası bir framework'üdür. Xamarin.Forms'un halefidir, .NET 6+'ya entegredir ve her platform için ayrı projeler yerine tek bir proje (Single Project) kullanır.

.NET MAUI, Xamarin.Forms'tan nasıl farklıdır?

.NET MAUI tek bir proje, oluşturucular yerine Handlers, yerleşik bir DI kapsayıcısı, iOS için Native AOT ve Blazor Hybrid kullanır. Xamarin.Forms her platform için ayrı projeler gerektirir, UI özelleştirmesi için Custom Renderer, DI için DependencyService kullanır ve Blazor'u desteklemez. .NET MAUI, .NET'in bir parçasıdır, Xamarin.Forms ayrı bir SDK'dır.

.NET MAUI macOS'u destekliyor mu?

Evet, .NET MAUI Mac Catalyst (minimum sürüm macOS 12.0) aracılığıyla macOS'u destekler. MAUI'deki iOS uygulamaları, kod değişikliği olmadan otomatik olarak Mac için derlenir. Yerel Mac özellikleri (Menu Bar, Dock, Touch ID) için Platforms/MacCatalyst klasöründeki Mac Catalyst ve NSView sarmalayıcıları aracılığıyla platform çağrıları kullanılır.

.NET MAUI'de Flutter paketleri kullanılabilir mi?

Hayır, .NET MAUI Dart/Flutter paketleriyle uyumlu değildir. MAUI, .NET ekosistemini ve NuGet paketlerini kullanır. Platforma özgü özellikler (kamera, Bluetooth, biyometri) için Android Bindings (Kotlin/Java) ve iOS Bindings (Objective-C/Swift) aracılığıyla yerel kütüphaneler kullanılır. CommunityToolkit.Maui, yaygın senaryolar için kullanıma hazır sarmalayıcılar sağlar.

.NET MAUI yerel bir uygulamadan daha mı yavaş?

Performans farkı minimumdur. iOS'ta Handlers ve Native AOT ile .NET MAUI, yerel bir SwiftUI uygulamasının performansının %95–98'ine ulaşır. Android'de, UI oluşturma testlerinde (Microsoft Benchmarks, 2024) bir Kotlin uygulamasıyla fark %3–7'dir. Çoğu iş uygulaması için fark kullanıcı tarafından fark edilmez.

Özet

  • .NET MAUI — C# ve XAML ile platformlar arası Microsoft framework'ü, Xamarin.Forms'un halefi
  • Single Project çoklu hedefleme ile 3 ayrı projeyi tek bir yapılandırmayla değiştirir
  • Handlers, Xamarin.Forms oluşturucularından daha hızlı oluşturma sağlar
  • Blazor Hybrid, web bileşenlerinin doğrudan mobil uygulamaya gömülmesine olanak tanır
  • 5 platform — iOS 15+, Android 5.0+, Windows 10, macOS 12+, Tizen 6.5+
  • iOS'ta Native AOT başlatma süresini %40 ve ikili dosya boyutunu azaltır
  • Platformlar arası yetenekler ve yerel API'lere erişim gerektiren .NET projeleri için .NET MAUI'yi seçin

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun