Differenz zwischen MVVM und MVP Unterschied zwischen

Anonim

Der Zweck der Softwareentwicklung ist es, Lösungen zu entwickeln, die Bedürfnisse und Probleme für Benutzer und Unternehmen adressieren. Um dies zu erreichen, werden verschiedene Technologien und Architekturmuster wie Model-View-ViewModel (MVVM) und Model-View-Presenter (MVP) verwendet.

Wie bei allem, was hergestellt wird, ist der erste Schritt die Planung und Konstruktion. Der Software-Design-Prozess kann eine Spezifikation sein, die auf dem bevorzugten Technologie-Tool-Set basiert, und er kann alle Aktivitäten von der Konzeption über die Planung bis zur Implementierung bis hin zu Updates und Modifikationen umfassen.

Es umfasst das Low-Level- und High-Level-Architekturdesign basierend auf ausgewählten Architekturmustern und bildet wiederverwendbare Lösungen mithilfe von Entwurfsmustern ab.

Softwareanwendungsstruktur

Die Softwarearchitektur definiert die Struktur einer Anwendung, die den technischen, betrieblichen und Benutzeranforderungen entspricht und sich darauf bezieht, wie der Code organisiert und verwaltet wird.

Die Entscheidung über die Architektur einer Softwareanwendung ist entscheidend, da sie kein einfacher, veränderbarer Teil einer Anwendung ist, die bereits entwickelt wurde. Daher muss das architektonische Muster festgelegt werden, bevor irgendein Programm beginnt.

Architekturmuster unterscheiden sich etwas von Entwurfsmustern, da ihr Umfang viel breiter ist, indem sie sich mit mehr technischen Problemen wie der Leistung und den Einschränkungen der Hardware und hoher Verfügbarkeit befassen. Beispiele für unterschiedliche Architekturmuster sind MVC, MVVM und MVP.

Auf der anderen Seite sind Entwurfsmuster formalisierte Best Practices, die eine wiederverwendbare objektorientierte Entwicklung ermöglichen und einfacher zu pflegen und zu ändern sind als die Architektur einer Anwendung.

Architektur Patterns

Model View Controller (MVC) war eines der ersten Architektur-Patterns für Web-Anwendungen, das vor allem in der Java-Community von Mitte bis Ende der 90er Jahre an Popularität gewann.

Die neueren Frameworks, wie Django für Python und Rails (Ruby on Rails), haben einen starken Fokus auf schnelle Bereitstellung, weshalb MVC den Marktanteil als große Attraktion in Architekturmustern übernimmt.

Traditionell enthielt die Entwicklung von Benutzeroberflächen viel Code für die Handhabung komplizierter Logik, so dass Architekturmuster entwickelt wurden, um den Code auf der Ebene der Benutzerschnittstelle (UI) zu reduzieren und ihn so "sauberer" und überschaubarer zu machen.

Mit dem MVC-Muster besteht also eine Webanwendung aus

  • Modell (Daten)
  • Ansicht (Schnittstelle zum Anzeigen und Bearbeiten von Daten)
  • Controller (Operationen und Aktionen für die Daten)

Das Modell behandelt Daten und Geschäftslogik und es gibt keine Abhängigkeiten zwischen dem Modell und dem Controller < oder Anzeige . Die

Ansicht stellt dem Benutzer die Daten in dem unterstützten Format und dem erforderlichen Layout zur Verfügung, und wenn der Controller Benutzeranforderungen empfängt (um Daten abzurufen), ruft er die erforderlichen Ressourcen auf um die Anfrage zu vervollständigen. Wenden wir dieses Muster auf den Aufbau eines Online-Buchladens an.

Benutzer können Bücher suchen, anzeigen, registrieren und kaufen sowie ihre Profile und Buchlisten verwalten. Wenn ein Benutzer auf die Kategorie SCI-FI klickt, sollten alle zugehörigen Bücher als verfügbar angezeigt werden.

Die

Controller verwalten die Aktionen, die die Bücher verwalten (Liste, Hinzufügen, Ansicht usw.). Es kann mehrere Controller mit einem Haupt Controller geben, die den Datenverkehr steuern. In diesem Beispiel hat der

Controller den Namen controller_books. php und das Modell (z. B. model_books. php) behandelt die Daten und die Logik in Bezug auf die Bücher. Schließlich werden andere

Ansichten benötigt, wie beim Hinzufügen von Büchern zum Online-Warenkorb oder beim Anzeigen des Buchdetails mit Bildern und Bewertungen. Die

controller_books. php erhält die Aktion (Benutzeranforderung) von der Zentrale Controller (z. B. index. php ). Die controller_books. php analysiert die Anfrage und ruft die model_books auf. php (die Daten), um die Liste der SCI-FI-Bücher zurückzugeben. Die Verantwortung des

Modells besteht darin, diese Informationen unter Verwendung aller angewandten Logik (mithilfe von Suchfiltern) bereitzustellen. Der Controller übernimmt dann die Information und übergibt diese an die entsprechende Ansicht (Suchansicht, Druckansicht, Detailansicht etc.) und die Information wird angezeigt (über Ansicht >) an den Benutzer, der die Anfrage initiiert hat. Dies sind die Grundlagen des MVC-Musters, das Variationen von Architekturmustern wie Model-View-Presenter (MVP), Model-View-ViewModel (MVVM), Hierarchical-Model-View-Controller (HMVC) und Model-View-Adapter (MVA) usw. MVP-Muster

Model-View-Presenter (MVP)

Das

MVP-Pattern

gibt es schon länger und ist eine Variante von MVC. Es wurde speziell für die Testautomatisierung entwickelt, bei der das Ziel darin bestand, die Menge an Code zu erhöhen, die durch Automatisierung getestet werden kann. Das Muster behebt einige Probleme mit der Präsentationsebene und isoliert Geschäftslogik von der Benutzeroberfläche. Der Bildschirm ist die Ansicht, die Daten, die angezeigt werden, sind das Modell, und der Präsentator hängt die beiden zusammen. MVP

besteht aus folgenden Komponenten mit getrennten Verantwortlichkeiten:

Modell (definiert die anzuzeigenden Daten)

  • Anzeige (zeigt die Daten aus dem Modell an und routet Benutzeranforderungen an die Moderator).
  • Presenter (interagiert zwischen Ansicht und Modell und verknüpft sie miteinander)
  • Die Ansicht

(eine Webseite) zeigt die Seitensteuerungen an und verwaltet sie, indem sie Ereignisse (Benutzeranforderungen) an die Presenter , die in View initiiert wurden. Der Presenter

reagiert auf diese Ereignisse, indem er das Modell liest und aktualisiert, um die Ansicht zu ändern, und daher Presenter ist um das Modell und Ansicht zu binden. Nach dem Betrachten der MVC

und MVP Muster, die Gemeinsamkeit hat beide separate Verantwortlichkeiten für jede Komponente und sie fördern die Trennung zwischen View (UI) und Modell (Daten). Signifikante Unterschiede zwischen diesen Mustern sind deutlicher in der Art und Weise, wie die Muster implementiert werden. MVP ist möglicherweise ein komplexes Muster, das für fortschrittliche Lösungen implementiert werden muss, hat aber sicherlich große Vorteile, wenn es als gut durchdachte Lösung implementiert wird, obwohl es nicht unbedingt die richtige Wahl für einfache Lösungen ist.

MVVM-Muster Model-View-ViewModel (MVVM)

Das

MVVM

-Muster wurde speziell für Windows Presentation Foundation (WPF) und Microsoft Silverlight-Plattformen entwickelt Wird auf allen XAML [i] Plattformen verwendet. WPF ist ein Microsoft-System, das Benutzeroberflächen in Windows-basierten Programmen rendert und das erste Mal in.NET Framework 3 veröffentlicht wurde. MVVM

wurde in diesem Muster von

MVC verfeinert, die Ansicht ist aktiv mit Verhalten, Ereignissen und Datenbindung und die Ansicht synchronisiert mit dem ViewModel (was die Trennung der Präsentation ermöglicht und Methoden verfügbar macht und Befehle zum Verwalten und Bearbeiten des Modells . MVVM besteht aus drei Kernkomponenten:

Modell (repräsentiert die Daten mit Validierung und Geschäftslogik)

  • View > (Die Ansicht ist verantwortlich für die Definition der Struktur, des Layouts und der Darstellung dessen, was der Benutzer auf dem Bildschirm sieht. Idealerweise ist die Ansicht rein mit XAML definiert, mit einem begrenzten Code-Behind, der keine Geschäftslogik enthält. Zwei-Wege-Daten - Die Verbindung zwischen View
  • und ViewModel zur Anzeige ermöglicht die Synchronisation von Model und ViewModel mit der View. ViewModel (trennt die View von th e Modell und macht Methoden und Befehle verfügbar, um die Daten zu manipulieren (Model). Die
  • Ansicht empfängt Daten vom

ViewModel (über Datenbindung und Methoden) und zur Laufzeit ändert sich die Ansicht , wenn auf Ereignisse in reagiert wird das ViewModel . Das ViewModel vermittelt zwischen

View und Model und behandelt die View Logik. Es interagiert mit dem Modell - nimmt die Daten aus dem Modell und zeigt es der Ansicht zur Anzeige an. Diese Komponenten sind voneinander entkoppelt, was eine größere Flexibilität ermöglicht, um unabhängig voneinander zu arbeiten, Komponententests zu isolieren und sie auszutauschen, ohne andere Komponenten zu beeinträchtigen. Mit dieser Struktur können sich das Modell

und andere Komponenten unabhängig voneinander entwickeln, sodass Entwickler gleichzeitig an verschiedenen Aspekten der Lösung arbeiten können. Wenn Designer beispielsweise an

View arbeiten, generieren sie einfach Datenstichproben, ohne auf die anderen Komponenten zugreifen zu müssen. Dies ermöglicht ein einfaches Redesign der Benutzeroberfläche, da die View in XAML implementiert ist. Wie bereits erwähnt mit MVP , würden einfache Lösungen keine Architektur- und Entwurfsmuster benötigen, wie "Hello World!"Ist zu grundlegend, um irgendeinem Muster zu folgen; Je mehr Funktionen, Funktionen und Komponenten eingeführt werden, desto komplexer wird die Anwendung und desto mehr Code muss verwaltet werden.

Zusammenfassend Seit Beginn der Entwicklung von Benutzeroberflächen werden Entwurfsmuster immer beliebter, um den Entwicklungsprozess zu vereinfachen, die Anwendungen sind besser skalierbar und erleichtern das Testen. Dargestellter Unterschied zwischen den MVP- und MVVM-Mustern:

In

MVP

und

  • MVVM ist View der Einstiegspunkt für die Anwendung > In MVP gibt es eine Eins-zu-eins-Zuordnung zwischen View
  • und Presenter , wobei in MVVM die Beziehung eins ist -to-many zwischen View und ViewModel . MVP wird hauptsächlich für Windows Forms- und Windows Phone-Anwendungen verwendet und MVVM wurde für Silverlight, WPF, Knockout / AngularJS usw. entwickelt.