Kullanıcı Görünüm ile etkileşime girer , ancak Görünüm eylemleri Denetleyiciye iletmelidir . Denetleyici güncelleyebilir Modeli , ama her / herhangi bir değişiklik ile gerekli değildir.
Sağladığım açıklama, MVC'nin .NET uygulamasıyla ilgili kişisel deneyimime dayanıyor. Uygulamanız farklı olabilir.
Kontrolör eylemler, temelde bir iş katmanı işlendiği yerdir. Basit bir denetleyici, Modelden Görünüm'e beslenecek verileri almaktan başka bir şey yapmaz. Karmaşık bir Denetleyici, güvenlik yönetimi, kimlik doğrulama, yetkilendirme, kayıt ve diğer birçok şeye kadar her türlü eylemi gerçekleştirecektir.
Görünüm sadece kullanıcı anlayabileceği bir şekilde bilgi görüntülemek için sorumlu olmalıdır. Tek Sayfa Uygulamaları (SPA'lar) gibi şeyler kullanıcı için veri doğrulama geri bildirimi içereceğinden, hem Denetleyici hem de Model ile bir miktar çaprazlama olabilir. Diğer çapraz geçişler büyük ölçüde kaşlarını çattı.
Model verileri ile ilgilenir. Bu, verilerin doğrulanmasını da içerir (varsa). Veri depolama ve alma da bu katmanda ele alınır.
GÜNCELLEME
Kimin ne zaman ne yaptığını çevreleyen bir karışıklık var gibi görünüyor. MVC mimarilerine iki farklı genel bakış ekledim, çünkü benzer ancak aynı değiller. Her iki yoruma da yer vardır. Muhtemelen, çok daha fazlası. Yukarıdaki açıklamalar, MVC'yi bu metodolojiyi kullanarak kendi deneyim geliştirme uygulamalarım da dahil olmak üzere birçok kaynaktan yorumlamamdır. Umarım, bu güncelleme bu karışıklığın bir kısmını gidermeye yardımcı olacaktır.
MVC, yazılım geliştirme için bir Endişeler Ayrımı tasarım modeli oluşturma girişimidir . Öncelikle web tabanlı uygulamalarda (bildiklerime göre) uygulandı.
Görünüm kullanıcı etkileşimi tüm işler. Kullanıcınız bir düğmeyi tıklarsa, Görünüm, tıklamanın bir kullanıcı arayüzü etkileşimi mi yoksa endişesinin ötesinde bir şey mi olduğunu belirler (Denetleyici etkileşimi). Düğme, değerleri bir alandan diğerine kopyalamak gibi bir şey yaparsa, uygulamanız bunun bir Görünüm endişesi mi yoksa Denetleyici endişesi mi olduğunu belirler. Büyük olasılıkla tek bir Sayfa Uygulaması (SPA) ile uğraşırken endişeleriniz bu şekilde bulanıklaşacaktır.
Denetleyici Eylemleriniz işlendiği yerdir. Görünüm, kullanıcının bazı alanların değerlerini değiştirmeye karar verdiğini bildirmiştir. Kontrolör bu veriler üzerinde doğrulama yapabilir veya Model tarafından işlenebilir. Yine bu uygulamaya bağlıdır. Denetleyicide güvenlik özellikleri varsa, kullanıcının eylemi gerçekleştirmek için yeterli ayrıcalığa sahip olmadığını belirleyebilir. Değişiklikleri reddedecek ve Görünümü buna göre güncelleyecektir. Denetleyici ayrıca Modelden hangi verilerin alınacağını, nasıl paketleneceğini ve Görünümü bu verilerle güncelleyeceğini belirler.
Model nerede ve nasıl veri depolamak için belirler. Ayrıca, saklanmadan önce bu verilerin doğrulanmasını da yapabilir (bunu yapmalıdır çünkü insanlar Görünüm'ü zaman zaman atlayacaklardır).
Wikipedia'nın MVC hakkında bir makalesi var .
- Bir model, kendi halinde bir değişiklik olduğu zaman ilişkili görünüm / görüş ve denetleyicileri bildirir. Bu bildirim, görünümlerin sunumlarını güncellemesine ve denetleyicilerin kullanılabilir komut kümesini değiştirmesine izin verir. Bazı durumlarda bunun yerine bir MVC uygulaması "pasif" olabilir, böylece diğer bileşenler bildirilmek yerine modeli güncellemek için çağırmalıdır.
- Bir görünüm , kontrolör tarafından kullanıcıya bir çıktı gösterimi oluşturmak için ihtiyaç duyduğu tüm bilgileri söyler. Ayrıca denetleyiciyi kullanıcı girdisi hakkında bilgilendirmek için genel mekanizmalar sağlayabilir.
- Bir denetleyici , modelin durumunu güncellemek için modele komutlar gönderebilir (örneğin, bir belgeyi düzenleme). Ayrıca görünümün modelin sunumunu değiştirmek için ilişkili görünüme komutlar gönderebilir (örneğin, bir belgeyi kaydırarak).
Microsoft'un MVC'ye Genel Bakışından .
Modelleri. Model nesneleri, uygulamanın veri etki alanı için mantığı uygulayan bölümleridir. Genellikle, model nesneleri bir veritabanında model durumunu alır ve depolar. Örneğin, bir Product nesnesi bir veritabanından bilgi alabilir, üzerinde çalışabilir ve daha sonra güncellenmiş bilgileri bir SQL Server veritabanındaki Ürünler tablosuna geri yazabilir.
Küçük uygulamalarda, model genellikle fiziksel olandan ziyade kavramsal bir ayrımdır. Örneğin, uygulama yalnızca bir veri kümesini okur ve görünüme gönderirse, uygulamanın fiziksel bir model katmanı ve ilişkili sınıfları yoktur. Bu durumda, veri kümesi bir model nesnesinin rolünü üstlenir.
Görüntüleme. Görünümler, uygulamanın kullanıcı arabirimini (UI) görüntüleyen bileşenlerdir. Tipik olarak, bu kullanıcı arayüzü model verilerinden oluşturulur. Örnek olarak, bir Product nesnesinin geçerli durumunu temel alan metin kutularını, açılır listeleri ve onay kutularını görüntüleyen bir Ürünler tablosunun düzenleme görünümü verilebilir.
Kontrolörler. Denetleyiciler kullanıcı etkileşimini işleyen, modelle çalışan ve sonuçta kullanıcı arayüzünü görüntüleyecek bir görünüm seçen bileşenlerdir. Bir MVC uygulamasında görünüm yalnızca bilgileri görüntüler; denetleyici kullanıcı girişini ve etkileşimini işler ve yanıtlar. Örneğin, denetleyici sorgu dizesi değerlerini işler ve bu değerleri modele iletir; bu da veritabanını sorgulamak için bu değerleri kullanabilir.