Die Frage ist in dem Thema angegeben: Sind die Vorteile von Model-View-ViewModel (MVVM) Muster den Overhead wert?
In vielen Fällen erfordert die Implementierung des Ansichtsmodells einen erheblichen Aufwand beim Duplizieren der Modelleigenschaften und manchmal bei der Synchronisierung zwischen Model- und ViewModel-Datenelementen. Zum Beispiel derzeit in Silverlight 4 & amp; WCF-RIA, Ansichtsmodelle werden nicht generiert (wenn der Entwickler dem MVVM-Muster folgt, liegt es an ihm, die Ansichtsmodelle zu erstellen, die häufig die entsprechenden Modelleigenschaften in ViewModel duplizieren, die nichts bedeutsames sind, aber Modell als Speicher bezeichnen).
Warum wird die Model-Klasse nicht erweitert, indem zusätzliche Eigenschaften zur Verfügung gestellt werden, um es einfacher zu machen, von der View konsumiert zu werden?
Warum wird die Model-Klasse nicht erweitert, indem zusätzliche Eigenschaften zur Verfügung gestellt werden, um es einfacher zu machen, von der View konsumiert zu werden?
Genau das ist das PresentationModel . Auf welcher MVVM basiert ist stark. Der Unterschied besteht darin, dass das ViewModel das Modell für die Ansicht und nicht das Modell für die Daten ist. Sie sind also besorgt darüber, wie sich die Ansicht mit den Daten verhält.
Wenn Sie eine einfache UI haben, die nur das Modell darstellt, würde ich vorschlagen, das Model auf einer Eigenschaft des ViewModels verfügbar zu machen und an dieses zu binden. Stellen Sie sicher, dass das Modell INotifyPropertyChanged
usw. implementiert.
Die Stärke des ViewModels ist, wenn Sie als Reaktion auf eine Benutzeraktion etwas zu tun haben. Das ViewModel kann dann Befehle unterstützen, zu Services und Validierung aufrufen und das Model als Datencontainer verlassen
Warum wird die Model-Klasse nicht erweitert, indem zusätzliche Eigenschaften zur Verfügung gestellt werden, um es einfacher zu machen, von der View konsumiert zu werden?
In den einfachen Fällen ist dies alles, was das ViewModel tut - das Modell wird so zusammengefügt, dass es so erweitert wird, dass es von der View konsumiert werden kann. Wenn Ihr Modell direkt gebunden werden kann, können Sie dies gerne tun.
Davon abgesehen gibt es auf der ViewModel-Ebene mehr als nur das Umschließen des Modells - auch hier wird die anwendungsspezifische Logik - dh die Installation der Anwendung - ausgeführt. Etwas muss die Anfragen von den Model-Klassen korrekt machen und die Logik zusammensetzen.
Wenn Sie über zusätzliche Arbeit besorgt sind, können Sie immer eine ViewModelBase (INotifyPropertyChanged, Errors / Validation, generisches Zeug) erstellen, die von Ihrem ViewModel vererbt wird. Dadurch werden Dinge minimiert, von denen Sie glauben, dass sie Zeit für die Replikation kosten. Und auch Silverlight / Wpf liefert uns eine Bindung, die unsere Codierung stark reduziert, abgesehen davon, dass XAML dies auch durch die Bereitstellung von Funktionalitäten durch Markup ermöglicht. Außerdem können Sie das Design mithilfe von Bildschirmen, Controllern usw. weiterführen.
Für mich sehe ich keinen "Overhead" in Bezug auf die Verwendung von MVVM; Wenn es wäre, wäre es das wert. Es handelt richtig mit der Trennung von Sorgen. Es bietet eine gute Plattform für die Entwicklung, insbesondere in Teams, in denen sich Leute um verschiedene Aspekte der Anwendung kümmern können, ohne die Codes anderer Teammitglieder zu beeinflussen (besonders zwischen Entwicklern und Designern).
Hoffe, das hilft
Vorteile von MVVM
Ich hoffe, es hilft.
Tags und Links silverlight mvvm