SORU
20 Mart 2009, Cuma


MVC ve MVVM arasındaki fark nedir?

Orada standart arasındaki fark nedir "Model Görünümü Denetleyicisi" desen ve Microsoft'un Model/View/ViewModel desen?

CEVAP
22 AĞUSTOS 2010, Pazar


MVC/MVVM değilya/yaseçim.

İki desenleri, hem ASP.NET ve Silverlight/WPF geliştirme farklı şekillerde kırpma,.

ASP.NET, MVVM için kullanılıriki yönlü bağlamagörüşleri içindeki veri. Bu genellikle istemci tarafı uygulama (örneğin knockout.js kullanarak). Öte yandan MVC ayıran kaygıları bir yoldursunucu-tarafında.

Silverlight ve WPF, MVVM desen daha kapsayıcı vegörünürMVC (veya ayrı sorumlulukları içine yazılım düzenlemekten başka desen) için bir yedek olarak hareket etmek. Bir varsayım, o sık sık çıktı bu model, o ViewModel sadece değiştirilen kumanda MVC (gibi sadece yedek VM C kısaltma ve tüm affedileceği)...

Bu ViewModeldeğilmutlaka ayrı kontrol ihtiyacını değiştirin.

Gerektiğinde bağımsız olarak test edilebilir* ve özellikle yeniden kullanılabilir olması için, Görünüm-model görüntüleme ne olduğunu hiç bir fikrim var, ama daha da önemlisi . sorun: ^em>verileri nereden geldiğini hiçbir fikrim yok.

Kontrolörler birim test gerektiren mantık, ViewModel, en pratik çıkarın. *not: VM sonra, eğer varsa, küçük bir test gerektirir o kadar aptal bir kap olur. Bu VM sadece bir köprü, tasarımcı ve basit tutulmalıdır böylece kodlayıcı arasında olduğu gibi iyi bir şeydir.

Hatta MVVM, denetleyicileri genellikle tüm işleme mantığı içerir ve görünüm modelleri kullanarak gören görüntülemek için ne karar verecek.

Şimdiye kadar gördüğümüz kadarıyla XAML kod kaldırmak için ViewModel desen ana parası arka plan koduXAML daha bağımsız bir görev düzenleme yapmak için. Biz hala gerektiğinde denetleyicileri, ve, (hayır cinas tasarlamak) bizim uygulama genel mantık oluşturun.

Temel MVCVM kurallarına uyarız

  • Manzarasıveri belirli bir şekli görüntüler. Verilerin nereden geldiği hakkında hiçbir fikirleri yok.
  • ViewModelsveri ve komutları belirli bir şekli tutunveri veya kod , nereden geldiğini ya da nasıl görüntülendiğini bilmiyorum.
  • Modellerigerçek verileri tutun(çeşitli bağlam, mağaza veya diğer yöntemler)
  • Denetleyicileri dinle, olayları yayınlayın. Denetleyicileri veri görülüyor ne ve nerede denetleyen mantığı sağlar. Denetleyicileri ViewModel aslında tekrar kullanılabilir, böylece ViewModel için komut kod sağlar.

Biz de Sculpture code-gen framework uygular ve bir desen Prizma benzer MVVM VE aynı zamanda denetleyicileri geniş use-case logic hepsi ayrı kılan kaydetti.

Denetleyicileri eski Görünümü-modeller tarafından yapılır düşünmeyin.

I have started a blog on this topic which I will add to as and when I can. Ortak navigasyon sistemleri ile MVCVM birleştirilmesi ile ilgili sorunlar var çoğu navigasyon sistemleri sadece Görüş ve VMs olarak, ama daha sonraki maddelerde bu konuya gireceğim.

MVCVM bir model kullanarak ek bir yararı olduğunusadece denetleyici nesneleri uygulamanın yaşam için bellekte bulunması gerekirve kontrolörleri özellikle kod ve küçük devlet veri (yani küçük bellek yükü) içerir. Bunu yapmak için çok daha az bellek yoğun uygulamalar daha çözümleri nerede view-model olmak zorunda korudu ve bu ideal için belirli türdeki mobil geliştirme (örneğin Windows Mobile kullanarak Silverlight/Prism/MEF). Bu hala yanıt için zaman zaman önbelleğe VMs korumak için gerekebilir olarak uygulama Türüne göre elbette değişir.

Not: Bu yazı defalarca yeniden düzenlendi ve özellikle şimdi Bu kapak için ilk bölümünü güncelledik çok dar bir soru sordu hedef, vermedi de. Tartışmanın çoğu, aşağıda yorum, ASP.Net tek ve daha geniş bir resim değil ilgilidir. Bu yazı Silverlight, WPF ve ASP.Net içinde MVVM daha geniş kullanın kapak ve insanları önlemek için deneyin ViewModels ile denetleyicileri yerine düşünülmüştü.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AlaskanGrizzly

    AlaskanGrizz

    30 EKİM 2009
  • Eric Anthony

    Eric Anthony

    13 AĞUSTOS 2011
  • WiseOwlTutorials

    WiseOwlTutor

    21 EKİM 2011