Neler yeni

Yazılım Forum

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra konu oluşturabilecek, mevcut konulara yanıt gönderebilecek, itibar kazanabilecek, özel mesajlaşmaya erişebilecek ve çok daha fazlasını yapabileceksiniz! Bu hizmetlerimiz ise tamamen ücretsiz ve kurallara uyulduğu sürece sınırsızdır, o zaman ne bekliyorsunuz? Hadi, sizde aramıza katılın!

.NET MAUI ile Modern Cross-Platform Mobil ve Masaüstü Uygulama Gelişimi

.NET MAUI (Multi-platform App UI), Microsoft tarafından geliştirilen ve geliştiricilere tek bir kod tabanı kullanarak iOS, Android, Windows ve macOS için yerel uygulamalar oluşturma imkanı sunan açık kaynaklı bir frameworktür. Xamarin.Forms'un evrimleşmiş hali olarak karşımıza çıkan MAUI, .NET 6 ve sonraki sürümlerle birlikte gelerek modern uygulama geliştirme süreçlerini basitleştirmeyi hedefler. Geleneksel platforma özgü geliştirme yaklaşımlarının aksine, MAUI, C# ve XAML kullanarak zengin kullanıcı arayüzleri oluşturmanıza olanak tanır ve işletim sisteminin yerel kontrollerini kullanarak platforma özgü bir görünüm ve his sunar. Bu sayede, geliştiriciler farklı platformlar için ayrı ayrı proje yönetmek yerine, tek bir Visual Studio projesi üzerinden tüm hedeflere ulaşabilirler. Bu, özellikle kaynakları kısıtlı ekipler için büyük bir verimlilik artışı sağlamaktadır.

MAUI'nin sunduğu başlıca avantajlar ve özellikler şunlardır:
  • Tek Kod Tabanı: iOS, Android, Windows ve macOS için tek bir C# ve XAML projesi üzerinden uygulama geliştirebilirsiniz. Bu, bakım maliyetlerini düşürür ve geliştirme süresini kısaltır.
  • Yerel Arayüzler: MAUI, her platformun kendi yerel kontrollerini kullanarak uygulamalarınızın platforma özgü bir görünüm ve davranış sergilemesini sağlar. Bu, kullanıcı deneyimi açısından kritik öneme sahiptir.
  • Modern Geliştirme Araçları: Visual Studio entegrasyonu sayesinde Hot Reload (anında kod veya XAML değişikliklerini görme), Live Visual Tree (çalışan uygulamanın UI hiyerarşisini inceleme) gibi araçlarla hızlı iterasyon yapabilirsiniz.
  • Blazor Hibrit Desteği: Web geliştiricilerin Blazor bileşenlerini kullanarak MAUI uygulamaları içerisinde web tabanlı UI'lar oluşturmasına imkan tanır. Bu, özellikle mevcut Blazor projelerini mobil veya masaüstüne taşımak isteyenler için büyük bir avantajdır.
  • Bağımlılık Enjeksiyonu (DI): .NET ekosisteminin güçlü DI özelliklerini destekleyerek modüler ve test edilebilir uygulamalar geliştirmenizi kolaylaştırır.
  • Model-View-ViewModel (MVVM) Patern Desteği: UI ve iş mantığını ayırarak daha sürdürülebilir ve yönetilebilir kod yazımını teşvik eder.
Bu özellikler, .NET MAUI'yi modern cross-platform uygulama geliştirme arenasında güçlü bir oyuncu haline getirmektedir.

.NET MAUI ile geliştirme yapmaya başlamak oldukça basittir. İlk olarak, en son Visual Studio sürümünü (genellikle Visual Studio 2022) kurmanız gerekmektedir. Kurulum sırasında "Mobil geliştirme ile .NET çoklu platformu kullanıcı arayüzü" iş yükünü seçtiğinizden emin olun. Bu iş yükü, MAUI için gerekli tüm SDK'ları, emülatörleri ve araçları otomatik olarak yükleyecektir. Yükleme tamamlandıktan sonra, Visual Studio'yu açıp "Yeni bir proje oluştur" seçeneğini seçebilir ve arama çubuğuna "MAUI" yazarak ".NET MAUI Uygulaması" şablonunu bulup seçebilirsiniz. Projenizi oluşturduktan sonra, Visual Studio size bir dizi yapılandırma seçeneği sunacaktır. Genellikle varsayılan ayarlar başlangıç için yeterlidir. Oluşturulan proje, temel bir MAUI uygulaması yapısını içerecek ve hemen çalıştırmaya hazır olacaktır.

Bir .NET MAUI projesinin temel yapısı, geliştiricilerin farklı platformlar arasında kodu paylaşırken platforma özgü ihtiyaçları yönetmelerine olanak tanır. Ana proje, paylaşılan kodu (UI, iş mantığı, modeller vb.) barındırırken, her hedef platform (Android, iOS, Windows, Mac) için ayrı klasörler bulunur. Bu klasörler, platforma özgü yapılandırmaları, kaynakları (ikonlar, başlangıç ekranları) ve bazı durumlarda platforma özel kodu içerir.
MAUI uygulamasının başlangıç noktası genellikle `App.xaml` ve `App.xaml.cs` dosyalarıdır. `App.xaml`, uygulamanızın global stillerini, kaynak sözlüklerini ve uygulamanın genel görsel kimliğini tanımlar. `App.xaml.cs` ise uygulamanın yaşam döngüsü olaylarını yönetir ve uygulamanın ilk sayfasını (main page) başlatır.
Örnek bir ana sayfa tanımı şu şekilde görünebilir:
Kod:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                 x:Class="MyMauiApp.MainPage"
                 BackgroundColor="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource DarkGray}}">

        <ScrollView>
            <VerticalStackLayout
                Padding="30,0"
                Spacing="25">

                <Image
                    Source="dotnet_bot.png"
                    SemanticProperties.Description="Cute dotnet bot waving hi!"
                    HeightRequest="200"
                    HorizontalOptions="Center" />

                <Label
                    Text="Merhaba, .NET MAUI!"
                    SemanticProperties.HeadingLevel="Level1"
                    FontSize="32"
                    HorizontalOptions="Center" />

                <Label
                    Text="Uygulamanız Hoş Geldiniz"
                    SemanticProperties.Description="Welcome to your app!"
                    SemanticProperties.Hint="Click to count"
                    FontSize="18"
                    HorizontalOptions="Center" />

                <Button
                    x:Name="CounterBtn"
                    Text="Tıkla Bana!"
                    SemanticProperties.Hint="Counts the number of times you click"
                    Clicked="OnCounterClicked"
                    HorizontalOptions="Center" />

            </VerticalStackLayout>
        </ScrollView>

    </ContentPage>
Bu XAML yapısı, temel bir sayfanın nasıl tanımlandığını ve çeşitli UI kontrollerinin nasıl yerleştirildiğini göstermektedir.

MAUI'de UI oluşturmanın temel taşları Sayfalar (Pages), Düzenler (Layouts) ve Kontrollerdir (Controls).
  • Sayfalar: Uygulamanızın temel görsel birimleridir. `ContentPage` en yaygın olanıdır ve tek bir içerik barındırır. Diğer sayfa türleri arasında navigasyon için `NavigationPage`, sekme tabanlı arayüzler için `TabbedPage` ve slayt menüleri için `FlyoutPage` bulunur. Her sayfa genellikle kendine özgü bir XAML dosyası ve eşlik eden bir C# kod-arkası dosyası (`.xaml.cs`) ile tanımlanır.
  • Düzenler (Layouts): Kontrolleri sayfalar içinde düzenlemek için kullanılır. En sık kullanılan düzenler şunlardır:
    StackLayout: Kontrolleri dikey veya yatay olarak birbiri ardına sıralar.
    Grid: Kontrolleri satır ve sütun bazında tablo benzeri bir yapıda yerleştirmenizi sağlar.
    FlexLayout: Esnek kutu modelini kullanarak güçlü ve dinamik düzenler oluşturur.
    AbsoluteLayout: Kontrolleri mutlak koordinatlara veya oransal değerlere göre konumlandırır.
  • Kontroller (Controls): Uygulamanızdaki etkileşimli ve görsel öğelerdir. `Button`, `Label`, `Entry` (metin girişi), `Editor` (çok satırlı metin girişi), `Image`, `ListView` veya modern karşılığı `CollectionView` (veri listelerini göstermek için) gibi birçok yerleşik kontrol mevcuttur. Her kontrolün kendine ait özellikleri ve olayları bulunur.
Bu üç bileşen, kullanıcı arayüzünün iskeletini oluşturur ve geliştiricilere oldukça esnek bir tasarım deneyimi sunar.

Veri bağlama (Data Binding), MAUI'de UI ile uygulamanızın iş mantığı arasındaki iletişimi sağlayan güçlü bir mekanizmadır. Bu, özellikle Model-View-ViewModel (MVVM) tasarım deseni ile birleştiğinde uygulamanızı çok daha düzenli ve yönetilebilir hale getirir. MVVM'de:
  • Model: Uygulamanın verisini ve iş mantığını temsil eder. Genellikle C# sınıflarıdır.
  • View: Kullanıcının gördüğü arayüzdür (XAML). View, ViewModel'deki verilere bağlanır.
  • ViewModel: View ile Model arasında bir köprü görevi görür. Model'den verileri alır, View'a uygun formata dönüştürür ve View'dan gelen komutları Model'e iletir. ViewModel genellikle `INotifyPropertyChanged` arayüzünü uygulayarak View'ın veri değişikliklerinden haberdar olmasını sağlar.
Örnek bir veri bağlama:
Kod:
<Label Text="{Binding MyProperty}" />
<Entry Text="{Binding UserName, Mode=TwoWay}" />
<Button Command="{Binding SubmitCommand}" Text="Gönder" />
Yukarıdaki örnekte, `Label`'ın `Text` özelliği ViewModel'deki `MyProperty`'ye bağlanırken, `Entry`'nin `Text` özelliği `UserName`'e çift yönlü olarak bağlanmıştır. `Button` ise bir komutu (`SubmitCommand`) tetikler. Bu yaklaşım, UI'yı iş mantığından ayırarak birim testi yapmayı ve kodun yeniden kullanılabilirliğini artırır.
"MVVM, .NET MAUI uygulamalarında karmaşıklığı yönetmek ve sürdürülebilir bir kod tabanı oluşturmak için altın standarttır."

Uygulamanızın tutarlı bir görsel kimliğe sahip olması için stillendirme önemlidir. MAUI, CSS benzeri bir yaklaşımla stiller tanımlamanıza olanak tanır. Stiller, `Style` etiketleri kullanılarak `ResourceDictionary` içinde tanımlanır ve daha sonra birden fazla kontrole uygulanabilir. Bu, görsel değişiklikleri tek bir yerden yönetmenizi sağlar.
Örneğin:
Kod:
<ContentPage.Resources>
        <ResourceDictionary>
            <Style TargetType="Button">
                <Setter Property="BackgroundColor" Value="Blue" />
                <Setter Property="TextColor" Value="White" />
                <Setter Property="CornerRadius" Value="10" />
            </Style>
        </ResourceDictionary>
    </ContentPage.Resources>
Bu stil, bu sayfadaki tüm butonlara uygulanacaktır. Ayrıca, `StaticResource` veya `DynamicResource` kullanarak kaynak sözlüklerindeki diğer değerlere de (renkler, font boyutları vb.) erişebilirsiniz. Tema desteği sayesinde uygulamanızın açık ve koyu modlarını kolayca yönetebilirsiniz.

Çoğu durumda MAUI'nin soyutlamaları yeterli olsa da, bazen platforma özgü API'lere veya UI özelleştirmelerine ihtiyaç duyulur. MAUI, bunun için birkaç mekanizma sunar. Geleneksel olarak Xamarin.Forms'ta `DependencyService` ve `Custom Renderers` kullanılırken, MAUI'de bu kavramlar `Handlers` ile modernize edilmiştir.
`Handlers`, MAUI'nin platformlar arası soyutlamaları ile yerel kontrol uygulamaları arasında bir köprü görevi görür. Her MAUI kontrolünün (örneğin `Button`) her platform için bir veya daha fazla yerel karşılığı vardır (örneğin Android'de `AppCompatButton`, iOS'ta `UIButton`). Handler'lar, bu yerel kontrollerin özelliklerini ve olaylarını MAUI tarafındaki kontrollere eşler. Kendi özel handler'larınızı oluşturarak veya mevcut handler'ları genişleterek yerel kontrol davranışlarını değiştirebilir veya kendi özel kontrollerinizi platforma özgü olarak uygulayabilirsiniz. Bu yaklaşım, daha esnek ve performanslı bir özelleştirme imkanı sunar.

.NET MAUI geliştirici topluluğu tarafından oluşturulan `MAUI Community Toolkit`, MAUI uygulamalarını geliştirirken sıkça karşılaşılan senaryoları ele alan bir dizi faydalı özellik, kontrol, davranış ve yardımcı sınıf içerir. Animasyonlar, validasyon davranışları, yeni kontroller (örneğin `StateContainer`, `Expander`) ve genişletilmiş özellikler gibi birçok eklenti sunar. Bu araç seti, geliştirme sürecini hızlandırır ve tekrarlayan kod yazma ihtiyacını azaltır. Projenize NuGet paketi olarak kolayca eklenebilir.
Microsoft Learn - .NET MAUI Topluluk Araç Seti adresinden daha fazla bilgi edinebilirsiniz.

Her uygulama geliştirmede olduğu gibi, .NET MAUI uygulamalarında da performans önemli bir faktördür.
  • UI Hiyerarşisini Basit Tutun: Derin ve karmaşık UI ağaçları oluşturmaktan kaçının. Mümkün olduğunca az sayıda iç içe geçmiş düzen ve kontrol kullanın.
  • Görüntüleri Optimize Edin: Yüksek çözünürlüklü görseller yerine, hedef platformlar için uygun boyutlarda ve sıkıştırılmış görseller kullanın. Gerektiğinde `ImageSource` önbelleklemesini kullanın.
  • ListView yerine CollectionView Kullanın: Özellikle uzun listelerde, daha performanslı olan `CollectionView`'i tercih edin. `CollectionView`, UI sanallaştırma (UI virtualization) ile sadece ekranda görünen öğelerin oluşturulmasını sağlayarak bellek ve CPU kullanımını optimize eder.
  • Kaynakları Doğru Yönetin: Gereksiz bellek kullanımını önlemek için kullanılmayan kaynakları (büyük nesneler, abonelikler) serbest bıraktığınızdan emin olun.
  • Asenkron Programlama: UI'ın donmasını engellemek için uzun süreli işlemleri asenkron olarak (`async/await`) çalıştırın.
  • Profilleme Araçlarını Kullanın: Performans sorunlarını tespit etmek için Visual Studio'nun profilleyicilerini kullanın.
Bu iyi uygulamalar, uygulamanızın daha akıcı çalışmasına ve daha iyi bir kullanıcı deneyimi sunmasına yardımcı olacaktır.

.NET MAUI, Microsoft'un cross-platform uygulama geliştirme vizyonunun geleceğini temsil etmektedir. Xamarin.Forms'un güçlü temelleri üzerine inşa edilen ve .NET ekosisteminin tüm avantajlarını bünyesinde barındıran MAUI, geliştiricilere mobil ve masaüstü platformlarda tek bir kod tabanıyla zengin, yerel görünümlü uygulamalar oluşturma gücü verir. Blazor Hybrid desteğiyle web geliştiricilere de kapılarını açan MAUI, modern uygulama geliştirmenin karmaşıklığını azaltırken, geliştiricilerin daha hızlı ve verimli bir şekilde inovasyon yapmalarına olanak tanır. Genişleyen topluluğu ve sürekli güncellenen araçlarıyla .NET MAUI, önümüzdeki yıllarda cross-platform uygulama geliştirme alanında önemli bir rol oynamaya devam edecektir. Eğer modern, performansı yüksek ve platformlar arası uyumlu uygulamalar geliştirmek istiyorsanız, .NET MAUI kesinlikle keşfetmeye değer bir teknolojidir. Bu platform, geleceğin uygulama mimarileri için sağlam bir temel sunmaktadır.
 
shape1
shape2
shape3
shape4
shape5
shape6
Üst

Bu web sitenin performansı Hazal Host tarafından sağlanmaktadır.

YazilimForum.com.tr internet sitesi, 5651 sayılı Kanun’un 2. maddesinin 1. fıkrasının (m) bendi ve aynı Kanun’un 5. maddesi kapsamında Yer Sağlayıcı konumundadır. Sitede yer alan içerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır.

YazilimForum.com.tr, kullanıcılar tarafından paylaşılan içeriklerin doğruluğunu, güncelliğini veya hukuka uygunluğunu garanti etmez ve içeriklerin kontrolü veya araştırılması ile yükümlü değildir. Kullanıcılar, paylaştıkları içeriklerden tamamen kendileri sorumludur.

Hukuka aykırı içerikleri fark ettiğinizde lütfen bize bildirin: lydexcoding@gmail.com

Sitemiz, kullanıcıların paylaştığı içerik ve bilgileri 6698 sayılı KVKK kapsamında işlemektedir. Kullanıcılar, kişisel verileriyle ilgili haklarını KVKK Politikası sayfasından inceleyebilir.

Sitede yer alan reklamlar veya üçüncü taraf bağlantılar için YazilimForum.com.tr herhangi bir sorumluluk kabul etmez.

Sitemizi kullanarak Forum Kuralları’nı kabul etmiş sayılırsınız.

DMCA.com Protection Status Copyrighted.com Registered & Protected