2010-08-05 19 views
15

MVVM-light (w/RIA Services) En İyi Uygulamaları koleksiyonuna başlamak istiyorum. En iyi uygulamalara veya en iyi yaklaşımlara yardımcı olmak için bulduğum birkaç öğe vardır, ancak MVVM-hafif araç setini kullanan diğer kişilerden haber almak ve ne bulduklarını da görmek isterim.MVVM-light + RIA Hizmetler en iyi uygulamaları

Lütfen en iyi uygulamalarınızı bu sorunun yanıtlarını yazınız.

+3

Bunu herkesin düzenleyebileceği bir topluluk vikisine dönüştürmeyi düşünün. –

+0

Ben bunu bir com-wiki olarak düşünmüyorum. Asker bu iyi soru için itibar hak ediyor. – Shimmy

cevap

25
MVVM-Işığın

Temel Kullanım

  1. başlatılamadığı
  2. Her zaman tüm görüş modellerini içeren bir ViewModelLocator sınıf oluşturma BaseClass gelen ViewModels oluşturun App.cs dosyanın Application_Startup işlevinde DispatcherHelper Uygulamanız içinde bağlanır Kaynaklar
  3. Görüntünüze işlevler sunmak için RelayCommands kullanın
  4. DispatchHelper ne zaman kullanılmalıdır.

Temizlik-Up Fikirler:

  1. uygun, Temizleme'ye sizin DomainContext en EntitySet temizlemek için ViewModel eklemek()?
  2. ViewModelLocator'ın CleanupSomeVM() işlevini, uygulamada artık aktif olarak gerekmediklerinde, görünüm modlarını temizlemek için çağırın.

CleanUp işlevlerini ne zaman/nasıl kullandığınız hakkında başkalarından duymak isterim. Uygulamam büyüdükçe, istemci bellek kullanımını daha iyi yönetmek için bazı temizleme işlevleri ekleme ihtiyacım var. Blendability için

:

  1. bir Arayüzüne Özet Servisi/Sorgu Uygulamaları

    .
  2. Her Hizmet Uygulama sınıfı için 2 sınıf oluşturma (Tasarım 1, Üretim 1)
  3. Her bir ViewModel'inizde, gerektiğinde Sıkı Hizmet uygulamaları oluşturmak için kendi Hizmet Sınıfını kullanın (IsInDesignMode'u kullanın).
  4. DomainContext'inizi Service Implmentation Class içinde tutmak için Statik değişken kullanın.
  5. ViewModels yapıcıda DispatcherHelper.Initialize() öğesini ekleyin, ancak yalnızca Tasarım Modunda olduğunda. Blend, bir sayfa yüklenirken Uygulama'yı yüklemez ve bu, bu konuda çalışır. Katma İş Mantık için

:

  1. ViewModel sonra, ilk Modelde İş Mantık ekleyin.
  2. Uygun değişiklik/güncelleştirme olayları için mantık eklemek üzere Modelin kısmi yöntemlerini kullanın.
  3. Modelinize ait özet ve hesaplanmış değerler sağlamak için Salt Okunur özelliklerini (yalnızca alıcı) ekleyin.Görünümler İçin

:

  1. daima Locator Nesneye kök bağlayın.
  2. Yalnızca arka plan mantığını düzende veya özel UI mantığında tutmaya çalışın. ViewModel'inize başvurmaktan kaçının. Koleksiyon için

: En ViewModels içinde koleksiyonları için

  1. Kullanım CollectionViewSource, DomainContext en EntitySet
  2. kaynağı ile uygulayın tüm Filtreleme, Sıralama, ve ViewModel CollectionViewSource gruplandırma Mantık.
  3. ServiceCalls'dan sonra, Kullanıcı Arabirimini güncelleştirmek için CollectionViewSource nesnelerinizde .View.Refresh() öğesini çağırın. ViewModel koordinasyon (Kontrolör Mantık) için

  1. Kullanım Mesajları idareli çok fazla karmaşıklık yönetmek için zor olabilir.
  2. NotificationMessage ve PropertyChangedMessage sınıflarını kullanarak Gönder/Al ile birlikte kullanın. RIA DomainServices için

:

  1. inat değişiklikler fonksiyonunda herhangi günlüğü değil, güncelleme/insert Uygulamak/mantığını silin.
  2. Başka bir Varlığı Gezinme Özelliği aracılığıyla göndermeniz gerekiyorsa Ekle, Güncelle, Sil işlevleri sırasında, önce EntityStatus'u kontrol edin veya EntityStatus çakışmalarını önlemek için öğeyi başka bir Bağlamdan yükleyin. Hata ayıklama/Test için

:

  1. Kontrol Çıkışı Cilt Hataları Pencere ve bunları düzelt. Bağlama Hataları kullanıcıya sessizce başarısız olur, ancak uygulama performansını ve beklenen davranışı bozar.

    1. 1- tutun:
    2. sunucu tarafı mantığını ve işlevleri İdare Framework için

    test etmek Birim Test proje oluşturun

  2. herhangi eklendi Modeli/İş Logic doğrulamak için Silverlight Birim Testleri oluşturun -1 Eşitliklerin EşleşmesiSonraki Etki Alanı Hizmeti. Başka bir şekilde bölünmeye çalışmak sorunlara neden oluyor.
  3. Ekleme, Güncelleme ve Silme mantığınızı dikkatli bir şekilde oluşturmak için çok fazla zaman harcamak istemediğiniz sürece [Bileşim] özelliğini kullanmayın.
  4. RIA İstemcisine özel türler sunmak için ayrı bir hizmet kullanın. EntityFramework Nesnesi için DomainService'nize eklemeyin. Ekle, Güncelle, Sil işlevlerinde değil, PersistChangeSet işlevinde Sunucu tarafı güncelleştirme/bütünleştirme mantığı (diğer sistemlerin güncellenmesi gibi) gerçekleştirin.Bu, yanlışlıkla sürümünüzün güncellenmemesini sağlayan Gezinme Özellikleri aracılığıyla bir varlığın yanlışlıkla çekilmesini engeller.
  5. Güncelleştirme/tümleştirme mantığı sırasında geçerli değerleri bulmak için ek bir Bağlam oluşturun.
İlgili konular