MVVMCross mendukung kode platform khusus melalui beberapa mekanisme, memungkinkan pengembang untuk membuat aplikasi lintas platform sambil tetap memanfaatkan fitur platform asli. Berikut gambaran terperinci tentang bagaimana MVVMCross memfasilitasi kode khusus platform:
1. Pemisahan kekhawatiran **
Aplikasi MVVMCross biasanya disusun menjadi dua bagian utama: proyek inti dan proyek UI khusus platform. Proyek inti, yang sering diimplementasikan sebagai Portable Class Library (PCL) atau .NET Standard Library, berisi logika bisnis, model, model, dan antarmuka untuk layanan khusus platform. Pemisahan ini memungkinkan penggunaan kembali kode maksimum di seluruh platform sambil menjaga kode spesifik platform terisolasi dalam proyek UI [2] [7].2. Inversi Control (IOC) dan Injeksi Ketergantungan **
MVVMCross menggunakan wadah IOC untuk mengelola dependensi. Hal ini memungkinkan pengembang untuk mendaftarkan layanan khusus platform dalam proyek-proyek khusus platform dan menyuntikkannya ke dalam model tampilan proyek inti. Misalnya, jika aplikasi perlu mengakses kamera, proyek inti dapat menentukan antarmuka untuk akses kamera, dan setiap proyek khusus platform dapat memberikan implementasi antarmuka ini sendiri. Wadah IOC kemudian menyelesaikan dependensi ini saat runtime, memastikan bahwa layanan platform spesifik yang benar digunakan [2] [8] [11].3. Layanan khusus platform **
Layanan khusus platform diimplementasikan dalam proyek UI asli. Layanan ini terdaftar di kelas pengaturan dari setiap proyek platform. Kelas pengaturan bertanggung jawab untuk bootstrap MVVMCross dan mendaftarkan layanan khusus platform dengan wadah IOC. Ini memungkinkan model tampilan dalam proyek inti untuk menggunakan fungsionalitas spesifik platform tanpa secara langsung merujuk API spesifik platform [2] [7].4. Kerangka Plugin **
MVVMCross mencakup kerangka kerja plugin yang memungkinkan pengembang untuk dengan mudah mengintegrasikan fitur spesifik platform ke dalam aplikasi mereka. Plugin dapat memberikan fungsionalitas seperti lokasi GPS, lokalisasi, sensor, dan banyak lagi. Plugin ini terdaftar dengan wadah IOC, memungkinkan model tampilan untuk mengakses fitur spesifik platform melalui injeksi ketergantungan. Kerangka kerja ini juga mendukung implementasi tiruan untuk tujuan pengujian [4] [11].5. Mesin pengikat yang dapat disesuaikan **
MVVMCross menyediakan mesin pengikat yang dapat disesuaikan yang memungkinkan pengembang untuk membuat binding khusus untuk tampilan khusus platform. Fitur ini sangat berguna ketika bekerja dengan kontrol asli yang tidak mendukung mekanisme pengikatan data standar. Dengan mendefinisikan binding khusus, pengembang dapat memastikan bahwa model tampilan mereka terhubung dengan benar ke tampilan khusus platform [4].6. Presenter platform **
MVVMCross menggunakan presenter spesifik platform (mis., `IMVXIOSVIEWPRESENTER`,` IMVXANDROIDVIEWPRESENTER`) untuk mengelola bagaimana tampilan ditampilkan pada setiap platform. Presenter ini memungkinkan penyesuaian logika presentasi, memungkinkan pengembang untuk menyesuaikan perilaku UI dengan persyaratan platform tertentu [3].Singkatnya, MVVMCross mendukung kode spesifik platform dengan memberikan pendekatan terstruktur untuk memisahkan logika bisnis dari implementasi spesifik platform, memanfaatkan IOC dan injeksi ketergantungan untuk manajemen layanan, dan menawarkan kerangka kerja ikatan dan plugin yang dapat disesuaikan untuk mengintegrasikan fitur asli. Ini memungkinkan pengembang untuk memaksimalkan penggunaan kembali kode sambil tetap memberikan pengalaman pengguna khusus platform.
Kutipan:[1] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[2] https://dev.to/christian1006/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework-2920
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://github.com/mvvmcross/mvvmcross
[5] https://www.codeproject.com/articles/863695/introduction-to-mvvmcross-platform
[6] https://mentormate.com/blog/6-reasons-mvvmcross-speeds-xamarin-development-personalizes-ux/
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://stackoverflow.com/questions/14337063/platform-specific-ioc-in-mvvmcross
[9] https://www.mvvmcross.com/documentation/getting-started/getting-started
[10] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[11] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross