Ich habe auf MVVM gelesen und es bis jetzt sehr interessant gefunden. Die meisten Beispiele, die ich gefunden habe, sind jedoch für Windows-Apps im Gegensatz zu Web-Apps. Ich habe auch eine Menge von MVVM erwähnt, die mit Silverlight verwendet werden, und ich weiß, dass Silverlight für Web- oder Windows-Apps verwendet werden kann.
Meine Frage ist also - ist MVVM ein gültiges Muster für webbasierte Apps? Wenn dies der Fall ist, muss die Benutzeroberfläche Silverlight sein? Ich bin dabei, zu entscheiden, welche Technologien für eine neue mittelgroße Website verwendet werden sollen, die wir entwerfen müssen, und Silverlight kann für die Mächtigen ein harter Verkauf sein, obwohl es nicht wichtig ist, was wir hinter den Kulissen verwenden so sehr.
Alle Informationen, die jeder über MVVM in einer Webumgebung bereitstellen kann, wären willkommen. Beispiel Code wäre auch gut.
DotVVM ist ein Open-Source-ASP.NET-basiertes MVVM-Framework basierend auf Knockout JS. Es ist einfach zu bedienen und Sie müssen nicht Tonnen von Javascript-Code schreiben. Für die meisten Szenarien benötigen Sie nur C # und HTML mit CSS.
Die Ansicht sieht folgendermaßen aus: Es handelt sich um einen HTML-Code, der um Serversteuerelemente und Datenbindungen erweitert wurde:
%Vor%Das Viewmodel ist eine C # -Klasse, die wie folgt aussieht:
%Vor%Es gibt auch eine Visual Studio-Erweiterung , die IntelliSense- und Projektvorlagen hinzufügt.
Das Framework behandelt Validierung, Lokalisierung, SPAs und andere häufig verwendete Funktionen. Es unterstützt sowohl .NET Framework als auch .NET Core.
Natürlich ist MVVM ein gültiges "Web" -Muster, aber zur Zeit ist es sehr eingeschränkt einsetzbar.
Der Hauptunterschied zwischen MVC und MVVM liegt in der Aktualisierung Ihrer Anwendungsdaten. Für aktuelle Web-Anwendungen wird MVC bevorzugt, da Web meist eine einseitige Kommunikation ist und alle Benutzereingaben mit Formularen gekapselt sind.
MVVM wird nützlich beim Erstellen wirklich interaktiver Anwendungen mit Rich-UI.
Also, um es einfach zu machen. Wenn Sie eine Weblösung mit ASP.NET (oder einer anderen serverseitigen Technologie) erstellen, verwenden Sie MVC. Wenn Sie eine Rich-UI-Anwendung erstellen, verwenden Sie MVVM, und wenn Sie Silverlight nicht mögen, versuchen Sie KnockoutJS for Javascript solution.
MVVM kann im Web und in XAML-basierter Technologie gut funktionieren. XAML-Technologie hat einen Vorteil in seinen tollen Bindungsfunktionen, die eingebrannt sind. Aber mit JavaScript-Bibliotheken wie Knockout (was exzellent ist) und JsViews / JsRender (dem man nachgehen sollte, sobald JsViews beta wird).
Um Sie speziell zu beantworten: Ja, Sie können MVVM mit Web-Apps ausführen. Ist es gut? Ja, wenn Sie eine Bibliothek wie Knockout (http://knockoutjs.com) verwenden. Die Schlüssel zu MVVM sind, dass es ein einfaches Trennungsmuster ist:
Nirgendwo gibt es die von MVVM vorgeschriebene Technologie. Die Ansicht ist dein HTML, deine Struktur. Das Modell ist Ihre Daten (vielleicht JSON). Das Viewmodel ist Ihr JavaScript-Objekt, das die Logik für Ihre spezifische Ansicht trennt.
Knockout bietet die Möglichkeit, Daten über ein Konzept, das Observables genannt werden, zu binden. Stellen Sie sich im Prinzip das INotifyPropertyChanged-Interface vor, aber für JavaScript. Knockout unterstützt auch observableArray (ähnlich wie ObservableCollection in XAML). Knockout verfügt über eine Reihe weiterer Funktionen, mit denen Sie Datenänderungsereignisse abonnieren, Verhalten erstellen, benutzerdefinierte Bindungen erstellen und vieles mehr können. Wie auch immer ... mit Knockout bekommst du ziemlich viel.
Wenn Sie sich für MVVM ohne eine Bibliothek wie Knockout entscheiden, können Sie es trotzdem tun, aber Sie verlieren die Datenbindungsfunktionen und würden wahrscheinlich selbst etwas schreiben wollen. Aber ich empfehle dringend, mit einer Bibliothek zu bleiben, die das für Sie tut.
Lange Antwort ... aber ich wollte dir genug geben, um zu erkunden.
Für Web-Web (html) ist es nicht wirklich brauchbar, da der Punkt mvvm eine Schnittstelle hat, die Änderungen im View-Modell sofort wiedergibt. (über Datenbindung / Ereignisse).
Für Web ist eine Änderung im Viewmodel normalerweise eine post + komplette Neuerstellung des Bildschirms.
Wieso sich die Mühe machen..
Allerdings, wenn Sie eine AJAX-Website mit einer festen HTML-Seite haben, bei der der Inhalt ständig mit Javascript aktualisiert wird. Dann wird es interessant.
MVVM ist im Wesentlichen das MVC-Muster mit spezifischen Änderungen zur Unterstützung der Entwicklung von Anwendungen mit Windows Presentation Foundation.
Modell - View - ViewModel
Modell - Ansicht - Controller
Das ViewModel ist also der Controller in MVVM. Das Muster ist sehr gut; Es macht es sehr einfach, Anwendungen zu erstellen, die einfach und dennoch leistungsstark sind und die einfach zu testen und zu warten sind.
Wenn Sie MVVM in einer Webanwendung verwenden möchten, die nicht Silverlight ist, schauen Sie in ASP.NET MVC nach. MVVM ist auch eine Option, wenn Sie Silverlight verwenden. Sie können die beiden sogar kombinieren, indem Sie Ihre Silverlight-App auf einer MVC-Website hosten.
MVVM ist absolut akzeptabel für die Web-Entwicklung. In der Tat wird es für die Entwicklung von Silverlight empfohlen. Unsere Firma nutzt MVVM + Silverlight für viele unserer Projekte mit großem Erfolg. Die anfängliche Lernkurve kann hart sein, aber sobald sie klickt, bietet sie eine Menge Vorteile.
Meiner Meinung nach, um MVVM wirklich funktionieren zu lassen, brauchen Sie einen Rahmen, der die richtige verbindliche Unterstützung bietet. Andernfalls müssen Sie eine Menge "Klebstoff" -Code schreiben, um Ihrem Ansichts- und Ansichtsmodell beizutreten. Silverlight bietet eine hervorragende Bindungsunterstützung und wenn Sie es richtig gemacht haben, können Sie den Großteil des Code-Behind in Ihrer Ansicht eliminieren, sodass Ihre gesamte Geschäftslogik in Ihrem ViewModel erhalten bleibt.
Tim Heuer hat einige hervorragende Tutorials und Videos zu MVVM mit Silverlight. Ich empfehle sehr, seine Sachen durchzugehen. Ссылка
Wie bereits erwähnt, ist Knockout.js eine fantastische Bibliothek, die viele der Funktionen bietet, die für MVVM auf der Netz. Ich habe ein zusammengesetztes Framework erstellt, das ein wesentlich vollständigeres MVVM-Framework ist. Es hat Ähnlichkeiten mit dem Prism von Microsoft und wird in einem ziemlich großen und komplexen Produkt eingesetzt, das auf Web- und mobile Plattformen abzielt.
Schau es dir an: Ссылка
Tags und Links .net silverlight mvvm jsrender