2009-04-10 11 views
2

Ich habe eine Menge Arbeit über MVC im Web geleistet, und wir lernen darüber in meiner OOP-Klasse. Ich sehe einige Unterschiede, und ich kann nicht sagen, ob das, weil die Web-Version des MVC-Musters anders ist als das traditionelle, oder ob ich es falsch verstanden habe.Ist die Web-Version von MVC anders als herkömmliche MVC?

Von meinem Verständnis, das Modell (Ihre Flat-Dateien, RDBMS, etc) ist ein generisches Daten-Gehäuse-Objekt. Die Ansicht (Browser, HTML usw.) ist die Interaktion des Benutzers, und der Controller vermittelt zwischen den Aktionen des Benutzers und den Daten. Der Controller ist der domänenspezifischste Teil und verwaltet die Ansichten, teilt dem Modell mit, was es benötigt und teilt den Ansichten mit, was angezeigt werden soll.

In der Klasse haben wir die Ansichten, die dem entsprechen, was ich gerade beschrieben habe, das Modell enthält eine Liste der Ansichten, so dass es sie aktualisieren kann, wenn sich die Daten ändern, und der Controller die Aktionen des Benutzers einfach auf Aufrufe des Modells abbildet zu bestimmten Objekten (die selbst das Modell auffordern können, die Ansichten zu aktualisieren). Am Ende kommt es vor, dass die Geschäftslogik größtenteils im Modell liegt und sehr stark an die Simulation oder Anwendung gebunden ist, während der Controller auf ein Mapping-Tool zwischen Befehlen und Methoden reduziert wird.

Was sind Ihre Gedanken dazu?

Antwort

3

In einer Nicht-Web-Schnittstelle verarbeitet der Controller die Eingaben von Dingen wie Tastatur und Maus und wählt aus, welche Ansichten gerendert werden sollen und welche Änderungen im Modell basierend auf diesen Eingaben vorgenommen werden. Die Ansicht und das Modell können enger verwandt sein, da die Ansicht Rückrufe direkt mit den Modelleinheiten registrieren kann, um über Änderungen benachrichtigt zu werden, und somit basierend auf Änderungen am Modell direkt aktualisiert wird, anstatt von der Steuerung aktualisiert zu werden.

In der Web-Welt sind Ansichten notwendigerweise mehr vom Modell entkoppelt. Es muss über die Controller-Aktionen agieren, da es keinen direkten Zugriff auf das Modell hat (nachdem es gerendert und an den Browser übergeben wurde). Der Controller spielt in dieser Umgebung eine größere Rolle, obwohl die einzige "Eingabe", die er zu erledigen hat, Browseranforderungen sind. In gewissem Sinne wird die Kopplung, die früher mit der Ansicht in einer MVC außerhalb des Netzes stattfand, an die für sie zuständige Steuerung übertragen. Da auf das Modell keine Rückmeldungen eingehen (vergessen wir die "Push" -Technologien vorerst), wird mehr Geschäftscode in den Controller integriert, da es der natürliche Ort ist, Geschäftsprozesse zu modellieren, wenngleich vielleicht nicht validiert.

+0

Warum diese nette Antwort nicht viel Upvotes bekommen? Thx! –

0

In meinem Verständnis Controller im Web MVC-Muster sind nur Brücken zwischen Modellen und Ansichten, sie greifen einfach die Daten aus dem Modell und übergeben sie an die Ansicht. Das Model und die View und unabhängig und niemals miteinander reden.

+0

Das habe ich mir gedacht. Aber wenn man sich etwas wie http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/images/app-archa2.gif ansieht, sagt es, dass das Model die Ansichten von Änderungen benachrichtigt, was für mich keinen Sinn ergibt. –

+0

Es gibt eine interessante Unterscheidung zwischen MVC und "Drei-Ebenen-Architektur" Siehe diese Wikipedia-Link: http://en.wikipedia.org/wiki/Multitier_Architektur#Comparison_with_the_MVC_Architektur –

Verwandte Themen