Pertama, sebelum ada yang berteriak menipu, saya kesulitan merangkumnya dalam judul yang sederhana. Judul lain mungkin adalah "Apa perbedaan antara model domain dan model MVC?" atau "Apa model itu?"
Secara konseptual, saya memahami Model sebagai data yang digunakan oleh views dan controller. Di luar itu, tampaknya ada banyak perbedaan pendapat tentang apa yang membentuk model tersebut. Apa itu model domain, versus model aplikasi, vs model tampilan, vs model layanan, dll ..
Misalnya, dalam pertanyaan baru-baru ini yang saya tanyakan tentang pola repositori, saya diberi tahu secara langsung bahwa repositori adalah bagian dari model. Namun, saya telah membaca pendapat lain bahwa model tersebut harus dipisahkan dari model ketekunan dan lapisan logika bisnis. Lagi pula, bukankah pola Repositori seharusnya memisahkan metode persistensi konkret dari model? Orang lain mengatakan ada perbedaan antara model Domain dan model MVC.
Mari kita ambil contoh sederhana. AccountController yang disertakan dengan proyek default MVC. Saya telah membaca beberapa pendapat bahwa kode Akun yang disertakan memiliki desain yang buruk, melanggar SRP, dll .. dll. Jika seseorang harus merancang model Keanggotaan yang "tepat" untuk aplikasi MVC, apakah itu?
Bagaimana Anda memisahkan layanan ASP.NET (penyedia Keanggotaan, penyedia peran, dll ..) dari model? Atau apakah Anda sama sekali?
Cara saya melihatnya, model harus "murni", mungkin dengan logika validasi .. tetapi harus terpisah dari aturan bisnis (selain validasi). Misalnya, Anda memiliki aturan bisnis yang mengatakan seseorang harus dikirimi email ketika akun baru dibuat. Menurut saya, itu tidak benar-benar sesuai dengan model. Jadi, di mana tempatnya?
Adakah yang peduli untuk menjelaskan masalah ini?