Ich möchte wissen, ob es neben MVC auch Designmuster für das Web gibt.
Ich weiß, dass es Entwurfsmuster gibt wie: Registry, Observer, Factory, ActiveRecord, ... und MVC eine Reihe anderer Entwurfsmuster und Ordnerstrukturen.
Gibt es Entwurfsmuster wie MVC eine Reihe anderer Entwurfsmuster?
Edit: meine Programmiersprache ist PHP.
web-development
php
design-patterns
mvc
Saeed M.
quelle
quelle
Antworten:
In der Softwareentwicklung gibt es unterschiedliche Muster. MVP, MVVM, MVC usw. sind einige der bekanntesten. Sie müssen jedoch das spezifische Problem oder die Technologie definieren, die Sie lösen oder verwenden möchten.
Jedes dieser Muster ist gut, um bestimmte Problemstellungen zu lösen. Das MVP-Muster (Model View Presenter) hilft beispielsweise dabei, die Probleme bei der ASP.NET-WebForms-Entwicklung zu trennen. Es besteht aus der Aufteilung der Zuständigkeiten für das Sammeln, Anzeigen und Speichern von Daten von einer Webseite in separate Objekte: ein Modellobjekt, ein Ansichtsobjekt und ein Presenter-Objekt.
Das bekannteste allgemeine Kochbuch für Designmuster ist Gang of Four (GoF) .
Bearbeiten: Ich nehme an, dass Sie mehr an der Implementierung von Entwurfsmustern auf der .NET-Plattform interessiert sind
quelle
Ein schönes Muster, das ich vor ein paar Wochen kennengelernt habe, ist MOVE . Es sieht etwas raffinierter aus als MVC, basiert jedoch auf demselben Prinzip. Ein Nachteil von MVC ist, dass Ihre Controller wirklich sehr, sehr groß werden können. Mit dem MOVE-Muster werden Sie dieses Problem ein wenig lösen.
Andere Muster, die von den anderen benannt wurden, sind ebenfalls gute Alternativen.
quelle
Als Erstes müssen Sie festlegen, was genau Sie tun müssen, um zu entscheiden, ob ein Framework und / oder eine MVC (oder ein anderes Entwurfsmuster) von Vorteil sind.
Frameworks bieten eine konsistente Plattform für die Entwicklung und bieten in der Regel Lösungen für allgemeine Programmieranforderungen (z. B. Datenbankinteraktion, Formularerstellung und -validierung, Benutzerauthentifizierung usw.).
Zumindest für PHP dominiert das MVC / HMVC- Entwurfsmuster in der Regel die verfügbaren Mainstream-Frameworks (z. B. Zend , CakePHP , CodeIgniter usw.), aber es gibt viele verschiedene Entwurfsmuster, die verwendet werden könnten.
MVC ist so beliebt, weil es eine etablierte und verständliche Möglichkeit bietet, Datenmodellierungs- und Verarbeitungslogik von der Ansichts- / Präsentationsschicht zu trennen (was als wünschenswert angesehen wird, um robuste, skalierbare Anwendungen zu erstellen).
Es ist wichtig zu erwähnen (und wie @ Marjan Venema in einem Kommentar zu @ ElYusubovs Antwort ausdrückte), dass MVC, MVP, MVVM und die anderen MV x -Muster (im Prinzip zumindest) alle dasselbe "Entwurfsmuster" sind.
Typischerweise dienen unterschiedliche Entwurfsmuster (oft subtil) unterschiedlichen Zwecken und wurden in mehreren Fällen unter Berücksichtigung einer bestimmten Sprache entwickelt. Ein echtes 'Designmuster' ist jedoch keine feste Regel für die Programmierung, sondern vielmehr ein philosophisches / idealogisches Verständnis der Programmimplementierung, der Designanforderungen und der logischen Funktionen.
Nachforschungen sind der beste Weg, um sich über verschiedene Programmierprinzipien und Best Practices zu informieren. Hier einige Wikipedia-Links, um Ihnen den Einstieg zu erleichtern:
In der Praxis hindert Sie nichts daran, Ihr eigenes "Muster" zu implementieren. Der beste Weg, IMO zu lernen, ist für mich, zumindest, das MVC-Muster nicht vollständig zu verstehen, bis ich anfing, eine Website damit zu schreiben.
Sobald Sie einige der Programmierkonzepte und Best Practices verstanden haben, können Sie diese verwenden, um Ihr eigenes System zu erstellen, um die spezifischen Probleme zu lösen, mit denen Sie konfrontiert sind, und um Ihre Anforderungen zu erfüllen, unabhängig davon, ob sie einem festgelegten Muster entsprechen oder nicht.
Wenn Sie keine spezifischen Probleme zu lösen haben, ist das Erlernen eines der gängigen Frameworks die beste Wahl.
quelle
Eines der bekanntesten Beispiele ist Knockout.js , ein Javascript-Framework, das das MVVM-Entwurfsmuster verwendet . Es gibt hier einen großartigen Artikel über den Stapelüberlauf , in dem das MVC-Framework Backbone.js mit Knockout.js verglichen wird .
Eine Nebenbemerkung ist, dass das MVVM-Entwurfsmuster von Microsoft als Spezialisierung des PM-Entwurfsmusters von Martin Fowler stammt. MVVM wird häufig von WPF-Anwendungen verwendet.
quelle
Wie ElYusubov betonte, weist das ASP.Net-Framework seit langem MVP- und MVVM-Muster auf, wenn Sie nach relativ gängigen Beispielen suchen. Einer der Hauptunterschiede zwischen MVC und MVVM besteht darin, wie Ihre Entitäten aktualisiert werden. MVC eignet sich besser für den traditionellen zustandslosen oder halbzustandslosen Ansatz von Webanwendungen. Das ASP.Net-Framework hat versucht, dieses Problem zu umgehen, indem Ihr Status in einem Formular eingebettet war (sodass er bei jeder Anforderung wiederhergestellt werden konnte), wodurch die MVP- und MVVM-Muster dort sinnvoller wurden.
Mit HTML5 werden Anwendungen zunehmend JavaScript-lastiger, und ein Großteil ihres Status befindet sich auf dem Client. Dies kann zu einer Wiederbelebung der MVVM-Frameworks führen, und Knockout JS ist ein Beispiel.
quelle
Die meisten Muster in freier Wildbahn sind MVC oder ein MVC-Geschmack. Schließlich ist es sinnvoll, Ihre Daten (Modell), die Darstellung (Ansicht) und die Interaktion mit ihnen (Controller) aufzuteilen. Wenn Sie sich MVC ansehen, wie es in den 80er Jahren gegründet wurde, werden Sie feststellen, dass es nie als Webframework gedacht war. So fand ich es im Web weit überfordert.
Ein anderes bekanntes Muster wäre die Service Oriented Architecture (SOA). Darauf aufbauend würde ein moderner Ansatz darin bestehen, eine MVC (oder eine Variante) auf Ihrem Server zu haben, um nur einen Dienst bereitzustellen, mit dem Sie arbeiten können. Auf der Clientseite würde es eine andere MVC-gestaltete Anwendung geben, zum Beispiel eine HTML5- und JavaScript-gesteuerte Webanwendung (zum Beispiel Twitter oder Linked In). Die Client-Anwendung würde Ihren serverseitigen Dienst (die "Ansicht" des Servers) als Modell verwenden. IMHO, dies wäre Stand der Technik und wird wahrscheinlich nur MVC auf der Serverseite beiseite schieben.
quelle
Ich persönlich möchte etwas implementieren, das die Idee der Darstellung von Ressourcenmethoden verwendet , obwohl es in dieser Phase meist nur ein Experiment ist, mehr als alles andere. Einige überzeugende Punkte sind, dass eine HTTP-Anforderung / Antwort besser modelliert wird als MVC (was für langlebige Anwendungen gedacht ist, die auf einem einzelnen Computer ausgeführt werden, im Gegensatz zu kurzlebigen Anforderungs- / Antwortsitzungen). Es hat jedoch den Nachteil, dass Ihre Ressourcen an das Front-End gekoppelt werden, wenn Sie Methoden für die Verarbeitung von GET, POST, PUT, DELETE usw. in Ihre Ressourcen einfügen. Ich denke, ich werde das in eine andere Ebene aufteilen.
quelle
Es gibt mehr als 1000 Möglichkeiten, mit Ausnahme von MVC, von denen einige MVC ähnlich sind und andere völlig unterschiedlich
zum Beispiel :
etc
quelle