MVVM veya MVC? WPF ve ASP.NET için aynı sınıf kümesini kullanmak istiyor


11

Ben Tasarım Desenleri konusunda bir yeniyim. Yeni bir vızıltı duyduğumda MVC öğrenmeye yeni başladım MVVM.

Bir müşteri için geliştirdiğim eski bir envanter ve faturalandırma uygulamasını yeniden tasarlayarak her ikisinin de öngörülerini öğrenmek istiyorum. Hem Windows tabanlı bir WPF uygulaması hem de Web tabanlı bir sürüm yazmak istiyorum. Mümkünse aynı sınıfları kullanmak istiyorum, eğer değilse, en azından küçük değişikliklerle.

Birkaç makale okudum, ancak mimarlık ve .NET 3.5 & 4'ün üst düzey kavramlarını burada tartışmıyorum. Sadece gerçek hayattaki projemde gerçekten ihtiyacım olanı tasarlayarak adım adım ilerlemek istiyorum.

MVVM'ye kolay adım adım başvuru var mı? MVVM, MVC'nin süper seti mi yoksa alt seti mi? Uygulamamın Windows ve Web sürümleri için hangi model modern ve hangisini seçmeliyim?

Görünüm ile nadiren bağlanmak zorunda olduğum bazı sınıflar var. Bu durumda, MVVM tarzında aynı sınıfın tasarlanması ilave bir işçilik olarak kanıtlanacaktır.

Yanıtlar:


11

MVVM'ye kolay adım adım başvuru var mı?

Evet var. Buraya bir bak.

MVVM, MVC'nin süper seti mi yoksa alt seti mi?

MVVM, MVC ailesine aittir, bu yüzden eğer bunu söyleyebilirseniz, bu bir alt kümedir. Kullanıcı arayüzünü alttaki iş mantığından ayırmak bir varyanttır. Bunu MVC'nin bir kardeşi olarak tarif ederdim. OOP'nin ilk günlerinden beri insanlar UI'yi mantıklarından ayırmanın yollarını arıyorlar. MVC evrimleşen ilk arketipti. Çoğu insan doğru yapamasa da oldukça basittir. Görünüm sadece modelin bir gözlemcisidir ve gerektiğinde onu çağırır. Denetleyici, örneğin değiştirilebilir bir davranışa (örneğin ReadonlyController, AdminController) ihtiyaç duyduğunuzda görünümün modelle iletişim kurması için bir stratejidir. MVC çok başarılı ve bunu uygulamak gerçekten iyi bir uygulama.

MVVM, Martin Fowler tarafından tarif edildiği gibi özel bir MVP Kalıbı türüdür . MVP görüntüyü olabildiğince aptal tutmaya çalışır (yine de kullanıcı girdisi alırken vs.), böylece test edilebilirliği artırır. Sunum yapan kişinin görüşünü ve etkileşim mantığını soyutlamayı amaçlamaktadır. Sunucu yalnızca model / iş mantığı ile iletişim kurar ve Görünümü günceller. Martin Fowler, MVVM'yi Sunum Modeli Kalıbında hemen hemen anlatıyor.

Görünüm tamamen bir ViewModel içine alınır. Ne zaman Viewbir özellik ViewModelihtiyacı, o da ihtiyacı var. Bu (ViewModel), temeldeki UI teknolojisinden, bir soyutlamadan tamamen bağımsız olması amaçlanmıştır. View ve ViewModel arasında iletişim kurmak için bir senkronizasyon modeli kullanılmalıdır (örn. Gözlemci). Durum bilgisi olmayan bir web ortamında bunu gerçekleştirmek kolay değildir. Görünüm artık modelinize / iş mantığınıza değil, bunun yerine bir ViewModel'e bağlanmadığından MVVM, MVP'den farklıdır.

Uygulamamın Windows ve Web sürümleri için hangi model modern ve hangisini seçmeliyim?

Teoride Sunum Modeli (MVVM benzeri) kullanılan UI teknolojisinden tamamen bağımsız olmalıdır. Bununla birlikte, senkonizasyon yönü ele alınmalıdır. Senkronizasyon tutkalının zaten mevcut olduğu WPF ile Komutlara ve Özelliklere bağlanarak kolayca yapılabilir. ASP.NET ile bu farklı bir hikaye. Ancak, CodeProject ile ilgili tüm Windows kullanıcı arabirimi teknolojilerinde Sunu Modeli Modeli kullanan bir makale vardır . Bir bak.


4

Yaşam döngüsü sorunları ve sayfa yayınları arasında durumu koruma gereği nedeniyle, web ve WPF arasında hiçbir kullanıcı arayüzü kodunuzun% 100'ünü tekrar kullanmanın çok zor olduğunu göreceksiniz. Asp.net, MVVM için gerekli olan güçlü veri bağlamasına sahip değil, aynı zamanda mantıkların birçoğu jscript'te çalıştırılması gerekiyor, çünkü insanlar UI'nin bir geri göndermeye gerek kalmadan kendini güncellemesini bekliyor.

SilverLight'ı kullanabilseydiniz hayatınız çok daha az karmaşık olurdu :-)

Aynı şekilde, ortak kullanıcı arayüzü bitleri için WPF uygulamanızda bir web tarayıcısı barındırabilir misiniz?


SilverLight ile ne gibi avantajlar elde edebilirim?
RPK

1
@PRK, Silverlight çoğunlukla WPF'nin yaptığı her şeyi yapmanıza izin verir ve tüm "web" kullanıcılarınızı yükleyebilirseniz, web'e erişen ve bir web uygulaması gibi "hissedilen" bir çözüm oluşturmanıza da izin verir.
Ian

4

ASP.Net ve WPF tabanlı UI için aynı sınıfları kullanma niyetiniz çok pratik değildir. Web üzerinde javascript'in veri bağlantısı ve kullanımı WPF'den çok farklıdır. Aklıma gelen tek seçenek tamamen pasif manzaralı MVP . Teorik olarak, bir Web ve WPF sayfasını dolduran aynı sunucuya sahip olabilirsiniz.
Uygulamada, iş kurallarının çoğunun bir web hizmeti katmanında olduğu ve bu web hizmeti ile görüşen mümkün olduğunca az iş kuralına sahip iki farklı sunum katmanı olduğu bir mimari geliştireceğim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.