.NET MAUI Hikayesini Anlamak

Salih Cantekin
5 min readJul 26, 2022

--

Microsoft’un en sevdiğim yönlerinden bir tanesi de kurmuş oldukları ekosisteme sonuna kadar sahip çıkmalarıdır. Önce bunun kontrolü sadece bizde olsun diye düşündüler ancak modernleşen dünyada bunun iyi bir yol olmadığını anlayıp açık kaynak kod (open-source) kavramını da benimsediler. Bunu yaparak sadece transparan olmadılar aynı zamanda katkı yapmak isteyen insanların da desteklerini aldılar. İşte bu ekosistemi desteklemek ve sürdürmek istiyorsanız daha önce yapmadığınız işleri rakiplerinizden farklı ve daha iyi yapmak zorundasınız!

Microsoft Ekosistemi

C# Ekosistemi

Benim bu ekosisteme girdiğim ilk nokta 2005 yılında WinForm Uygulamalar ile olmuştu. Meslek listesindeki Zahide hocamız müfredatta yer almamasına rağmen sorumluluk alarak bizlere C# öğretmeye başlamıştı. İyi ki de yapmış.

Ancak daha sonradan anlaşıldığı üzere bu ekosistemde WinForm kullanabileceğimiz tek uygulama değilmiş. Web sayfaları da geliştirebiliyoruz, Console uygulamaları da. Bilgi Teknolojileri sektöründeki hızlı gelişmeler sonucunda ortaya artık mobil telefonlar ve doğal olarak mobil uygulamalar da çıkmaya başlamıştı. Microsoft kendi ekosistemine mobil uygulama geliştirmek için gerekli katkıyı erkenden sağlayamamıştı. Microsoft’un genel kuralı, bir developer benim ekosistemimde sadece ve sadece C# (F# ve visual basic de dahil) dilini kullarak farklı platformlar için uygulamalar geliştirebilsin. Bu durum Microsoft için mobil pazara girmelerini Xamarin platformunu yaratmalarının önünü açmıştı. Yine sadece C# dilini kullanarak Android, IOS veya Windows Mobile işletim sistemleri için uygulamalar geliştirilebilecekti. Tek bir kod yapısı ile birden fazla platformda çalışabilen uygulamalar için “Cross Platform” tabiri kullanılıyor. Ancak Microsoft’un rakipleri de boş durmuyor bir çok verimli dil geliştiriyorlardı. Bunların bir kısmı, bir çok yazılımcı tarafından kabul görmeyen Cross Platform destekleyen diller di. Diğer bir kısmı ise bir çok yazılımcıyı memnun eden Native uygulamalar geliştirebilmek için Native dilleri/araçları kullananlardı (xCode, Android Studio). Her ne kadar Xamarin o kadar popüler olmasa da büyük güncellemeler alarak kendisini rakiplerine yaklaştıracak hamleleri yapmıştı.

Xamarin

Xamarin yukarıda da bahsettiğim gibi mobil uygulamaların birden çok platformda çalıştırılmasını sağlayan ve Native çıktı üreten bir Microsoft ürünü. Microsoft’un şüphesiz en büyük hamlelerinden bir tanesi .Net Framework’leri birleştirerek tek bir yapıya dönmesi diyebiliriz. .Net Framework, .Net Standart, .Net Core gibi kavramlar artık NET çatısı altında toplanmıştı. Ben şahsen bu süreci iyi yönettiklerini düşünüyorum. Framework tarafında böyle bir birleşme mevcutken diğer alanlarda hala bir dağınıklık söz konusuydu. WinForms (windows veya MacOs), Web Pages, SPA (Blazor) ve Mobil(Android, IOS vs.) uygulamaların platformları hala ayrı ayrı duruyordu. SPA pazarına Blazor ile giren Microsoft’un yine kuralı aynıydı. C# dilini kullarak bu hizmeti yazılımcılara sunmak.

Blazor

Blazor, WebAssembly veya Server sürümlerine sahip SPA(Single Page Application) yaklaşımı ile uygulamalar geliştirebileceğimiz Microsoft ürünüdür. SPA pazarında kendini ön plana çıkartmak için bu alana oldukça yatırım yapan Microsoft’un son bir hamlesi daha kalmıştı bu dağınıklığı biraz daha toparlayabilmek için.

MAUI

Ya kardeşim sen zaten bu makaleye MAUI yi anlatacağım diye başlamadın mı, neden bize Blazor‘dan Xamarin’den bahsediyorsun diyor olabilirsiniz. Ama biraz daha sabırlı olalım :) Hepsini birbirine bağlayacağım.

Desktop Uygulamalar, Web Ortamı ve Mobil Platformlar Microsoft ürünlerini kullanarak uygulama geliştirebileceğimiz ortamlardır. Ancak bunların da kendi içerisinde alt kategorilere ayrılıyor olması bir çok zaman can sıkıcı olabiliyor. Yani Desktop diyip geçiyoruz ama genelde Windows işletim sistemlerindeki Desktop uygulamalar geliyor ama macOs işletim sistemine uygulama yazacaksak ne yapacağız?

Bu sebeple bu platformlar için de Microsoft’un elini taşın altına koyup .NET Framework birleştirme gibi bir şey yapması gekiyordu ki hayatımıza MAUI kavramı girdi.

Bu kavramı çok sık duyacağız. Çünkü Microsoft tarafında devrim yaratan projelerden birisi olabilir. Ancak bununla da kalmayarak bizim gibi yazılımcılar için de aynı etkiyi yaratabilir. Buradaki kural yine aynı. Sadece C# dilini kullarak uygulamalar ortaya çıkartabilmek. Peki nasıl uygulamalar ortaya çıkartabiliyoruz?

MAUI ile Native Mobil (Android, ios), Desktop (windows, macOS) uygulamalar geliştirebiliyoruz. MAUI ile geliştirilen bir uygulamanın Android platformunda çalışabilmesinden bahsetmiyorum ama karışmasın. MAUI kullanarak Android için Native bir uygulama geliştirmekten bahsediyorum.

Peki MAUI bu işlemleri nasıl sağlıyor? Yani ekrana eklediğim bir “buton” objesi nasıl hem Android hem, ios hem de Windows Desktop uygulamadaki ayrı ayrı buton olabiliyor?

Çok basit, abstraction (Soyutlama). OOP de yıllardır kullandığımız bir kavram bu soyutlama. Kısaca, ön planda sabit bir yapı arka planda ise değişken bir yapı diye düşünebiliriz. Yani bizim örneğimiz için MAUI burada soyut kısım oluyor. MAUI bize bir buton nesnesi veriyor biz de bunu ekranımızda kullanıyoruz. Daha sonra projemizi derlediğimizde hangi ortamda çalıştıracaksak, o arkada değişken olarak kalan parça yerini bulmuş oluyor. Android için derliyorsak uygulamamızı o değişen kısım android oluyor ve biz de android butona sahip oluyoruz bir anda. “Cross Platform” yaklaşımını bu şekilde halletmiş Microsoft.

Peki işletim sistemine özgü bir şey yapabilecek miyiz?

Bunun sorunun cevabı kocaman bir EVET. Tek bir proje klasörü altında Platforms ismindeki klasörün altında, uygulamayı derleyebileceğimiz projeler için ayrı klasörler var. Bunların altında gerekli ayarlamaları ve özelleştirmeleri yapabiliyoruz. Bunun dışında kod içerisinde de şartlarımızı şu şekilde ekeyebiliyoruz.

Peki Blazor da geliştirdiğimiz uygulamalar ne olacak?

MAUI, Blazor ile hibrit bir yapı içerisinde çalışabiliyor olacak. Yani Blazor ile yazmış olduğunuz bir Web Projesi varsa, bunu MAUI’yi taşıyıcı olarak kullanıp diğer platformlarda yayınlayabileceksiniz. Zannediyorum ki native bir MAUI içerisinde bir web sitesi açıyor gibi olmayacağız. Microsoft burada WebView kullanmıyor bildiğim kadarıyla :)

Xamarin varken neden MAUI?

MAUI, Xamarin’in bir üst sürümü olarak görülebilir. Xamarin ile Desktop seviyesine uygulamalar geliştiremiyoruz. Tabi ki aralarında başka farklar da var. Bu sebeple sizi şu yazıya yönlendirebilirim. MAUI hayatımıza girdikten sonra Xamarin Microsoft tarafından yeni güncellemeler alacak mı henüz bilmiyorum ama Xamarin uygulamalarımızı kolay bir şekilde MAUI ye çevirip kullanabileceğiz.

Umarım keyifli bir okuma olmuştur. Başka yazılarda görüşmek üzere.

Tech Buddy youtube kanalı

--

--