MVC-modus: Model View probeert de controller te bedienen, wat de huidige mainstream modus is, en wordt gebruikt als basismodus voor serversoftware-invoer om te leren en te beheersen, en het mainstream framework Struts 1/2 JSF Wicket ondersteunt in feite MVC-modus.
Echter, met de voortdurende popularisering van B/S en internetapplicaties, Web 2.0 en een groot aantal veelvoorkomende interactieve toepassingen zoals sociale media en games, is de relatief statische MVC-modus niet langer geschikt voor sterk interactieve en gedragsgerichte toepassingen.
DDD-domeinmodellering zelf besteedt meer aandacht aan structuur; het entity value object en de server zijn ook een soort structurele scheiding, maar het benadrukt niet het belang van objecttaken en gedragingen, en dit is het enige verschil tussen objecten en databases.
Integendeel,Objectontwerp: Rollen, Verantwoordelijkheden en SamenwerkingenHet boek stelt voor dat het object daadwerkelijk een bepaalde rol speelt, en dat de rol verantwoordelijk is, en dat vervolgens een bepaald interactief gedrag wordt geïmplementeerd in een bepaalde scènecontext, die volledig is besproken in Jdon:
DCI, domeinmodel, enkele ideeën voor domeingebeurtenissen
Asynchroon architectonisch denken: Implementeer domeinmodellering met Akka
Het boek vat de vier belangrijkste nadelen van gecentraliseerde controllers samen, en de controllers van MVC behoren eigenlijk tot deze gecentraliseerde controllerstijl:
1. Regellogica kan te complex worden. Controllers kunnen ingewikkeld zijn, en het is gebruikelijk dat veel mensen bedrijfscode schrijven in Struts' Action-controllers.Alle acties zijn in acties, en sommige acties zijn bijna duizenden regels.
2. Controllers kunnen afhankelijk worden van de inhoud van informatiehouders. Controllers worden afhankelijk van informatiedatacenters of databases, controllers doen veel dingen, wat betekent dat domeinobjecten heel weinig doen, en de controller doet niet alleen wat uiteindelijk, maar ook strategische beslissingen neemt, maar ook tactische kwesties zoals hoe het te doen en te implementeren.
3. Objecten kunnen indirect gekoppeld raken door de acties van hun controller. Objecten worden indirect gekoppeld via de acties van de controller, één object wordt in de controller geraadpleegd en vervolgens gekopieerd naar een ander object, en de twee objecten worden gekoppeld.
4. Het enige interessante werk wordt gedaan in de controller.
De controller van MVC is een soort Mediatormodus, maar ook een gecentraliseerde controller; het is het belangrijkste verschil met de observermodus: de Mediatormodus omvat communicatie, terwijl de observer gedecentraliseerde communicatie heeft, vanuit communicatieperspectief, de controller heeft ook zijn inherente gebreken, gemakkelijk om een grote en volledig gekoppelde concentrator te worden, dit zijn allemaal voorOOHet wordt niet getolereerd.
DCI-architectuurHet is een nieuw concept dat pas recent is ontstaan en software vanuit een nieuw perspectief bekijkt, wat samenvalt met en juist past bij plichtgedreven ontwerpDDDontwikkeling en verbetering.
DCI is de afkorting van Data Context Interactions, en de belangrijke bijdrage ervan is het naar voren brengen van het concept van scenes, dat niet wordt genoemd in het boek Duty-Driven Development, dat alleen MVC ontkent, zijn problemen blootlegt en geen alternatieven voorsteltDCIHet is de alternatieve architectuur van MVC, en DCI vervangt MVC door scenario's ter vervanging van controllers, zoals te zien is in de onderstaande figuur (de afbeelding is van).Origineel Engels TheDCI Architecture: A New Vision of Object-Oriented Programming):
De scène graaft zelfs enkele van de besturingen en modellen uit MVC uit en zet ze weer samen in de vorm van karakterscènes. Dit is een nieuwe hoek die totaal verschilt van de MVC-modusoverweging, die meer aansluit bij deze hoekOO。
Onlangs heeft iemand het ter sprake gebrachtScene Context is een nieuw objecttype, kan de scène niet alleen worden vervangenSOAWebservices kunnen ook MVC-controllers vervangen.
Persoonlijk denk ik dat de nieuwe hiërarchische architectuur er in de toekomst zo uit zal zien: Bekijk --> context ---> domeinmodel ---> component/repository
De MVC-modus is dood.
|