Der Model-View-Controller (MVC) ist ein architektonisches Entwurfsmuster, das hauptsächlich dazu dient, die Geschäftslogik von der Präsentation zu trennen. Grundsätzlich möchten Sie nicht, dass Ihr Backend Ihre Vorderseite berührt. Es sieht in der Regel wie folgt aus:
Die Gründe, dies zu tun, weil durch die Back-End-Trennung und die Front, Sie nicht binden Ihre Benutzer-Schnittstelle direkt auf Ihre Daten/Arbeit. Auf diese Weise können Sie neue Schnittstellen in Ihre Geschäftslogik einfügen, ohne diese Logik zu beeinflussen. Darüber hinaus verbessert es auch die Testfreundlichkeit.
Ein einfaches Beispiel dafür, wo MVC nützlich ist - nehmen wir an, Sie haben eine Anwendung, die die Finanzen Ihres Unternehmens verwaltet. Nun, wenn Sie MVC korrekt verwenden, können Sie ein Frontend haben, das auf dem Schreibtisch eines Finanziers sitzt und ihn Transaktionen abwickeln, Finanzen verwalten usw. ABER, weil die Geschäftslogik getrennt ist, können Sie auch ein Frontend bereitstellen zum Blackberry Ihres CEOs, der ihm den gegenwärtigen Status des Geschäfts sehen lässt. Da die beiden Frontends unterschiedlich sind, können sie verschiedene Dinge tun, während sie immer noch (verschiedene Arten von) Zugriff auf die Daten haben.
EDIT:
Da Sie Ihre Frage ein wenig aktualisiert, ich werde meine Antwort aktualisieren. Es gibt keine perfekte Wissenschaft zur Trennung von MVC. Es gibt jedoch einige gute Faustregeln. Wenn Sie beispielsweise über GUI-Komponenten sprechen, handelt es sich wahrscheinlich um eine Ansicht. (Sprechen Sie über Look and Feel, Benutzerfreundlichkeit usw.) Wenn Sie über Daten und die "Geschäfts" -Seite des Hauses (Datenbanken, Logik usw.) sprechen, beziehen Sie sich wahrscheinlich auf ein Modell. Und alles, was die Interaktion zwischen den beiden steuert, ist höchstwahrscheinlich ein Controller.
Darüber hinaus sollte beachtet werden, dass, während Ansichten und Modelle typischerweise "physisch" getrennt sind, ein Controller mit einer Ansicht existieren kann, wenn es sinnvoll ist.
Sie haben Recht, wenn Sie sagen, dass das Framework (oder sogar die Sprache) für MVC keine Rolle spielt. Das Muster selbst ist sprachunabhängig und beschreibt wirklich eine Möglichkeit, Ihr System zu entwerfen.
Hoffe, dass hilft!
Ich mag den Ausdruck "Sprache Agnostiker". –
danke, wäre es möglich, den Unterschied zwischen View-Modell und Controller zu erweitern? – MedicineMan