# Java Web- Application -> MVC



## MQue (30. Mrz 2010)

Hallo,

ich muss leider nochmal fragen bzgl. MVC in Webapplicationen. Es hat ja schon mal einen Thread gegeben in dem diskutiert wurde ob MVC nur in der Präsentationsschicht auftreten soll oder ob das MVC - Pattern die Schichten der Web- Application darstellt (also View=Präsentationsschicht, Control=Businessschicht und Model=Persistanceschicht).
Jetzt hab ich auf der Uni eine Vorlesung bzgl. verteilter Systeme und der Prof. hat auch gemeint, dass es MVC nur in der Präsentationsschicht gibt. 
Jetzt frag ich mich, wie das in der Präsentationsschicht aussieht, was bzw. wo ist da das MVC- Muster -> die Anzeige (z.B.: HTML- Seite) wird mal die View sein, der Controller vermittelt zwischen View (HTML- Seite) und Model und das Model holt sich die daten von der Business- Schicht.
Kann man das so sagen oder ist das irgendwie anders gemeint.
Besten Dank,
lg


----------



## megachucky (4. Apr 2010)

> Jetzt frag ich mich, wie das in der Präsentationsschicht aussieht, was bzw. wo ist da das MVC- Muster -> die Anzeige (z.B.: HTML- Seite) wird mal die View sein, der Controller vermittelt zwischen View (HTML- Seite) und Model und das Model holt sich die daten von der Business- Schicht.
> Kann man das so sagen oder ist das irgendwie anders gemeint.



Genau so ist es! Der Controller ist z.B. dann auch für die Navigation von einer Seite zur nächsten zuständig.

Eine andere Sichtweise für MVC gibt es noch beim Domain Driven Design, z.B. mit Frameworks wie Grails oder Ruby on Rails. Dort ist das Model die Domäne, also die Entitäten der Datenschicht, MVC verteilt sich also über die gesamte Anwendung, nicht nur die GUI.
Aber lass dich nicht verwirren, deine Sicht ist korrekt und auch von deinem Prof sicherlich so gemeint. Dies wird von vielen Web-Frameworks (z.B. Java Server Faces) so verwendet.


----------



## maki (5. Apr 2010)

> Eine andere Sichtweise für MVC gibt es noch beim Domain Driven Design,


Ich behaupte mal dass das nicht stimmt 
DDD betrifft gar nicht die MVC oder die Präsentationsschicht im allgemeinen, sondern von allem was in der Businessschicht passiert und wie diese aufgebaut ist


----------



## megachucky (5. Apr 2010)

> DDD betrifft gar nicht die MVC oder die Präsentationsschicht im allgemeinen, sondern von allem was in der Businessschicht passiert und wie diese aufgebaut ist



Ja, ich gebe dir recht. Der Satz war daher wirklich schlecht formuliert. Was hälst du von folgendem:
DDD wird u.a. bei Web-Frameworks wie Grails eingesetzt. Dort wird die Domäne implementiert (im Prinzip POJOs, also Attribtue + Getter / Setter) und daraus der restliche Code (insbesondere die CRUD-Oberfläche) generiert.

Diese Web-Frameworks verwenden auch ein MVC-Prinzip: Die Domäne ist das Model, außerdem gibt es noch Controller und View. Dabei wird dann MVC nicht nur für die Präsentationsschicht verwendet, sondern betrachtet die gesamte Architektur.


----------



## maki (5. Apr 2010)

Eines der wichtigsten Merkmale von DDD ist das die Entitäten "intelligent" sind und logik enthalten, keine dummen Datenstrukturen die nur getter und setter für alle Proprties anbieten, u.a. dürfen Entitäten direkt mit Repositories und DomainServices  kommunizieren.
Aus diesem Grunde funktionieren in DDD Entities nur in der Businessschicht, nach aussen (zB für die Kommunikation mit der Präsentationschicht) gibt es nur TransferObjekte, welche "dumm" (getter & setter für alles) sind und nur Daten enthalten.
Wird leider in den ganzen Marketinggerede von Grails und JEE immer wieder falsch dargestellt.


----------

