Buat aplikasi MVVM dengan Windows Community Toolkit

Microsoft selalu bekerja dengan baik dengan pengembang, sejak awal sebagai vendor bahasa. Programnya telah berkembang selama bertahun-tahun, dari pendekatan top-down, yang digerakkan oleh Redmond yang memuncak dengan dokumentasi DVD MSDN biasa, hingga program berbasis komunitas saat ini yang mencakup Microsoft Docs, Microsoft Learn, tim global Azure Developer Advocates, dan seperangkat alat dan kerangka kerja yang terus berkembang yang dikembangkan di GitHub.

Toolkit Komunitas Windows: a .NET starter kit

Bekerja dengan komunitas telah menghasilkan hasil yang menarik dengan dokumentasi yang lebih akurat dan tepat waktu menggunakan GitHub untuk mengelola konten dan serangkaian proyek sumber terbuka yang dipimpin komunitas. Salah satu proyek yang lebih penting adalah Windows Community Toolkit, serangkaian fungsi, kontrol, dan layanan untuk aplikasi .NET dan UWP. Ini adalah proyek yang hanya akan menjadi lebih penting dengan transisi dari .NET Framework yang lebih lama ke .NET Core berbasis .NET 5 dan peluncuran kerangka kerja Project Reunion dan lintas platform Multiplatform App UI (MAUI).

Windows Community Toolkit bukanlah entitas monolitik yang perlu dikirimkan bersama aplikasi Anda. Ini adalah satu set paket NuGet, sehingga Anda dapat memilih apa yang Anda butuhkan, menjaga kode dan biaya perpustakaan seminimal mungkin. Jika Anda sedang membangun aplikasi Windows .NET modern, aplikasi ini layak untuk dilihat, karena berisi banyak kontrol XAML penting yang dapat membantu memberikan tampilan yang bagus dan aplikasi yang ramah pengguna. Alat berguna lainnya termasuk satu set pembantu untuk meningkatkan kinerja aplikasi, satu set parser untuk format data umum termasuk penurunan harga, dan kode inti yang diperlukan untuk mendukung kerangka kerja pemberitahuan Windows 10.

Menambahkan MVVM ke Toolkit

Salah satu tambahan terbaru pada toolkit ini adalah pustaka baru untuk membangun aplikasi menggunakan pola desain MVVM. Model-view-viewmodel adalah inti dari kerangka kerja MAUI yang akan datang, dan .NET membutuhkan implementasi yang baik dan cepat agar berhasil. Hasilnya adalah seperangkat alat MVVM yang relatif ringan serta sekumpulan kode contoh.

Ada banyak hal yang disukai dalam implementasi MVVM Windows Community Toolkit. Mungkin yang paling berguna adalah urutan peningkatan kinerja yang besarnya dibandingkan dengan perkakas .NET MVVM, seperti yang ditunjukkan oleh rekan penulisnya Michael Hawker, pemimpin proyek Windows Community Toolkit di Microsoft, tunjukkan dalam presentasi di UnoConf minggu lalu. Perbaikan itu akan menjadi penting untuk aplikasi MAUI, terutama ketika menargetkan platform seluler seperti Android dan iOS. Ini mungkin tidak memiliki semua fitur alternatif kelas berat, tetapi untuk sebagian besar tujuan ini adalah pilihan ideal, dan dengan beberapa alat alternatif .NET MVVM tidak lagi dikembangkan, ini layak untuk dilihat.

Jadikan UI Anda didorong oleh peristiwa

Pola desain MVVM dimaksudkan untuk mendukung antarmuka pengguna berbasis peristiwa. Intinya adalah sebuah model, yang bertindak sebagai antarmuka antara aplikasi Anda dan logika atau data bisnis back-end apa pun. Antarmuka pengguna Anda diimplementasikan oleh tampilan, seperti pola MVC (pengontrol tampilan model) yang sudah dikenal. MVVM berbeda dari pola desain serupa lainnya dalam model tampilan, yang menautkan pengikatan data dalam tampilan ke data dalam model, memberikan cara untuk merepresentasikan status satu sama lain.

Kode model tampilan Anda menangani pemrosesan masukan dan keluaran ke dan dari tampilan, menggunakan pengikatan data XAML standar ke kontrol. Tujuannya di sini adalah untuk meminimalkan kode dalam tampilan sehingga desainer dapat berkonsentrasi pada menghasilkan pengalaman pengguna sementara pengembang mengerjakan kode back-end dan pada pemrosesan status tampilan yang digerakkan oleh peristiwa viewmodel. Dengan menerapkan pemisahan antara tampilan dan model, Anda dapat memfokuskan pengembangan pada logika aplikasi, menggunakan kontrol prototipe sebelum beralih ke desain akhir tanpa memengaruhi kode yang telah ditulis selama pengembangan aplikasi.

Mulailah dengan Microsoft.MVVM.Toolkit

Kode untuk toolkit MVVM baru sangat baru, tetapi cukup matang untuk mendukung pengembangan aplikasi prototipe. Mungkin masalah terbesarnya adalah belum ada dokumentasi untuk Microsoft.Toolkit.MVVM di situs Microsoft Docs, meskipun sedikit pencarian akan menemukan tahap awal dokumentasi di GitHub.

Seperti Windows Community Toolkit lainnya, MVVM Toolkit diinstal dari repositori Nuget. Karena terinspirasi oleh MVVMLight yang sekarang sudah tidak digunakan lagi, transisi dari toolkit lama ke Windows Community Toolkit seharusnya tidak terlalu sulit.

Mulailah dengan mengunduh rilis pratinjau MVVM Toolkit dari Nuget dan menginstalnya di aplikasi Anda di Visual Studio. Ini akan membawa semua dependensi dan menyiapkan kerangka kerja yang dapat Anda gunakan untuk mulai membangun aplikasi MVVM.

Di balik terpal: sistem notifikasi sedang beraksi

Pada intinya, MVVM adalah arsitektur berbasis pesan yang memantau peristiwa dari model dan tampilan, mengirimkan pemberitahuan asinkron antara keduanya menggunakan viewmodel. Anda harus membiasakan diri dengan kelas dasar inti yang mengontrol bagaimana viewmodel menanggapi properti yang diubah dalam model yang mendasarinya. Saat objek observasi dalam model berubah status, viewmodel memunculkan notifikasi yang sesuai dan menggunakannya untuk menyampaikan pesan peristiwa di seluruh pengikatan ke kontrol UI dalam tampilan.

Kunci pengoperasian MVVM Toolkit, dan alasan peningkatan performa yang signifikan dibandingkan implementasi MVVM .NET lainnya, adalah Kelas Messenger-nya. Ini adalah cara Anda menautkan berbagai elemen aplikasi MVVM, mengimplementasikan dan mendaftarkan penangan pesan. Anda dapat menganggapnya sebagai sistem publikasi dan langganan yang disederhanakan, hanya menawarkan layanan untuk model dan tampilan. Penerima dan pengirim harus terdaftar dan tidak terdaftar jika tidak lagi diperlukan. Misalnya, jika Anda menggunakan MVVM Toolkit untuk memberdayakan aplikasi obrolan, dan pengguna tertentu keluar, Anda perlu membatalkan pendaftaran mereka dari aplikasi untuk mencegah kebocoran memori.

Merancang MVVM

Memiliki model publikasi dan langganan di jantung tampilan model sangat masuk akal. Ini memungkinkan Anda untuk memastikan semua pengikatan kontrol Anda dikaitkan dengan titik akhir pesan, memberi Anda cara untuk membangun secara terprogram pemetaan yang diperlukan untuk menautkan tampilan dan model dengan cara yang harus berskala antara beberapa tampilan dan beberapa model.

Memisahkan tampilan dan model dengan cara ini akan menyederhanakan keseluruhan struktur aplikasi Anda, terutama jika Anda mempertimbangkan bahwa Anda akan menggunakan model pemrograman deklaratif dalam tampilan XAML dan pendekatan berorientasi objek dalam model Anda. Menggunakan model tampilan berbasis perpesanan sebagai lapisan terjemahan antara dua cara pemrograman yang sangat berbeda ini mengurangi risiko dan meminimalkan jumlah kode di belakang yang diperlukan dalam tampilan Anda. Sebelum Anda menulis kode apa pun, pastikan desain aplikasi Anda menyertakan pemetaan dan binding tersebut secara detail, bersama dengan pesan yang mereka bawa, karena ini adalah API internal Anda untuk semua integrasi Anda antara front end dan back end.

Pekerjaan komunitas .NET di Windows Community Toolkit penting untuk masa depan platform. Dengan perubahan signifikan yang sedang berlangsung (transisi ke .NET 5, pemisahan SDK dan Windows di Project Reunion, dan model UI lintas platform di MAUI) memiliki sekumpulan kontrol referensi dan fitur menjadi semakin penting. Anda dapat memilih dan memilih elemen yang Anda inginkan untuk meningkatkan perjalanan .NET Anda sendiri. MVVM Toolkit mungkin merupakan salah satu bagian terbaru dari kit, tetapi kemungkinan besar akan menjadi salah satu bagian terpenting.