wake-up-neo.com

Was ist MVC in Ruby on Rails?

Könnte mir jemand MVC in Ruby on Rails erklären, in Laienbegriffen? Ich bin besonders daran interessiert, das Modell in MVC zu verstehen (ich kann mich nicht mit dem Modell beschäftigen).

22
Imran

MVC ist ein (zusammengesetztes) Designmuster und wurde 1979 von Trygve Reenskaug (Smalltalk) entwickelt.

True MVC wurde in erster Linie für die Verwendung in N-Tier-Systemen (Nicht-Web-Systemen) geplant und unterteilt ein System in drei separate Teile, ein Modell, eine Ansicht und einen Controller

Das Model

  • Enthält Daten für die Anwendung (häufig mit einer Datenbank verknüpft)
  • Enthält den Status der Anwendung (z. B. welche Bestellungen ein Kunde hat)
  • Enthält die gesamte Geschäftslogik
  • Benachrichtigt die Ansicht über Statusänderungen (** gilt nicht für ROR, siehe unten)
  • Keine Kenntnis der Benutzeroberflächen, daher kann es wiederverwendet werden

Die Aussicht

  • Erzeugt die Benutzeroberfläche, die dem Benutzer Daten präsentiert
  • Passiv, d. H. Führt keine Verarbeitung durch
  • Die Ansichtsarbeit ist abgeschlossen, sobald die Daten dem Benutzer angezeigt werden.
  • Viele Ansichten können aus verschiedenen Gründen auf dasselbe Modell zugreifen

Der Controller

  • Empfangen von Ereignissen aus der Außenwelt (normalerweise über Ansichten)
  • Interagiere mit dem Modell
  • Zeigt dem Benutzer die entsprechende Ansicht an

** Classic MVC ist nicht für Webanwendungen geeignet, da das Modell nicht alle Änderungen in der Ansicht beobachtend senden kann (die Ansicht ist eine Webseite). Das Model2 wurde in den 90er Jahren vom JSP-Team eingeführt, um die veränderte Infrastruktur zu überwinden. MVC-Webframeworks sind eigentlich keine MVC-Frameworks, sondern Model2 (dies gilt für Ruby on Rails).

Hier finden Sie eine Beschreibung der GUI-Muster, einschließlich MVC vom Master Martin Fowler. GUI-Architekturen

Das beste Buch, das ich bisher gefunden habe, ist Agile Webentwicklung mit Rails . Es beginnt mit der Annahme, dass keine Kenntnisse vorliegen, und ist recht umfassend.

Ich hoffe, das hilft, etwas Licht für Sie zu bringen!

46
MGrev

Ihr Modell ist die Datenstruktur, die Ihr Programm verwendet.

Die Ansicht ist der Teil, der mit dem Bildschirm oder der nächsthöheren Ebene interagiert.

Der Controller verarbeitet im Allgemeinen Daten zwischen dem Modell und der Ansicht

MVC-Strukturen sind häufig verschachtelt, sodass ein "Modell" oder eine "Ansicht" möglicherweise eine eigene MVC enthält (stellen Sie sich eine Komponente auf dem Bildschirm vor. Sie können sie nur mit einer Zeichenfolge füllen, aber hinter den Kulissen zeichnet der Code der Komponente eine eigene kleine Ansicht, hat ein eigenes kleines Modell (die Zeichenfolge, die Sie übergeben) und einen kleinen Controller, der die Daten in die Ansicht zeichnet.

In Rails sind die Rollen des Modells, der Ansicht und des Controllers durch das Framework genau definiert. In jedem Lernprogramm werden die drei Komponenten aufgeführt, während Sie durch die erstellten Dateien geführt werden.

In anderen Systemen sind diese Teile möglicherweise schwerer zu identifizieren. MVC ist auch nicht "Perfekt". Denken Sie nur daran, dass es gültige Alternativen gibt, aber es ist eine gute Möglichkeit, mit der Organisation zu beginnen.

3
Bill K

enter image description here

MVC kennzeichnet grundsätzlich Model-View-Controller. Und MVC wird von vielen Sprachen wie PHP, Perl, Python usw. verwendet. Im Allgemeinen funktioniert MVC folgendermaßen:

Die Anforderung geht zuerst an den Controller, der Controller findet eine geeignete Ansicht und interagiert mit dem Modell, das Modell interagiert mit Ihrer Datenbank und sendet die Antwort an den Controller. Anschließend gibt der Controller basierend auf der Antwort den Ausgabeparameter an, der angezeigt werden soll.

2
Anjan

Ich denke, die beste Art, MVC in den Kopf zu stecken, ist das Beispiel. Codieren Sie eine einfache Rails-App mit MVC. Es gibt viele Online-Tutorials, wie zum Beispiel das Blog-Beispiel unter "Getting Started with Rails" .

Wenn Sie anhand eines Beispiels lernen möchten, lesen Sie die Antworten auf Wo finde ich eindeutige Beispiele für MVC?

1
Pete

Das Model View Controller-Prinzip unterteilt die Arbeit einer Anwendung in drei separate, aber eng kooperierende Subsysteme.

Modell (ActiveRecord):

Es verwaltet die Beziehung zwischen den Objekten und der Datenbank und verwaltet Validierung, Zuordnung, Transaktionen und mehr.

Dieses Subsystem ist in der ActiveRecord-Bibliothek implementiert, die eine Schnittstelle und Bindung zwischen den Tabellen in einer relationalen Datenbank und dem Ruby-Programmcode zur Bearbeitung von Datenbankdatensätzen bereitstellt. Ruby-Methodennamen werden automatisch aus den Feldnamen von Datenbanktabellen generiert.

Ansicht (ActionView):

Es ist eine Darstellung von Daten in einem bestimmten Format, ausgelöst durch die Entscheidung eines Controllers, die Daten darzustellen. Sie sind skriptbasierte Template-Systeme wie JSP, ASP, PHP und lassen sich sehr einfach in die AJAX -Technologie integrieren.

Dieses Subsystem ist in der ActionView-Bibliothek implementiert, bei der es sich um ein auf Embedded Ruby (ERb) basierendes System zum Definieren von Präsentationsvorlagen für die Datenpräsentation handelt. Jede Webverbindung zu einer Rails-Anwendung führt zur Anzeige einer Ansicht.

Controller (ActionController):

Die Funktion in der Anwendung, die den Datenverkehr leitet, einerseits die Modelle nach bestimmten Daten abfragt und andererseits diese Daten (Suchen, Sortieren, Versenden von Nachrichten) in einer Form organisiert, die den Anforderungen einer bestimmten Ansicht entspricht.

Dieses Subsystem ist in ActionController implementiert, einem Datenbroker zwischen ActiveRecord (der Datenbankschnittstelle) und ActionView (der Präsentations-Engine).

Überprüfen Sie die folgenden Links, um ein klares Verständnis von mvc in Rails zu erhalten:

http://www.bogotobogo.com/RubyOnRails/RubyOnRails_Model_View_Controller_MVC.php

https://betterexplained.com/articles/intermediate-Rails-understanding-models-views-and-controllers/

1
vinoth

MVC ist nicht nur für Ruby on Rails gedacht. Es wurde tatsächlich eine Weile erstellt, bevor Ruby on Rails jemals auf den Markt kam. Dies ist hauptsächlich eine Art, Ihren Code so zu organisieren, dass Sie einen Code haben, der für Ihre Modelle verantwortlich ist (die Klassenversion einer Datenbanktabelle), einen Code, der für Ihre Ansichten verantwortlich ist (was dem Benutzer visuell angezeigt wird) und einen Code, der verantwortlich ist für Ihre Controller (was bindet die Ansichten an die Modelle und führt den Großteil Ihrer Logik.

Das ist die nicht-Framework-spezifische Beschreibung. Jedes Framework, das MVC verwendet, hat eine andere Implementierungsmethode. Für Ruby on Rails stellt jedes Modell eine Datenbanktabelle als Klasse dar, die direkt im Code mit anderen Objekten kommunizieren kann, ohne dass SQL geschrieben werden muss. Alle SQL-Aufgaben werden im Hintergrund erledigt, und Sie müssen sich nur vorstellen, dass es sich um eine normale Klasse handelt (beinahe, es ist noch nicht nahtlos). Die Ansicht besteht hauptsächlich aus HTML und gibt an, was an den Browser gesendet wird. Der Controller ist nur der Code, der die Modelle und Ansichten miteinander kommuniziert.

Alles in allem ist MVC nicht nur Ruby on Rails-spezifisch ... das ist einfach das beliebteste.

1
Adam

Hier ist ein kurzer Überblick über die Funktionsweise des MVC-Musters:

Controller:

  1. Hört auf eine Art Interaktions-/Ereignisstrom.
  2. Der Controller kann dem Modell diese Art von Interaktion/Ereignis senden.
  3. Der Controller kann auch mit der Ansicht kommunizieren.

Modell:

  1. Die Modelle werden die Interaktion/das Ereignis von der Steuerung mithören.
  2. Ist eine Abstraktion einer Datenquelle.
  3. Behandelt Datenlogik und -manipulation.
  4. Nachdem es mit der Logik fertig ist, sendet es an den Controller, der dann mit der Ansicht kommuniziert.

Ansicht:

  1. View kann mit dem Controller kommunizieren.
  2. Kann Daten vom Modell visuell in den Browser rendern.
  3. Der Controller weist View an, etwas mit dem Modell zu tun.

Zu beachten ist, dass Modelle nicht direkt mit Ansichten kommunizieren können und umgekehrt. Nur der Controller kann mit der Ansicht und dem Modell kommunizieren, sodass der Controller als Delegator für die Interaktion/das Ereignis fungiert, die von der Benutzerinteraktion im Browser abgerufen werden.

überprüfen Sie diesen Link für ein klareres Verständnis

ein weiterer Link, um klar zu werden

0
Tony Tai Nguyen

Ruby on Rails implementiert das MVC-Entwurfsmuster nicht. Ruby on Rails verfügt über Ordner mit den Namen Controller, Modelle und Ansichten. Der Ansichtenordner enthält HTML-Dateien. Der Controller- und Modellordner enthält Ruby-Dateien. Die Controller ordnen einer URL zu, und eine Methode im Controller wird ausgeführt, wenn diese URL angefordert wird. Die zugehörige Ansicht (HTML-Datei) wird geladen und das Modell (Datenstruktur) wird zum Auffüllen der Ansicht verwendet. Das ist das Ausmaß seiner Ähnlichkeit mit dem MVC-Entwurfsmuster. Es ist eine Schande, dass die Leute sagen, es sei MVC, weil es zu Verwirrung und Missverständnissen im MVC-Entwurfsmuster geführt hat.

In Rails ist das Modell eine Datenstruktur.

0
Joey Guerra