1. Einleitung
Das PDF dieses Dokuments ist |HIER| verfügbar.
Die Beispiele in diesem Dokument sind |HIER| verfügbar.
Hier möchten wir anhand von Beispielen die wichtigsten Konzepte von ASP.NET MVC vorstellen, einem .NET-Webframework, das eine Grundlage für die Entwicklung von Webanwendungen nach dem MVC-Muster (Model–View–Controller) bietet.
Zum Verständnis der Beispiele in diesem Dokument sind nur wenige Vorkenntnisse erforderlich. Es sind lediglich Grundkenntnisse der Sprache C# notwendig. Diese finden Sie im Dokument „Einführung in die Sprache C#“ unter der URL [https://stahe.github.io/de-csharp-mai-2008/]. Es wird eine Fallstudie bereitgestellt, um das erworbene Wissen über ASP.NET MVC in die Praxis umzusetzen. Dabei kommt das Entity Framework ORM (Object-Relational Mapper) zum Einsatz. Dieses ORM wird im Dokument „Einführung in Entity Framework 5 Code First“ vorgestellt, das unter [https://stahe.github.io/de-ef5cf-oct-2012/] verfügbar ist.
Die verschiedenen Beispiele in diesem Dokument sind unter der URL [https://stahe.github.io/de-aspnetmvc-nov-2013/] als ZIP-Datei zum Herunterladen verfügbar.
Dieses Dokument ist in vielerlei Hinsicht unvollständig. Um mehr über ASP.NET MVC zu erfahren, können Sie die folgenden Referenzen nutzen:
- [ref1]: das Buch „Pro ASP.NET MVC 4“ von Adam Freeman, erschienen bei Apress. Es ist ein ausgezeichnetes Buch. Wäre es kostenlos und auf Französisch online verfügbar, wäre dieses Dokument überflüssig. Ich empfehle jedem, der die Möglichkeit dazu hat, ASP.NET MVC mithilfe dieses Buches zu erlernen. Der Quellcode für die Beispiele des Buches ist kostenlos unter [http://www.apress.com/9781430242369] verfügbar;
- [ref2]: der Website des Frameworks [http://www.asp.net/mvc]. Dort finden Sie alle Materialien, die Sie zum Selbststudium benötigen. Eine französische Version ist unter der URL [http://dotnet.developpez.com/mvc/] verfügbar;
- die [developpez.com]-Website zum Thema ASP.NET [http://dotnet.developpez.com/aspnet/ ].
Dieses Dokument wurde so verfasst, dass es auch ohne Computer gelesen werden kann. Daher enthält es zahlreiche Screenshots.
1.1. Die Rolle von ASP.NET MVC in einer Webanwendung
Betrachten wir zunächst einmal die Rolle von ASP.NET MVC bei der Entwicklung einer Webanwendung. Meistens basiert diese auf einer mehrschichtigen Architektur, wie beispielsweise der folgenden:
![]() |
- Die [Web]-Schicht ist die Schicht, die mit dem Benutzer der Webanwendung in Kontakt steht. Der Benutzer interagiert mit der Webanwendung über Webseiten, die von einem Browser angezeigt werden. In dieser Schicht befindet sich ASP.NET MVC, und zwar ausschließlich in dieser Schicht;
- Die [Business]-Schicht implementiert die Geschäftslogik der Anwendung, wie beispielsweise die Berechnung eines Gehalts oder einer Rechnung. Diese Schicht nutzt Daten vom Benutzer über die [Web]-Schicht und aus dem DBMS über die [DAO]-Schicht;
- Die [DAO]-Schicht (Data Access Objects), die [ORM]-Schicht (Object Relational Mapper) und der ADO.NET-Konnektor verwalten den Zugriff auf Daten im DBMS. Die [ORM]-Schicht fungiert als Brücke zwischen den von der [DAO]-Schicht verwalteten Objekten und den Zeilen und Spalten von Tabellen in einer relationalen Datenbank. In der .NET-Welt werden üblicherweise zwei ORMs verwendet: NHibernate (http://sourceforge.net/projects/nhibernate/) und Entity Framework (http://msdn.microsoft.com/en-us/data/ef.aspx);
- die Integration dieser Schichten kann mithilfe eines Dependency-Injection-Containers wie Spring (http://www.springframework.net/) erreicht werden;
Die meisten der unten aufgeführten Beispiele verwenden nur eine einzige Schicht, die [Web]-Schicht:
![]() |
Dieses Dokument schließt jedoch mit der Erstellung einer mehrschichtigen Webanwendung ab:
![]() |
1.2. Das ASP.NET MVC-Entwicklungsmodell
ASP.NET MVC implementiert das MVC-Architekturmuster (Model–View–Controller) wie folgt:
![]() |
Die Verarbeitung einer Client-Anfrage verläuft wie folgt:
- Anfrage – die angeforderten URLs haben die Form http://machine:port/contexte/Controlleur/Action/param1/param2/....?p1=v1&p2=v2&... Der [Front Controller] verwendet eine Konfigurationsdatei, um die Anfrage an den richtigen Controller und die richtige Aktion innerhalb dieses Controllers weiterzuleiten. Dazu nutzt er den [Controller/Action]-Pfad aus der URL. Der Rest der URL [/param1/param2/...] besteht aus optionalen Parametern, die an die Aktion übergeben werden. Das „C“ in MVC bezieht sich hier auf die Kette [Front Controller, Controller, Action]. Wenn der [Controller/Action]-Pfad nicht zu einem vorhandenen Controller oder einer vorhandenen Aktion führt, antwortet der Webserver, dass die angeforderte URL nicht gefunden wurde.
- Verarbeitung
- Die ausgewählte Aktion kann die Parameter verwenden, die der [Front Controller] an sie übergeben hat. Diese können aus verschiedenen Quellen stammen:
- dem Pfad [/param1/param2/...] der URL,
- die [p1=v1&p2=v2]-Parameter der URL,
- die vom Browser mit seiner Anfrage gesendeten Parameter;
- Bei der Verarbeitung der Benutzeranfrage benötigt die Aktion möglicherweise die [Business]-Schicht [2b]. Sobald die Anfrage des Clients verarbeitet wurde, kann dies verschiedene Antworten auslösen. Ein klassisches Beispiel ist:
- eine Fehlerseite, wenn die Anfrage nicht korrekt verarbeitet werden konnte
- ansonsten eine Bestätigungsseite
- die Aktion weist an, eine bestimmte Ansicht anzuzeigen [3]. Diese Ansicht zeigt Daten an, die als View-Modell bezeichnet werden. Dies ist das M in MVC. Die Aktion erstellt dieses M-Modell [2c] und weist an, eine V-Ansicht anzuzeigen [3];
- Antwort – die ausgewählte Ansicht V verwendet das von der Aktion erstellte Modell M, um die dynamischen Teile der HTML-Antwort zu initialisieren, die sie an den Client senden muss, und sendet dann diese Antwort.
Lassen Sie uns nun die Beziehung zwischen der MVC-Webarchitektur und der Schichtenarchitektur klären. Je nachdem, wie wir das Modell definieren, können diese beiden Konzepte miteinander in Verbindung stehen oder auch nicht. Betrachten wir eine einschichtige ASP.NET-MVC-Webanwendung:
![]() |
Wenn wir die [Web]-Schicht mit ASP.NET MVC implementieren, erhalten wir zwar eine MVC-Webarchitektur, jedoch keine mehrschichtige Architektur. Hier übernimmt die [Web]-Schicht alles: Darstellung, Geschäftslogik und Datenzugriff. Es sind die Aktionen, die diese Arbeit ausführen.
Betrachten wir nun eine mehrschichtige Webarchitektur:
![]() |
Die [Web]-Schicht kann ohne Framework und ohne Befolgung des MVC-Modells implementiert werden. Wir haben dann eine mehrschichtige Architektur, aber die Web-Schicht implementiert das MVC-Modell nicht.
Somit kann die oberste [Web]-Schicht mit ASP.NET MVC implementiert werden, was zu einer mehrschichtigen Architektur mit einer [Web]-Schicht im MVC-Stil führt. Sobald dies geschehen ist, können wir diese ASP.NET MVC-Schicht durch eine klassische ASP.NET-Schicht (WebForms) ersetzen, während der Rest (Geschäftslogik, DAO, ORM) unverändert bleibt. Wir verfügen dann über eine Schichtenarchitektur mit einer [Web]-Schicht, die nicht mehr MVC-basiert ist.
In MVC haben wir gesagt, dass das M-Modell das der V-Ansicht sei, d. h. die Menge der von der V-Ansicht angezeigten Daten. Es gibt eine weitere Definition des M-Modells in MVC:
![]() |
Viele Autoren sind der Ansicht, dass das, was rechts von der [Web]-Schicht liegt, das M-Modell von MVC bildet. Um Mehrdeutigkeiten zu vermeiden, können wir uns auf Folgendes beziehen:
- das Domänenmodell, wenn wir uns auf alles rechts von der [Web]-Schicht beziehen
- das View-Modell, wenn wir uns auf die von einer Ansicht V angezeigten Daten beziehen
Im Folgenden bezieht sich der Begriff „M-Modell“ ausschließlich auf das Modell einer V-Ansicht.
1.3. Verwendete Tools
Im weiteren Verlauf verwenden wir (Stand: September 2013) die Express-Versionen von Visual Studio 2012:
- [http://www.microsoft.com/visualstudio/fra/products/visual-studio-express-for-windows-desktop ] für Desktop-Anwendungen;
- [http://www.microsoft.com/visualstudio/fra/products/visual-studio-express-for-Web ] für Webanwendungen.
Um die neuesten Versionen dieser Produkte zu installieren, können Sie den [Web Platform Installer] (http://www.microsoft.com/Web/downloads/platform.aspx) von Microsoft verwenden.
Verwenden Sie außerdem den Chrome-Browser von Google (http://www.google.fr/intl/fr/chrome/browser/). Installieren Sie die Erweiterung [ Advanced Rest Client] ( ). So geht’s:
- Rufen Sie den [Google Web Store] (https://chrome.google.com/webstore) mit dem Chrome-Browser auf;
- suchen Sie nach der App [Advanced Rest Client]:

- Die App steht dann zum Download bereit:

- Um sie zu erhalten, musst du ein Google-Konto erstellen. Der [Google Web Store] fordert dich dann zur Bestätigung auf [1]:
![]() |
- Unter [2] ist die hinzugefügte Erweiterung unter der Option [Anwendungen] [3] verfügbar. Diese Option erscheint auf jedem neuen Tab, den du im Browser erstellst (STRG-T).
1.4. Beispiele
Die meisten Lernbeispiele beschränken sich ausschließlich auf die Webebene:
![]() |
Sobald dieses Tutorial abgeschlossen ist, werden wir eine mehrschichtige Webanwendung vorstellen:
![]() |









