MVVMCross, Model-View-ViewModel (MVVM) modelini kullanarak platformlar arası uygulamalar oluşturmak için popüler bir çerçevedir. Veri bağlama ve bağımlılık enjeksiyonu gibi birçok fayda sunarken, kullanımı ile ilişkili birkaç zorluk vardır.
Çerçeve bileşenlerindeki kusurlar
MVVMCross ile ilgili temel zorluklardan biri, bazı bileşenlerinde, özellikle veri bağlamasını destekleyen Android ve iOS görüşleriyle ilgili olanlar içinde kusurların varlığıdır. Bu kusurlar kullanıcı arayüzü ile ilgili sorunlara yol açabilir ve ek hata ayıklama çabaları gerektirebilir. MVVMCross açık kaynaklı olduğundan, kullanıcılar düzeltmelere katkıda bulunabilir, ancak bu, çerçevenin iç kısımları hakkında kapsamlı bilgi sahibi olmayan geliştiriciler için her zaman kolay olmayabilir [3].
Başlangıç Hızı
MVVMCross uygulamaları genellikle diğer çerçevelere kıyasla daha yavaş başlangıç süreleri yaşar. Bu büyük ölçüde, çerçevenin mimarisinin doğasında bulunan başlatma sırasında kullanılan yansıma tabanlı mekanizmalardan kaynaklanmaktadır. Bu yavaşlık genel olarak Xamarin uygulamalarında da yaygın olsa da, hızlı uygulama lansmanları bekleyen kullanıcılar için bir dezavantaj olabilir [3].
ağrıları yükselt
MVVMCross sürümlerinin yükseltilmesi, adlandırma kuralları ve davranışlarındaki önemli değişiklikler nedeniyle zor olabilir. Belgeler genellikle bu güncellemelerin gerisinde kalır ve yeni sorunlara çözüm bulmada zorluklara yol açar. Bu, uzun ve bazen sinir bozucu bir yükseltme işlemi ile sonuçlanır [3].
Dokümantasyon Kalitesi
MVVMCross belgelerinin kalitesi başka bir zorluktur. Genellikle yazım hataları içerir, kapsamlı referans materyallerinden yoksundur ve kırık bağlantılar içerir. Geliştiriciler, zaman alıcı olabilecek ve çerçevenin mimarisinin iyi anlaşılmasını gerektiren doğru bilgileri bulmak için genellikle çerçevenin kaynak kodunu incelemek zorundadır [3].
modası geçmiş örnekler
MVVMCross, örnek projelerin bir deposunu sağlar, ancak bu örneklerin çoğu modası geçmiş ve çerçevenin en son sürümleriyle uyumlu değildir. Bu, yeni geliştiricilerin başlamasını veya mevcut geliştiricilerin çerçevedeki değişikliklere uyum sağlamasını zorlaştırır. Sadece birkaç örnek aktif olarak korunur, bu da öğrenme ve sorun giderme için yararlılıklarını sınırlar [3].
Veri Bağlama Sınırlamaları
MVVMCross veri bağlamasını desteklerken, bir kerelik bağlanma gibi bazı bağlanma modları daha az yaygın olarak kullanılır ve tüm senaryolar için uygun olmayabilir. Bu mod, viewModel'den aktif olarak izlemez, bu da uygun şekilde yönetilmezse görünümde modası geçmiş verilere yol açabilir [1].
Navigasyon ve Yaşam Döngüsü Sorunları
ViewModels arasında gezinmek ve yaşam döngüsünü yönetmek, özellikle Android'de Tomboning gibi platforma özgü davranışlarla uğraşırken karmaşık olabilir. MVVMCross, bu senaryoların yönetilmesine yardımcı olmak için yaşam döngüsü yöntemleri sağlar, ancak bunlara hakim olmak hem çerçevenin hem de temel platform özelliklerinin iyi bir şekilde anlaşılmasını gerektirir [7].
Kontrol ve servis bulucunun ters çevirmesi
MVVMCross'un yerleşik servis bulucu modeli ve kontrol (IOC) desteğinin güçlü özellikleri olsa da, dikkatli kurulum ve yönetim gerektirir. Özellikle daha büyük uygulamalarda, uygun şekilde organize edilmezse, hizmetlerin kaydedilmesi ve bağımlılıkların çözülmesi karmaşık hale gelebilir [3] [6].
Özetle, MVVMCross platformlar arası geliştirme için birçok fayda sunarken, kusurlar, performans, dokümantasyon ve karmaşıklık ile ilgili çeşitli zorluklar sunmaktadır. Bu zorlukların ele alınması, çerçevenin ve altta yatan teknolojilerin derinlemesine anlaşılmasını gerektirir.
Alıntılar:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://github.com/mvvmcross/mvvmcross/issues/4201
[3] http://wojosoftware.com/software/mvmcross/
[4] https://www.mvvmcross.com/documentation/adved/customizing-using-app-and-setup
[5] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[7] https://www.mvvmcross.com/documentation/fundament/viewmodel-lifecycle
[8] https://stackoverflow.com/questions/16301045/mvvmcross-v3-is-that-wrong-tro-to-to-behaviours-and--mu-mu.