J'aimerais savoir quoi, pourquoi ou quand il vaut mieux choisir cshtml et quoi, pourquoi ou quand il vaut mieux choisir les technologies aspx? À quoi servent ces deux technologies?
Merci,
J'aimerais savoir quoi, pourquoi ou quand il vaut mieux choisir cshtml et quoi, pourquoi ou quand il vaut mieux choisir les technologies aspx? À quoi servent ces deux technologies?
Merci,
Réponses:
Comme d'autres personnes ont répondu, .cshtml
(ou .vbhtml
si c'est votre goût) fournit un mappage de gestionnaire pour charger le moteur MVC. L' .aspx
extension charge simplement aspnet_isapi.dll qui effectue la compilation et sert les formulaires Web. La différence dans le mappage du gestionnaire est simplement une méthode permettant aux deux de coexister sur le même serveur, permettant aux applications MVC et aux applications WebForms de vivre sous une racine commune.
Cela permet à http://www.mydomain.com/MyMVCApplication d'être valide et de recevoir des règles MVC avec http://www.mydomain.com/MyWebFormsApplication d'être valide en tant que formulaire Web standard.
Edit:
En ce qui concerne la différence entre les technologies, le framework de modèles MVC (Razor) est destiné à renvoyer les pages .Net à une plate-forme "Web" plus RESTful de vues modèles séparant la logique de code entre le modèle (objets métier / données) , la vue (ce que voit l'utilisateur) et les contrôleurs (la connexion entre les deux). Le modèle WebForms (aspx) était une tentative de Microsoft d'utiliser l'incorporation de javascript complexe pour simuler une application plus avec état similaire à une application WinForms complète avec des événements et un cycle de vie de page qui serait capable de conserver son propre état d'une page à l'autre.
Le choix d'utiliser l'un ou l'autre sera toujours controversé car il y a des arguments pour et contre les deux systèmes. Pour ma part, j'aime la simplicité de l'architecture MVC (bien que le routage soit tout sauf simple) et la facilité de la syntaxe Razor. Je pense que l'architecture WebForms est trop lourde pour être une plate-forme Web efficace. Cela étant dit, il existe de nombreux cas où le framework WebForms fournit un modèle très succinct et utilisable avec une structure d'événements riche et bien définie. Tout se résume aux besoins de l'application et aux préférences de ceux qui la construisent.
Razor est un moteur de vue pour ASP.NET MVC et également un moteur de modèle . Le code Razor et le code en ligne ASP.NET (code mélangé à du balisage) sont tous deux compilés en premier et transformés en assembly temporaire avant d'être exécutés. Ainsi, tout comme C # et VB.NET compilent tous deux en IL, ce qui les rend interchangeables, le code Razor et Inline sont tous deux interchangeables.
C'est donc plus une question de style et d'intérêt. Je suis plus à l'aise avec le rasoir que le code en ligne ASP.NET, c'est-à-dire que je préfère les pages Razor (cshtml) aux pages .aspx.
Imaginez que vous vouliez obtenir une Human
classe et la restituer. Dans les fichiers cshtml , vous écrivez:
<div>Name is @Model.Name</div>
Lorsque vous écrivez dans des fichiers aspx :
<div>Name is <%= Human.Name %></div>
Comme vous pouvez le voir, le @
signe du rasoir facilite le mélange du code et du balisage.
Model
est utilisé pour les vues fortement typées, dans lesquelles vous définissez votre type en haut à l'aide de model
mot-clé.
Bien que la syntaxe soit certainement différente entre Razor ( .cshtml
/ .vbhtml
) et WebForms ( .aspx
/ .ascx
), (Razor étant le plus concis et le plus moderne des deux), personne n'a mentionné que si les deux peuvent être utilisés comme moteurs de visualisation / moteurs de modèles, ASP.NET traditionnel Les contrôles Web Forms peuvent être utilisés sur tous les fichiers .aspx ou .ascx (même en cohésion avec une architecture MVC).
Ceci est pertinent dans les situations où des solutions de longue date à un problème ont été établies et conditionnées dans un composant enfichable (par exemple, un contrôle de téléchargement de gros fichiers) et que vous souhaitez l'utiliser dans un site MVC. Avec Razor, vous ne pouvez pas faire ça. Cependant, vous pouvez exécuter tous les mêmes traitements de backend que vous utiliseriez avec une architecture ASP.NET traditionnelle avec un affichage de formulaire Web.
En outre, les vues de formulaires Web ASP.NET peuvent avoir des fichiers Code-Behind, ce qui permet d'incorporer la logique dans un fichier distinct qui est compilé avec la vue. Alors que la communauté de développement de logiciels est de plus en plus considérée comme une mauvaise pratique des architectures étroitement couplées et du modèle Smart Client , c'était auparavant le principal moyen de faire les choses et c'est toujours très possible avec les fichiers .aspx / .ascx. Razor, intentionnellement, n'a pas une telle qualité.
Les fichiers Cshtml sont ceux utilisés par Razor et comme indiqué comme réponse à cette question , leur principal avantage est qu'ils peuvent être rendus dans des tests unitaires. Les différentes réponses à cet autre sujet apporteront beaucoup d'autres points intéressants.