MVVMCross, bir uygulamanın farklı bileşenleri arasında doğal olarak sorumlulukların net bir bölümünü net bir şekilde destekleyen model-view-viewmodel (MVVM) modelini uygulayarak platformlar arası uygulamalardaki endişelerin ayrılmasını kolaylaştırır. MVVMCross bunu nasıl başarıyor:
mvvm desen uygulaması
MVVMCross, üç ana bileşenden oluşan MVVM mimarisi etrafında inşa edilmiştir:
- Model: Uygulamanın verilerini ve iş mantığını temsil eder. Kullanıcı arayüzünden bağımsız veri yapılarını ve işlemlerini kapsar.
- Görünüm: Kullanıcı arayüzünü ve kullanıcı etkileşimlerini işler. Kullanıcıdan veri görüntülemek ve giriş almaktan sorumludur.
- ViewModel: Model ve görünüm arasında bir aracı görevi görür. Görünümün bağlanabileceği verileri ve komutları ortaya çıkarır, görünümü modelden etkili bir şekilde ayırır.
MVVMCross, bu ayrımı koruyarak, her bileşenin örtüşen sorumluluklar olmadan özel rolüne odaklanmasını sağlar. Örneğin, görünüm iş mantığı içermemeli ve ViewModel, kullanıcı arayüzü öğelerini doğrudan manipüle etmemelidir.
Paylaşılan mantık içinTaşınabilir Sınıf Kütüphanesi (PCL)
MVVMCross, platforma özgü hizmetler için ViewModels, modeller ve arayüzleri barındırmak için taşınabilir bir sınıf kitaplığı (PCL) kullanır. Bu PCL, paylaşılan iş mantığı ve veritabanı işlemeyi içeren temel proje olarak hizmet vermektedir. İş mantığını bir PCL'ye ayırarak MVVMCross, geliştiricilerin kodun önemli bir bölümünü iOS, Android ve Windows gibi farklı platformlarda paylaşmalarını sağlar. Bu yaklaşım sadece kod yeniden kullanımını kolaylaştırmakla kalmaz, aynı zamanda iş mantığının platformlar arasında tutarlı kalmasını sağlar.
Veri Bağlama ve İletişim
MVVMCross, bağlantı görünümlerine karşılık gelen ViewModels ile bağlantı görünümlerine bağlanma kullanır. Bu mekanizma, ViewModel değiştiğinde görünümün otomatik olarak güncellenmesini sağlar ve tersi de geçerlidir. Veri bağlama, endişelerin ayrılmasını sağlamak için çok önemlidir, çünkü iş mantığının uygulama ayrıntılarını bilmeye gerek kalmadan ViewModel'deki değişikliklere tepki vermesini sağlar.
Buna ek olarak, MVVMCross, komutlar ve olaylar gibi çeşitli iletişim tekniklerini destekler, bu da iç durumuna doğrudan erişmeden ViewModel'deki eylemleri çağırmasına izin vererek endişelerin ayrılmasını daha da artırır.
Bağımlılık Enjeksiyonu ve Eklenti Mimarisi
MVVMCross, bağımlılıkları yönetmek ve çerçevenin yeteneklerini genişletmek için bağımlılık enjeksiyonu (DI) ve bir eklenti mimarisini içerir. Bağımlılık enjeksiyonu, bileşenlerin gevşek bir şekilde birleştirilmesini sağlar, bu da uygulamayı test etmeyi ve sürdürmeyi kolaylaştırır. Eklenti mimarisi, geliştiricilerin temel çerçeveyi değiştirmeden yeni işlevler eklemelerine olanak tanır ve böylece endişelerin temiz bir şekilde ayrılmasını sağlar.
Yaşam Döngüsü Yönetimi
MVVMCross, görünümlerin yaşam döngüsüne bağlı ViewModels için yaşam döngüsü yönetimi özellikleri sağlar. Bu, görünüm oluşturulduğunda, görüntülendiğinde, kaybolduğunda veya yok edildiğinde ViewModels'in bilgilendirilebileceği anlamına gelir. Bu tür yaşam döngüsü yönetimi, kaynakların uygun şekilde temizlenmesini ve ViewModel'in durumunun doğru bir şekilde yönetilmesini sağlayarak endişelerin temiz bir şekilde ayrılmasına yardımcı olur.
Özetle, MVVMCross, MVVM modelini uygulayarak, paylaşılan mantık için bir PCL kullanarak, veri bağlama uygulanarak ve bağımlılık enjeksiyonu ve yaşam döngüsü yönetimini dahil ederek platformlar arası uygulamalardaki endişelerin ayrılmasını kolaylaştırır. Bu özellikler toplu olarak sağlam, sürdürülebilir ve ölçeklenebilir bir uygulama mimarisine katkıda bulunur.
Alıntılar:[1] https://www.linkedin.com/advice/0/whest-best-way-lens-paration-concerns-mvvm-design-csadc
[2] https://leaware.com/creating-cross-platform-xamarin-pplications-using-the-mvmcross-pramework/
[3] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
[4] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[5] https://www.mvvmcross.com/documentation/fundament/viewmodel-lifecycle
[6] https://www.mvvmcross.com/documentation/getting-started/getting-started
[7] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[8] https://stackoverflow.com/questions/32220007/what-does-mvmcross-do-that-xamarin-doesnt-allready
[9] https://github.com/mvvmcross/mvvmcross