Unterschied MVC - 3tier-Architektur

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo!

Ich arbeite mich grad in JSF ein und hab mal ne logische Frage.
Ich hab das mal ins allgemeine Forum gepostet, weil es nicht unbedingt um JSF es, sondern dadurch die Frage nur entstand.

JSF baut ja auf dem MVC-Modell auf, d.h. für mich:

View:
JSP-Seiten mit JSF-Tags
stellt Daten aus dem Modell dar
leitet Nutzeraktionen (Klick auf Button etc.) an den Controller weiter

Model:
Bean, die beispielsweise auf Datenbank mit Datensätzen drin zugreift
behält Daten für View bereit
kennt weder Controller noch View

Controller:
Faces Servlet
beinhaltet die Intelligenz der Anwendung -> Ablaufsteuerung
wertet entgegengenommene Nutzeraktionen aus, leitet sie an Bean / View weiter
Controller registriert sich bei der View -> View kennt Controller

Hab ich das so erstmal richtig?

So jetzt stellt sich mir die Frage, wo so richtig der Unterschied zur 3tier-Architektur ist. Die wenigen englischen Quellen verwirren mich irgendwie nur noch mehr.
Bisher hab ich nur verstanden, dass es die Präsentations-, Logik-, und Datenhaltungsschicht gibt und das für mich quasi identisch zu MVC klingt.

Präsentationsschicht:
Darstellung Daten
Zugriff z.B. über HTTP auf Logikschicht
zuständig für Verarbeiten Nutzeraktionen

Datenhaltungsschicht:
z.B. relationale Datenbank mit Datensätzen

Logikschicht:
Datenverarbeitung -> Anwendungslogik
beinhaltet Verarbeitungsmechanismen
Zugriff auf Datenhaltungsschicht z.B. über JDBC

Der einzige Unterschied, der sich mir ergibt, ist, dass bei MVC das Model für die Datenhaltung und Verarbeitung notwendig ist, es nicht unbedingt eine Datenbank geben muss und der Controller quasi nur zwischen allen vermittelt, weiterleitet und sonst nix macht.

Bei der 3tier-Architektur ist die Datenhaltungsschicht die Datenbank selbst und die Logikschicht ne Mischung aus Controller und Model.

Bitte helft mir :D
 
S

SlaterB

Gast
ich sehe MVC in diesem Vergleich nur als eine Möglichkeit zum Aufbau der Präsentationsschicht,

die DB- und Logik-Schicht haben damit gar nix zu tun, funktionieren völlig gleich bei HTML- + Swing-Frontend

teilweise kann man MVC auch innerhalb der anderen Schichten finden,
die Trennen von Daten + kontrollierenden Logik-Klassen z.B. sowieso praktisch überall,

View braucht man dagegen nicht so häufig, weswegen ich zumindest sowas nur mit einem Frontend verbinde
 

byte

Top Contributor
Anonymous hat gesagt.:
So jetzt stellt sich mir die Frage, wo so richtig der Unterschied zur 3tier-Architektur ist. Die wenigen englischen Quellen verwirren mich irgendwie nur noch mehr.
Bisher hab ich nur verstanden, dass es die Präsentations-, Logik-, und Datenhaltungsschicht gibt und das für mich quasi identisch zu MVC klingt.
Du musst unterscheiden zw. logischen- und physikalischen Schichten. Unter 3-Schicht-Architektur versteht man i.A. drei physikalische Schichten (Client - Server - Datenbank). MVC ist ein Konzept, dass (den Client-Code) quasi in drei logische Schichten einteilt.
Grundsätzlich sind nur physikalische Schichten erwähnenswert, denn logisch kann man den Code in nahezu beliebig viele Schichten einteilen. Ob das sinnvoll ist, sei mal dahingestellt. ;)
 
S

SlaterB

Gast
die beschriebene 3-Schichten-Software-Architektur macht auf jeden Fall Sinn und ist bekannt,
egal wie man sie nennen oder nicht nennen mag,

aber sie steht zu MVC nicht in Konkurrenz, sondern beschreibt eine Art Kapseltung, ein Schichten-Modell relativ unabhängiger Ebenen,
während MVC eher ein Dreieck ineinandergreifender Komponenten einer gemeinsamen Schicht ist

edit: natürlich hat man auch beim MVC deutliche Trennungen, aber ebenso Abhängigkeiten,
ein Controller FacesServlet kann nur mit JSP & Co zusammenarbeiten, weniger mit JTable ;)

der Logik-Schickt aus dem anderen Konzept ist es dagegen ganz egal, ob weiter oben HTML oder Swing oder sonstwer anfragt
 
M

maki

Gast
Du musst unterscheiden zw. logischen- und physikalischen Schichten. Unter 3-Schicht-Architektur versteht man i.A. drei physikalische Schichten (Client - Server - Datenbank). MVC ist ein Konzept, dass (den Client-Code) quasi in drei logische Schichten einteilt.
Grundsätzlich sind nur physikalische Schichten erwähnenswert, denn logisch kann man den Code in nahezu beliebig viele Schichten einteilen. Ob das sinnvoll ist, sei mal dahingestellt. icon_wink.gif
Ich kenn das anders.

Die 3 Schichten(Presentation, Business, Integration) sind logisch, die DB selbst wäre die 4. Schicht.

Aber wer sagt denn das so etwas Standardtisiert ist ;)
 

ps

Bekanntes Mitglied
MVC ist ein Pattern welches innerhalb eines Tiers eingesetzt werden kann (zB. im Frontend).

3-Tier-Architektur bezeichnet die Gesamtarchitektur eines Systems. Typisch, und mit anderen Worten ausgedrückt wäre da das "Frontend" welches der Benutzer bedient, das "Backend" welches die Business Logik zur Verfügung stellt und eine Schicht für die Daten - also zB. eine relationale Datenbank.

Im Prinzip hast du in einer 3-Tier-Applikation immer ein Client/Server Model.
 
G

Guest

Gast
Danke für die zahlreichen Antworten :)

Also kann ich das jetzt so verstehen, dass MVC innerhalb einer Schicht (oder auch über mehrere) der 3-tier-Architektur genutzt werden kann.
3tier ist für die physikalische Anordnung zu nutzen und MVC für die logische.

Wenn ich nun z.B. 3 Server habe:
-nen Datenbankserver mit Datenbank, die die Daten für die Anwendung auf dem Applikationsserver hält
-nen Applikationsserver mit der eigentlichen Anwendung
-nen Webserver, wo z.B. Webapplikationen drauf laufen
ist das dann ne 3-tier-Architektur? :bahnhof:

Und innerhalb einer der 3 Schichten, z.B. auf dem Webserver hab ich ne Webapplikation, die JSF (JSP im Client-Browser als View, Beans für Daten, Servlet als Controller) mit nem MVC-Pattern nutzt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Unterschied zwischen JSP & Servlet gegenüber REST mittels JAX-RS Allgemeines EE 1
A Unterschied CDI und managedBeans Allgemeines EE 1
R Unterschied Instantiierung einer normalen und einer EJB-Klasse Allgemeines EE 1
J Unterschied zwischen HttpSession und Stateful Session Bean Allgemeines EE 3
F Unterschied Design Pattern / Architektur Pattern? Allgemeines EE 4
P Unterschied Session Scope / Stateful Session Bean Allgemeines EE 6
S Unterschied zwischen Tomcat und Application Server? Allgemeines EE 3
B unterschied servlet und bean Allgemeines EE 2
R Unterschied zwischen DAO und DTO - Beispiel? Allgemeines EE 7
E JSP, JSF und Servlet - wo ist der Unterschied? Allgemeines EE 8
D Unterschied zw. synchronen/asynchronen web services Allgemeines EE 1
F Unterschied EJB und JavaBeans? Allgemeines EE 9
M Unterschied zwischen Servlet und Bean/EJB Allgemeines EE 2
V Unterschied zwischen Applicationserver und Servletcontainer Allgemeines EE 4
T Zwei Buttons in derselben FORM rufen unterschied. Servlets a Allgemeines EE 10
T MVC-Architektur Allgemeines EE 1
S Architektur GWT + EJB Allgemeines EE 8
J Anwendung mit Model 2 Architektur Allgemeines EE 3
G Architektur- Frage Allgemeines EE 5
P Architektur Java EE <-> HTML5 Allgemeines EE 3
G J2EE Architektur Allgemeines EE 40
S J2EE Architektur/Pattern/... Allgemeines EE 11
A JEE Architektur Allgemeines EE 4
ARadauer generelle Architektur Fragen Allgemeines EE 44
M Chatähnliche Architektur mit JEE/JBoss Allgemeines EE 2
F Frage zur guten Architektur einer WebApp Allgemeines EE 2
G Application Server! Gibt es eine grundsätzliche Architektur? Allgemeines EE 9

Ähnliche Java Themen

Neue Themen


Oben