MVVMCross, model-view-viewModel (MVVM) mimari modelinden yararlanarak platformlar arası uygulamalarda kod yeniden kullanımını önemli ölçüde iyileştirir. İşte bunu nasıl başarıyor:
1. Endişelerin ayrılması: MVVMCross, uygulamayı iki ana parçaya bölerek açık bir şekilde ayrılmayı teşvik eder: çekirdek ve kullanıcı arayüzü. Temel proje, tipik olarak taşınabilir bir sınıf kütüphanesi (PCL) veya .NET standart kütüphanesi, tüm ViewModels, modeller ve iş mantığını içerir. Bu, iş mantığı platforma özgü koddan ayrıldığından, farklı platformlarda maksimum kod yeniden kullanımına izin verir [1] [2] [7].
2. Çekirdek Projedeki ViewModels: ViewModels'i temel projeye yerleştirerek MVVMCross, geliştiricilerin bu bileşenleri birden çok platformda paylaşmalarını sağlar. Bu, kullanıcı etkileşimleri, veri manipülasyonu ve navigasyonun işlenmesi mantığının iOS, Android ve Windows [1] [3] [9] gibi farklı platformlarda değişiklik yapmadan yeniden kullanılabileceği anlamına gelir.
3. Veri Bağlama: MVVMCross, ViewModel'de değişiklikler meydana geldiğinde UI'yi otomatik olarak güncelleyen veri bağlamasını destekler. Bu özellik, platformlar arasında tutarlılığı korumak için çok önemlidir ve manuel kullanıcı arayüzü güncellemelerine olan ihtiyacı azaltarak kod yeniden kullanımını daha da artırır [4] [5].
4. Bu özellikler, geliştiricilerin platforma özgü işlevleri temel projeden kolayca erişilebilecek ve yeniden kullanılabilecek şekilde uygulamalarına olanak tanır. Bu, UI katmanı platforma özgü olmalı olsa da, temel işlevlerin birçok işleyebileceği anlamına gelir [3] [9].
5. Navigasyon ve Görünüm Sunumcıları: MVVMCROSS, temel projeden uygulama navigasyonunun düzenlenmesine izin veren güçlü bir ViewModel ilk navigasyon sistemi sağlar. Bu, kullanıcı etkileşimleri ve ekran geçişlerinin akışının merkezi olarak yönetilebileceği ve platforma özgü gezinme kodu ihtiyacını azaltabileceği anlamına gelir [7].
6. Verimli Proje Yapısı: MVVMCross, çekirdekteki platform-agnostik kod ile UI projelerinde platforma özgü kod arasında açık bir ayrılık ile proje organizasyonuna yapılandırılmış bir yaklaşımı teşvik eder. Bu yapı, platformlar arası uygulamaların daha kolay bakımını ve uzatılmasını kolaylaştırır [2] [9].
Genel olarak, MVVMCross, iş mantığını merkezileştirerek, veri bağlamasından yararlanarak ve platforma özgü işlevleri birleşik bir şekilde yönetmek için araçlar sağlayarak kod yeniden kullanımını geliştirir. Bu yaklaşım, yinelenen kod miktarını önemli ölçüde azaltır ve platformlar arası uygulama geliştirmeyi hızlandırır.
Alıntılar:[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[2] https://www.toptal.com/xamarin/cross-platform-apps-with-xamarin
[3] https://www.suneco.nl/blogs/boost-Your-xamarin-native-projects-with-mvvmcross/
[4] https://tiefenauer.github.io/blog/mobile-app-de-velopment-with-xamarin-and-mvmcross-part-1-introduction/
[5] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[6] https://diglib.tugraz.at/download.php?id=576a78335451d&location=browse
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://www.reddit.com/r/swift/comments/yrqlhu/is_crossplatform_the_future_of_mobile_decelopment/
[9] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvmcross-pramework/
[10] https://stackoverflow.com/questions/22409697/maximizing-ui-code-reuse-with-xamarin-mvvmcross