Qu'est-ce que ASP.Net MVC?

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

Donc ma question est. Ce qui fait ASP.Net MVC fournir que vous ne seriez pas en mesure de faire avec régulier ASP.Net (même aussi loin que ASP.Net 1.1)? C'est juste des URL fantaisistes? Est-ce seulement pour se vanter que les SP peuvent se comparer aux nouvelles technologies comme Ruby On Rails, et dire "Nous pouvons le faire aussi"? Y a - t-il autre chose que ASP.Net MVC fournit en fait, plutôt que quelques gabarits supplémentaires dans le fichier - > nouveau menu?

je suis probablement vraiment sceptique et négative en ce moment, donc je vais juste arrêter. Mais j'ai vraiment envie de savoir quoi ASP.Net MVC fournit en fait. En outre, si quelqu'un peut me dire pourquoi C'est Model-View-Controller et pas dans l'ordre des couches de View-Controller-Model ou Model-Control-View selon que vous allez de haut en bas, ou vice versa, Je l'apprécierais vraiment aussi.

EDIT

en outre, il est probablement intéressant de souligner que je n'ai jamais vraiment pris soin du modèle de formulaires web (alias server controls) non plus. Je ne l'ai utilisé que très peu, et jamais au travail.

15
demandé sur tereško 2008-09-18 03:49:04

8 réponses

.aspx ne remplit pas le patron MVC parce que la page aspx (la 'vue') est appelée avant le code derrière (le 'controller').

cela signifie que le controller a une 'dépendance dure' sur la vue, ce qui est très contraire aux principes MVC.

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

Essais le controller tout seul est beaucoup plus rapide que d'avoir à instancier un entier asp.net pipeline (application, request, response, view state, session state etc).

14
répondu Leon Bambrick 2008-09-17 23:56:12

Scott Guthrie l'a expliqué dans ce post "ASP.NET MVC Framework"

  • il permet une séparation nette des préoccupations, de la testabilité et de la DTT par défaut. Tous les contrats de base le cadre MVC est basé sur l'interface et facilement moquable (il comprend l'interface de base IHttpRequest/IHttpResponse intrinsèque.) Vous pouvez unité de test de la application sans avoir à exécuter le Les contrôleurs à l'intérieur d'un ASP.NET processus (réalisation de tests unitaires rapide.) Vous pouvez utilisez n'importe quelle unité de cadre de test vous voulez-faire ce test (y compris NUnit, MBUnit, MS Test, etc.).

  • Il est très extensible et enfichables. Tout dans le MVC le cadre est conçu de sorte qu'il peut être facilement remplacé/personnalisé (pour exemple: vous pouvez éventuellement le plugin votre propre moteur de vue, la Politique de routage, sérialisation des paramètres, etc). Il prend également en charge l'aide existants injection de dépendance et récipient IOC modèle (Windsor, Spring.Net, NHibernate, etc.).

  • il inclut un composant de mappage D'URL très puissant qui vous permet de construisez des applications avec des URLs propres. Les URLs n'ont pas besoin d'extensions au sein de eux, et sont conçus pour prise en charge facile du référencement et du repos des modèles de noms. Par exemple, je pourrais mappez facilement L'URL/produits/edit / 4 à L'action "Edit" du Classe de controlleur de produits dans mon projet ci-dessus, ou de la carte de l' /Blogs/scottgu/10-10-2007 / SomeTopic/ L'URL d'un "DisplayPost" l'action d'un Classe BlogEngineController.

  • le cadre MVC soutient l'utilisation des ASP.NET .ASPX, .ASCX, et .Fichier de balisage principal comme " view les modèles" (ce qui signifie que vous pouvez facilement utiliser existant ASP.NET des fonctionnalités comme imbriquées les pages maîtres, <%= %> extraits de code, contrôles déclaratifs du serveur, modèles de liaison de données, la localisation, etc.) Elle n'utilise toutefois pas les après de dos de modèle pour interactions retour au serveur. Au lieu de cela, vous acheminerez tous les utilisateurs finaux interactions avec une classe de contrôleur au lieu de cela - qui aide à assurer la propreté séparation des préoccupations et de la testabilité (cela signifie aussi qu'il n'y a pas de viewstate ou de page cycle de vie avec vues MVC).

  • le ASP.NET le cadre des CVM appuie entièrement les ASP.NET caractéristiques comme l'authentification des formes / fenêtres, URL autorisation, membres/rôles, sortie et mise en cache des données, session / état du profil gestion, surveillance de la santé, configuration système, l'architecture des fournisseurs, etc.

7
répondu jfs 2008-09-18 09:43:30

principalement, il rend très facile de créer des sites Web testables avec des séparations de responsabilité bien définies. Il est également beaucoup plus facile de créer des UIs XHTML valides en utilisant le nouveau cadre MVC.

j'ai utilisé le 2nd CTP (je pense qu'ils sont sur cinq maintenant) pour commencer à travailler sur un site web et, ayant créé quelques applications web avant, je dois dire ses centaines de fois mieux qu'en utilisant le modèle de commande de serveur.

les commandes du serveur sont bien quand vous ne savez pas ce que vous êtes faire. Alors que vous commencez à apprendre comment les applications web devraient fonctionner, vous commencez à les combattre. Finalement, vous devez écrire votre propre pour passer les défauts des contrôles actuels. C'est là que le MVC commence à briller. Et ce n'est même pas en tenant compte de la testabilité de votre site web...

1
répondu Will 2008-09-17 23:58:02

grand article de Dino Esposito qui est destiné à expliquer ASP.net MVC to ASP.net WebForms developpers:

http://dotnetslackers.com/articles/aspnet/AnArchitecturalViewOfTheASPNETMVCFramework.aspx

1
répondu NakedBrunch 2008-09-18 00:08:12

plus d'IDs html générés automatiquement!!! Quiconque fait une sorte de javascript apprécie ce fait.

1
répondu Vyrotek 2008-09-18 00:12:43

ASP.Net avec ce code de derrière est presque MVC-mais pas - la seule grande chose qui ne le fait pas est que les codebehinds sont liés directement à l'aspx - qui est une grande composante de MVC. Si vous pensez à la codebehinds que le contrôleur devrait être complètement découplé de la vue. Le nouveau MVC D'.NET complète ce travail et apporte un cadre MVC complet. Bien qu'il y en ait déjà pour .NET (voir Spring.NET).

0
répondu user13276 2008-09-17 23:54:18

j'ai regardé quelques exemples simples tels que celui-ci. Je peux voir la différence. Cependant, je ne vois pas vraiment comment MVC détache la vue du contrôleur. La vue renvoie toujours des trucs qui sont dans le contrôleur. Je vois comment il est beaucoup plus facile de tester, 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 les méthodes dans le contrôleur. Je peux voir que c'est tout un saut, même si, à première vue, il peut ne pas sembler beaucoup.

je suis d'accord avec @Permettra de lutter contre les contrôles serveur. Je n'ai jamais travaillé dans une situation où ils ont été utilisés, mais beaucoup de gens que je connais ont rencontré pas mal de limites avec eux.

0
répondu Kibbee 2008-09-18 00:10:40
0
répondu cvs 2008-09-18 09:36:29