9
votes

MVVM pour le développement web

J'ai lu sur MVVM et je l'ai déjà trouvé très intéressant. Cependant, la plupart des exemples que j'ai trouvés sont destinés aux applications Windows, par opposition aux applications Web. J'ai également vu beaucoup de mention de MVVM utilisée avec Silverlight et je sais que Silverlight peut être utilisé pour des applications Web ou Windows.

Donc, ma question est - est MVVM un modèle valide pour les applications Web? Si c'est le cas, l'interface utilisateur doit-elle être argentélight? Je suis en train de décider quelles technologies à utiliser pour un nouveau site Web de taille moyenne, nous devons concevoir et Silverlight peut être une vente difficile aux pouvoirs - que ce que nous utilisons dans les coulisses n'a pas d'importance tellement de.

Toute information Tout le monde peut fournir à l'aide de MVVM dans un environnement Web serait apprécié. Exemple de code serait aussi génial.


3 commentaires

Vous devriez vraiment Fermer certaines de vos questions ouvertes, sinon les gens seront moins enclins à répondre.


Vous pouvez également trouver Knockout JS utile pour la liaison si vous souhaitez utiliser MVVM sur des pages Web.


MVVM fonctionne très bien pour les applications à une seule page (SPAS), AngularJs l'utilise par exemple. Dans un projet, j'ai mis en place un cadre JS qui utilise knockoutjs et fonctionne comme WPF / XAML: Vistojs.org


10 Réponses :


2
votes

MVVM est totalement acceptable pour le développement Web. En fait, il est recommandé pour le développement de Silverlight. Notre société utilise MVVM + Silverlight pour bon nombre de nos projets avec un grand succès. La courbe d'apprentissage initiale peut être difficile, mais une fois qu'il clique, il offre beaucoup d'avantages.

À mon avis, pour que MVVM fonctionne vraiment, vous avez besoin d'un cadre qui a un support contraignant correct. Sinon, vous devrez écrire beaucoup de code "colle" pour rejoindre votre point de vue et voir le modèle. Silverlight a un excellent support de liaison et si cela est fait correctement, vous pouvez éliminer la plupart des codes-derrière à votre vue, de sorte que toutes les logiques de votre entreprise restent directement dans votre viewModel.

Tim Heuer a d'excellents tutoriels et vidéos sur MVVM avec Silverlight. Je recommande fortement de passer à travers ses affaires. http://timheuer.com/blog/articles/getting- commencé-avec-Silverlight-Development.aspx


0 commentaires

3
votes

MVVM est essentiellement le modèle MVC avec des modifications spécifiques pour soutenir le développement d'applications à l'aide de Windows Presentation Foundation.

Modèle - Vue - ViewModel
Modèle - Vue - Contrôleur

Donc, la viewModel est le contrôleur de MVVM. Le motif est très bon; Il est très facile de construire des applications simples mais puissantes et qui sont faciles à tester et à entretenir.

Si vous souhaitez utiliser MVVM dans une application Web qui n'est pas Silverlight, consultez ASP.NET MVC . MVVM est également une option si vous utilisez Silverlight. Vous pouvez même mélanger les deux, hébergeant votre application Silverlight dans un site Web MVC.


0 commentaires

1
votes

Pour le développement Web, je préférerais aller pour MVC. Si sa puissante silhere, alors mvvm peut être considérée comme


2 commentaires

Je suis d'accord. J'ai lu un article sur les problèmes des pièges / design d'un gars lors de la mise en œuvre de MVVMW à Silverlight; C'était souvent cesse. Comparez cela aux difficultés avec ASP.NET MVC (aucun, plus ou moins), je voudrais certainement utiliser MVC sur MVVM.


Autant que je comprenne, MVVM est utilisé dans Silverlight utilisé avec une liaison automatique entre les données et la vue: lorsque la mise à jour de données (modèle) est notifiée et affiche les mises à jour. Je ne sais pas si c'est la seule implémentation de MVVM, mais le modèle de mise à jour automatique de Silverlight est quelque chose que je n'utilise pas dans WebProjects.



4
votes

Pour Web Web (HTML), il n'est pas vraiment utilisable car le point MVVM doit avoir une interface refléter immédiatement les modifications de la vue. (via la base de données / événements).
de
Pour le Web, un changement dans la vue est généralement une reconstruction complète de l'écran.
Alors pourquoi déranger ..

Toutefois, si vous avez un site Web AJAX avec une page HTML fixe si laquelle le contenu est continuellement mis à jour avec JavaScript. Ensuite, cela devient intéressant.


1 commentaires

Exactement. L'ensemble du point de MVVM est de tirer parti de la liaison de données. Sinon, les schémas existants qui sont allés pour les âges fonctionnent bien. La viewModel est particulière en ce qu'elle encapsule la logique et expose les propriétés et les actions à la vue via la liaison de données. Cela fonctionne très bien dans une application d'état, mais le Web est, par nature, apatride, de sorte que le motif se décompose là-bas. MVC est beaucoup mieux pour les applications Web non silencieuses IMHO.



0
votes

MVVM est totalement acceptable avec WPF et avec Silverlight. Si vous souhaitez utiliser MVVM pour le développement Web, vous devrez écrire beaucoup de code JScript. Il y a un échantillon sur MSDN sur la façon de faire cela:

Vérifiez le lien ci-dessous: http://msdn.microsoft.com/en-us/scripteurJunkie/hh297451


0 commentaires

8
votes

Bien sûr, MVVM est un modèle "Web" valide, mais il a actuellement des utilisations très limitées.

La différence principale entre MVC et MVVM consiste à mettre à jour vos données d'application. Pour les applications Web en currence, MVC est préférable car Web est principalement une communication à sens unique et que toutes les entrées utilisateur sont encapsulées avec des formulaires.

MVVM est utile lors de la création d'applications vraiment interactives avec UI riche.

afin de le rendre simple. Si vous êtes une solution Web de Bulding avec ASP.NET (ou tout autre serveur-côté serveur), utilisez MVC. Si vous effectuez une application UI riche, utilisez MVVM et si vous n'aimez pas Silverlight, essayez Knockoutjs pour la solution JavaScript.


0 commentaires

6
votes

MVVM peut bien fonctionner sur le Web et dans la technologie basée sur XAML. XAML Tech a un avantage dans ses caractéristiques de liaison impressionnantes cuits au four. Mais avec des bibliothèques JavaScript telles que Knockout (qui est excellente) et JSVIEWS / JSRender (que vous devriez examiner une fois que JSVIEWS est bêta).

Pour vous répondre spécifiquement: Oui, vous pouvez faire MVVM avec des applications Web. Est-ce bien? Oui, si vous utilisez une bibliothèque comme Knockout (http://knockoutjs.com). Les clés de MVVM sont en ce que c'est un modèle de séparation simple qui:

  1. sépare la vue (la page)
  2. sépare le modèle (les données brutes)
  3. sépare la vue de la vue (logique de présentation)

    Nulle part il y a la technologie prescrite par MVVM. La vue est votre HTML, votre structure. Le modèle est vos données (peut-être JSON). La viewModel est votre objet JavaScript qui sépare la logique de votre vue spécifique.

    Knockout fournit les moyens de reliure de données de jour via un concept appelle des observables. Fondamentalement, pensez à cela comme l'interface inotifypropertychanged, mais pour JavaScript. Kooout prend également en charge l'observatoire (qui est similaire à l'observablecollection dans XAML). KO KOout a un groupe d'autres fonctionnalités qui vous permettent de vous abonner aux événements de changement de données, de créer des comportements, une liaison personnalisée et bien plus encore. Quoi qu'il en soit ... avec Knockout, vous obtenez un peu.

    Si vous choisissez de faire MVVM sans une bibliothèque, vous pouvez toujours le faire, mais vous perdez les fonctionnalités de liaison de données et voudriez probablement écrire quelque chose vous-même. Mais je recommande vivement de coller avec une bibliothèque qui fait cela pour vous.

    Longue réponse ... mais je voulais vous donner en train de commencer à explorer.


0 commentaires

0
votes

Comme mentionné, knockout.js est une bibliothèque fantastique qui offre de nombreuses fonctionnalités. requis pour MVVM sur le Web. J'ai créé un cadre composite qui est un cadre MVVM beaucoup plus complet. Il a des similitudes avec le prisme de Microsoft et est utilisé dans un produit assez vaste et complexe ciblant des plates-formes Web et mobiles.

Vérifiez-le: http://danderson00.blogspot.com/2012/ 08 / introduction-knockoutcomposite.html


0 commentaires

1
votes

J'ai une implémentation MVVM pour le Web à l'aide de diverses technologies, knockout, jQuery, Webockets et .net. Consultez l'article ici: http://salmanq.com/blog/utrant-the-mvvm-pattern-on-web-applications-par-i/2013/02/


0 commentaires

12
votes

DOTVVM est un framework MVVM basé sur la source Open Source basé sur Knockout JS. C'est simple à utiliser et vous n'avez pas à écrire des tonnes de code JavaScript. Pour la plupart des scénarios, vous n'avez besoin que de C # et HTML avec CSS.

La vue ressemble à ceci - il s'agit d'un HTML étendu avec des commandes de serveur et des liaisons de données: p>

public class ContactFormViewModel 
{
    public string Name { get; set; }
    public string Email { get; set; }

    public void Submit() 
    {
        ContactService.Submit(Name, Email);
    }
}


0 commentaires