MVVMCross kullanımını Xamarin.Forms ve Xamarin Native ile karşılaştırırken, öncelikle UI esnekliği, kod paylaşımı ve geliştirme yaklaşımı açısından birkaç temel fark ortaya çıkar.
UI esnekliği ve kontrolü
- Xamarin.Forms: Bu çerçeve, platformlar arasında paylaşılan bir kullanıcı arayüzü katmanı sağlar, bu da UI kodu yazmanıza ve birden fazla platformda dağıtmanıza izin vererek gelişimi basitleştirir. Bununla birlikte, bu paylaşılan kullanıcı arayüzü, özelleştirmeyi platforma özgü özelliklerle sınırlayabilir ve daha gelişmiş kullanıcı arayüzleri için özel oluşturucular gerektirebilir [7] [9]. MVVMCross, iş mantığını ve navigasyonu yönetmek için xamarin.forms ile kullanılabilir, ancak kullanıcı arayüzü platformlar arasında standartlaştırılmıştır [1] [10].
- Xamarin Native: MVVMCross ile Xamarin Native kullanırken, her platform için kullanıcı arayüzü üzerinde tam bir kontrole sahipsiniz. Bu, her platformun yerel görünümünü ve hissini en üst düzeye çıkararak platforma özgü kullanıcı arayüzü uygulamalarına izin verir. Bu yaklaşım, iOS ve Android için ayrı kullanıcı arayüzü katmanları geliştirmek için daha fazla çaba gerektirse de, daha fazla esneklik ve özelleştirme sunar [7] [9].
Kod paylaşımı ve yeniden kullanın
- xamarin.forms: xamarin.forms ile sadece iş mantığını (mvvmcross aracılığıyla) değil, aynı zamanda platformlar arasında UI kodunu da paylaşabilirsiniz. Bu, gelişimi basitleştirir ve korumanız gereken kod miktarını azaltır. Bununla birlikte, kullanıcı arayüzü tüm platformlarda çalışan ortak bir öğe kümesi ile sınırlıdır [4] [10].
- Xamarin Native: MVVMCross ile yerel bir Xamarin kurulumunda, iş mantığını (ViewModels) platformlarda paylaşabilirsiniz, ancak UI'yi her platform için ayrı ayrı uygulamanız gerekir. Bu yaklaşım, MVVMCross kullanılırken sunum katmanında ve UI mantığında daha fazla kod yeniden kullanımına izin verir, ancak yine de platforma özgü kullanıcı arayüzü geliştirme gerektirir [9].
Geliştirme Yaklaşımı
- Xamarin.Forms: Xamarin.Forms ve MVVMCross ile gelişmek, platformlar arası UI gelişimini basitleştirdiği için, kapsamlı mobil deneyimi olmayan geliştiriciler tarafından genellikle tercih edilir. Çerçeve, altta yatan karmaşıklığın çoğunu ele alır ve geliştiricilerin paylaşılan mantığa ve kullanıcı arayüzüne odaklanmasına izin verir [4] [10].
-Xamarin Native: MVVMCross ile yerel Xamarin gelişimi genellikle kullanıcı arayüzü üzerinde ince taneli kontrol isteyen ve platforma özgü gelişme ile rahat olan geliştiriciler tarafından tercih edilir. Bu yaklaşım, yerel iOS ve Android geliştirmede daha fazla uzmanlık gerektirir, ancak kullanıcı arayüzü tasarım ve uygulamasında daha fazla esneklik sunmaktadır [7] [9].
Navigasyon ve bağlama
- Xamarin.Forms MVVMCross ile Formlar: Xamarin'de navigasyon MVVMCross ile Forms ViewModel düzeyinde yönetilir ve endişelerin temiz bir şekilde ayrılmasına izin verir. MVVMCross, geri dönüş değerleri gibi gelişmiş bağlanma özellikleri sağlar, ancak standart Xamarin.Forms Bağlamalarında bulunan kaynak özelliği gibi bazı özelliklerden yoksundur [2] [10].
- MVVMCross ile Xamarin Yerli: Yerli Xamarin projelerinde MVVMCross, platformlarda tutarlı bir MVVM mimarisine izin veren navigasyon ve viewModel eşleştirmeyi işler. Bu kurulum, geliştiricilerin paylaşılan bir iş mantığı katmanını korurken platforma özgü navigasyon modellerinden yararlanmalarını sağlar [3] [9].
Özetle, her iki yaklaşım da MVVM mimarisi için MVVMCross'tan yararlanabilirken, Xamarin.forms, platforma özgü kullanıcı arayüzü özellikleri üzerinde daha az kontrole sahip paylaşılan bir kullanıcı arayüzü katmanı sunarken, Xamarin Native UI özelleştirmesi üzerinde tam kontrol sağlar, ancak ayrı UI uygulamaları için daha fazla geliştirme çaba gerektirir.
Alıntılar:[1] https://www.mvvmcross.com/documentation/platform/xamarin.forms/xamarin-forms
[2] https://www.xamarinhelp.com/use-xamarin-forms-mvvm-framework/
[3] https://canbilgin.wordpress.com/tag/mvmcross/
[4] https://www.mvvmcross.com/documentation/getting-started/getting-started
[5] https://www.reddit.com/r/androiddev/comments/6cseds/what_are_the_disadvantages_of_xamarin_for_android/
[6] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/
[7] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-xamarin-mvvmcrross
[8] https://mentorate.com/blog/6-reasons-mvvmcross-speeds-xamarin-deelopment-personalizes-ux/
[9] https://www.suneco.nl/blogs/boost-Your-xamarin-native-projects-with-mvvmcross/
[10] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx