Razor / CSHTML - Haben Sie einen Vorteil gegenüber dem, was wir haben? [geschlossen]

75

Jeder, der die neue Funktion für CSHTML-Seiten verwendet und feststellt, dass er diese neue Syntax der Ansichtsmodule der vorhandenen ASP.NET MVC-Standardansichtsengine oder Webformularen vorzieht, und wenn ja, warum? Was ist mit CSHTML, das Ihnen einen Vorteil gegenüber MVC oder Webformularen bietet oder umgekehrt?

Ich bin nur neugierig zu hören, wie die Leute es aufnehmen.

Brian Mains
quelle
1
Ich denke, es ist möglich, objektive Antworten auf diese Frage zu geben, indem tatsächliche (objektive) oder wahrgenommene (subjektive) Vorteile genannt werden, aber Sie sollten Ihre Frage umformulieren, um diese zu erhalten. In seiner jetzigen Form ist es zu subjektiv und argumentativ.
dtb
2
Ich habe die Frage leicht aktualisiert. Aber ich muss sagen, ich suche nach Vor- und Nachteilen, und ich werde jede Antwort nehmen, die ich bekomme, da ich auf ein allgemeines Niveau schaue, aber auch gerne über technische Details hören möchte, also mache ich nichts. Ich sehe kein Problem mit der Art und Weise, wie ich es angegeben habe ...
Brian Mains
1
Gibt es ein Cheatsheet / eine Anleitung zur Verwendung von Razor für FrontEnd-Entwickler? Ich arbeite derzeit an einem Razor-Projekt und skinne die Anwendung mit Foundation. Ich würde gerne mehr über Razor erfahren, das mir helfen könnte.
Giacomo Paita

Antworten:

45

Einer der Vorteile besteht darin, dass Razor-Ansichten in Komponententests gerendert werden können. Dies war mit dem vorherigen ASP.Net-Renderer nicht einfach möglich.

Aus der Ankündigung von ScottGu geht hervor, dass dies eines der Designziele ist:

Unit Testable: Die neue Implementierung der View Engine unterstützt die Möglichkeit, Unit-Test-Ansichten zu erstellen (ohne dass ein Controller oder ein Webserver erforderlich ist, und kann in jedem Unit-Test-Projekt gehostet werden - keine spezielle App-Domäne erforderlich).

Simon Steele
quelle
Es wurde ein Link zur Unterstützung von Beweisen hinzugefügt :) Ich habe Razor selbst noch nicht verwendet, daher habe ich momentan keinen Code zum Teilen. Nehmen Sie sich ein paar Monate Zeit und vielleicht habe ich Zeit, mit der Beta zu spielen!
Simon Steele
2
Wir haben keine Anleitung zum Testen von Razor-Ansichten veröffentlicht, aber ich habe über das Hosten der Razor-Engine außerhalb von ASP.Net gebloggt
Andrew Stanton-Nurse
5
Sie sollten sich auf jeden Fall die großartige Razor Templating Engine ansehen, die auf CodePlex gehostet wird: razorengine.codeplex.com
Marius Schulz
Wow, ich habe nie neue Rasiermesseransichten getestet. Ich dachte, es wäre genug, die Ausgabe der Controller zu testen (z. B. das richtige / gültige Modell zu übergeben). Alles andere testet die HTML-Ausgabe - was ein bisschen albern erscheint.
RPM1984
1
Diese Antwort (und auch die anderen) sind noch aktuell? Ich frage mich, ob alle neuen Funktionen und Dinge, die herauskommen, noch Vorteile bei der Verwendung von cshtml haben.
Michel Ayres
44

Ex Microsoft Developer's Opinion

Ich habe in einem Kernteam für die MSDN-Website gearbeitet. Jetzt verwende ich c # razor für E-Commerce-Sites mit meinem Programmierteam und wir konzentrieren uns stark auf das jQuery-Front-End mit Back-End-c # -Razor-Seiten und die LINQ-Entity-Speicherdatenbank, sodass die Seiten selbst bei verschachtelten Schleifen mit Abfragen eine Antwortzeit von 1-2 Millisekunden haben und kein Seiten-Caching. Wir verwenden keine MVC, sondern nur ASP.NET mit Rasiermesserseiten, die mit dem URL Rewrite-Modul für IIS 7 zugeordnet sind, keine ASPX-Seiten oder ViewState oder serverseitige Ereignisprogrammierung. Es verfügt nicht über die zusätzlichen (unnötigen) Ebenen, die MVC in Codekonstrukte für den herausgeforderten regulären Ausdruck einfügt. Weniger ist mehr für uns. Es ist alles schlank und gemein, aber ich gebe MVC Requisiten für seine Testbarkeit, aber das ist alles.

Rasiermesserseiten haben keinen Ereignislebenszyklus wie ASPX-Seiten. Es wird nur als eine angeforderte Seite gerendert. C # ist eine großartige Sprache und Razor tut alles, um es seinen Job machen zu lassen. Das anonyme Tippen mit Generika und Linq macht das Leben mit C # - und Rasiermesserseiten so einfach. Die Verwendung von Razor-Seiten hilft Ihnen dabei, leichter zu denken und zu codieren.

Einer der Nachteile von Razor und MVC ist, dass es keine ViewState-ähnliche Persistenz gibt. Ich musste eine Lösung dafür implementieren, also schrieb ich hier ein jQuery-Plugin dafür -> http://www.jasonsebring.com/dumbFormState , ein von HTML 5 Offline-Speicher unterstütztes Plugin für den Formularstatus, das in allen wichtigen Funktionen funktioniert Browser jetzt. Es ist derzeit nur für den Formularstatus vorgesehen, aber Sie können window.sessionStorage oder window.localStorage ganz einfach verwenden, um jede Art von Status über Postbacks oder sogar Seitenanforderungen hinweg zu speichern. Ich habe mich nur darum gekümmert, ihn automatisch zu speichern und anhand der URL und des Formularindex zu benennen du musst nicht darüber nachdenken.

Jason Sebring
quelle
1
Beeindruckendste Leistungszahlen - Ich mag ASP.NET nicht wegen seines tapferen Versuchs, Webprogrammierung wie VB6 zu machen. Machen Sie Testbarkeit zu einer Hündin. Aus diesem Grund mag ich auch MVC. Haben Sie ein Beispiel, das Sie möglicherweise für die von Ihnen verwendete Architektur freigeben?
Mozillanerd
Um "Mozillanerd" in Bezug auf die Architektur zu testen, wenn Sie testen möchten, was ich beschrieben habe, machen Sie buchstäblich ein anonymes c # -Objekt mit neuem wie var myobj = new {/ * platzieren Sie die Datenstruktur ähnlich wie json * /} und haben Sie diese im Speicher zwischengespeichert und sehen, wie schnell LINQ dagegen ist. Stellen Sie sich vor, dies ist ein Produktkatalog und versuchen Sie es mit LINQ. Es ist superschnell, hat aber seinen Platz in Bezug auf die richtige Anpassung der Skalierung als das Beste auf einer Box, es sei denn, Sie haben Azure-Caching und laufen unter Windows Azure.
Jason Sebring
7
  1. Alles ist standardmäßig verschlüsselt !!! Das ist ziemlich groß.

  2. Deklarative Helfer können zusammengestellt werden, sodass Sie nichts Besonderes tun müssen, um sie zu teilen. Ich denke, sie werden .ascx-Steuerelemente in gewissem Maße ersetzen. Sie müssen durch einige Rahmen springen, um ein .ascx-Steuerelement in einem anderen Projekt zu verwenden.

  3. Sie können einen Abschnitt erstellen, der schön ist.

Nunery
quelle
3

Der größte Vorteil ist, dass der Code prägnanter ist. Der VS-Editor verfügt außerdem über die IntelliSense-Unterstützung, die einige der anderen Ansichtsmodule nicht bieten.

Deklarative HTML-Helfer sehen auch ziemlich cool aus, da HTML-Helfer in C # -Code mich an benutzerdefinierte Steuerelemente in ASP.NET erinnern. Ich denke, sie haben eine Seite von Partials genommen, aber mit dem Inline-Code.

Also einige eindeutige Vorteile gegenüber der asp.net View Engine.

Im Gegensatz zu einer View-Engine wie Spark:

Spark ist noch prägnanter. Sie können die if's und Schleifen in einem HTML-Tag selbst behalten. Das Markup fühlt sich für mich immer noch natürlicher an.

Sie können Partials genau so codieren, wie Sie einen deklarativen Helfer ausführen würden. Sie würden nur die Variablen an das Partial weitergeben und Sie haben das Gleiche. Das gibt es schon eine ganze Weile mit Funken.

rball
quelle