2009-08-24 7 views
2

Ich bin nicht sicher, ob diese Frage nicht sinnvoll ist oder nicht, bitte sagen Sie mir, wenn es so ist. Ich frage mich, ob ich meine Modelle wie eine für jede Tabelle in meiner Datenbank erstelle, oder machst du eine pro Controller? Gibt es etwas, das mir hier fehlt?Gibt es ein Standard-Controller-Verhältnis, wenn Sie versuchen, guten ASP.NET MVC zu implementieren?

Von dem, was ich gelesen habe, soll das Modell eine Darstellung der realen Geschäftsobjekte sein, also würde ich es nur ein großes Modell machen oder sie basierend auf Sachen in der App teilen wollen? basierend auf echter Benutzer/Client-Wahrnehmung der Daten?

Vielen Dank für Ihren Rat.

Antwort

2

Mit Controllern, die Modelle gemeinsam verwenden, ist nichts falsch. Aber es ist nicht sinnvoll, jeden Controller mit demselben Modell zu bedienen.

Modelle und Controller sind wirklich nicht verwandt, noch sollten sie es sein. Modelle haben auch nicht direkt damit zu tun, wie Daten in Ihrer Anwendung gespeichert werden.

Modelle verkapseln Daten. Ihr Design sollte von den Daten bestimmt werden, die sie einkapseln. Die Anforderungen des Systems geben vor, welche Modelle Sie benötigen und welche Daten sie enthalten müssen.

Versuchen Sie nicht, es zu überdenken. Bestimmen Sie für eine bestimmte Anfrage, was Sie in Ihrer Ansicht anzeigen müssen und wie sie angezeigt wird. Bestimmen Sie, wie ein geeignetes Modell für dieses Szenario aussehen würde. Wenn es bereits existiert, benutze es. Wenn nicht, erstellen Sie ein neues Modell. Speichern Sie das Overengineering später, wenn Sie wissen, was Ihre Bedürfnisse sind, und können Sie Gemeinsamkeiten zwischen Modellen finden.

Modelle können auch andere Modelle enthalten, das ist in Ordnung. Stellen Sie sich ein Modell für einen Verkaufsbericht vor. Sie hätten ein Modell für den Bericht, das nicht nur einen Berichtsnamen, eine Summe, sondern auch eine Sammlung anderer Modelle enthalten würde, aus denen die Werbebuchungen des Berichts bestehen.

1

Es hängt davon ab, was Sie mit "Modell" meinen. Wenn Sie unter Modell den Geschäftsregel-Layer Ihrer Anwendung verstehen, gibt es keine Beziehung in Bezug auf die Anzahl. Ein Modell dieses Typs wird für beliebig viele Ansichten verwendet, die Sie erstellen müssen.

Persönlich würde ich jedoch keine Ansicht an irgendein Modell binden, sondern eine Zwischenschicht namens ViewModel erstellen, die im Wesentlichen die Daten aus Ihrem Modell an eine bestimmte Ansicht anpasst. In diesem Fall ist die Beziehung eins zu eins. Dies ist im Wesentlichen, wie Presenter-Muster funktionieren. Jede Ansicht wird stark in ihr eigenes ViewModel eingetippt, das von der Model-Ebene aufgefüllt wird.

Modelle müssen nicht notwendigerweise auch eine wörtliche Übereinstimmung mit der Datenbank haben. Wie Sie Ihre Daten speichern, unterscheidet sich von Ihrem Modell, das diese Daten verwendet.