MVVMCross, Model-View-ViewModel (MVVM) modelini kullanarak uygulamaların geliştirilmesini kolaylaştıran platformlar arası bir çerçevedir. Geliştiricilerin uygulama mantığını iki ana parçaya ayırarak gevşek bir şekilde birleştirilmiş, sürdürülebilir ve test edilebilir mobil çözümler oluşturmalarını sağlar: temel proje ve UI projesi.
Çekirdek Proje
Çekirdek proje tipik olarak aşağıdakileri içeren tüm paylaşılan kodu içeren bir .NET standart kütüphanesidir:- ViewModels: Bunlar kullanıcı etkileşimlerini ve iş mantığını ele almaktan sorumludur.
- Modeller: Uygulama boyunca kullanılan veri yapılarını temsil eder.
- Hizmetler: Verilere, web hizmetlerine veya diğer harici kaynaklara erişim sağlayın.
- Dönüştürücüler: Veri türü dönüşümleri için kullanılır.
- Uygulama Sınıfı: Bu, uygulamanın iş mantığını ve görüntüleme modellerini başlatmaktan sorumludur. Ayrıca, Kontrol (IOC) konteynerinin tersine çevrilmesinde özel nesnelerin kaydedilmesini de işler.
- Appstart: Uygulama başladığında önce hangi görünüm modelini sunacağını belirlemek için kullanılır.
UI Projesi
UI projesi platforma özgüdür ve kullanıcı arayüzü öğelerini ve platforma özgü kodu içerir. Her hedef platform için (örneğin iOS, Android) ayrı bir kullanıcı arayüzü projesi vardır. Bu projeler şunları içerir:- Görünümler: Her görünüm, ilgili bir görünüm modelini sunmaktan sorumludur. Görünümler yerel platform araçları kullanılarak tasarlanmıştır (örn. Xamarin.forms için XAML, Android için AXML).
- Yerel uygulama işleyicisi: Bu, yerel yaşam döngüsü olaylarını ele alır. Örneğin, Android'de, bir `` MainActivity '' veya `Mainapplication 'sınıfı olurken, iOS'ta bir' AppDelegate 'sınıfı olacaktır.
- Kurulum Sınıfı: Bu, MVVMCross'u önyüklemek ve platforma özgü hizmetleri kaydetmekten sorumludur. MVVMCross çerçevesini başlatır ve platforma özgü uygulamalarla IOC kapsayıcısını ayarlar.
Çekirdek ve kullanıcı arayüzü projeleri arasındaki etkileşim
MVVMCross'taki çekirdek ve UI projeleri arasındaki etkileşim, MVVM modeli ve çerçevenin IOC konteyneri ile kolaylaştırılır. İşte böyle etkileşimler:- ViewModel Bağlama: UI projeleri, modelleri görüntülemek için görünümleri bağlamak için mvvmcross kullanır. Bu genellikle bir adlandırma sözleşmesi kullanılarak veya görünümleri `` [mvxviewfor (typeof (homeViewModel))] `gibi özelliklerle dekore ederek yapılır.
- Hizmet enjeksiyonu: Çekirdek proje, her platformda farklı uygulanan hizmetler için arayüzleri tanımlar. Bu hizmetler IOC kapsayıcısına kaydedilir ve görünüm modellerine enjekte edilir ve kodu çoğaltmadan platforma özgü işlevselliğe izin verir.
- Navigasyon ve Sunum: MVVMCross, görünüm modelleri arasında gezinme ve görünümler sunma mekanizmaları sağlar. Çerçeve, her platformda görünümlerin nasıl görüntülendiğini yönetmek için sunum yapanları (örn., `` İmvxiosViewPresenter`, `ImvxandroidViewPresenter '') kullanır.
Uygulama mantığını çekirdek ve UI projelerine ayırarak MVVMCross, geliştiricilerin platforma özgü özelleştirme ve optimizasyona izin verirken platformlar arasında kod yeniden kullanımını en üst düzeye çıkarmalarını sağlar [1] [3] [5].
Alıntılar:[1] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[2] https://canbilgin.wordpress.com/tag/mvmcross/
[3] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvmcross-pramework/
[4] https://www.mvvmcross.com/documentation/adved/customizing-using-app-and-setup
[5] https://www.suneco.nl/blogs/boost-Your-xamarin-native-sjects-with-mvvmcross/
[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/tutorials/tipcalc/the-core-project
[8] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/