Meine Frage bezieht sich auf das von Microsoft eingeführte MVC-Entwurfsmuster und die Rasiermessersyntax.
Während ich das MVC-Entwurfsmuster lernte, wurde mir gesagt, dass die Idee auf einem Prinzip basiert, das als Trennung von Bedenken bekannt ist .
Mit Razor Syntax können wir C # jedoch direkt in Views verwenden .
Ist das nicht ein Schnittpunkt von Bedenken?
c#
asp.net-mvc
separation-of-concerns
razor
John Strowsky
quelle
quelle
Antworten:
Sie verbinden die Razor-Syntax mit der Trennung von Bedenken.
Die Trennung von Bedenken hat damit zu tun, wie Sie Ihren Code strukturieren.
Die Möglichkeit, C # in Ansichten zu verwenden, verhindert dies nicht. Es hat nichts mit der Trennung von Anliegen als solchen zu tun.
Natürlich können Sie den Code in Ihrer Ansicht so strukturieren, dass er nicht der Trennung von Bedenken entspricht. Wie steht es jedoch mit C # -Code, der nur zu Anzeigezwecken verwendet wird? Wo würde das leben?
quelle
Anstatt die Frage direkt zu beantworten, hinterfragt meine Antwort die in der Frage getroffene Annahme. Das heißt, die Annahme, dass Razor für MVC entwickelt wurde, ist falsch. Ich arbeite bei Microsoft im ASP.NET-Team und weiß dies aus erster Hand.
Razor startete nicht als View-Engine für MVC. Es wurde für ASP.NET-Webseiten erstellt. Dies ist wahrscheinlich das Maß , das Sie für die am wenigsten voneinander getrennten Bereiche des Spektrums benötigen. Es wurde als moderne Alternative zu ASP.NET Web Forms / Classic ASP und natürlich zu vielen anderen ähnlichen Frameworks für die Serverprogrammierung entwickelt. Die Idee von Razor war es, nahezu nahtlose Übergänge zwischen HTML (Markup) und C # (Code) zu erstellen.
Erst später entschied das Team (zu dem auch ich gehörte), dass die Razor-Syntax für eine View Engine für MVC, die vom selben Team geschrieben wurde, sehr viel Sinn machen würde.
Ob Razor das Konzept der Trennung von Bedenken in ASP.NET MVC ermöglicht, behindert, verbessert oder ändert, ist die Antwort von Oded genau richtig .
quelle
Sie verwechseln "Trennung von Technologien" mit "Trennung von Bedenken". Die Grundidee hinter dem "View" -Teil von MVC ist, dass Code in der "View" keinen Datenzugriff oder keine umfangreiche Logik direkt ausführt, sondern den "Model" - und "Controller" -Teilen überlassen bleibt. Der "Controller" transformiert die Daten, führt die erforderliche Logik aus und leitet sie an die richtige "Ansicht" weiter. Die Ansicht kann auch Datentransformationen durchführen, aber ich neige dazu, sie rein kosmetisch zu halten, wie die oben erwähnte Datentransformation.
quelle
Ich kann mir ein perfektes
Don't do it
Beispiel vorstellen .Nehmen wir an, wir haben einen ProductController:
Mit Rasierer haben wir eine Alternative
und aus unserer sicht:
Ich finde es ziemlich offensichtlich, dass sich die zweite Lösung so falsch anfühlt. Wenn Sie so etwas tun, geben Sie nicht dem Rasiermesser die Schuld - geben Sie sich selbst die Schuld.
Und vergessen Sie nicht: Die Verwendung von C # in Ansichten ist kein Rasiermesser, dies war auch mit ASP.NET-Ansichten möglich. Mit Rasiermesser ist es nur ein bisschen einfacher.
Wenn Sie nach einer Template-Engine suchen, die mehr Rails enthält, als Sie möchten, sollten Sie sich nancy.fx mit der Super-Simple-View-Engine ansehen.
quelle