Question

Je viens d'écouter le 17e podcast de l'équipe StackOverflow, et ils ont fait l'éloge de ASP.NET MVC que j'ai décidé de le vérifier.

Mais d’abord, je veux être sûr que cela en vaut la peine.J'ai déjà créé une application Web de base (sur laquelle d'autres développeurs peuvent s'appuyer) pour un projet qui démarre dans quelques jours et je voulais savoir, sur la base de votre expérience, si je devais prendre le temps d'apprendre les bases de MVC et de recréer l'application Web de base avec ce modèle.

Y a-t-il vraiment de grands avantages qui en valent la peine ?

MODIFIER:Ce n'est pas un projet existant, c'est un projet sur le point de démarrer, donc si je dois le faire, ce devrait être maintenant...


je viens de trouver ça

Cependant, il n'utilise pas le modèle de post-back existant pour les interactions avec le serveur.Au lieu de cela, vous acheminerez toutes les interactions de l'utilisateur final vers une classe Controller - ce qui permet de garantir une séparation nette des problèmes et de la testabilité (cela signifie également aucun état d'affichage ou cycle de vie des pages avec des vues basées sur MVC).

Comment cela fonctionnerait-il ?Pas d'état d'affichage ?Pas d'événements?

Était-ce utile?

La solution

Si vous êtes plutôt satisfait de WebForms aujourd'hui, alors peut-être qu'ASP.NET MVC n'est pas pour vous.

Je suis frustré par WebForms depuis très longtemps.Je ne suis certainement pas seul ici.L'abstraction avec état du client intelligent sur le Web s'effondre gravement dans des scénarios complexes.Il se trouve que j'adore HTML, Javascript et CSS.WebForms essaie de me cacher cela.Il propose également des solutions très complexes à des problèmes qui ne le sont vraiment pas.Les formulaires Web sont également intrinsèquement difficiles à tester, et même si vous pouvez utiliser MVP, ce n'est pas une excellente solution pour un environnement Web... (par rapport à MVC).

MVC vous séduira si...- Vous voulez plus de contrôle sur votre HTML - Vous voulez une expérience de l'Ajax transparente comme toutes les autres plateformes - je veux une testabilité à travers

Et quant au framework étant Preview 5, il est assez stable, le design est pour l'essentiel là, et la mise à niveau n'est pas difficile.J'ai démarré une application sur l'aperçu 1 et j'ai effectué la mise à niveau quelques heures après la disponibilité du dernier aperçu.

Autres conseils

Il est important de garder à l’esprit que MVC et WebForms ne sont pas en concurrence et que l’un n’est pas meilleur que l’autre.Ce sont simplement des outils différents.La plupart des gens semblent aborder MVC vs WebForms comme "l'un doit être un meilleur marteau que l'autre".C'est faux.L’un est un marteau, l’autre un tournevis.Les deux sont utilisés dans le processus d’assemblage des choses, mais ont des forces et des faiblesses différentes.

Si l’on vous a laissé un mauvais goût, vous essayiez probablement d’utiliser un tournevis pour enfoncer un clou.Certains problèmes sont fastidieux avec les WebForms qui deviennent élégants et simples avec MVC, et vice versa.

J'ai utilisé ASP.NET MVC (j'ai même écrit un module HTTP qui vous permet de définir les routes dans web.config), et j'en ai toujours un goût amer dans la bouche.

Cela ressemble à un pas de géant en termes d’organisation et de productivité.Ce n'est peut-être pas pour certains, mais j'ai compris les formulaires Web, et ils ne me posent aucun défi en ce qui concerne les rendre maintenables.

Cela, et je n'approuve pas la mode actuelle du "TESTEZ TOUT"...

ASP.NET MVC vous permet essentiellement de séparer la responsabilité des différentes sections du code.Cela vous permet de tester votre application.Vous pouvez tester vos vues, itinéraires, etc.Cela accélère également l'application puisqu'il n'y a plus de ViewState ou de Postback.

MAIS il y a aussi des inconvénients.Puisque vous n’utilisez pas WebForms, vous ne pouvez utiliser aucun contrôle ASP.NET.Cela signifie que si vous souhaitez créer un GridView, vous exécuterez une boucle for et créerez la table manuellement.Si vous souhaitez utiliser l'assistant ASP.NET dans MVC, vous devrez créer vous-même.

C'est un framework intéressant si vous en avez assez du formulaire Web ASP.NET et que vous souhaitez tout faire vous-même.Mais vous devez garder à l’esprit qu’auriez-vous intérêt à recréer tout cela ou non ?

En général, je préfère le framework Webforms en raison de la riche suite de contrôles et de la plomberie automatique.

Je créerais d'abord un site de test et verrais ce que pense l'équipe, mais pour moi, je ne reviendrais pas sur WebForms après avoir utilisé MVC.

Certaines personnes n'aiment pas le code mélangé avec du HTML, et je peux le comprendre, mais je préfère de loin la flexibilité à des choses comme le cycle de vie des pages, le rendu HTML et biggy pour moi - pas de problème d'état d'affichage intégré dans la source de la page.

Certaines personnes préfèrent MVC pour une meilleure testabilité, mais personnellement, la plupart de mon code se trouve dans la couche intermédiaire et est de toute façon facilement testé...

@Jonathan Holland J'ai vu que vous aviez été rejeté, mais c'est un point TRÈS VALABLE.J'ai lu quelques articles sur les intertubes où les gens semblent confondre ASP.NET MVC le cadre et MVC le motif.

MVC en soi est un DESIGN PATTERN.Si tout ce que vous recherchez est une « séparation des préoccupations », vous pouvez certainement y parvenir avec les formulaires Web.Personnellement, je suis un grand fan du Modèle MVP dans un environnement standard à n niveaux.

Si vous voulez vraiment un contrôle TOTAL de votre balisage dans le monde ASP.NET, alors le cadre MVC est fait pour vous.

@Juan Manuel Avez-vous déjà travaillé en ASP classique ?Quand vous deviez programmer tous vos propres événements et éléments « viewstatish » (comme une liste déroulante rappelant sa valeur sélectionnée après la soumission du formulaire) ?

Si tel est le cas, ASP.NET MVC ne vous semblera pas si gênant dès le départ.Je regarderais la série Awesome de Rob Conery "Vitrine MVC" où il a parcouru le cadre et construit chaque composant attendu pour un site de vitrine.C'est vraiment impressionnant et facile à suivre (le rattrapage est difficile car Rob a été très actif et a posté BEAUCOUP dans cette série).

Personnellement, et tout à fait contrairement à ce que pense Jeff Atwood sentiments sur le sujet, j'ai plutôt aimé le modèle de formulaire Web.C'était totalement différent de l'époque vbscript/ASP classique, bien sûr, mais garder l'état d'affichage sous contrôle et écrire vos propres contrôles compatibles CSS était en fait agréable.

Là encore, notez que j'ai dit "j'ai aimé".ASP.NET MVC est vraiment génial et ressemble davantage à d'autres technologies Web.Il est certainement plus facile de passer d'ASP.NET MVC à RAILS si vous aimez ou devez travailler sur plusieurs plates-formes.Et même si, oui, il est évidemment très stable (ce site même), si votre entreprise interdit les logiciels « bêta » de n'importe quelle couleur ;sa mise en production en ce moment pourrait être un problème.

Si vous êtes un développeur ASP.NET professionnel et que vous avez du temps libre pour apprendre de nouvelles choses, je vous recommanderais certainement de passer du temps à essayer ASP.NET MVC.Ce n'est peut-être pas la solution à tous vos problèmes, et de nombreux projets pourraient bénéficier davantage d'une implémentation de formulaire Web traditionnel, mais en essayant de comprendre MVC, vous apprendrez certainement beaucoup, et cela pourrait faire apparaître beaucoup d'idées qui vous pouvez postuler pour votre emploi.

Une bonne chose que j'ai remarquée en parcourant de nombreux articles de blog et didacticiels vidéo en essayant de développer un projet animalier MVC est que la plupart d'entre eux suivent les meilleures pratiques actuelles (TDD, IoC, injection de dépendances et, dans une moindre mesure, POCO). plus beaucoup de JQuery pour rendre l'expérience plus intéressante pour l'utilisateur, et c'est des choses que je peux appliquer sur mes applications de formulaire Web actuelles, et que je n'ai pas été exposées de manière aussi approfondie auparavant.

La manière de faire d'ASP.NET MVC est tellement différente des formulaires Web qu'elle vous bouleversera un peu, et cela pour un développeur, c'est très bien !

OTOH pour un débutant total en développement Web Je pense que MVC est certainement un meilleur début car il offre un bon modèle de conception prêt à l'emploi et est plus proche de la façon dont le Web fonctionne réellement (HTML est sans état, après tout).Sur MVC, vous décidez de chaque octet qui va et vient sur le fil (du moins tant que vous ne devenez pas fou des aides HTML).Une fois que le gars aura compris cela, il sera mieux équipé pour passer aux fonctionnalités « artificielles » fournies par les formulaires Web et les contrôles de serveur ASP.NET.

Si vous aimez utiliser des contrôles serveur qui font beaucoup de travail pour vous, vous n'aimerez PAS MVC car vous devrez faire beaucoup de codage manuel dans MVC.Si vous aimez GridView, attendez-vous à en écrire un vous-même ou à utiliser celui de quelqu'un d'autre.

MVC n'est pas pour tout le monde, surtout si vous n'aimez pas les tests unitaires de la partie GUI.Si vous êtes à l'aise avec les formulaires Web, restez avec eux.Web Forms 4.0 corrigera certaines des lacunes actuelles, comme les identifiants automatiquement attribués par ASP.NET.Vous en aurez le contrôle dans la prochaine version.

À moins que les développeurs avec lesquels vous travaillez ne soient familiers avec le modèle MVC, je ne le ferais pas.Au minimum, je leur parlerais d'abord avant de faire un si grand changement.

J'essaie de prendre la même décision concernant ASP.NET MVC, Juan-Manuel.J'attends maintenant le bon petit projet avec lequel je pourrai expérimenter.Si l’expérience se déroule bien – mon instinct me dit que ce sera le cas – alors je vais concevoir mes nouveaux grands projets autour de ce cadre.

Avec ASP.NET MVC, vous perdez le modèle viewstate/postback d'ASP.NET Web Forms.Sans cette abstraction, vous travaillez beaucoup plus étroitement avec les commandes HTML et HTTP POST et GET.Je pense que la programmation de l'interface utilisateur va quelque peu dans le sens de l'ASP classique.

Cet inconvénient s’accompagne d’un plus grand degré de contrôle.Je me suis très souvent retrouvé à lutter contre les déchets de pseudo-session d'ASP.NET et la perspective de reprendre le contrôle total du HTML de sortie semble très rafraîchissante.

C’est peut-être le meilleur – ou le pire – des deux mondes.

Je ne connais pas ASP.NET MVC, mais je connais très bien le modèle MVC.Je ne vois pas d'autre moyen de créer des applications professionnelles sans MVC.Et il doit s'agir du modèle MVC 2, comme Spring ou Struts.Au fait, comment avez-vous créé des applications Web sans MVC ?Lorsque vous vous trouvez dans une situation où une sorte de validation est nécessaire pour chaque demande, comme valider si l'utilisateur est authentifié, quelle est votre solution ?Une sorte d'include(validate.aspx) dans chaque page ?

N'avez-vous jamais entendu parler du développement N-Tier ?

Ajax, RAD (les formulaires Web avec ajax sont très souvent anti-RAD), COMPLETE CONTROL (sans développer tout un tas de code et de cycles).Les formulaires Web ne servent qu'à lier une grille, etc., et rien d'autre, et une autre chose très importante : les performances.Lorsque vous serez coincé dans les formulaires Web, vous activerez MVC tôt ou tard.

Je ne recommanderais pas simplement de basculer sur un projet existant.Peut-être lancer un petit projet de « démonstration » que l'équipe pourra utiliser pour expérimenter la technologie et (si nécessaire) apprendre ce dont elle a besoin et démontrer à la direction que cela vaut la peine de faire le changement.En fin de compte, même l’équipe de développement pourrait se rendre compte qu’elle n’est pas prête ou que cela n’en vaut pas la peine.

Quoi que vous fassiez, assurez-vous de le documenter.Peut-être que si vous utilisez un projet de démonstration, rédigez un post-mortem pour référence future.

Je ne connais pas ASP.NET MVC, mais je connais très bien le modèle MVC.Je ne vois pas d'autre moyen de créer des applications professionnelles sans MVC.Et il doit s'agir du modèle MVC 2, comme Spring ou Struts.Au fait, comment avez-vous créé des applications Web sans MVC ?Lorsque vous vous trouvez dans une situation où une sorte de validation est nécessaire pour chaque demande, comme valider si l'utilisateur est authentifié, quelle est votre solution ?Une sorte d'include(validate.aspx) dans chaque page ?

Non, tu ne devrais pas.N'hésitez pas à l'essayer sur un nouveau projet, mais beaucoup de gens familiers avec les formulaires Web ASP.NET ne l'aiment pas encore, car ils doivent se débrouiller avec du HTML brut + de nombreux concepts différents + des sélections assez minces sur la documentation/ tutoriels.

Le fait qu'ASP.net MVC ne soit que dans « Aperçu 5 » est-il une source de préoccupation lors de son examen ?

Je sais que StackOverflow a été créé en utilisant celui-ci, mais y a-t-il une chance que Microsoft puisse implémenter des modifications importantes au framework avant qu'il ne soit officiellement sorti de la version bêta/alpha/aperçu ?

Si vous êtes déterminé à utiliser un framework MVC, alors je préférerais utiliser celui du projet Castle...

Cela dit, je pense personnellement que les WebControls présentent de nombreux avantages, comme par exemple la possibilité de créer des applications événementielles dotées d'un client avec état, etc.La plupart des arguments contre les WebControls sont construits en raison d'un manque de compréhension du modèle WebControl, etc.Et pas parce qu’ils sont vraiment mauvais…

MVC n'est pas une solution miracle, surtout pas Microsoft MVC...

J'ai vu une implémentation du framework MVC où, par souci de testabilité, quelqu'un a rendu l'intégralité du code HTML dans le code.Dans ce cas, la vue est également un code testable.Mais j'ai dit, mon ami, mettre du HTML dans du code est un cauchemar de maintenance et il a bien dit que j'aime tout ce qui est compilé et testé.Je n'ai pas discuté, mais j'ai découvert plus tard qu'il avait mis ce code HTML dans des fichiers de ressources et la folie a continué...

Il ne réalisait pas que l'idée de séparer View résolvait également la partie maintenance.Cela dépasse la testabilité dans certaines applications.Nous n'avons pas besoin de tester la conception HTML si nous utilisons l'outil WYSWYG.Les WebForms sont bons pour cette raison.

J'ai souvent vu des gens abuser de la publication et de l'état d'affichage et en attribuer la responsabilité au modèle ASP .NET.

N'oubliez pas que les meilleures pages Web restent les fichiers .HTML et c'est là que réside la puissance d'ASP .NET MVC.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top