.NET Multiplatform App UI (kısaca MAUI), Windows
, macOS
, iOS
ve Android
‘i hedefleyen cross platform UI uygulamaları oluşturmak için Microsoft’un yeni bir framework’ü.
.NET MAUI ile bu platformlardan herhangi birinde çalışan zengin, etkileşimli, yerel bir UI uygulaması oluşturabilirsiniz. Tek bir kod tabanı ile tüm bu platformları destekleyen ve kodun %100’ünü aralarında paylaşan bir uygulama oluşturabilirsiniz. Kısacası bir .NET dilinde bir uygulama yazıyorsunuz ve hedef platformların hiçbirinde herhangi bir değişiklik yapmadan çalışıyor. Tüm kod mantığınız bir .NET dilinde yazılabilir ve kullanıcı arayüzünüz de XAML veya seçtiğiniz .NET dilinde tanımlanabilir.
Seçtiğiniz .NET dilini (VB.Net
, F#
veya C#
) kullanarak, .NET MAUI uygulamalarında kod yazabilirsiniz. Kullanıcı arayüzünüzü kodda da tanımlamanız mümkündür, ancak yalnızca C# ve F# desteklenir.
Bir .NET MAUI uygulamasının mimarisinin nasıl olduğunu ve bir .NET MAUI uygulamasının nasıl bir araya geldiğine bakalım;
- En altta hedef işletim sistemimiz var (Android, iOS, macOS ve Windows). Sonraki katman, her hedef işletim sisteminde .NET MAUI uygulamamızı çalıştıracak .NET runtime’ı gösterir. Android, iOS ve macOS için bu çalışma zamanı Mono‘dur ve Windows için WinRT‘dir.
- Bir sonraki katman, ilk abstraction katmanımız – .NET Base Class Library (BCL). BCL, .NET’in temel öğelerinin bir parçasını oluşturmayan List ve Generics gibi beklediğimiz tüm ortak dil özelliklerine erişim sağlar. Geliştirici açısından bakıldığında, .NET 5 ve .NET 6,
netcoreapp
venetstandard
‘ın yerini alarak hedef framework’ler haline geldi. .NET 6’da bir .NET MAUI uygulaması yazarken, tüm platformlarda BCL’ye erişiminiz olur.
- BCL’nin üzerinde bulunan bir sonraki katman, platforma özel API’ler için soyutlamalara erişim sağlar. Android için .NET ve iOS için .NET, sırasıyla
Xamarin.Android
veXamarin.iOS
‘un sonraki yinelemeleridir. Mac için .NET yeni geliştirilmiş Microsoft tarafından ancak aynı şekilde çalışır ve Windows için WinUI API’si kullanılır.
- Son abstraction kısmı ise .NET MAUI’dir. Bu, desteklenen tüm platformlarda ortak olan UI öğeleri sağlayan birleşik bir API’dir. Bunlara layouts, buttons, text entry fields, navigation API vs. gibi örnekler verebiliriz. “Essentials” namespace’i aracılığıyla, (
Xamarin
‘de bu ayrı bir paketmiş bu) Bluetooth, konum hizmetleri ve cihaz depolaması gibi genel donanım özelliklerine de erişebilirsiniz.
Katmanlara aşağıdan yukarıya bakarken, bir .NET MAUI uygulaması oluşturma felsefesi yukarıdan aşağıya daha çok kabul edilir.
1- .NET MAUI kodu yazarak (örneğin, iOS veya Android kodu yerine) bir cross platform uygulaması oluşturursunuz.
2- İsterseniz, yine de uygulamanıza platforma veya işletim sistemine özel kod yazabilirsiniz, ancak bunu yapmak zorunda değilsiniz.
3- .NET MAUI, kodunuzu alır ve hedef platform için derler. .NET MAUI’nin çeşitli platformlar için uygulamanızı nasıl oluşturduğunu anlamak, bir .NET MAUI uygulaması oluşturmak için gerekli değildir, ancak bu platformları iyi anlamak faydalıdır.
.NET MAUI, Xamarin.Forms
‘un bir sonraki sürümünden çok daha fazlasıdır. Xamarin, .NET’ten bağımsız olarak yüklediğiniz bir yazılım SDK’sı iken, MAUI bir workload, yani tıpkı ASP veya konsol uygulaması geliştirme gibi .NET’in bir parçasıdır.
Visual Studio içerisindeki proje template’leri:
– .NET MAUI App
: Bu, yeni .NET MAUI uygulamaları oluşturmak için kullanılan ana şablondur.
– .NET MAUI Blazor App
: Bu template, kullanıcı arabirimini tanımlamak için Blazor kullanan yeni bir .NET MAUI uygulaması oluşturmak için kullanılır.
– .NET MAUI Class Library
: Bu template, farklı .NET MAUI projeleri arasında kod paylaşımı için yeni bir class library oluşturur.
Tüm konuştuklarımızı özetlemek gerekirse;
1- .NET MAUI bir cross platformdur, bir kez yazılır, her yerde çalıştırılır. WORA (Write Once Run Anywhere) UI uygulama platformudur. Yalnızca bir .NET MAUI uygulaması oluşturabilirsiniz ve daha fazla değişiklik yapmadan birden çok platformda çalışacaktır.
2- .NET MAUI ile native uygulamalar yazabilirsiniz. .NET MAUI uygulamaları native uygulamalardır.
3- .NET MAUI’de web uygulamalarına göre işlevsel, performans ve güvenlik avantajları olan uygulamalar oluşturabilirsiniz.
4- .NET MAUI uygulamaları oluşturmak için tüm .NET ekosistemini kullanabilirsiniz. Bu, tüm favori NuGet
paketlerinizi ve bir .NET geliştiricisi olarak tüm becerilerinizi içerir.
5- .NET MAUI uygulama kullanıcı arabirimlerini XAML, C#, F# veya Blazor’da yazabilirsiniz.