Question

Lorsque j'ai entendu parler de StackOverflow pour la première fois et que j'ai appris qu'il était construit dans ASP.Net MVC, j'étais un peu confus. Je pensais qu'ASP.Net était toujours un exemple d'architecture MVC. Vous avez la page .aspx qui fournit la vue, la page .aspx.vb qui fournit le contrôleur, et vous pouvez créer une autre classe qui sera le modèle. Le processus d'utilisation de MVC dans ASP.Net est décrit dans cet article de Microsoft .

Donc ma question est. Qu'est-ce que ASP.Net MVC fournit que vous ne pourriez pas faire avec ASP.Net classique (même aussi loin que ASP.Net 1.1)? Ce sont juste des URL fantaisies? Est-ce juste pour que les États membres se vantent de pouvoir se comparer aux nouvelles technologies telles que Ruby On Rails et dire: & "Nous pouvons le faire aussi &"; Existe-t-il quelque chose de plus que ASP.Net MVC fournit réellement, plutôt que quelques modèles supplémentaires dans le menu Fichier - & Gt; Nouveau?

Je parais probablement très sceptique et négatif en ce moment, alors je vais arrêter. Mais je veux vraiment savoir ce que ASP.Net MVC fournit réellement. En outre, si quelqu'un peut me dire pourquoi il s'agit de Model-View-Controller et non de l'ordre des couches de View-Controller-Model ou de Model-Control-View selon que vous vous dirigez vers le haut ou vers le bas, vraiment apprécier cela aussi.

EDIT

En outre, il convient probablement de souligner que je ne me suis jamais vraiment intéressé au modèle de formulaires Web (contrôles de serveur AKA). Je ne l'ai que très peu utilisé et jamais au travail.

Était-ce utile?

La solution

.aspx ne remplit pas le modèle MVC car la page aspx (la "vue") est appelée avant le code derrière (le "contrôleur").

Cela signifie que le contrôleur a une "dépendance forte" sur la vue, ce qui va à l'encontre des principes de MVC.

L'un des principaux avantages de MVC est qu'il vous permet de tester votre contrôleur (qui contient beaucoup de logique) sans instancier une vue réelle. Vous ne pouvez tout simplement pas faire cela dans le monde .aspx.

Tester le contrôleur lui-même est beaucoup plus rapide que de devoir instancier tout un pipeline asp.net (application, requête, réponse, état d'affichage, état de session, etc.).

Autres conseils

Scott Guthrie l’a expliqué dans cet article & Framework ASP.NET MVC "

  
      
  • Il permet une séparation nette des problèmes, de la testabilité et du TDD en   défaut. Tous les contrats de base au sein de   le framework MVC est basé sur une interface   et facilement moquable (il comprend   basé sur l'interface   IHttpRequest / IHttpResponse   intrinsèques). Vous pouvez tester l’unité   application sans avoir à exécuter le   Contrôleurs au sein d'un processus ASP.NET   (effectuer des tests unitaires rapidement). Vous pouvez   utilisez n'importe quel framework de tests unitaires   vouloir faire ce test (y compris   NUnit, MBUnit, Test MS, etc.).

  •   
  • Il est hautement extensible et connectable. Tout dans le MVC   cadre est conçu pour qu'il puisse   être facilement remplacé / personnalisé (pour   exemple: vous pouvez éventuellement plug-in   votre propre moteur de vue, politique de routage,   sérialisation des paramètres, etc.). Il   prend également en charge l'utilisation existante   injection de dépendance et conteneur IOC   modèles (Windsor, Spring.Net,   NHibernate, etc.).

  •   
  • Il comprend un composant très puissant de mappage d'URL qui vous permet de   construire des applications avec des URL propres.   Les URL n'ont pas besoin d'avoir d'extensions   en leur sein, et sont conçus pour   soutenir facilement SEO et REST-friendly   modèles de nommage. Par exemple, je pourrais   mappez facilement l'URL / products / edit / 4 à   le " Modifier " action du   Classe ProductsController dans mon projet   ci-dessus, ou cartographiez le   / Blogs / scottgu / 10-10-2007 / SomeTopic /   URL vers un & Quot; DisplayPost & Quot; action d'un   Classe BlogEngineController.

  •   
  • L'infrastructure MVC prend en charge l'utilisation des fichiers ASP.NET .ASPX, .ASCX et   Les fichiers de balisage .Master sous forme de vue & Quot;   modèles " (ce qui signifie que vous pouvez facilement utiliser   fonctionnalités ASP.NET existantes comme imbriquées   pages maîtres, <% =% > extraits,   contrôles serveur déclaratifs,   modèles, liaison de données, localisation,   etc). Il n'utilise cependant pas le   modèle post-retour existant pour   interactions sur le serveur.   Au lieu de cela, vous dirigerez tous les utilisateurs finaux   interactions avec une classe de contrôleurs   au lieu de cela - ce qui contribue à assurer propre   séparation des préoccupations et testabilité   (cela signifie également pas de viewstate ou page   cycle de vie avec les vues basées sur MVC).

  •   
  • L'infrastructure ASP.NET MVC prend entièrement en charge les fonctionnalités ASP.NET existantes.   comme l'authentification de formulaires / Windows, URL   autorisation, appartenance / rôles,   sortie et mise en cache des données,   gestion d'état de session / profil,   surveillance de la santé, configuration   système, l'architecture du fournisseur,   etc.

  •   

En premier lieu, il est très facile de créer des sites Web testables avec des séparations de responsabilités bien définies. Il est également beaucoup plus facile de créer des interfaces utilisateur XHTML valides à l’aide du nouveau framework MVC.

J'ai utilisé le deuxième CTP (je pense qu'ils sont sur cinq maintenant) pour commencer à travailler sur un site Web et, après avoir créé quelques applications Web auparavant, je dois dire que c'est des centaines de fois meilleur que d'utiliser le contrôle du serveur. modèle.

Les commandes de serveur sont acceptables si vous ne savez pas ce que vous faites. Lorsque vous commencez à apprendre comment les applications Web devraient fonctionner, vous commencez à les combattre. Finalement, vous devez écrire les vôtres pour surmonter les lacunes des contrôles actuels. C'est à ce stade que le MVC commence à briller. Et cela ne tient même pas compte de la testabilité de votre site Web ...

Excellent article de Dino Esposito qui explique les développeurs ASP.net MVC aux développeurs de formulaires Web ASP.net:

Plus d'identifiants HTML générés automatiquement !!! Toute personne pratiquant n'importe quelle sorte de javascript apprécie ce fait.

ASP.Net avec son code derrière est presque MVC - mais pas - la chose la plus importante qui fait que ce n’est pas le fait est que les codes-behind sont directement liés aux aspx - qui est un gros composant de MVC . Si vous considérez le code-behind comme un contrôleur, celui-ci doit être complètement découplé de la vue. Le nouveau .NET MVC complète cette approche - et apporte un framework MVC complet. Bien qu'il en existe déjà pour .NET (voir Spring.NET).

J'ai parcouru quelques exemples simples tels que celui-ci . Je peux en quelque sorte voir la différence. Cependant, je ne vois pas vraiment comment MVC dissocie la vue du contrôleur. La vue fait toujours référence à des éléments présents dans le contrôleur. Je vois que les tests sont beaucoup plus faciles à effectuer et qu’au moins, dans MVC, le contrôleur n’a aucune connaissance de la vue. Et vous n’auriez pas à traiter la vue pour appeler des méthodes dans le contrôleur. Je peux voir que c'est tout un saut, même si, à première vue, cela ne semble pas beaucoup.

Je suis d'accord avec @Will pour lutter contre les contrôles de serveur. Je n'ai jamais travaillé dans une situation où ils étaient réellement utilisés, mais beaucoup de personnes que je connais et qui ont rencontré de nombreuses limitations avec elles.

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