Ich habe hier ein paar Fragen und verschiedene Artikel über MVC durchgelesen und kann sehen, wie es sogar auf ereignisintensive GUI Anwendungen wie eine Paint App angewendet werden kann.
Kann jemand eine Situation anführen, in der MVC eine schlechte Sache ist und seine Verwendung schlecht beraten ist?
EDIT: Ich spreche hier speziell über GUI-Anwendungen!
Ich habe versucht MVC in meinem Netzwerk-Kernel-Treiber. Der Patch wurde abgelehnt.
Ich denke, Sie sehen es irgendwie rückwärts an. Der Punkt ist nicht zu sehen, wo Sie ein Muster wie MVC anwenden können, der Punkt ist, die Muster zu lernen und zu erkennen, wenn das Problem, das Sie versuchen zu lösen, natürlich durch das Anwenden des Musters gelöst werden kann. Also, wenn Ihr Problem Raum natürlich in Modell, View und Controller getrennt werden kann, dann ist es ein guter Kandidat für MVC. Wenn Sie nicht leicht erkennen können, welche Teile Ihres Designs in die drei Kategorien fallen, ist es möglicherweise nicht das richtige Muster.
MVC ist für Web-Anwendungen sinnvoll. In Webanwendungen verarbeiten Sie einige Daten (auf SA: Fragen schreiben, Kommentare hinzufügen, Benutzerinformationen ändern), Sie haben Status (eingeloggter Benutzer), Sie haben nicht viele verschiedene Seiten, aber viele verschiedene Inhalte, in die Sie passen diese Seiten. Eine Fragenseite vs. eine Million Fragen.
Zum Erstellen von CMS ist MVC beispielsweise nutzlos. Sie haben keine Modelle, keine Controller, nur ein paar Seiten Text mit Dekorationen und Menüs. Das Problem besteht darin, dass keine Daten mehr verarbeitet werden. Das Problem besteht nun darin, den Textinhalt ordnungsgemäß zu liefern.
Tho, CMS Admin würde ganz oben auf MVC aufbauen, es wäre nur ein Benutzer-Teil, der das nicht tun würde.
Für Webdienste sollten Sie besser REST verwenden, was meiner Meinung nach ein eindeutiges Paradigma ist.
WebDAV-Anwendung würde auch nicht viel von MVC profitieren.
Der Nachteil von Ruby für Web-Programmierung ist, dass Rails besser zum Erstellen von Webanwendungen geeignet ist. Ich habe viele Projekte gesehen, die versuchen, einen WebDAV-Server oder ein Content-Management-System CMS mit Rails zu erstellen und kläglich zu versagen. Während Sie in Rails ein CMS erstellen können, gibt es viel effizientere Technologien für die Aufgabe, wie Drupal und Django. In der Tat, würde ich sagen, wenn Sie eine Java Portal-Entwicklungsbemühung betrachten, sollten Sie stattdessen Drupal und Django für die Aufgabe auswerten.
Alles, wo Sie Komponenten von Drittanbietern löschen möchten, macht es schwierig, im MVC-Muster zu arbeiten. Ein gutes Beispiel dafür ist ein CMS.
Jede Komponente, die Sie erhalten, hat ihre "eigenen" Controller-Objekte und Sie können nicht die "Kontrolle" des Modells teilen - & gt; Ui vorbei.
Ich weiß nicht unbedingt, dass MVC wirklich eine schlechte Idee für eine GUI-App ist. Aber es gibt Alternativen, die wohl besser sind (und auch schlechter, je nachdem, wessen Meinung du fragst). Am gebräuchlichsten ist MVP. Hier finden Sie eine Erklärung: Alles, was Sie über MVC und MVP wissen wollten, aber Angst hatten zu fragen .
Obwohl ich denke, dass es eine schlechte Idee wäre, MVC zu verwenden, wenn Sie ein Framework verwenden oder anderweitig mit Software interagieren, die nicht mit MVC entworfen wurde.
Mit anderen Worten, es ist vergleichbar mit dem Vergleich von Programmiersprachen. Es gibt normalerweise nicht viele Aufgaben, denen man sagen kann, dass man besser ist als die anderen. Es läuft normalerweise auf die Präferenz des Programmierers, die Verfügbarkeit von Bibliotheken und die Erfahrung des Teams hinaus.
MVC sollte nicht in Anwendungen verwendet werden, bei denen die Leistung entscheidend ist. Ich weiß nicht, ob das immer noch mit der Zunahme der Rechenleistung zu tun hat, aber ein Beispiel ist eine Call-Center-Anwendung. Wenn Sie 0,5 Sekunden pro Anruf sparen und Informationen eingeben können, summieren sich diese Einsparungen im Laufe der Zeit. Um die letzte Leistung aus Ihrer App herauszuholen, sollten Sie eine Desktop-App anstelle einer Web-App verwenden und sie direkt mit der Datenbank kommunizieren lassen.
Wann ist es eine schlechte Sache? Wo auch immer es eine andere Code-Struktur gibt, die besser zu Ihrem Projekt passt.
Es gibt unzählige Projekte, bei denen MVC nicht "passt", aber ich sehe nicht, wie eine Liste davon von Vorteil wäre.
Wenn MVC passt, verwenden Sie es, wenn nicht, verwenden Sie etwas anderes ..
MVC und ORM sind ein Witz .... sie sind nur dann geeignet, wenn Ihre App keine Datenbank-App ist oder wenn Sie die App-Datenbank agnostisch halten wollen. Wenn Sie ein RDBMS verwenden, das gespeicherte Prozeduren unterstützt, ist dies die einzige Möglichkeit. Gespeicherte Procs sind der bevorzugte Ansatz für erfahrene Anwendungsentwickler. MVC und ORM werden nur von Unternehmen beworben, die versuchen, Produkte oder Dienstleistungen im Zusammenhang mit diesen Technologien zu verkaufen (z. B. versucht Microsoft, VS zu verkaufen). Hören Sie auf, Ihre Zeit damit zu verschwenden, Java und C # zu lernen, und konzentrieren Sie sich stattdessen auf das, was wirklich zählt, auf Javascript und SQL.
Tags und Links model-view-controller paradigms