2016-03-31 34 views
1

Belirsiz başlık için özür dilerim. Bunu sormaktan oldukça utanıyorum ama şu an gerçekten farkında olmam gerekiyor. MVC desenini mi yoksa MVVM modelini mi takip ettiğimi anlayamıyorum.Tam olarak ne kullanıyorum?

Önceki stajımda, bir denetleyiciye sahip olan ve doğrudan veritabanına bağlanan C# kodu (.NET) vardı (bir hizmet katmanı yoktu). Kontrolör bilgi getirecek, JSON'a biçimlendirecek ve bunu ekranda görüntüleyecek olan Angular'ın kontrolörüne verecektir.

Şu anki stajımda Angular kullanmıyoruz. .cshtml dosyalarını kullanıyoruz. Hizmet katmanı, bilgilerini MODEL'i biçimlendiren ve onu .cshtml görünümüne veren ve içeriği görüntüleyen denetleyiciye sağlar.

Sorularım:

hangisi MVC ve MVVM hangisi? Lütfen seviyeme düş ve açıkla. İnternette okuduklarımın çoğu, işte gözlemlediklerimle daha fazla kafa karıştırıyor gibi görünüyor.

İşyerindeki herkes, her ikisi de MVC'yi çağırır ve gerçekten kafam karıştı. Her ikisi de MVC ise, ikisi arasındaki fark nedir?

+1

Sadece google. http://stackoverflow.com/questions/667781/what-is-the-difference-between-mvc-and-mvvm Veya bu http://stackoverflow.com/questions/19444431/what-is-difference-between-mvc -mvp-mvvm-design-pattern-in-kodlama-cs ve diğerleri .... –

+0

Birkaç kez var. Birkaç kez daha sordu. İnsanlar farklı cevaplar veriyorlar. Denetleyicinin model görünümüyle değiştirildiğini biliyorum, ancak her iki durumda da bir denetleyicim var ve işler bittiğinde bir fark buluyorum. Teknik olarak, her ikisi de MVC olacak, ancak bu mimarilerdeki fark nedir? Bu farkların adı nedir – Oct8

+0

Hangi ASP.NET MVC'nin olduğunu biliyorsunuz, değil mi? Bu kafa karıştırıcı olmamalı. Açısal paternin hangi deseni kullandığını bilmiyorum, ancak sunucu çağrıları ve kullanıcı arabirimi arasında veri paylaşımı yapıyorsa, büyük olasılıkla MVVM. – Will

cevap

1

Açısal kesinlikle daha fazla Model-View-ViewModel-ish. Şu an yaptığınız şey kesinlikle MVC gibi geliyor.

MVVM, UI durumunun bir ViewModel'de kapsüllendiği, böylece son kullanıcı arabiriminin oluşturulmasının oldukça aptalca ve yalnızca veri bağlama özelliğine sahip olduğu özel bir desendir. Söylemek için devlet mantığı, bu düğmeyi göster veya bu alanın tümünü sakla, ViewModel'de kapsüllenmiş. Bunun bir yararı, bu, ViewModel'i test etmek ve böylece tüm UI davranışlarını dolaylı olarak test etmek için birim testlerinin yapılmasına izin vermesidir. (Bkz: Wikipedia article on MVVM ve Martin Fowler's Introduction to Presentation Model MVVM bir varyasyonu olan.) MVC

, görünüm kendisi davranışları var kontrol etmek enlem, sen sağlanan modeli veri kapalı tabanlı/gizlemek vb göstermek istediğim şey . Bu, MVC'de, kullanıcı arabiriminin kendisini sınamadan UI davranışlarını (ör. Veri değişiklikleri temelinde doğru bir şekilde gösteriliyor veya gizleniyorsa) test edemezsiniz.

Özetle, MVVM, ViewModel kullanıcı arabirimi davranışını denetler ve kullanıcı arabiriminin kendisi dilsizdir ve yalnızca veri bağlama kullanır ve ViewModel'deki mantığa dayalı olarak söyleneni yapar.

MVC'de, kullanıcı arayüzü 'akıllı' ve kendisini yeniden şekillendiriyor ve işliyor ancak modelden aldığı verilere dayanması gerektiğini düşünüyor.

Temel olarak UI'nin nasıl işlendiğine bakabilirsiniz ve UI oluşturma mantığını kararlara dayanarak kendisini nasıl oluşturulacağına dair kendi kararlarının birçoğunu oluşturuyorsanız, MVC'yi kullandığınızı hemen biliyorsunuz demektir. Hemen hemen her davranışın, kullanıcı arabiriminin parçalarını göstermek ve gizlemek için tüm mantığı içine alan ayrı bir sınıf tarafından yürütüldüğü çok fazla veri bağlama görüyorsanız ve bu veriler veri bağlama yoluyla kullanıcı arayüzüne aktarılırsa, o zaman muhtemelen MVVM.

Umarım bu yardımcı olur.

+0

Çok teşekkürler! Şüphelerim temizlendi – Oct8

1

Her iki durumda da MVC (veya en azından bir MVC-ish deseni) kullanıyorsunuzdur. .cshtml dosyalarını kullanırken, sunucu tarafı MVC kullanıyorsunuz. Açısal kullanırken, istemci tarafı MVC kullanıyorsunuz (muhtemelen MVVM'ye benziyor). En büyük fark, modelin HTML öğelerine dönüştürülmesidir; İstemcide veya sunucuda.

Benim görüşüme göre, bu, yaptığınız farklılıkları görmenin daha iyi bir yoludur.

İlgili konular