MVC-Modus: Model View versucht, den Controller zu steuern, was der aktuelle Mainstream-Modus ist und als grundlegender Modus für Server-Software-Eingaben zum Lernen und Beherrschen genutzt wird, und das Mainstream-Framework Struts 1/2 JSF Wicket unterstützt im Grunde den MVC-Modus.
Mit der kontinuierlichen Popularisierung von B/S- und Internetanwendungen, Web 2.0 und einer Vielzahl häufig interaktiver Anwendungen wie soziale Medien und Spiele ist der relativ statische MVC-Modus jedoch nicht mehr für hochinteraktive und verhaltensorientierte Anwendungen geeignet.
DDD-Domänenmodellierung selbst legt mehr Wert auf die Struktur; sein Entitätswertobjekt und der Server sind ebenfalls eine Art strukturelle Trennung, betonen aber nicht die Bedeutung von Objektpflichten und -verhalten, und das ist der einzige Unterschied zwischen Objekten und Datenbanken.
Im GegenteilObjektgestaltung: Rollen, Verantwortlichkeiten und KooperationenDas Buch schlägt vor, dass das Objekt tatsächlich eine bestimmte Rolle spielt und die Rolle verantwortlich ist, und dann wird ein bestimmtes interaktives Verhalten in einem bestimmten Szenenkontext implementiert, das in Jdon ausführlich diskutiert wurde:
DCI, Domänenmodell, einige Ideen für Domänenereignisse
Asynchrones architektonisches Denken: Implementierung von Domänenmodellierung mit Akka
Das Buch fasst die vier Hauptnachteile zentralisierter Controller zusammen, und die MVC-Controller gehören tatsächlich zu diesem zentralisierten Controller-Stil:
1. Die Steuerungslogik kann übermäßig komplex werden. Controller können kompliziert werden, und es ist üblich, dass viele Leute Geschäftscode in den Action Controllern von Struts schreiben.Alle Aktionen sind in Aktionen, und einige Aktionen bestehen aus fast tausenden Zeilen.
2. Controller können von den Inhalten der Informationsinhaber abhängig werden. Controller werden abhängig von Informationszentren oder Datenbanken, Controller tun vieles, was bedeutet, dass Domänenobjekte sehr wenig tun, und der Controller am Ende nicht nur das tut, sondern auch strategische Entscheidungen trifft, sondern auch taktische Fragen wie die Umsetzung und die Umsetzung übernehmen.
3. Objekte können indirekt durch die Handlungen ihres Controllers gekoppelt werden. Objekte werden indirekt durch die Aktionen des Controllers miteinander gekoppelt, ein Objekt wird im Controller abgefragt, dann auf ein anderes Objekt kopiert, und die beiden Objekte werden miteinander gekoppelt.
4. Die einzige interessante Arbeit findet im Controller statt.
Der Controller des MVC ist eine Art Mediator-Modus, aber auch ein zentralisierter Controller; er ist der Hauptunterschied zum Beobachtermodus: Der Mediator-Modus kapselt die Kommunikation, während der Beobachter die dezentrale Kommunikation benutzt, hat der Controller aus Kommunikationssicht ebenfalls seine inhärenten Mängel, leicht zu einem großen und vollständig gekoppelten Konzentrator zu werden, diese sind alle fürOODas wird nicht toleriert.
DCI-ArchitekturEs handelt sich um ein neues Konzept, das erst kürzlich entstanden ist und Software aus einer neuen Perspektive betrachtet, die mit pflichtgetriebenem Design übereinstimmt und zutrifftDDDEntwicklung und Verbesserung.
DCI ist die Abkürzung für Data Context Interactions, und sein wichtiger Beitrag besteht darin, das Konzept der Szenen vorzustellen, das im Buch Duty-Driven Development nicht erwähnt wird, das MVC lediglich ablehnt, seine Probleme aufdeckt und keine Alternativen vorschlägtDCIEs handelt sich um die alternative Architektur von MVC, und DCI ersetzt MVC durch Szenarien zur Ersetzung von Controllern, wie in der untenstehenden Abbildung gezeigt (das Bild stammt daraus).Originalenglisch TheDCI Architecture: A New Vision of Object-Oriented Programming):
Die Szene gräbt tatsächlich einige der Steuerungen und Modelle aus MVC aus und setzt sie in Form von Charakterszenen wieder zusammen. Dies ist ein neuer Winkel, der völlig anders ist als die MVC-Modus-Überlegung, die eher diesem Winkel entsprichtOO。
Kürzlich hat jemand das Thema angesprochenScene Context ist ein neuer Objekttyp, die Szene kann nicht nur ersetzt werdenSOAWebdienste können auch MVC-Controller ersetzen.
Persönlich denke ich, dass die neue hierarchische Architektur in Zukunft so aussehen könnte: Ansicht --> Kontext ---> Domänenmodell ---> Komponente/Repository
Der MVC-Modus ist tot.
|