Was ist die Aufschlüsselung aller Schichten, die für eine Asp.Net-Mvc-Anwendung nach den besten Programmierpraktiken benötigt / empfohlen werden?

8

Je mehr ich in Asp.Net MVC lese, desto mehr Ebenen und Komponenten werden benötigt, um meine Anwendung allen Standards und Programmierpraktiken zu folgen.

Es wird ein bisschen verwirrend, weil einige der neuen Ebenen nicht so einfach hineinpassen wie die anderen, die ich gelernt habe. Also wollte ich nur, dass jemand alle erforderlichen / empfohlenen Schichten für eine Asp.Net MVC-Anwendung durchgeht - welchen Zweck sie erfüllen und wie sie mit den anderen Schichten interagieren.

Hier sind ein paar der Layer, die ich gefunden habe und wie sie sich verbinden: (Einige von ihnen können falsch sein)

%Vor%

Könnte jemand über diejenigen gehen, die ich vermisse, wie sie alle miteinander verbunden sind und was jeder ihrer Ziele sind?

Danke, Danke Matt

    
Matt 13.07.2009, 20:57
quelle

2 Antworten

2

Gute Frage, ich denke, Sie haben alle Schichten abgedeckt, die ich gesehen habe: Modale Binde- und Serviceschicht sind optional.

Vielleicht können Sie eine weitere Fehlerbehandlungsschicht hinzufügen, z. B. elmah .

  • Ansicht / Benutzeroberfläche - & gt; Sie setzen Ihren HTML-Markup / Javascript-Code.
  • Modellbinder - & gt; Sie führen die Magie aus, um Ihre Eingabe an die Aktionsparameter zu binden. Normalerweise verwenden Sie den Standardordner, sodass Sie sich keine Sorgen machen müssen. Sie können dies jedoch mit Ihrem eigenen Binder überschreiben und die Validierung in diesem Layer durchführen. Hier ist ein gutes Beispiel zu diesem Thema.
  • Controller - & gt; Genug Dokumentation online.
  • Dienstschicht - & gt; Viele Leute führen hier Validierungs- und andere Geschäftslogik-Verarbeitungen durch, bevor sie sie an das Repository senden. Asp.net mvc contact manger Beispiel hat hier ein gutes Beispiel. Dies ist auch die Ebene, die tatsächlich mit Ihrem Modal arbeitet.
  • Repository - & gt; Einfacher Lese- / Schreibvorgang.
  • Entitäts-Framework / LINQ to SQL - & gt; DB - Eigentlich schreibe ich in die Datenbank. Nhibernate ist ein weiterer guter Kandidat hier.
J.W. 13.07.2009, 21:06
quelle
0

Erstens denke ich, dass Software und Muster dazu neigen, Dinge zu komplizieren. Wie der ASP-Name impliziert, ist die Grundidee des Frameworks Model-View-Controller (MVC). Sie könnten eine Menge Dinge zwischen diesen Komponenten einfügen, einschließlich DBs, Services, APIs usw. Das Hauptkonzept des Model-View-Controller-Musters ist jedoch ziemlich einfach: Trennen Sie diese Funktionalitäten in Module, so dass das Projekt sein könnte leichter zu halten.

MVC könnte auf JEDE Programmierung oder Skripting angewendet werden. Sogar für ein Shell-Skript könnte MVC hilfreich sein. Hier sind einige Beispiele für jedes:

  • Ansicht - So interagiert der Benutzer. Es könnte eine Webseite und Windows Form oder eine Befehlszeilenschnittstelle sein.
  • Controller - Die Gehirne des Programms, es sollte sich alles bewusst sein, sollte aber ziemlich einfach sein. Es erhält grundsätzlich Nachrichten oder Ereignisse aus der Ansicht und / oder dem Modell und entscheidet, was zu tun ist. Gute Controller sind im Grunde ein Dispatcher von Ereignissen. Abhängig von Ereignissen ruft er Ansichts- oder Modellmethoden auf. In ASP MVC stellt der Controller die ActionResults für die View bereit und interagiert mit dem Model.
  • Modell - Dies ist im Grunde, wo die Daten sind. Dies könnte eine Datenbank, ein Dateisystem, eine Web-Sitzung oder ein Speicher sein.

Jetzt der gute Teil. Dem Controller ist es egal, wie die View die Interaktion mit dem Benutzer verwaltet. Es könnte eine Befehlszeilenschnittstelle oder ein Webformular sein. Der Controller weiß nicht, wie die Daten gespeichert werden. Es spielt keine Rolle, ob es sich um eine Datenbank oder eine Datei handelt. Es fordert nur Daten an und reicht sie an die Ansicht weiter. Es ist nicht seine Aufgabe zu wissen, wie die Ansicht die Eingaben erhält, oder das Modell die Daten.

Dann die Frage: Warum zur Hölle wollen wir die Dinge mit diesem Muster übermäßig komplizieren? Stellen Sie sich vor, Sie haben eine MVC-Anwendung mit einer MySQL-Datenbank und wissen, dass Sie SQL Server verwenden möchten. Welches Modul sollten Sie ändern? Offensichtlich ist das Modell betroffen. Der Controller und die Ansicht sollten keine größeren Auswirkungen haben. Stellen Sie sich nun vor, dass Sie eine andere MVC-Anwendung mit Windows Forms verwenden und diese nun in Web Forms ändern möchten. Nun, im Grunde ist die Ansicht diejenige, die betroffen sein wird (und einige Teile des Controllers), aber Ihr Modell sollte dasselbe sein.

Zusammenfassend ist MVC ein großartiges Muster, und es sollte mehr verwendet werden. Ich denke jedoch, dass es einige Projekte gibt, die wegen ihrer Einfachheit nicht für MVC geeignet sind. Es wird sein, als würde man einen Laser bauen, um Fliegen zu töten. Natürlich werden Sie sie töten, aber die Anstrengung ist nicht in allen Fällen würdig.

    
Freddy 14.07.2009 00:11
quelle

Tags und Links