Ma question est liée au modèle de conception MVC et à la syntaxe Razor introduits par Microsoft.
Tout en apprenant le modèle de conception MVC, on m'a dit que l'idée était basée sur un principe connu sous le nom de séparation des préoccupations .
Mais Razor Syntax nous permet d'utiliser directement C # dans les vues .
N'est-ce pas l'intersection des préoccupations?
c#
asp.net-mvc
separation-of-concerns
razor
John Strowsky
la source
la source
Réponses:
Vous confondez la syntaxe Razor avec la séparation des préoccupations.
La séparation des préoccupations concerne la façon dont vous structurez votre code.
Pouvoir utiliser C # dans les vues n'empêche pas cela. Cela n'a rien à voir avec la séparation des préoccupations en tant que telles.
Bien sûr, vous pouvez structurer le code à votre avis pour ne pas respecter la séparation des préoccupations, mais qu'en est-il du code C # utilisé uniquement à des fins d'affichage? Où cela vivrait-il?
la source
Plutôt que de répondre directement à la question, ma réponse remet en question l'hypothèse formulée dans la question. Autrement dit, l'hypothèse selon laquelle Razor a été créé pour MVC est incorrecte. Je travaille chez Microsoft dans l'équipe ASP.NET et j'ai une connaissance de première main de cela.
Razor n'a pas commencé comme moteur de vue pour MVC. Il a été créé pour les pages Web ASP.NET , ce qui est probablement le plus loin possible du côté des préoccupations les moins séparées du spectre. Il a été créé comme une alternative moderne aux formulaires Web ASP.NET / ASP classique et bien sûr à de nombreux autres cadres de programmation de serveur similaires. L'idée de Razor était de créer des transitions presque transparentes entre HTML (balisage) et C # (code).
Ce n'est que plus tard que l'équipe (qui comprend moi-même) a décidé que la syntaxe Razor aurait beaucoup de sens pour le bien d'un moteur de vue pour MVC, qui était écrit par la même équipe.
Quant à savoir si Razor permet, entrave, améliore ou modifie le concept de séparation des préoccupations dans ASP.NET MVC, la réponse d'Oded est parfaite.
la source
Vous confondez «séparation des technologies» et «séparation des préoccupations». L'idée de base derrière la partie "Vue" de MVC est que le code dans la "Vue" n'effectue aucun accès aux données ou logique lourde directement, plutôt qu'il est laissé aux parties "Modèle" et "Contrôleur" respectivement. Le "contrôleur" transforme les données, exécute toute logique nécessaire et les achemine vers la "vue" correcte. La vue peut également effectuer des transformations de données, mais j'ai tendance à les garder purement cosmétiques, comme la transformation de date mentionnée ci-dessus.
la source
Je peux penser à un
Don't do it
exemple parfait .Disons que nous avons un ProductController:
Avec le rasoir, nous avons une alternative
et à notre avis:
Je pense qu'il est assez évident que la deuxième solution se sent tellement mal. Si vous faites quelque chose comme ça, ne blâmez pas le rasoir - blâmez-vous.
Et n'oubliez pas: pouvoir utiliser C # dans les vues n'est pas une fonctionnalité de rasoir, c'était également possible avec les vues ASP.NET. Avec le rasoir, c'est juste un peu plus simple.
Si vous recherchez un moteur de modèle qui est plus de rails comme vous devriez jeter un oeil à nancy.fx avec le moteur de vue Super simple.
la source