Microsoft’un Mobil Uygulama Geliştirme Serüveni ve .NET MAUI

Emeltemakcay
riseconsulting
Published in
9 min readOct 19, 2023

By İlker Işık, Onur Dikmen

Microsoft, mobil uygulama geliştirmeye olan ilgisi nedeniyle büyük bir yolculuğa başladı. Bu yazıda, bu serüveni ve son durağı olan .NET MAUI’yi ele alacağız.

.NET MAUI, Microsoft’un mobil uygulama geliştirmek için sunduğu son yenilik ve çözümüdür. Ancak buna geçmeden önce eski girişimleri ve denemeleri de kısaca açıklayalım.

Microsoft için Mobil Uygulama Geliştirmenin Evrimi,

.Net ile bir web, masaüstü gibi uygulamaların geliştirilmesine olanak sağlanıyordu ancak gelişen mobile piyasadan da pay alabilmek ve kullanıcılarına imkan sağlayabilmek adına mobile platformlar içinde uygulama geliştirmeye imkan vermesi gerekiyordu.

İlk olarak Windows Pocket PC, Microsoft tarafından geliştirilen ve özellikle taşınabilir cihazlar için tasarlanmış minimal özellik içeren ve C# ile form uygulamaları mantığında geliştirilen bir yapıdadır.

Windows Pocket PC süreci Windows Mobile işletim sistemiyle ile birlikte tamamlandı. 2000'lerin başında Windows Mobile işletim sistemiyle mobil uygulama geliştirmeye başladı. Bu işletim sistemi, farklı taşınabilir cihazlarda (cep telefonları, el bilgisayarları vb.) kullanılmak üzere tasarlandı.

Windows Mobile, özellikle kurumsal pazar için önemliydi ve iş yerlerinde kullanılan cihazlar için uygulama geliştirmek isteyen geliştiricilere olanak sağladı. .NET Compact Framework ile C# uygulama geliştirmeye olanak sağladı. Geliştiriciler uygulamalarını paylaşabilecekleri “Windows Mobile Marketplace” oluşturuldu ve bu heyecan ile bir çok uygulama markete yüklendi. Zamanla Android ve IOS popülerliliği sebebi ile Windows Mobile 6.5 sürümü ile Microsoft mobil stratejilerini değiştirdi.

Windows Phone işletim sistemi, 2010 yılında tanıtıldı ve Windows Mobile’un yerini aldı. Kullanıcı dostu Metro tasarım arayüzünü tanıttı ve kullanıcılar için yenilikçi bir deneyim sunmayı amaçladı.

Windows Phone 8 ve 8.1, geliştiricilere daha fazla esneklik sunarak platformun büyümesini teşvik etti. C# ve XAML gibi teknolojileri kullanarak bu dönemde daha fazla uygulama geliştirme fırsatı sağlandı.

.Net Developer’lar artık mobile dünyada daha fazla uygulama geliştirme imkanı bulmuş oldu. Visual Studio sağladığı XAML editör ve ardından simülatör ekranları ile daha rahat bir geliştirme sağlanabiliyordu.

XAML Nedir?

XAML (Extensible Application Markup Language), Microsoft teknolojileri için kullanılan XML tabanlı, arayüz geliştirme, veri vağlantısı kurma (data-binding) ve olay yönetimi için .NET platformlarında kullanılan arayüz odaklı bir uygulama geliştirme dilidir. XML ve HTML yapılarını benimsemiştir. C# veya VB.NET kodu ile kolayca entegre edilebilir durumdadır.

Bu geliştirmeleri hızlandırmak için Visual Studio ile ilişkilendirilen Microsoft Expression ürün dizisini de kullanıcılarına sundu.

C# ve XAML ilişkisinde bir çok uygulama geliştirme senaryoları ortaya çıkmıştır. Vektörel tabanlı ve GUI odaklı gelişimler için bu iki yapıyı birleştirerek bir farklı bakış açıları da kazandırılmaya çalışılmıştır.

Örnek olarak WPF, Silverlight, XBOX uygulamaları, Windows Metro Style App oluşumlarına olanak sağlamıştır.

WPF (Windows Presentation Foundation), Microsoft tarafından geliştirilen ve masaüstü uygulamaları oluşturmak için kullanılan bir proje yapısıdır.

XAML

<Window x:Class="WpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WPF Uygulaması" Height="350" Width="525">
<Grid>
<Button Content="Button" HorizontalAlignment="Center" VerticalAlignment="Center" Click="OnButtonClick"/>
</Grid>
</Window>

C#

using System.Windows;
namespace WpfApp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void OnButtonClick(object sender, RoutedEventArgs e)
{
MessageBox.Show("Merhaba, WPF!");
}
}
}

Silverlight, Microsoft tarafından geliştirilen ve web tarayıcılarında zengin internet uygulamaları oluşturmayı sağlayan bir web tarayıcı eklentisidir. WPF için hazırlanan XAML tasarımları artık web projesi olarakta kullanıma sunulacağı düşüncesi bir çok .Net kullanıcısını heyecanlandırdı.

Microsoft’un Silverlight serüvenide geniş bir yelpazede değerlendirilebilir aslında ancak kısaca;

Flash ActionScript : Web tabanlı client bazlı yüksek grafik ve animasyonlara destek veren bir oluşumu vardı.

Java Applet : Web tabanlı client bazlı uygulama imkanları veren bir oluşumu vardı.

Bunun gibi gelişmelerde de .Net kullanıcılarını eksik bırakmamak adına WPF ile masaüstünde verdiği imkanları Web içinde vermek adına Silverlight için adımlar attı. Zengin multimedya, grafik, animasyon ve interaktif uygulamalar geliştirmek için kullanıldı. Ancak, Microsoft 2012 yılında Silverlight’ın geliştirilmesini durdurdu ve tarayıcılar da bu eklentiye olan desteği azalttı.

Silverlight için bir örnek;

XAML

<UserControl x:Class="SilverlightApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid x:Name="LayoutRoot" Background="White">
<Button Content="Button" HorizontalAlignment="Center" VerticalAlignment="Center" Click="OnButtonClick"/>
</Grid>
</UserControl>

C#

using System.Windows;
using System.Windows.Controls;

namespace SilverlightApp
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}

private void OnButtonClick(object sender, RoutedEventArgs e)
{
MessageBox.Show("Merhaba, Silverlight!");
}
}
}

Telefon üreticileri HP iPAQ, HTC Touch, Motorola Q, Nokia Lumia gibi Windows temelli versiyonlarını piyasaya sürdü. Ancak yine pazarda Android ve IOS daha baskın olduğu için beklentileri karşılamadı.

Yine o yıllarda mobile uygulama geliştirmek için çeşitli imkanlar vardı. Bunlardan bir tanesi de günümüzdeki mobile platformlara destek vermek için kurulan altyapının başlangıcı ve mimarı olan Xamarin.

Xamarin, Nat Friedman ve Miguel de Icaza tarafından kurulmuştur. Cross-Platform Mobile uygulama geliştirme imkanları veren bir platform olarak gündeme gelmiştir.

2012 yılında Xamarin, iOS ve Android için uygulama geliştirme platformlarını piyasaya sürdü. Xamarin.iOS (o zamanlar MonoTouch olarak bilinirdi) ve Xamarin.Android (o zamanlar Mono for Android olarak bilinirdi) geliştiricilere platformlar arası uygulamalar oluşturma olanağı sağladı.

Ücretli bir platform olarak kullanılan Xamarin 2013 yılında ücretsiz versiyonlarıyla büyük kitlelere ulaşmaya başladı.

Microsoft bu süreçte cross platform mobile uygulamalar için yeni arayışlara devam etse de çok fazla aktif olamadı, Visual Studio’da Cordova gibi açık kaynak platform desteklerini de verdi ancak çok fazla etkileşim yakalayamadı.

Microsoft 2016 yılında Xamarin satın alarak bünyesine dahil etti. .Net teknolojilerine bir yenisini katarak, C# ve .NET kullanarak Android ve iOS alanında da uygulama geliştirme hizmetini kullanıcıları vermiş oldu. Artık .Net ile IOS, Android ve Windows uygulamaları tek platform üzerinden sağlanabilecekti.

Bu satın alma, mobil uygulama geliştirme için önemli bir dönüm noktasıydı.

2017 yılında Xamarin.Forms geliştirmelerini yaparak alışılmış form tasarlama imkanını sağladı. Bu aşamada Visual Studio ile tam destek vermeye başladı.

XML tabanlı XAML kodlama ile yapılan tasarımları Visual Studio Blend ürünü ile destekleyerek daha görsel odaklı uygulama tasarlamaya da imkan vermiş oldu.

IOS ve Android için uygulama geliştirme .Net Developer’ler içinde sık kullanılan yöntemler arasına katıldı. Microsoft bu girişimle birlikle kullanıcılarının Web, Masaüstü, Mobile ve XBOX için uygulama geliştirmelerine olanak sağlayarak tüm platformlarda hakimiyetini arttırdı. Son güncellemeler ile MAC içinde uygulama yazılabilmenin önünü açarak daha da geniş bir sahaya erişmiş oldu.

.Net Compact Framework günlerinden .Net Framework, .Net Core ve .Net geçişleri ile framework alanında yapılan geliştirmeler ile tek geliştirme ile çoklu platformlarda uygulama yayınlama konularında yükselmeye de devam etti.

2020'lerin başlarında .NET MAUI’yi (Multi-platform App UI) duyurarak Xamarin.Forms’un yerini alacağını ve daha fazla platformu destekleyeceğini açıkladı.

.NET MAUI Nedir?

.NET MAUI, tek bir kod tabanı üzerinde çalışan ve birden fazla platformda (Windows, macOS, iOS, Android) çalışabilen çoklu platform uygulamaları oluşturmayı kolaylaştırmak için tasarlanmıştır.

Xamarin.Forms’un gelişmiş bir sürümü olarak düşünülebilir.

.NET MAUI hakkında bazı önemli bilgiler

Çoklu Platform Desteği: Tek bir kod tabanı kullanarak iOS, Android, Windows, macOS ve diğer platformlarda çalışabilen uygulamalar oluşturmanızı sağlar. Bu, geliştiricilere yazılım maliyetlerini ve geliştirme süresini azaltma olanağı sunar.

Xamarin.Forms Tabanlı Geliştirme: Temelde Xamarin.Forms teknolojisinin geliştirilmiş ve genişletilmiş bir sürümüdür. Bu nedenle, Xamarin.Forms bilen geliştiricilerin geçiş yapması daha kolay olabilir.

UI ve UX Tasarım: .NET MAUI, modern ve kullanıcı dostu arayüzler oluşturmak için XAML, Razor ve C# kullanmanıza olanak tanır. Ayrıca, geliştiricilerin uygulamalarını belirli platformlara özgü özelliklerle zenginleştirmesine olanak tanır.

Araç Desteği: Visual Studio ve Visual Studio for Mac gibi geliştirme araçları ile tam entegrasyon sunar, bu da geliştirme sürecinizi kolaylaştırır.

Open Source: .NET MAUI açık kaynaklıdır ve geliştiricilerin topluluk katkısı yapmasına ve gelişmesine olanak tanır.

Visual Studio varsayılan olarak .Net MAUI App , .NET MAUI Blazor App, .NET MAUI Class Library projesi başlatmaya imkan vermektedir.

MAUI projesi içeriğinde Android, IOS, Mac Catalyst, Tizen ve Windows olarak bölümleri içermektedir. Bu sınıflar sayesinde tek kurgu ile birden fazla platform için çıktı alınabilecektir.

MAUI uygulamalarını geliştirirken kullanabileceğiniz iki temel kullanıcı arayüz dili vardır: XAML ve Razor.

XAML, geleneksel .NET MAUI uygulamaları için kullanılan kullanıcı arayüz tasarım dilidir. Öte yandan, Razor, .NET MAUI Blazor uygulamaları için kullanılan bir kullanıcı arayüz dili ve web uygulamalarından aşina olduğumuz bir yapıdır.

İlk olarak .NET MAUI App olarak bir proje başlatalım.

Bu tipteki örnekte proje tasarımında XAML varsayılan olarak gelecektir ve XAML tasarımları ile ilgili dizayn yapılabilecektir. Arkaplanda yine C# kodları ile işlemlere devam edebileceğiz.

Örneğimizde bir proje başlatıldı ve içerisinde varsayılan olarak platformlar geldi. Her platform için ilgili ayarları, izinleri verebilir, platform bazlı olarak geliştirmeleri yapabiliriz. Bu örneğimizde proje tasarımları XAML olarak yapılabilecektir.

İlk projemizi saniyeler içerisinde oluşturduk ve istediğimiz platform için önizlemelerini yaptık.

Örnek xaml ve C# kodlarını tüm platformlar için yazmış olduk.

Microsoft; WPF, Silverlight ve Xamarin.Forms’da alışılan XAML tasarımlarını benimseyen kullanıcıların gönüllerini kazanıp XAML odaklı yapıya .NET MAUI ile destek vermeye devam etmiştir.

Xamarin.Forms Projelerim var bunları tekrar MAUI de yazmam gerekiyormu diyen geliştiriciler içinde bazı yönergeler yayınlayarak projelerini MAUI’ye taşıyabilecekleri yöntemleri duyurmuştur.

İsterseniz eski Xamarin uygulamalarınızı da çok kolay bir şekilde .Net MAUI dönüşümü yaparak kullanmaya devam edebilirsiniz.

.Net Yönergelerine göre aşağıdaki adımları uygulayarak Xamarin.Forms projelerinizi yüksektebilirsiniz.

· Sınıf kitaplığı projesini Xamarin.Forms , Xamarin.iOS projesini ve Xamarin.Android projesini SDK stili projelere dönüştürün.

· Proje dosyalarındaki hedef çerçeveyi net7.0-android gerektiği gibi ve net7.0-iosolarak güncelleştirin.

· Proje dosyalarında ayarlayın <UseMaui>true</UseMaui> .

· Başka proje özellikleri ekleyin ve gerekli olmayan proje özelliklerini kaldırın.

· Belirli NuGet paketlerini ekleyin ve kaldırın:

· Xamarin.Forms ve Xamarin.Essentials NuGet paketlerini kaldırın.

· Xamarin.CommunityToolkit NuGet paketini NuGet paketiyle .NET MAUI Community Toolkit değiştirin.

· Kullanılıyorsa NuGet paketlerinin SkiaSharp uyumlu sürümlerini .NET MAUI uyumlu sürümleriyle değiştirinXamarin.Forms.

· Ad alanına başvuruları Xamarin.Essentials kaldırın ve ad alanını Xamarin.Forms ve Microsoft.Maui.Controls ad alanlarıyla Microsoft.Maui değiştirin.

Farklı yükseltme seçeneklerini ve yeni değişime uğrayan namespace bilgilerini “multi-project-to-multi-project” adresinden inceleyebilirsiniz.

MAUI, XAML tasarım yapısını alternatif olarak Blazor ile html, js gibi web tabanlı işaretleme dilleri kullanarak da mobile uygulama tasarımları oluşturabilmeye olanak tanımaktadır.

Blazor, Razor sözdizimini kullanarak C# kodunu içeren etkileşimli web kullanıcı arayüzleri oluşturmanıza olanak tanır. Razor, ASP.NET Core uygulamalarında kullanılan bir görünüm motorudur ve web uygulamaları için dinamik içerik oluşturmak amacıyla kullanılır. .NET MAUI’nin özellikleri ve Blazor’un avantajları bir araya geldiğinde, .NET MAUI Blazor App ile modern, esnek ve kullanıcı dostu uygulamalar geliştirebilir.

.NET MAUI Blazor App olarak bir proje oluşturalım. Bu kısımda da aşağıdaki görüntüleri elde etmiş olacağız. Bu iki model de C# ile geliştirmeleri yapabiliriz.

Yukarıda gördüğünüz örnekte “Pages” klasöründe .razor dosyalarımız var ve içeriğine html, css olarak istediğimiz tasarımları ekleyebiliyoruz. Blazor’un bize sağladığı yapı ile de Razor içerisinde yada .cs içerisinde C# mettotlarımızı yazabiliyoruz.

.NET MAUI Blazor için html, css, razor ile birlikte mevcut web projelerimizde bulunan js dosyalarımızıda kullanabiliyoruz.

1) Numaralı işlem ile JS dosyalarını çağırabilmemiz için ekleme yaptık ve “MainDocReady” func js dosyasının içerisinden çağırıyoruz. Bu işlem kısaca .Net C# kodu ile bir javascript fonksiyonunu çağırma işlemini yapabilmemiz anlamına gelmektedir.

2) C# değişkenlerini razor içerisinde yazıp set edilmesi durumunda kod ile alabilmemizi temsil etmektedir.

3) C# kodu olarak yazılan bir metodu razor ile çağırma işlemini yaptığımız yerdir.

Özetlemek gerekirse, .NET MAUI, birden fazla platform için uygulama geliştirmek için XAML ve Razor gibi kullanıcı arayüzü tanımlama dillerini destekler. İhtiyaca ve deneyime göre tercihler değişebilir.

C# ve .NET kullanarak mobil uygulama geliştirmenin avantajları

Tek Dil Kullanımı: C#, .NET platformunda kullanılan ana dil olduğundan, hem mobil hem de masaüstü uygulamalar için aynı dili kullanabilirsiniz. Bu, geliştirme sürecini daha verimli hale getirir ve kod tabanının yeniden kullanılabilirliğini artırır.

Gelişmiş Çerçeveler ve Kütüphaneler: .NET, geniş bir çerçeve ve kütüphane koleksiyonuna sahiptir. Bu koleksiyon, mobil uygulama geliştirmeyi kolaylaştırır ve çeşitli işlevselliği hazır olarak sunar.

Güçlü Veri İşleme Yetenekleri: .NET’in güçlü veri işleme yetenekleri sayesinde, veritabanı entegrasyonu, veri işleme ve yönetimi gibi işlemleri kolaylıkla gerçekleştirebilirsiniz.

Kapsamlı Entegrasyon: C# ve .NET, çeşitli platformlar ve hizmetlerle kolay entegrasyon sağlar. Bu da dış kaynaklı hizmetlerin ve API’lerin uygulamalarınıza entegre edilmesini kolaylaştırır.

Güçlü Güvenlik Özellikleri: .NET’in güçlü güvenlik özellikleri, veri güvenliği, kimlik doğrulama ve yetkilendirme gibi kritik konularda daha güvenli uygulamalar geliştirmenize yardımcı olur.

Kolaylıkla Ölçeklenebilirlik: .NET, ölçeklenebilir uygulamaların geliştirilmesini destekler. Bu sayede uygulamalarınızı mevcut ihtiyaçlara ve kullanıcı taleplerine göre kolaylıkla ölçeklendirebilirsiniz.

Genişletilebilirlik ve Modülerlik: C# ve .NET, genişletilebilir ve modüler bir yapı sunar. Bu sayede uygulamalarınızı daha esnek hale getirebilir ve gelecekteki gereksinimlere kolaylıkla adapte edebilirsiniz.

ÖZET

Microsoft’un mobile hikayesi ve gelinen noktaları yazımızda değerlendirmeye çalıştık. Genel olarak tanık olduğumuz başarılı ve başarısız girişimleri ve gelinen noktaları sizlere aktarmaya çalıştık. Geliştirmeleri yakından takip etmeye ve tanık olmaya da devam edeceğiz.

Bunu mobile serüvenin bir başlangıcı olarak değerlendirip sonra ki yazılarımız da .NET MAUI ile neler yazılmış, neler yazılabilir, yeni özellikleri neler olacak, başka girişimlere devam edecek mi anlatmaya devam edeceğiz.

Bu yazı Rise Technology The Smurfs Takımı tarafından hazırlanmıştır.

Kaynaklar:

-https://dotnet.microsoft.com/

-https://docs.microsoft.com/en-us/dotnet/maui/

--

--