MVVM üçün hansı quruluşu istifadə etməməlisən?

MVVM modeli ilə bir proqram inkişaf etdirirəm, amma hansı alt quruluşu istifadə etməyim lazım olan nöqtəyə çatdım.

Mümkün variantları arasında:

  • MVVM Toolkit
  • MVVM Vəqfi
  • WPF tətbiqi çərçivəsi (WAF)
  • İşıq MVVM
  • Caliburn
  • Cinch
  • Prizma

Təcrübəniz daha yaxşıdır?

225
11 сент. Rangel tərəfindən müəyyən 11 Sep. 2009-09-11 10:53 '09 saat 10:53 'da 2009-09-11 10:53
@ 13 cavab

Bu, həqiqətən, nə nail olmaq istədiyinizi və nə qədər infrastrukturunuzdan, nə də asanlıqla sizə kömək edəcək nümunələri tapa biləcəyinizdən asılıdır. Mən buradakı maraqları ən az bir MVVM infrastrukturunda aktiv iştirak etdiyim üçün açıqlayacağam və digər WPF Disciples qruplarına daxil oldum, buna görə bir az qərəzli oldum. Bunu söyləyərək, bura gedir:

Microsoft MVVM Toolkit hələ də alfa mərhələlərində çoxdur. İlk olaraq azad edildikdə, etmədikləri şeylər səbəbiylə Şagirdlərdən bir az getdi. MS bu strukturun ətini axtarır, belə ki, müşahidə oluna bilər - hələ hazır deyil.

Quruluş MVVM - ah Sosializin quruluş versiyası. Josh MVVM-nin babasından biridir və o, böyük bir tərəfdardır və şəkilin müəllimidir. Nəticədə, başqa yerdə tapdığınız şeylərdən birində Joshun barmaq izləri var. Bu struktur MVVM əsaslarını təmin etmək üçün nəzərdə tutulmuşdur və daha çox ezoterik problemlərin həlli üçün deyil. Əvvəlcə bu yalnız WPF üçün nəzərdə tutulmuşdu, amma Laurent Bugnion kimi insanlar və mən funksionallıq / layihələr əlavə etdilər, bu da Silverlight-uyğun mühitdir.

WAF - heç bir təcrübə yoxdur, buna görə şərh edə bilmirəm, mən qorxuram.

MVVM Light - Laurent Bugnion özü üzərinə götürdü və yalnız versiya 2-ə yüksəldi. Bu çox yaxşı bir təməldir, lakin yenə də MVVM tətbiqlərinin hər bir aspektini əhatə etməyi nəzərdə tutmur. Laurent'in fonunu nəzərə alaraq, Silverlight və Blendability üçün çox güclü bir dəstəyi var.

Yeniləmə. Laurent mənə yalnız .NET 3.5 və .NET 4.0 xüsusiyyətləri ilə uyğun olduğunu bildirdi. Vay o Laurent'e.

Cinch - Sacha Barber yalnız MVVM üçün WPF ilə işləyir. Bu yuxarıda qeyd etdiyim çərçivədən daha çox əsas götürür. Bu böyük bir təməldir və Bill Kempf, əla bir Onyx layihəsində təsvir olunan anlayışlardan istifadə edir. Oniks, MVVM çərçivələrini əlavə etmək üçün nəzərdə tutulmuşdur və insanlar MVVM / WPF-də bunu etmək üçün adətən çətin olan funksionallıq əlavə edir. Yenidən, WPF üçün nəzərdə tutulan təkrar, Onyx SL uyğunluğunu daxil etmək üçün irəli gəldi - xüsusilə də qürur duyduğum bir iş.

Prizma - Yenə də istifadə etmədi, amma çox yaxşı bir şey eşitdim.

Ocean - Sidney qrupu üçün proqram meneceri Karl Schifflett yaxınlarda MVVM WPF tam özellikli mühitini buraxdı. Yenə də bu böyük bir çərçivədir və bunu tövsiyə edə bilərsiniz.

Aşağı xətt, onlara baxmaq və sizin düşüncələrinizə və istəklərinizə uyğun olan ən intuitiv şəkildə uyğun işləmək üçün müxtəlif çərçivələri yükləməkdir. Əgər siz Silverlight-i eyni kod bazasından dəstəkləmək istədiyinizi düşünürsəniz, yalnız WPF çərçivəsi azaldılmalıdır.

191
11 сент. Cavab Pete OHanlon tərəfindən 11 sentyabrda verilir . 2009-09-11 11:38 '09 at 11:38 am 2009-09-11 11:38

Bu məqaləni çox faydalı tapdım http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/ Belə ki, mən gələcək istifadəçilərə gətirəcəyəm

Cinch bölməsini yeniləyirəm və funksiyalarına Silverlight dəstəyi əlavə etdim.

Uzun ömür üçün üzr istəyirəm

Ümumi funksiyaları:

• ViewModelBase sinifi (INotifyPropertyChanged interfeysini tətbiq etmək üçün)

• RelayCommand bir UI komutunu ViewModels işleyicileriyle əlaqələndirmək üçün bir sinifdir

• Vahid testlər bir çərçivə ilə gəlir

Saş

• Sacha Barber tərəfindən yazılmışdır

• Silverlight dəstəyi: heç biri (Cinch versiyası 2 Silverlight-u dəstəkləyir)

• Sənədlər: Əla, CodeProject-da 6 məqalə

Hostinq: CodePlex

• Lisenziya: Proyekt kodu üçün açıq lisenziya

• Xüsusiyyətləri:

  • tətbiq olunan davranış

  • IDataErrorInfo ilə yoxlayın

  • IEditableObject dəstəyi

  • zəif hadisələrin yaradılması və qeydiyyatı

  • zəif hadisələrdən istifadə edən mesajlaşma brokerləri

  • IOC / DI dəstəyi (Birliyi istifadə edərək)

  • xidmətlər: hadisə yazıcı, mesaj qutusu, açıq informasiya qutusu, açılır pencere

  • mövzu köməkçiləri

  • menyu dəstləri dəstəyi

  • lockable baxış rejimi

  • MVVM kod generatoru

MVVM Light Toolkit Tool

• Yazan Laurent Bugnion

• Silverlight dəstəyi: bəli

• Sənədlər: Laurents və digər developers bloglarında bir çox məqalə mövcuddur.

Hostinq: CodePlex

• Lisans: MIT Lisansı

• Xüsusiyyətləri:

  • MSI Installer

  • VS layihəsi və maddə şablonu

  • VS kod parçaları

  • Intermodular ünsiyyət üçün mesaj sistemi

  • Komanda olaraq hadisə yerinə yetirmək

MVVM köməkçiləri

• Yazan Mark Smith

• Silverlight dəstəyi: no

• Sənədlər: Bəzi Marks Blog məqalələri

• Hosting: şəxsi sayt

• Lisenziya: müəyyən edilməmişdir

• Xüsusiyyətləri:

  • tətbiq olunan davranış

  • markup genişləndirilməsi istifadə edərək model yaradılması

  • atribut əsaslı yoxlanış

  • ServiceProvider yanaşmasını istifadə edərək IOC / DI

  • closeable viewmodel

  • kursorun gözləməsi (yeni WaitCursor () istifadə edərək {// kodunuz burada))

MVVM Vəqfi

• Yazan Josh Smith

• Silverlight dəstəyi: no

• Sənədlər: Josh-də və ya Marlon Grechs-də blogun həyata keçirilməsi ilə bağlı məqalələr

Hostinq: CodePlex

• Lisenziya: MS-PL

• Xüsusiyyətləri:

  • Intermodular ünsiyyət üçün mesaj sistemi

  • Hadisə monitoru PropertyChanged

Caliburn

• Yazan Rob Eisenberg

• Silverlight dəstəyi: bəli

• Sənədlər: tam onlayn sənədlər mövcuddur.

Hostinq: CodePlex http://www.codeplex.com/caliburn

• Lisans: MIT Lisansı

• Xüsusiyyətləri:

  • Komandalar
  • hərəkətlərin üst hissəsində yaradılır və beləliklə, bir neçə giriş parametrləri, filtrlər və avtomatik asinxron icrası daxil olmaqla bir çox funksiyaları paylaşır.

  • istifadəçi arayüzünün müxtəlif komponentləri üçün semantikanın aktivasiya işlənməsi, ləğv edilməsi və söndürülməsi kimi istifadəçi interfeysi ömrü məsələlərini həll edir.

  • Caliburn tətbiqləri tam sınaqdan keçirilir.

  • fon vəzifəsi meneceri kimi müxtəlif kommunal

  • müxtəlif istifadəçi interfeysi şablonlarını dəstəkləyir (yalnız MVVM deyil)

  • asılılıq enjeksiyon qabı

border=0

Oniks

• Yazan William e Kempf

• Silverlight dəstəyi: no

• Sənədlər: Basic CodePlex-də mövcuddur

Hostinq: CodePlex

• Lisenziya: qeyd edilməmişdir

• Xüsusiyyətləri:

  • ServiceLocator Şablonu

  • Xüsusi bir biçimlendirme uzantısı istifadə edərək ViewModel yaradılması

  • IDisplayMessage kimi istifadəçi interfeysi xidmətləri

Kalsium

• Müəllif: Daniel Vaughan

• Silverlight dəstəyi: no

• Sənədlər: 2 çox ətraflı Kodeks Layihəsi (part1 və 2-ci hissə)

Hostinq: CodePlex

• Lisenziya: müəllif hüquqlarını istifadə edin, surətini dəyişdirin və / və ya yaymaq və saxlamaq!

• Xüsusiyyətləri:

  • Modul menecerinin işləmə müddətində modulları aktivləşdirməsi və ya aradan qaldırılması üçün

  • eyni API istifadə edən bir müştəri və ya server olan bir istifadəçi ilə əlaqə yaratmaq üçün mesajlaşma xidmətləri

  • Komanda xidməti, WPF ICommands'ı aktiv görünüş modu və ya viewmodel interfeyiyi tətbiq edərkən aktiv olan interfeyslər ilə birləşdirir.

  • Toolbar və menyular üçün rayon adapterləri

  • Müştərilər üçün server girişləri qutunun arxasında işə hazırdır

  • Veb brauzer, mətn redaktoru, çıxış pəncərəsi və daha çox kimi modullar daxildir.

  • Çirkli fayl göstəricisi ilə sekmeli interfeys (modullar üçün yenidən istifadə edilə bilər)

nRoute

• Rishi tərəfindən yazılmışdır

• Silverlight dəstəyi: bəli

• Sənədlər: Müəlliflərin bloglarında bir çox məqalə mövcuddur (linklər üçün CodePlex layihəsinin əsas səhifəinə baxın)

Hostinq: CodePlex

• Lisenziya: MS-PL

• Xüsusiyyətləri:

  • Blend3 davranış nümunələri və tetikleyiciler üçün dəstək

  • Resurs Yerləşdirmə Quruluşu

  • Xidmətlərə göz atın: OpenFileDialog, ShowMessage ...

  • View və ViewModel birlikdə göstərmək üçün atributları istifadə edir

Nito MVVM

• Shammah tərəfindən yazılmışdır

• Silverlight dəstəyi: no

• Sənədlər: no

Hostinq: CodePlex

• Lisenziya: qeyd edilməmişdir

• Xüsusiyyətləri:

  • ICommand interfeysinin müxtəlif MVVM dostluq tətbiqləri

Okean

• Müəllif: Karl Schifflet

• Silverlight dəstəyi: no

• Sənədlər: məqalələr Karls bloqunda mövcuddur.

• Hosting: şəxsi sayt

• Lisenziya: qeyd edilməmişdir

• Xüsusiyyətləri:

  • VB.Net-də yazılmışdır

  • atribut əsaslı yoxlanış

  • bazlı dərslər viewmodel: relaycommand, closeableviewmodel ...

  • SQL Server Data Access Level

MVVM əsas infrastrukturu

• Yazan: Leicester Lobo

• Silverlight dəstəyi: no

• Sənədlər: kitabxanada mövcud nümunəvi proqram

Hostinq: CodePlex

• Lisenziya: MS-PL

• Xüsusiyyətləri:

  • komanda heyəti \ Keybinding

  • virtual maşınlar arasında mesajlaşma

  • əlavə davranışı olan əmrlər kimi hadisənin idarə edilməsi

  • xidmət kimi informasiya dialoqları (və daha çox)

  • VS kod parçaları

Yaxşılıq

• Müəllif: Peter Ohanlon • Silverlight dəstəyi: bəli

• Sənədlər: kitabxanada mövcud nümunəvi proqram

Hostinq: CodePlex

• Lisenziya: MS-PL

• Xüsusiyyətləri:

  • İş yerinin idarə edilməsi (bağlana bilən sənədlər dəsti)

  • dəriləri dəstəkləyir

  • virtual maşınlar arasında mesajlaşma

53
06 июля '11 в 15:51 2011-07-06 15:51 Cavab Nasser Hadjlo tərəfindən verilib 06 iyul '06 15:51 2011-07-06 15:51

Pete içində olmayan aləmlərin mükəmməl cavabını təsvir etməyə çalışıram:

MVVM Toolkit (Microsoft) , bu şablonu istifadə edərək yeni başlayanlar üçün dəstəkləyən Visual Studio layihəsi şablonları ilə çox yüngül bir kitabxanadır. Microsoft onların toolkitləri üçün yaxşı rəy alırsa, yeni bir Visual Studio layihəsi şablonu (bəlkə 2010) kimi tətbiq edə bilərlər.

Prizma (Microsoft p p) , MVVM modelinin dəstəklənməsindən daha çox təmin edən əsasdır. Bu layihənin əsas məqsədi modul WPF və / və ya Silverlight tətbiqlərini yaratmağa kömək etməkdir. Yalnız bir MVVM şablonunu tətbiq etməli olduğunuzda və ya .NET / WPF üçün yeni olduğunuza görə, bu layihəni önermirəm. Həmçinin baxın: Link .

WPF Application Framework (WAF) , MVVM ilə WPF proqramları yaratmağa kömək edən yüngül bir çərçivədir. Yalnız WPF üçün, və bu səbəbdən Silverlight'ı dəstəkləmir. Bu, nəzarətçilərin tətbiqi ilə digər MVVM mühitlərindən bir qədər fərqlənir. Onlar tətbiqin işinə görə məsuliyyət daşıyırlar və müxtəlif ViewModels arasında vasitəçilik edirlər.

43
02 окт. cavab jbe 02 oct verilir . 2009-10-02 19:14 '09 at 07:14 2009-10-02 19:14

Fur Mvvm həqiqətən İMO-nun dəstəklənməsi üçün tam bir çərçivə tələb etmir. Konsepsiyanı başa düşürsəniz, INotify'i tətbiq edən təmiz bir əsas VM elementi ilə və sadəcə oradan da başlamaq çox asandır.

19
18 марта '10 в 4:25 2010-03-18 04:25 Cavab 18 Mart 2010 günü saat 4:25 'də Pierreten tərəfindən verildi. 2010-03-18 04:25

Həmçinin baxın:

CaliburnOnyx !

16
11 сент. Cavab rudigrobler 11 sep verilir . 2009-09-11 15:00 '09 saat 15:00 'da 2009-09-11 15:00

Özünüzü qarışdırın!

PRISM-dən EventAggregator, MVVM-dən ViewModelBase ilə və s. Mən həmçinin RelayCommand (DelegateCommand, bəzi yerlərdə çağırılan) digər məlumatları qəbul etmək üçün konfiqurasiya etdim.

Mən yalnız bir quruluş təklif etməyəcəyəm.

10
22 окт. 22 oktyabrda Andrei Rîne tərəfindən verilmiş cavab 2010-10-22 01:04 '10 at 1:04 2010-10-22 01:04

Mənim bahisim Caliburn və MVVMlight'da olacaq, bu mvvm çərçivələrindən bir çoxunun gümüşü işıqlandıracağı görünür. MVVM'nin IOC çərçivələrindən daha çox imkanları olacağını öngörüyorum, çünki mvvm strukturunda funksiya sərhədini təyin etmək daha çətindir. Hesab edirəm ki, sizin layihənizə uyğun olan ən yaxşı yolu onların imkanlarını müqayisə etmək / müqayisə etməkdir.

Mix10 da yoxlayın. Söhbətdən çox şey öyrənirəm: quruluşu mvvm quraq.

8
20 марта '10 в 22:36 2010-03-20 22:36 cavab MCSean tərəfindən 20 Mart 'da 10:36' də verildi. 2010-03-20 22:36

Həm də Kokteyl və DevForce Ideablade çərçivəsində

6
04 окт. cavab 04 yanvar ayına aiddir . 2012-10-04 01:10 '12 at 1:10 2012-10-04 01:10

Prizma istifadə edirəm və onu sevirəm. Mənim üçün ən böyük şeylərdən biri lazım olsa və yaxşı nümunələrə kömək edə biləcək digər insanlar olacaqdı. Əsasları mənimsəmişdən sonra, ərizənizdə bir neçə genişlənmə paketi olacaq və başqaları ilə eyni quruluşla işləyərkən sizin üçün daha asan olacaq.

4
16 дек. cavab 16 dəqə verilir . 2010-12-16 07:11 '10 at 07:11 2010-12-16 07:11

Ümumiyyətlə, mənim ərizimlə 90% -dir və MVVM Toolkitini istifadə etdiyim bütün funksiya, funksiyanın funksiyasını təşkil edir və mənim üçün əmr hazırlayır. Hesab edirəm ki, bir neçə saat ərzində başqa çərçivəyə və ya çərçivəyə keçə bilmirəm.

2
05 авг. cavab verdi mico 05 aug. 2010-08-05 18:16 '10 at 06:16 PM 2010-08-05 18:16

Başqa bir sual MEFedMVVM'dir . Mən bunu bir neçə layihədə istifadə etdim və bu, yüngül, qeyri-zəifdir və Silverlight və WPF-ni dəstəkləyir. Ayrıca, bu məhsulu istifadə edənlər üçün Blend-də inkişaf vaxt məlumatlarını da dəstəkləyə bilər.

2
17 февр. 17 fevralda John Reyner tərəfindən verilmiş cavab. 2011-02-17 00:59 '11 'də 0:59' da 2011-02-17 00:59

NRoute də var

MVVM-ni dəstəkləyən çox yaxşı WPF / Silverlight proqram infrastrukturu

1
04 авг. Cavab verilir Daniel O 04 Avqust. 2010-08-04 16:59 '10 at 16:59 2010-08-04 16:59

WPF / MVVM proqram çərçivəsinin üstündəki Extensibility (eklenti yazma imkanı) üçün arıyorsanız, SoapBox Core ilə maraqlana bilər: Mən bunu yazdım. Bu açıq mənbədir, buna görə də onu istifadə etmirsinizsə də, sizin üçün yaxşı fikirlər ola bilər. Həm genişlənmə, həm də IoC üçün MEF istifadə edir.

1
07 нояб. Cavab Scott Whitlock 07 noyabr tarixində verilir. 2009-11-07 06:45 '09 saat 06:45 'da 2009-11-07 06:45

haqqında suallar və ya bir sual