ASP.NET MVC 5 vs. AngularJS / ASP.NET WebAPI [geschlossen]

86

Derzeit evaluiere ich das Programmiermodell für die Erstellung zukünftiger Webanwendungen in meinem Unternehmen. Daher werde ich mich zwischen ASP.NET MVC 5 (mit Razor Views) und AngularJS mit ASP.NET WebAPI entscheiden. Was sind die Vor- und Nachteile dieser beiden Programmiermodelle?

Bitmuggler
quelle
4
Nun ... wenn Sie AngularJS in ASP.NET verankern wollen ... geben Sie ihm keinen fairen Vergleich. Es ist, als wollten Sie das Javascript aus Angular entfernen, und so soll es einfach nicht geschehen. Angular ist als Framework für den Client gedacht und funktioniert am besten, wenn Sie nur sehr wenige serverseitige Vorlagen verwenden : simple-talk.com/blogs/2013/10/16/… . Dinge wie Authentifizierung und dergleichen sind sinnvoll, aber lassen Sie das Rasiermesser weg und gehen Sie einfach direkt zu .NET und erstellen Sie damit eine API-Ebene für Angular.
Brian Vanderbusch
3
Ich denke, was Sie wirklich brauchen, ist nur AngularJS mit ASP.NET WebAPI. Ich denke, es hat das Beste aus beiden Welten. Ich habe versucht, MVC mit AngularJS zu mischen, und es war keine sehr schöne Erfahrung, als ich auf Probleme stieß. Ich würde daher vorschlagen, nicht in diese Falle zu geraten. Eine Sache, die ich bei diesem Ansatz vermisse, sind die gerätebasierten Ansichten, die MVC mit Razor Engine bereitstellen kann. Es muss einen Weg geben, dies zu überwinden, aber ich habe noch nicht genug experimentiert.
Kiran
Nachdem ich nur ein paar kurze Monate mit Angular gearbeitet hatte (obwohl es für immer zu sein scheint), würde ich nie wieder zu Razor zurückkehren. Je mehr Sie mit Angular arbeiten, desto mehr werden Sie es zu schätzen wissen - Flexibilität und Kraft, manchmal fühlt es sich wie Magie an. Ich sollte sagen, dass die Web-API mit Angular zumindest auf dem Formular POST nicht gut funktioniert, aber das könnte geklärt werden. In Bezug auf die Syntax eines C # -Programmierers ist dies kein einfacher Übergang, da Javascript keine stark typisierte Sprache ist. Aber wenn Sie diese Hürde überwinden, werden Sie Angular zu schätzen wissen.
Florida G.
Rasiermesser ist selbst unter Vorlagenmotoren eine schreckliche Sache. Sie werden eine drastische Steigerung der Produktivität feststellen, wenn Sie einen Winkel über einem Template-Motor (Jade, Lenker, Rasierer usw.) verwenden. Verwenden Sie ein Backend, das JSONs (Web-API, Node-Express oder PHP) und ein eckiges Frontend bereitstellt. Und nur um zu beachten, Knockout ist nicht annähernd so gut wie eckig ... Alles Gute ...
Giridhar Karnik
1
@BrianVanderbusch Ich bin mir nicht sicher, wovon du sprichst. Das Backend spielt überhaupt keine Rolle. Es könnte alles sein. Er sagt, er werde ASP.NET als Backend und eckig als clientseitiges Frontend verwenden. Angular muss weiterhin den Server anrufen, um Daten zu erhalten. Dies hat nichts damit zu tun, Angular keinen fairen Vergleich zu geben.
user441521

Antworten:

103

Meine 2 Cent. Ich persönlich bevorzuge reine HTML-Ansichten, ein vollständig eckiges Frontend zusammen mit einem Web-API / EF / SQL Server-Backend, im Grunde kein Razor. Razor ist eine Abstraktion, die Programmierern beim Rendern von HTML hilft. Heutzutage kommen alle zu dem Schluss, dass das Entfernen dieser Abstraktionen eine bessere Idee ist, daher die Entwicklung von ASP.NET von Webformularen zu MVC usw. Für Entwickler ist es nicht wirklich schwierig, darauf zuzugreifen Griffe mit HTML und Verwendung eines eckigen Frontends. Darüber hinaus erleichtert dies UI-Designern die Arbeit. Sie verfügen über reines HTML und JSON / Javascript. Sie müssen MVC, Razor, Controller und Aktionen nicht verstehen. Früher haben wir vollständig an MVC gearbeitet. In unserem letzten Projekt sind wir zu einem Web-API-Backend und einem eckigen Frontend übergegangen. Wir haben festgestellt, dass sich die Produktivität unseres UI-Designers erheblich verbessert hat.

Mohammad Sepahvand
quelle
3
Und ich möchte hinzufügen, dass mit Winkel Sie Ihre Vorlagen dynamisch aktualisiert bekommen, was offensichtlich ist, fantastisch
Willem D'Haeseleer
4
Ja, wenn es darum geht, ein dynamischeres und reaktionsschnelleres Frontend im Vergleich zu den Entwicklungskosten zu entwickeln, gibt es wirklich keine Konkurrenz.
Mohammad Sepahvand
@ user189756 Wie liefern Sie die HTML-Seiten an den Client, wenn Sie den Web-API-Ansatz verwenden?
Yoav
@Yoav Dies ist eine alte Antwort, aber zu der Zeit war es ein MVC-Host mit einem einzelnen Controller.
Mohammad Sepahvand
1
@ Yoav Genau. Aber ich werde hinzufügen, dass die andere Antwort auch hervorragend ist, insbesondere unter Berücksichtigung von Dingen wie SEO.
Mohammad Sepahvand
53

Ich glaube, Sie können nicht vergleichen. AngularJS ist ein SPA-Framework (Single Page Application), während ASP.Net MVC das Standardmodell verwendet, bei dem zwischen Seiten navigiert wird. Ob Sie ein SPA bauen möchten, hängt von Faktoren wie ab

  • Willst du SEO. Welche der meisten dieser JS-reichen Frameworks haben begrenzte Unterstützung.
  • Wie können Sie Ihre App als SPA oder als mehrere SPAs strukturieren?
  • Es ist eine Herausforderung, von einer typsicheren Sprache C # zur JavaScript-Programmierung zu gelangen.
  • AngularJS lernen und effektiv nutzen.

Wir verwenden die Standard-MVC 5-Rasiereransicht, um die anfänglichen AngularJS-Ansichten einzurichten, sodass Sie sie bei Bedarf sogar miteinander kombinieren können.

Siehe diese Antwort Können Sie AngularJS mit Parse.com verwenden? mehr Kontext ableiten.

Chandermani
quelle
12
"... während ASP.Net MVC das Standardmodell verwendet, bei dem zwischen Seiten navigiert wird." Das ist einfach falsch. MVC-Apps - mit Rasiermesser - können sehr einfach als SPAs entworfen werden.
Sam
7
AngularJS ist nicht auf SPAs beschränkt. Sie können sehr gut eine mehrseitige Website mit
Angular und
3
AngularJS ist kein SPA. Sie können es wie ein SPA verwenden, aber das ist nicht automatisch oder notwendig. Müssen in der Routing-Abhängigkeit ng-route hinzufügen, um überhaupt Routing zu haben. AngularJS ist unglaublich und kann ein großartiges SPA sein, aber es ist einfach albern zu sagen, AngularJS = SPA.
Tom Stickel
5
TypeScript ist eine gute Option für typsichere js.
Kyle JV
9
AngularJS wurde von Google erstellt. Wenn es an SEO mangelt, machen sie etwas falsch.
Worthy7