it-swarm-eu.dev

Sollte ich sowohl AngularJS als auch ASP.NET MVC verwenden?

Ich habe angefangen, AngularJS und ASP.NET MVC zu lernen, bin mir aber nicht sicher, warum ich beide zusammen im selben Projekt verwenden soll?

Sind das nicht beide MVC-Frameworks? Sollte ich beide in derselben Anwendung verwenden? Ist es nicht der eine oder andere?

59
Natalie

Wenn Sie eine Single Page Application (SPA) erstellen, benötigen Sie wahrscheinlich nicht die "MVC" in ASP.NET MVC . Ansichten, insbesondere dynamische Ansichten, werden wahrscheinlich clientseitig bereitgestellt/bearbeitet. Angular erledigt das ganz gut.

Aber vielleicht möchten Sie kein 100% SPA. Dann was? Stellen Sie sich stattdessen 10 Seiten vor, aber 10 Seiten, die sehr dynamisch sind. Nachdem sich ein Benutzer angemeldet hat, befindet sich in der rechten Ecke ein kleines Benutzerabzeichen. Das ist nicht dynamisch. Es zeigt nur ein paar raffinierte Dinge wie die "Punktzahl" des Benutzers und sein neuestes Selfie. Sie speichern die raffinierten Dinge im Cache, damit sie leicht abgerufen werden können. Jetzt können Sie zwei Wege gehen. Wenn Sie ein clientseitiger MVC-Purist sind, rufen Sie die Ausweisdaten einfach ab, nachdem die anfängliche HTML-Nutzlast geliefert wurde, genau wie alle anderen Daten. Aber vielleicht bist du kein Purist. Vielleicht bist du das Gegenteil eines Puristen. Vielleicht bist du ein Impurist. Anstatt den anfänglichen HTML-Code bereitzustellen, JavaScript bereitzustellen, das auf Ihren Server zurückgesendet wird, über JavaScript zu posten, um Ausweisdaten abzurufen, und diese Daten dann letztendlich über clientseitige MVC in einer Ansicht zusammenzuführen, entscheiden Sie sich einfach, die Daten zusammenzuführen bereits in Ihrem Cache in eine Ansicht auf dem Server und liefern dann das als Ihr anfängliches HTML. Nachdem Ihr erstes HTML geliefert wurde, fahren Sie mit Ihren typischen clientseitigen MVC-Possen fort.

Also ... MVC auf dem Server und auf dem Client ist nur eine bequeme Möglichkeit, Code zu organisieren, der 2001 ein Chaos war. Sie müssen nicht den einen oder anderen auswählen. Sie können beide auswählen. Zugegeben, je mehr Sie nach der Bereitstellung des ersten HTML-Codes tun, desto weniger benötigen Sie serverseitige MVC. Trotzdem ist es für Sie da, wenn Sie es brauchen. Ich habe beispielsweise an einer ASP.NET MVC/Angular-Anwendung gearbeitet, in der externe Angular-Vorlagen möglicherweise tatsächlich .NET MVC ActionResult sind. Das bedeutet, dass Ihr Server-Controller Daten in seiner Ansicht zusammenführen und an liefern kann Angular als Vorlage, und Angulars Controller könnte dann seine Daten in der Ansicht zusammenführen. Ich sage nicht, dass dies eine gute Idee ist, aber es zeigt nur, dass eine Form von MVC nicht funktioniert der andere veraltet.

Unabhängig davon, wie Sie Angular bereitstellen, benötigen Sie außerdem eine Möglichkeit, diesen anfänglichen HTML-Code, die Vorlagen und vor allem die Daten bereitzustellen. Warum nicht eine Plattform verwenden, die es einfach macht? Es gibt viele, aber .NET MVC ist kein Problem. Wie ich bereits sagte, können Sie die anfänglichen HTML- und externen Angular - Vorlagen zum Ergebnis einer MVC-Aktion machen, aber noch besser, Sie können .NET'S Web API verwenden, um zu liefern Die Daten. Web API ist so lecker wie Aprikosenkompott.

Zusammenfassend: MVC ist nur ein Muster. Möglicherweise möchten Sie dieses Muster auf einer beliebigen Anzahl von physischen Ebenen verwenden. Es kann nicht aufgebraucht werden. Verwenden Sie es frei, wenn es Sinn macht. Außerdem Angular ist möglicherweise sowieso nicht MVC (so sagen Leute, die sich für diese Dinge interessieren), also zögern Sie nicht, es mit einem Tool zu verwenden, dessen Name "MVC" enthält. Zur Hölle, auch wenn es MVC ist, mischen und anpassen wie gewünscht.

75
Scant Roger

ASP.NET MVC ist ein serverseitiges Framework. Es ist egal, welche JavaScript-Bibliotheken Sie verwenden. AngularJS ist eine clientseitige Bibliothek, bei der es egal ist, welche serverseitige Technologie die Website antreibt - es kann sich um Python, ASP.NET MVC oder sogar um die einfachen alten statischen HTML-Dateien handeln, die direkt auf der Festplatte gespeichert sind.

ASP.NET MVC und AngularJS sind beide kompatibel, und es gibt viele Projekte, die sie zusammen verwenden.

Benötigen Sie brauchen, um beide zu verwenden? Nicht wirklich. Es hängt ganz von den Bedürfnissen Ihres Projekts ab.

  • Wenn Ihre Website dynamisch ist, müssen Sie serverseitiges Scripting verwenden. Sie könnten ASP.NET verwenden, und die Tatsache, dass Sie AngularJS verwenden, wird Ihren serverseitigen Code nicht mehr MVC machen. Wenn Sie Ihre serverseitige Anwendung als MVC strukturieren möchten, wählen Sie lieber ASP.NET MVC.

  • Ebenso hat die Tatsache, dass Sie ASP.NET MVC verwenden, keinen Einfluss auf die Struktur Ihres clientseitigen Codes. Sie können Ihr gesamtes JavaScript in eine einzige Datei einfügen, ohne über die Struktur nachdenken zu müssen, und damit zufrieden sein (bis das Projekt zu wachsen beginnt). Auch hier bietet sich AngularJS als Möglichkeit an, Ihre Anwendung clientseitig zu strukturieren.


Randnotiz: Sie haben Ihre Frage mit ASP.NET MVC 3 markiert. Sofern es sich nicht um ein Legacy-Projekt handelt, das Sie pflegen müssen, oder wenn Sie beim Hosten der Anwendung auf Legacy-Servern, die in den letzten vier Jahren nicht aktualisiert wurden, bestimmte Einschränkungen haben, können Sie ASP verwenden .NET MVC 4 oder 5 stattdessen.

17

Wenn Sie Visual Studio verwenden, gibt es eine neue MVC-Websitevorlage für eine "Einzelseiten-App", die angular und MVC Web Api-Controller) enthält.

Dies funktioniert gut, da Ihr serverseitiger MVC-Code JSON-Endpunkte für den aufzurufenden clientseitigen Code angular) bereitstellt.

Darüber hinaus können Sie die MVC-Controller verwenden, um die grundlegende HTML-Ansicht oder Ansichten für Ihre Einzelseiten-App bereitzustellen. Dies gibt Ihnen die Möglichkeit der serverseitigen Generierung, Autorisierung, Weiterleitung, Fehlerbehandlung usw.

Oft möchten Sie eine kleine Menge von Server-generiertem HTML/Javascript sogar auf einer App mit nur einer Seite, z. B. Endpunkt-URLs für verschiedene Umgebungen, verschiedene Sprachen oder sogar die seltsame Authentifizierungsseite, die auf der Serverseite möglicherweise einfacher ist.

9
Ewan

Verwenden Sie 3 Jahre später die ASP.NET-Web-API, um Ihre Daten bereitzustellen, und Angular (js oder neuer)), um Ihre App auf der Clientseite zu strukturieren. Wenn Sie eine statische Site erstellen, dann einfach Verwenden Sie ASP.NET MVC.

2
user441521