Frage

Ich entwickle eine Anwendung mit dem MVVM Modell, aber ich habe einen Punkt erreicht, wo ich wählen müssen, der Rahmen zu verwenden.

Zu den möglichen Optionen sind:

  • MVVM Toolkit
  • MVVM Foundation
  • WPF Application Framework (WAF)
  • Licht MVVM
  • Caliburn
  • Cinch
  • Prism

In Ihrer Erfahrung, was ist besser?

War es hilfreich?

Lösung

Es hängt wirklich davon ab, was Sie erreichen wollen und wie viel Infrastruktur, die Sie an Ort und Stelle wollen schon, sowie die Leichtigkeit, mit der Sie Proben finden, die Ihnen helfen. Ich werde ein Interesse hier erklären, weil ich aktiv in mindestens einem MVVM Rahmen beteiligt, und ich habe Eingang in andere durch die WPF Disciples Gruppe hatte, so bin ich ein wenig voreingenommen. Zu sagen, dass geht hier:

MVVM Toolkit - das ist immer noch sehr viel in den alpha-Phasen. Wenn es ursprünglich veröffentlicht wurde, dauerte es ein bisschen ein savaging von den Jüngern, weil von dem, was sie nicht taten. Zu sagen, dass MS sucht diesen Rahmen, Rindfleisch, so dass es eine ist zu sehen - es ist doch einfach nicht bereit

.

MVVM Foundation - ah Josh Smith Version des Frameworks. Josh ist einer der Väter von MVVM und hat ein großer Verfechter und Lehrer des Musters gewesen. Als Ergebnis eine Menge von dem, was man in anderen Frameworks finden hat Joshs Fingerabdrücke alle über sie. Dieser Rahmen soll die Grundlagen der MVVM, zur Verfügung zu stellen und nicht einige der eher esoterischen Probleme zu lösen. Ursprünglich war dies soll nur für WPF, aber die Leute wie Laurent Bugnion und ich haben Funktionalität / Projekte hinzugefügt, die dies bedeuten auch einen Silverlight-kompatiblen Rahmen sein.

WAF - keine Erfahrung davon, so kann ich nicht kommentieren fürchte ich.

MVVM Licht - Laurent Bugnion nimmt auf sie, und nur aktualisiert auf Version 2. Das ist ein sehr guter Rahmen, aber auch hier ist es nicht jeden einzelnen Aspekt MVVM Anwendungen abdecken soll. Laurents Hintergrund gegeben, es hat sehr starken Silverlight und Mischbarkeit Unterstützung drin.

Update Laurent hat mich gerade informiert, dass die .NET 3.5 und .NET 4.0-Versionen sind Features kompatibel. Wau gehen Laurent.

Cinch - Sacha Barbers ausgezeichnete WPF nur MVVM Rahmen. Dieser erstreckt sich über mehr Boden als die Gerüste ich oben gesprochen habe. Es ist ein ausgezeichneter Rahmen, und nutzt in Bill Kempf ausgezeichnet Onyx Projekt. Onyx soll MVVM Frameworks und fügt in der Funktionalität ergänzen, die schwer typisch gewesen ist für die Menschen in MVVM / WPF zu tun. Auch hier ursprünglich nur WPF sollte, hat Onyx fortgeschritten SL Kompatibilität schließen -. Arbeit, die ich besonders stolz bin, in sein beteiligt

Prism - Wieder habe ich es nie benutzt, aber ich habe eine Menge zu hören gute Dinge über sie.

Ozean - Karl Shifflett , Programm-Manager auf dem Cider-Team veröffentlichten vor kurzem einen voll funktionsfähigen WPF MVVM Rahmen. Auch dies ist ein ausgezeichneter Rahmen und hat viel für sich.

Das Endergebnis ist, laden Sie die verschiedenen Rahmenbedingungen auf sich einen Blick darauf werfen und herausfinden, welche passend für die meisten intuitiv mit der Art zu denken und mit Ihren Anforderungen. Wenn Sie denken, dass Sie Silverlight aus der gleichen Code-Basis dann die WPF nur Frameworks diskontiert werden sollten unterstützen möchten.

Andere Tipps

Ich fand diesen Artikel sehr nützlich http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/ Damit bringe ich es hier für die kommenden Nutzer

ich den Cinch Abschnitt aktualisieren und Silverlight-Unterstützung zu den Funktionen

hinzufügen

Es tut mir leid für die lange Geschichte

Gemeinsame Merkmale:

  

• ViewModelBase Klasse (für die Umsetzung der INotifyPropertyChanged-Schnittstelle)

     

• RelayCommand wie Klasse UI Befehl Ansichtsmodell der Handler zu verknüpfen

     

• Unit-Tests kommen mit dem Rahmen

Cinch

  

• Autor: Sacha Barber

     

• Silverlight Unterstützung: nein (Cinch Version 2 unterstützt Silverlight)

     

• Dokumentation: ausgezeichnet, 6 Artikel auf Codeproject veröffentlicht

     

• Hosting: CodePlex

     

• Lizenz: Code Project Open License

     

• Eigenschaften:

     
      
  1. angebracht Verhaltensweisen

  2.   
  3. Validierung mit IDataErrorInfo

  4.   
  5. Unterstützung für IEditableObject

  6.   
  7. schwache Ereignisse Schaffung und Abo

  8.   
  9. Mediator Messaging schwache Ereignisse

  10.   
  11. IOC / DI-Unterstützung (mit Unity)

  12.   
  13. Dienstleistungen: Event Logger, Meldungsfeld, Öffnen Speichern Dialog, Popup

  14.   
  15. Threading Helfer

  16.   
  17. Unterstützung für Menüpunkte

  18.   
  19. verschließbare Viewmodel

  20.   
  21. MVVM-Code-Generator

  22.   

MVVM Light Toolkit

  

• Autor: Laurent Bugnion

     

• Silverlight-Unterstützung: ja

     

• Dokumentation: viele Artikel auf Laurent Blog + anderen Entwickler als auch

     

• Hosting-: CodePlex

     

• Lizenz: MIT-Lizenz

     

• Eigenschaften:

     
      
  1. MSI-Installer

  2.   
  3. VS-Projekt und Elementvorlage

  4.   
  5. VS Code-Schnipsel

  6.   
  7. Messenger-System für interViewModel Kommunikation

  8.   
  9. Handhabung Ereignisse als Befehle

  10.   

MVVM Helfer

  

• Autor: Mark Smith

     

• Silverlight Unterstützung: nein

     

• Dokumentation: einige Artikel auf Marks Blog

     

• Hosting: persönliche Webseite

     

• Lizenz: nicht angegeben

     

• Eigenschaften:

     
      
  1. angebracht Verhaltensweisen

  2.   
  3. Ansichtsmodell Erstellung mit Markup Erweiterung

  4.   
  5. Attribute basierte Validierung

  6.   
  7. IOC / DI mit Ansatz Serviceprovider

  8.   
  9. verschließbares Ansichtsmodell

  10.   
  11. Wartecursor (mit neuer Waitcursor () {// Hier Code eingeben})

  12.   

MVVM Foundation

  

• Autor: Josh Smith

     

• Silverlight Unterstützung: nein

     

• Dokumentation: Artikel über die Messenger-Implementierung auf Josh oder Marlon Grech Blog

     

• Hosting-: CodePlex

     

• Lizenz: MS-PL

     

• Eigenschaften:

     
      
  1. Messenger-System für interViewModel Kommunikation

  2.   
  3. Propertyereignismonitor

  4.   

Caliburn

  

• Autor: Rob Eisenberg

     

• Silverlight-Unterstützung: ja

     

• Dokumentation: alle verfügbaren Online-Dokumentation

     

• Hosting: CodePlex http://www.codeplex.com/caliburn

     

• Lizenz: MIT-Lizenz

     

• Eigenschaften:

     
      
  1. Befehle auf den Aktionen aufgebaut sind und so viele der gleichen Merkmale, einschließlich mehreren Eingabeparametern, Filter und automatische asynchrone Ausführung

  2. teilen   
  3. Moderatoren, die UI-Lifecycle-Problem wie Umgang mit Aktivierung behandelt, deactivation und Shutdown-Semantik für verschiedene UI-Komponenten

  4.   
  5. Caliburn Anwendungen sind voll prüfbar

  6.   
  7. verschiedene Dienstprogramme wie Hintergrund-Task-Manager

  8.   
  9. unterstützt verschiedene UI-Muster (nicht mvvm nur)

  10.   
  11. Dependency Injection Container

  12.   

Onyx

  

• Autor: William e Kempf

     

• Silverlight Unterstützung: nein

     

• Dokumentation: grundlegende Einführung auf CodePlex

     

• Hosting-: CodePlex

     

• Lizenz: keine Angabe

     

• Eigenschaften:

     
      
  1. Servicelocator Muster

  2.   
  3. Ansichtsmodell Erstellung einer benutzerdefinierten Markup-Erweiterung mit

  4.   
  5. UI Dienstleistungen wie IDisplayMessage

  6.   

Calcium

  

• Autor: Daniel Vaughan

     

• Silverlight Unterstützung: nein

     

• Dokumentation: 2 sehr detaillierter Artikel über Codeproject (Teil1 und Teil2)

     

• Hosting-: CodePlex

     

• Lizenz: nutzen, zu kopieren, modifizieren und / oder zu verbreiten und das Urheberrecht halten

     

• Eigenschaften:

     
      
  1. Module Manager zum Aktivieren oder von Modulen zur Laufzeit deaktivieren

  2.   
  3. Messaging-Dienste für die Benutzer von dem Client oder Server interagieren die gleiche API mit

  4.   
  5. Command Service WPF ICommands mit Content-Schnittstellen zu verknüpfen, die erst dann aktiv, wenn eine aktive Ansicht oder Viewmodel der Schnittstelle implementiert

  6.   
  7. Region Adapter für Symbolleisten und Menüs

  8.   
  9. Client-Server-Anmeldung bereit out-of-the-box arbeiten

  10.   
  11. Module, wie ein Web-Browser, Texteditor, Ausgabefenster und vieles mehr

  12. Enthält   
  13. Tabbed Interface mit schmutziger Dateianzeige (wiederverwendbar über Module)

  14.   

nRoute

  

• Autor: Rishi

     

• Silverlight-Unterstützung: ja

     

• Dokumentation: viele Artikel auf Autoren Blog (siehe CodePlex Projekt-Homepage für die Links)

     

• Hosting-: CodePlex

     

• Lizenz: MS-PL

     

• Eigenschaften:

     
      
  1. Unterstützung BLEND3 Verhalten und löst Modelle

  2.   
  3. resource locator Rahmen

  4.   
  5. Darstellungsdienste: Openfiledialog, Showmessage ...

  6.   
  7. verwendet Attribute anzeigen und Ansichtsmodell zusammen

  8. zur Karte   

Nito MVVM

  

• Autor: Shammah

     

• Silverlight Unterstützung: nein

     

• Dokumentation: no

     

• Hosting-: CodePlex

     

• Lizenz: keine Angabe

     

• Eigenschaften:

     
      
  1. verschiedene MVVM freundliche Implementierungen der ICommand Schnittstelle
  2.   

Ocean

  

• Autor: Karl Shifflet

     

• Silverlight Unterstützung: nein

     

• Dokumentation: Artikel auf Karl Blog

     

• Hosting: persönliche Webseite

     

• Lizenz: keine Angabe

     

• Eigenschaften:

     
      
  1. geschrieben in VB.Net

  2.   
  3. Attribut basierte Validierung

  4.   
  5. Ansichtsmodell Basisklassen: relaycommand, closeableviewmodel ...

  6.   
  7. SQL Server-Datenzugriffsschicht

  8.   

Grund MVVM Rahmen

  

• Autor: Lester Lobo

     

• Silverlight Unterstützung: nein

     

• Dokumentation: Beispielanwendung zur Verfügung mit der Bibliothek

     

• Hosting-: CodePlex

     

• Lizenz: MS-PL

     

• Eigenschaften:

     
      
  1. Delegieren Befehle \ KeyBinding

  2.   
  3. Messaging zwischen VM

  4.   
  5. Handhabung Ereignisse als Befehle mit angebautem Verhalten

  6.   
  7. Handhabung Dialoge (und mehr) als Service

  8.   
  9. VS Code-Schnipsel

  10.   

Goodlight

  

• Autor: Peter O'Hanlon • Silverlight-Unterstützung: ja

     

• Dokumentation: Beispielanwendung zur Verfügung mit der Bibliothek

     

• Hosting: CodePlex

     

• Lizenz: MS-PL

     

• Eigenschaften:

     
      
  1. „Arbeitsbereich“ Management (Satz von Dokumenten, die geschlossen werden können)

  2.   
  3. Haut Unterstützung

  4.   
  5. Messaging zwischen VM

  6.   

Ich versuche, die Frameworks zu beschreiben, in Petes großer Antwort fehlt:

MVVM Toolkit (Microsoft) ist ein sehr leichtes Bibliothek mit Visual Studio-Projekt-Vorlagen, die Anfänger mit diesem Muster unterstützen soll. Wenn Microsoft für ihre Toolkit gutes Feedback bekommt dann könnten sie dies als ein neues Visual Studio implementieren (vielleicht 2010) Projektvorlage.

Prism (Microsoft p & p) ist ein Framework, das mehr als das bietet Unterstützung für das MVVM-Muster. Das Hauptziel dieses Projektes ist es, Ihnen zu helfen zu bauen modular WPF und / oder Silverlight-Anwendungen. Wenn Sie müssen nur das MVVM Muster zu implementieren oder Sie sind ein Anfänger in .NET / WPF Ich werde dieses Projekt nicht empfehlen.  Siehe auch:. Link-

WPF Application Framework (WAF) ist ein leichter Rahmen, der Ihnen hilft, zu schaffen WPF apps mit MVVM. Es ist nur für WPF und so ist es nicht Silverlight unterstützen. Es geht ein bisschen einen anderen Weg als die meisten anderen MVVM Rahmen mit der Einführung von

Meh. Mvvm nicht wirklich einen ganzen Rahmen erfordern IMO zu unterstützen. Wenn Sie das Konzept zu verstehen, ist es ziemlich einfach mit einer sauberen VM Basisklasse zu starten, die inotify implementiert, und gehen Sie einfach von dort aus.

Mischen Sie Ihre eigenen!

Ich benutzen Eventaggregator von PRISM, mit ViewModelBase von MVVM Fundament und so weiter. Ich zwickte auch das RelayCommand (DelegateCommand an einigen Stellen genannt) zu anderen Daten zu akzeptieren, und so weiter.

würde ich nicht nur einen Rahmen empfehlen per se.

meine Wette auf Caliburn und MVVMlight sein wird, scheint es, dass nicht viele dieser mvvm Frameworks Silverlight unterstützen. Ich kann voraussehen, dass es mehr MVVM Rahmen wählen als das IoC-Frameworks, weil es schwieriger ist, die Funktion Grenze zum mvvm Rahmen einzurichten. Ich denke, der beste Weg, um herauszufinden, welche besser Anzug Ihr Projekt sein wird, ist durch die Auflistung / Vergleich ihrer Funktionen.

Überprüfen Sie auch MIX10. Ich lerne viel von der Diskussion: Ihr mvvm Rahmen bauen

.

Auch Cocktail und DevForce Rahmen von Ideablade

Ich bin mit Prism und es mag. Einer der großen Dinge für mich war, dass es aus anderen Leute da wäre, den mir, wenn nötig und gute Beispiele helfen könnte. Sobald Sie die Grundlagen zum Laufen bringen, gibt es eine ganze Reihe von Erweiterungen für Ihre App, die Sie brauchen, und es ist einfach so viel einfacher, wenn Sie mit dem gleichen Rahmen wie andere arbeiten.

Alles in allem bin ich 90% durch meine Anwendung und alles, was ich von MVVM Toolkit verwendet habe, ist die Fabrik-Funktion, die einen Befehl baut für mich eine Delegatfunktion gegeben starten in Ausführen. Ich glaube, ich zu jedem anderen Rahmen oder ohne Rahmen in ein paar Stunden wechseln könnte.

Ein anderes zu berücksichtigen ist, MEFedMVVM . Ich habe es auf ein paar Projekte verwendet, und es ist leicht, nicht-intrusive und unterstützt Silverlight und WPF. Es ist auch in der Lage Entwurfszeitdaten in Blend, für diejenigen zu unterstützen, die dieses Produkt verwendet.

Wenn Sie sich für Erweiterbarkeit (die Fähigkeit, Add-In schreiben) suchen auf einem WPF / MVVM Anwendungs-Framework, dann können Sie interessiert sein SoapBox Kern Disclaimer: ich habe es geschrieben . Es ist Open Source, also auch wenn Sie es nicht verwenden, könnte es einige gute Ideen in für Sie da sein. Es verwendet MEF für beide Erweiterbarkeit und IoC.

Es gibt auch nRoute

Ein wirklich schönes Anwendungsframework für WPF / Silverlight, die MVVM

unterstützt
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top