2016-03-31 9 views
1

Entschuldigung für den vagen Titel. Ich schäme mich sehr, das zu fragen, aber ich brauche jetzt wirklich meine Aufmerksamkeit. Ich kann nicht identifizieren, ob ich einem MVC-Muster oder einem MVVM-Muster folge.Was genau benutze ich?

In meinem vorherigen Praktikum hatten wir C# -Code (.NET), der einen Controller hatte und direkt mit der Datenbank verbunden war (es gab keine Service-Schicht). Der Controller würde Informationen abrufen, in JSON formatieren und sie dem Controller von Angular übergeben, der sie in der Ansicht anzeigen würde.

In meinem aktuellen Praktikum verwenden wir nicht Angular. Wir verwenden .cshtml Dateien. Der Service-Layer stellt seine Informationen dem Controller zur Verfügung, der das MODEL formatiert und es der .cshtml-Ansicht zur Verfügung stellt und den Inhalt anzeigt.

Meine Fragen:

Welches ist MVC und welches ist MVVM? Bitte runter auf mein Level und erklären. Das meiste, was ich im Internet gelesen habe, scheint mich eher mit dem zu verwechseln, was ich bei der Arbeit beobachte.

Jeder bei der Arbeit ruft beide MVC und ich bin jetzt wirklich verwirrt. Wenn beide MVC sind, was ist der Unterschied zwischen den beiden?

+1

Einfach googeln. http://stackoverflow.com/questions/667781/what-is-the-difference-between-mvc-and-mvvm Oder diese http://stackoverflow.com/questions/19444431/what-is-difference-between-mvc -mvp-mvvm-Design-Muster-in-Terms-of-Coding-cs und viele andere .... –

+0

Ich habe mehrere Male. Andere mehrmals gefragt. Die Leute geben unterschiedliche Antworten. Ich weiß, es ersetzt Controller mit Modelview, aber ich habe einen Controller in beiden Fällen und ich finde einen Unterschied in der Art und Weise Dinge getan werden. Technisch gesehen werden beide MVC sein, aber was ist der Unterschied in diesen Architekturen? Was ist der Name für diese Unterschiede – Oct8

+0

Sie wissen, welche ASP.NET MVC ist, oder? Das sollte nicht verwirrend sein. Ich weiß nicht, welches Muster Winkel verwendet, aber wenn es Datenbindung zwischen Serveraufrufen und der Benutzeroberfläche, ist es wahrscheinlich MVVM. – Will

Antwort

1

Angular ist definitiv mehr Model-View-ViewModel-ish. Was du jetzt tust, klingt definitiv nach MVC.

MVVM ist ein spezielles Muster, bei dem der UI-Status in einem ViewModel gekapselt ist, so dass das Rendern der endgültigen UI ziemlich dumm ist und nur Datenbindung. Die Statuslogik zum Anzeigen, Anzeigen dieser Schaltfläche oder Verbergen dieses Bereichs ist im ViewModel gekapselt. Ein Vorteil besteht darin, dass dies ermöglicht, Komponententests zu erstellen, um das ViewModel zu testen und dadurch implizit alle UI-Verhaltensweisen zu testen. (Siehe: Wikipedia article on MVVM und Martin Fowler's Introduction to Presentation Model die MVVM ist eine Variation.)

In MVC, der Blick selbst hat den Spielraum zu steuern sie Verhaltensweisen sind, was Sie/auszublenden zeigen wollen, etc. aus der Basis der Daten zur Verfügung gestellt, um das Modell . Dies bedeutet, dass Sie in MVC das Verhalten der Benutzeroberfläche nicht testen können (z. B. wenn etwas aufgrund von Datenänderungen korrekt angezeigt oder ausgeblendet wird), ohne die Benutzeroberfläche selbst zu testen.

Zusammenfassend, MVVM, das ViewModel steuert das Verhalten der Benutzeroberfläche und die Benutzeroberfläche selbst ist dumm und verwendet nur Datenbindung und macht, was es gesagt wird, basierend auf der Logik im ViewModel.

In MVC ist das UI "intelligent" und formt und rendert sich selbst, aber es fühlt sich so an, als müsste es auf den Daten basieren, die es vom Modell erhält.

Sie können im Grunde betrachten, wie die Benutzeroberfläche gerendert wird und wenn Sie sehen, dass die UI-Rendering-Logik viele eigene Entscheidungen darüber trifft, wie sie sich selbst basierend auf der Entscheidung rendern, dann wissen Sie ziemlich gut, dass Sie MVC verwenden. Wenn Sie nur eine Menge Datenbindungen sehen, bei denen fast jedes Verhalten von einer separaten Klasse gesteuert wird, die die gesamte Logik zum Anzeigen und Ausblenden von Teilen der Benutzeroberfläche kapselt und diese Daten über Datenbindung an die Benutzeroberfläche weitergegeben werden, dann ist es das wahrscheinlich MVVM.

Ich hoffe, dass hilft.

+0

Vielen Dank! Habe meine Zweifel gelöscht – Oct8

1

In beiden Fällen verwenden Sie MVC (oder zumindest ein MVC-ish-Muster). Wenn Sie die .cshtml-Dateien verwenden, verwenden Sie serverseitige MVC. Wenn Sie Angular verwenden, verwenden Sie clientseitige MVC (die wahrscheinlich eher MVVM ähnelt). Der größte Unterschied ist, wo das Modell in HTML-Elemente gerendert wird; auf dem Client oder auf dem Server.

Meiner Meinung nach ist dies ein besserer Weg, um die Unterschiede in dem, was Sie getan haben, zu sehen.