J’ai cherché sur SO & Google une ventilation des différents moteurs de vue disponibles pour ASP.NET MVC, mais je n’ai pas trouvé beaucoup plus que de simples descriptions de haut niveau de ce qu’est un moteur de vue.
Je ne cherche pas nécessairement les «meilleures» ou les «plus rapides», mais plutôt des comparaisons réelles des avantages / inconvénients des principaux acteurs (par exemple, WebFormViewEngine par défaut, MvcConsortingb View Engines, etc.) pour diverses situations. Je pense que cela serait vraiment utile pour déterminer si le passage du moteur par défaut serait avantageux pour un projet ou un groupe de développement donné.
Quelqu’un at-il rencontré une telle comparaison?
Comme une liste complète ne semble pas exister, commençons par celle-ci sur SO. Cela peut être très utile pour la communauté ASP.NET MVC si les utilisateurs ajoutent leur expérience (en particulier ceux qui ont consortingbué à l’un d’entre eux). Tout ce qui implémente IViewEngine
(par exemple VirtualPathProviderViewEngine
) est un jeu équitable ici. Il suffit de classer par ordre alphabétique les nouveaux moteurs de vue (en laissant WebFormViewEngine et Razor en haut) et d’essayer d’être objective dans les comparaisons.
System.Web.Mvc.WebFormViewEngine
Objectifs de conception:
Un moteur de vue utilisé pour rendre une page Web Forms à la réponse.
Avantages:
Les inconvénients:
Exemple:
<%@ Control Inherits="System.Web.Mvc.ViewPage>" %> <% if(model.Any()) { %> <% foreach(var p in model){%> - <%=p.Name%>
<%}%>
<%}else{%> No products available
<%}%>
System.Web.Razor
Objectifs de conception:
Avantages:
Les inconvénients:
Exemple de Con # 1 (notez l’emplacement de “ssortingng [] …”):
@{ Team Members
ssortingng[] teamMembers = {"Matt", "Joanne", "Robert"}; foreach (var person in teamMembers) { @person
} }
Bellevue
Objectifs de conception:
- Respecter le HTML en tant que langage de premier ordre, plutôt que de le traiter comme du “simple texte”.
- Ne plaisante pas avec mon HTML! Le code de liaison de données (code Bellevue) doit être distinct du code HTML.
- Appliquez une séparation ssortingcte des vues de modèle
Brail
Objectifs de conception:
Le moteur de visualisation Brail a été porté depuis MonoRail pour fonctionner avec Microsoft ASP.NET MVC Framework. Pour une introduction à Brail, consultez la documentation sur le site Web du projet Castle .
Avantages:
Les inconvénients:
Exemple:
${title} The following items are in the list:
<%for element in list: output "- ${element}
"%>
I hope that you would like Brail
Hasic
Hasic utilise les littéraux XML de VB.NET au lieu de chaînes comme la plupart des autres moteurs de vue.
Avantages:
Les inconvénients:
Exemple:
Protected Overrides Function Body() As XElement Return _ Hello, World
End Function
NDjango
Objectifs de conception:
NDjango est une implémentation du langage de modèles Django sur la plate-forme .NET, utilisant le langage F # .
Avantages:
WebFormViewEngine
NHaml
Objectifs de conception:
.NET port du moteur de vue Rails Haml. Du site web de Haml :
Haml est un langage de balisage utilisé pour décrire clairement et simplement le XHTML de tout document Web, sans utiliser de code en ligne … Haml évite d’avoir à coder explicitement XHTML dans le modèle, car il s’agit en fait d’une description abstraite du XHTML , avec du code pour générer du contenu dynamic.
Avantages:
Les inconvénients:
Exemple:
@type=IEnumerable - if(model.Any()) %ul - foreach (var p in model) %li= p.Name - else %p No products available
NVelocityViewEngine (MvcConsortingb)
Objectifs de conception:
Un moteur de vue basé sur NVelocity, qui est un port .NET du populaire projet Java Velocity .
Avantages:
Les inconvénients:
Exemple:
#foreach ($p in $viewdata.Model) #beforeall #each - $p.Name
#afterall
#nodata No products available
#end
SharpTiles
Objectifs de conception:
SharpTiles est un port partiel de JSTL combiné avec le concept derrière le framework Tiles (comme de Mile Stone 1).
Avantages:
Les inconvénients:
Exemple:
Spark View Engine
Objectifs de conception:
L’idée est de permettre au HTML de dominer le stream et le code de s’adapter parfaitement.
Avantages:
Les inconvénients:
Exemple:
- ${p.Name}
No products available
SsortingngTemplate View Engine MVC
Objectifs de conception:
- Poids léger. Aucune classe de page n’est créée.
- Vite. Les modèles sont écrits dans le stream de sortie de réponse.
- Caché Les modèles sont mis en cache, mais utilisent un FileSystemWatcher pour détecter les modifications de fichiers.
- Dynamique. Les modèles peuvent être générés à la volée dans le code.
- Flexible. Les modèles peuvent être nesteds à n’importe quel niveau.
- Conformément aux principes MVC. Favorise la séparation de l’interface utilisateur et de la logique métier. Toutes les données sont créées à l’avance et transmises au modèle.
Avantages:
Les inconvénients:
Battements d’ailes
Wing Beats est un DSL interne pour la création de XHTML. Il est basé sur F # et inclut un moteur de visualisation ASP.NET MVC, mais peut également être utilisé uniquement pour sa capacité à créer XHTML.
Avantages:
Les inconvénients:
XsltViewEngine (MvcConsortingb)
Objectifs de conception:
Construit des vues à partir de XSLT familier
Avantages:
Les inconvénients:
Mon choix actuel est Razor. Il est très propre et facile à lire et maintient les pages de vues très faciles à gérer. Il y a aussi un support intellisense qui est vraiment génial. ALos, lorsqu’il est utilisé avec des assistants Web, il est également très puissant.
Pour fournir un échantillon simple:
@Model namespace.model Test Razor @foreach(var x in ViewData.model) { - @x.PropertyName
}
Et voila. C’est très propre et facile à lire. Certes, c’est un exemple simple mais même sur des pages et des formulaires complexes, il est toujours très facile à lire et à comprendre.
Quant aux inconvénients? Eh bien jusqu’à présent (je suis nouveau à cela) lorsque vous utilisez certains des helpers pour les formulaires, il y a un manque de support pour l’ajout d’une référence de classe CSS, ce qui est un peu gênant.
Merci Nathj07
Je sais que cela ne répond pas vraiment à votre question, mais différents moteurs de vue ont des objectives différents. Le moteur de visualisation Spark , par exemple, vise à débarrasser vos vues de la “soupe aux balises” en essayant de rendre tout ce qui est fluide et lisible.
Votre meilleur pari serait de regarder quelques implémentations. Si cela semble intéressant pour l’intention de votre solution, essayez-le. Vous pouvez mélanger et faire correspondre les moteurs de vue dans MVC, donc cela ne devrait pas être un problème si vous décidez de ne pas utiliser un moteur spécifique.
Vérifiez ce SharpDOM . Ceci est ac dsl 4.0 interne pour la génération de HTML et aussi asp.net mvc view engine.
J’aime ndjango . Il est très facile à utiliser et très flexible. Vous pouvez facilement étendre la fonctionnalité d’affichage avec des balises et des filtres personnalisés. Je pense que “grandement lié à F #” est plutôt avantageux que désavantagé.
Je pense que cette liste devrait également inclure des exemples de chaque moteur de vue afin que les utilisateurs puissent en avoir un aperçu sans avoir à visiter chaque site Web.
Les images disent mille mots et les échantillons de balisage sont comme des captures d’écran pour les moteurs de vues 🙂 Alors, voici un exemple de mon moteur de visualisation Spark préféré .
- ${p.Name}
No products available