Tag Archives: kurulum

.NET MAUI Nedir? | .NET MAUI Mimarisi ve Kurulumu

.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 ve netstandard‘ı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 ve Xamarin.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.

BenchmarkDotNet | Kurulumu ve Temelleri 1. Kısım

Yazdığınız bir kod parçası ne kadar verimli? Az önce yaptığınız değişiklik uygulamanızı iyileştirecek mi? Bunu nereden biliyorsunuz? Bu değişiklik ne kadar önemliydi? Bunlar kıyaslama yani benchmarking yapmadan cevaplanamayacak sorular. Bu video serisinde, kodun ne kadar verimli olduğunu belirlemek için Benchmarkdotnet‘in kodu değerlendirmek için nasıl kullanılacağına ve ardından kodun değiştirilmiş bir versiyonuna kıyasla ne kadar verimli olduğuna bakacağız.

BenchmarkDotNet, yöntemleri karşılaştırma ölçütlerine dönüştürmenize, performanslarını izlemenize ve tekrarlanabilir ölçüm deneylerini paylaşmanıza yardımcı olur. Birim testleri yazmaktan daha zor değil! BenchmarkDotNet sizi popüler kıyaslama hatalarından korur ve kıyaslama tasarımınızda veya elde ettiğiniz ölçümlerde bir sorun olduğunda sizi uyarır. Sonuçlar, denemenizle ilgili tüm önemli gerçekleri vurgulayan kullanıcı dostu bir biçimde sunulur. Proje, .NET Runtime dahil olmak üzere 6800’den fazla proje tarafından benimsenmiş ve .NET Foundation tarafından desteklenmektedir.

Tipik bir durumda ne yapmanız gerektiğini düşünelim. İlk olarak, bir pilot deney yapmalı ve en iyi yöntem çağırma sayısını belirlemelisiniz. Ardından, birkaç ısınma yinelemesi gerçekleştirmeli ve karşılaştırma ölçütünüzün sabit bir duruma ulaştığından emin olmalısınız.

Elle yazılmış birçok kıyaslama, yanlış iş kararlarına yol açan yanlış sayılar üretir. BenchmarkDotNet, sizi kıyaslama tuzaklarının çoğundan korur ve yüksek ölçüm hassasiyeti elde etmenizi sağlıyor.

Mükemmel yöntem çağırma sayısı, ısınma ve gerçek yineleme sayısı hakkında endişelenmemelisiniz: BenchmarkDotNet en iyi kıyaslama parametrelerini seçmeye çalışır ve ölçüm öngörüsü ile tüm kıyaslama çalıştırmalarının toplam süresi arasında iyi bir denge elde etmeye çalışır.

Videoda neler öğrendik?

➡️ Benchmark attribute kullanımı

➡️ MemoryDiagnoser attribute kullanımı

➡️ BenchmarkRunner.Run kullanımı

✅ Gen 0, Gen 1 ve Gen 2 nedir ve nasıl çalışır?

Küçük .NET nesneleri, küçük heap’lere tahsis edilir. Bunlardan üç tane vardır: Gen 0, Gen 1 ve Gen 2. Gen 0’a yeni nesneler yerleştirilir.

Gen 0 dolduğunda, .NET Garbage Collector çalışır, artık ihtiyaç duyulmayan nesneleri elden çıkarır ve diğer her şeyi Gen 1’e taşır. Gen 1 dolarsa, GC yeniden çalışır, aynı zamanda Gen 1’deki nesneleri Gen 2’ye taşır.

Gen 2 dolduğunda tam bir GC çalışması gerçekleşir. Bu, gereksiz Gen 2 nesnelerini temizler, Gen 1 nesnelerini Gen 2’ye taşır, ardından Gen 0 nesnelerini Gen 1’e taşır ve son olarak referans verilmeyen her şeyi temizler.

Kaynaklar:

✔️ https://benchmarkdotnet.org/

✔️ https://www.red-gate.com/products/dotnet-development/ants-memory-profiler/learning-memory-management/memory-management-fundamentals