2011-06-06 21 views
25

Bu soru, bu kapalı soruya esinlenerek: Zaten kurumsal uygulamalarda kendi özel MVVM uygulamalarını hayata geçirdikÖzel MVVM uygulaması Vs. PRISM

What does Prism actually offer the developer? And is it worth it?

. Bilmekte fayda var:

  • Neden PRISM (özellikle de PRISM, diğer MVVM çerçeveleri değil) öğrenmeliyim?
  • Özel MVVM uygulaması ve
  • üzerinden PRISM'nin faydaları
  • PRISM öğrenmeye yatırım yapmaya değer mi?

bu soru sübjektif değildir ve herkes :) argümanları içine almak etmeyiniz bir MVVM çerçevesi daha çünkü

+3

İyi oynadığımız akjoshi, bazı iyi cevaplar aldık: D – MalcomTucker

+0

İşte benzer bir soru: http://stackoverflow.com/questions/6273357/what-is-prism-for-wpf/ 6273362 # 6273362 – rboarman

cevap

23

elde edersiniz:

  1. daha birçok gözbebekleri tarafından test edilmiştir: sadece kendinizi daha. Bu (umarım) kendi çerçevenizi oluştururken yapabileceğiniz veya yapmadığınız birim testleri içerir.
  2. Diğer geliştiriciler için daha fazla okunabilir: özel MVVM çerçevenizle başka hiç kimsenin deneyimi yoktur. Ancak başka bir geliştirici projenize katılırsa veya ekibinize katılırsa veya şirketinize katılırsa, doğrudan Prism koduna atlayabilirler.
  3. Daha iyi belgeler: Aynı hatlar boyunca, yeni katılan herkesin muhtemelen, kolektif bilgiyi beyninizden ve ekipteki diğer kullanıcıları elle toplayarak ve kaynak koduna bakarak ipleri öğrenmesi gerekir. Üçüncü taraf çerçevelerin kendi belgeleri vardır ve internette daha fazla blog yayını vardır.
  4. Daha iyi bir topluluk: StackOverflow hakkında "Prism ile X'i nasıl yapabilirim?" Hakkında soru sorabilirsiniz. Bunu özel çerçevenizle soramazsınız.
  5. Benzer şekilde daha yetenekli: sadece sizin/ekibinizden daha fazla kullanıcıya hizmet sunarak daha fazla özellik eklenecektir. Daha önce hiç yapmadığınız MVVM ile ilgili bir şey yapmanız gerekiyorsa, kendi MVVM çerçevenizde bulunma ihtimali yoktur. Ancak Prism'de olabilir.
  6. Daha iyi bir yapı: Diyelim ki MVVM ile ilgili bir şey yapmak istediniz, ancak Prism'de değildi. Büyük olasılıkla bunun için iyi bir sebep var! Belirli bir alanda çalışmak için yapılmış bir (makul-olgun) çerçevede olmayan bir şey varsa, bu, yapmaya çalıştığınız şeyin soruna yaklaşmanın doğal olmayan veya garip bir yolu olduğuna dair bir işarettir. Kendi çerçevenizle çalışmak, "oh bu özelliği ekleyeceğim" demek çok kolay, o zaman 6 ay sonra büyük bir hata yaptığınızı fark ettiniz çünkü bu yeni özellik kodunuzu takip etmesi çok zor ya da çok sayıda vektör için bitiyor. hata veya neyin yok.
  7. CV satır öğesi: "Özel MVVM framework'ü uygulayan ve kullanan birisini işe alma konusunda karışık hislerim olur." Akıllı oldukları anlamına gelse de, korkulan "burada yerleşik olmayan sendromu" da gösterebilir. Öte yandan, "Microsoft Prism MVVM Framework" i çok büyük bir teknoloji listesinin arasına koymak güzel olabilir, ancak bir vay canına değil. Her iki dünyanın en iyisi, MVVM Prizine geçmeden önce öğrenme amaçlı bir oyuncak MVVM çerçevesini ilk uygulayarak elde edilen "MVVM modelinin derin anlaşılması" çizgileri boyunca daha uzun bir mermi noktası olacaktır. Evet, bu üçü arasındaki fark, CV'nizi yapmayacak ya da bozacak değil, burada yerleşik olmayan bir röportajda umutla gelecek bir şey var, ama özellikle göz önünde bulundurulduğunda, akılda kalmaya değer. yeterli özgeçmişe sahip bir yer için, onları hafifçe kısıtlayan herhangi bir şey atmayı göze alabilirler.
+7

İyi cevap .. Ama 7 için: PRISM maliyetine katlanmak yerine tam olarak ihtiyacınız olan şeyi ve hiçbir şey yapmadan kendi MVVM çerçevenizi uygulayarak çok daha az kod ve zihinsel yükten kurtulabileceğinizi iddia ediyorum. MVVM-Light'a bakarsanız: ÇOK popülerdir çünkü PRISM'deki gibi bir sihir yığınını anlamak zorunda kalmadan MVVM modelinin en basit yapı taşlarını yakalar. Basitçe söylemek gerekirse: İstediğiniz şeyi yapan bir 300 LOC çerçevesine sahip olabileceğiniz Prism'i kullanmak, buna değmez. – Tigraine

+0

@Tigraine: Prism'in gerçekten OP'nin sorusunun bir parçası olan * doğru * MVVM çerçevesi olmadığını belirtmek için +1. Umarım diğer insanlar cevaplarında MVVM çerçeveleri arasında daha iyi bir kontrast verebilirler. Benimki daha çok insanın daha az sıklıkta düşündüklerini düşündüğü bir dizi konuyu gündeme getirdiğini düşündüğüm "özel MVVM uygulaması vs ..." bölümüne yöneldi. – Domenic

+0

@Tigraine: güncellemenizi görmek: her ikisi de ne yapmak istiyorsan, Prism ve 300 LoC Framework'ü kullanma konusunda "buna değmez" nedir? Tek dezavantajı, tüm büyüsüyle bir canavar yığınının muhtemel kıtlığı gibi gözüküyor, ancak uygulamanız büyüdükçe 1-6 numaralı noktaların kesinlikle 300 LoC çerçevenize uygulanabileceğini düşünüyorum. – Domenic

8

PRISM size ilginç olabilir umuyoruz. Evet, bunun bir kısmı aslında bir MVVM çerçevesi olarak düşünülebilir (NotificationObject, EventAggregator ve Komut nesneleri bunun örnekleridir), ancak çok daha fazlasını sunar.

Size birden gevşek çiftler "Modülleri" nin Kompozit Uygulama oluşturmanıza olanak sağlar. Çok esnek ve genişletilebilir bir navigasyon çerçevesine (Bölgesel Navigasyon) sahiptir, IoC konteynerleri (özellikle Unity ve MEF) ve diğer birçok özellik ile entegrasyon sunar. Bunun dışında, belgeler (bir e-kitap dahil) oldukça iyidir ve çok sayıda örnek ve hızlı başlangıç ​​ile birlikte gelir. Bu arada, çok fazla olmaması gereken yatırımlara değdiğini düşünüyorum.

Umut bu yardımcı olur :) sizin için ortak bir görev yapmak birçok çerçeveler gibi

1

Prism, MVVM özelliklerine sahip bir uygulama kompozisyonu çerçevesidir, ancak (bence) tam özellikli bir MVVM çerçevesi değildir. Bazı temel MVVM geliştirmelerini yapmak için gereken minimum değeri sunar.

Önceki başvuru yanıtımı, uygulama kompozisyonu çerçeveleri ve MVVM çerçevelerinin bozulmasına benzer bir soruya bakın. Eğer yüksek oranda genişletilebilir ve sürdürülebilir inşa edebilirsiniz prizma ve EMB ile

Alternatives to Prism + MEF for modular MVVM apps

0

: Çoğu uygulamalar hem kategorilerden birini seçmektedir. Net uygulama Her bir modül kendi UI'sine sahip ayrı ayrı dll ile. Modüller veya uzantılar ile MainUI arasındaki tek bağlantı, uzantınızın UI'sını enjekte edeceğiniz bölge olacaktır. Ve inanıyorum bana oldukça genişletilebilir ve bakımı yapılabilir