Pengguna berinteraksi dengan View , tetapi View harus mengkomunikasikan tindakan ke Controller . The Pengendali dapat memperbarui Model , tetapi tidak diperlukan dengan setiap / perubahan.
Deskripsi yang saya berikan didasarkan pada pengalaman pribadi saya dengan implementasi .NET dari MVC. Implementasi Anda bisa berbeda.
The Pengendali adalah di mana tindakan diproses, pada dasarnya lapisan bisnis. Pengontrol sederhana tidak akan melakukan apa pun selain mendapatkan data dari Model untuk dimasukkan ke View. Pengendali yang rumit akan melakukan segala macam tindakan, hingga manajemen keamanan, otentikasi, otorisasi, pendaftaran, dan mungkin banyak hal lainnya.
The View seharusnya hanya bertanggung jawab untuk menampilkan informasi dengan cara yang pengguna dapat mengerti. Mungkin ada beberapa silang di sini dengan Controller dan Model karena hal-hal seperti Aplikasi Halaman Tunggal (SPA) akan memiliki umpan balik validasi data untuk pengguna. Semua cross over sangat disukai.
The Model berhubungan dengan data. Ini termasuk validasi data (jika ada). Penyimpanan dan pengambilan data juga ditangani di lapisan ini.
MEMPERBARUI
Tampaknya ada beberapa kebingungan di sekitar siapa melakukan apa kapan. Saya menyertakan dua ikhtisar berbeda dari arsitektur MVC karena mereka mirip, tetapi tidak sama. Ada ruang untuk kedua interpretasi. Mungkin, masih banyak lagi. Deskripsi di atas adalah interpretasi saya terhadap MVC dari berbagai sumber, termasuk pengalaman saya sendiri membangun aplikasi menggunakan metodologi ini. Semoga pembaruan ini akan membantu menjernihkan beberapa kebingungan ini.
MVC adalah upaya untuk membangun pola desain Pemisahan Kekhawatiran untuk pengembangan perangkat lunak. Ini terutama telah diterapkan dalam aplikasi berbasis web (setahu saya).
The View menangani semua interaksi pengguna. Jika pengguna mengklik tombol, tampilan menentukan apakah klik itu adalah interaksi antarmuka pengguna atau sesuatu yang berada di luar masalah (interaksi Pengontrol). Jika tombol melakukan sesuatu seperti menyalin nilai dari satu bidang ke bidang lain, implementasi Anda akan menentukan apakah itu masalah tampilan atau masalah pengontrol. Kemungkinan besar Anda hanya akan memiliki kekuatiran yang kabur ini ketika berhadapan dengan Aplikasi Halaman Tunggal (SPA).
The Pengendali adalah di mana tindakan Anda diproses. Tampilan telah mengkomunikasikan pengguna memutuskan untuk mengubah nilai untuk beberapa bidang. Pengontrol dapat melakukan validasi pada data tersebut atau dapat ditangani oleh Model. Sekali lagi ini tergantung pada implementasi. Jika Controller memiliki fitur keamanan, itu mungkin menentukan bahwa pengguna tidak memiliki hak yang cukup untuk melakukan tindakan. Itu akan menolak perubahan dan memperbarui tampilan yang sesuai. Pengontrol juga menentukan data apa yang akan diambil dari Model, cara mengemasnya, dan memperbarui Tampilan dengan data itu.
The Model menentukan bagaimana dan di mana untuk menyimpan data. Mungkin juga melakukan validasi data itu sebelum menyimpannya (itu harus dilakukan karena orang akan mem-bypass View pada kesempatan).
Wikipedia memiliki artikel tentang MVC .
- Sebuah model memberi tahu tampilan / pengontrol dan pengait terkait saat ada perubahan kondisi. Pemberitahuan ini memungkinkan pandangan untuk memperbarui presentasi mereka, dan pengontrol untuk mengubah set perintah yang tersedia. Dalam beberapa kasus, implementasi MVC mungkin malah "pasif," sehingga komponen lain harus memilih model pembaruan daripada diberi tahu.
- Sebuah pandangan yang diberitahu oleh controller semua informasi yang dibutuhkan untuk menghasilkan output representasi kepada pengguna. Ini juga dapat memberikan mekanisme umum untuk menginformasikan pengontrol input pengguna.
- Sebuah kontroler dapat mengirimkan perintah ke model untuk memperbarui negara model (misalnya, mengedit dokumen). Ia juga dapat mengirim perintah ke tampilan terkait untuk mengubah presentasi tampilan model (misalnya, dengan menggulir dokumen).
Dari Ikhtisar Microsoft tentang MVC .
Model. Objek model adalah bagian dari aplikasi yang menerapkan logika untuk domain data aplikasi. Seringkali, objek model mengambil dan menyimpan status model dalam database. Misalnya, objek Produk mungkin mengambil informasi dari database, beroperasi di atasnya, dan kemudian menulis informasi yang diperbarui kembali ke tabel Produk di database SQL Server.
Dalam aplikasi kecil, model seringkali merupakan pemisahan konseptual, bukan pemisahan fisik. Misalnya, jika aplikasi hanya membaca dataset dan mengirimkannya ke tampilan, aplikasi tidak memiliki lapisan model fisik dan kelas terkait. Dalam hal itu, dataset mengambil peran objek model.
Tampilan. Tampilan adalah komponen yang menampilkan antarmuka pengguna aplikasi (UI). Biasanya, UI ini dibuat dari data model. Contohnya adalah tampilan edit tabel Produk yang menampilkan kotak teks, daftar drop-down, dan kotak centang berdasarkan keadaan saat ini dari objek Produk.
Pengontrol. Controllers adalah komponen yang menangani interaksi pengguna, bekerja dengan model, dan akhirnya memilih tampilan untuk menyajikan yang menampilkan UI. Dalam aplikasi MVC, tampilan hanya menampilkan informasi; controller menangani dan merespons input dan interaksi pengguna. Sebagai contoh, pengontrol menangani nilai-nilai kueri-string, dan meneruskan nilai-nilai ini ke model, yang pada gilirannya mungkin menggunakan nilai-nilai ini untuk query database.