2009-04-28 10 views

Antwort

19

Zur Verdeutlichung der bisherigen Antworten (und fügt Erklärung von this article) der tatsächlichen Unterschied ist:

MVC2 ist ein abuse of language tatsächlich auf die Architektur JSP Modell 2 Bezug genommen wird, wie 1 bis JSP Modell Gegensatz:

die erste Java-Technologie für die serverseitige Web-Entwicklung war die Servlet.
Das Schreiben von Anwendungen mit Servlets war dem Schreiben von CGI-Anwendungen in Perl insofern sehr ähnlich, als die gesamte Ausgabe als Zeichenfolgen innerhalb des Java-Codes aufgebaut werden musste.
Das war sehr langwierig und fehleranfällig. Es hat es auch für Webdesigner ohne Java-Erfahrung sehr schwierig gemacht, das Aussehen und Verhalten der von Servlets erzeugten Seiten zu verändern.

alt text http://www.javaworld.com/javaworld/jw-12-1999/images/MODEL1_sml.gif

Dann kam JSP. JSPs, wie Microsoft ASPs und wie die populäre Skriptsprache PHP, behandeln alles als Vorlagentext, erlauben aber das Einfügen von Java-Code in Tags namens Scriptlets und JSP-Ausdrücke.
Dies ermöglichte es Benutzern, auf serverseitigen Anwendungen zu arbeiten, genau wie bei den anderen gängigen Skriptsprachen, aber sie hatte einige Nachteile.

  • Es gab keine Trennung von Bedenken.
  • Ein Skript würde Datenbankcode, Geschäftslogik, HTML-Markup und beliebigen JavaScript-Code enthalten, der für das endgültige Seitenrendering benötigt wird.
  • Codewiederverwendung war schwierig, wie automatisierte Tests.

Dies wurde als "Model 1" JSP-Programmierung bekannt.

MVC or the Model View Controller pattern war eine gängige Technik zur Trennung der verschiedenen Aspekte des GUI-Codes, der von Trygve Reenskaug erfunden wurde und an Smalltalk für Zerox arbeitete.

Irgendwann wurde klar, dass diese Technik an Java-EE-Anwendungen angepasst werden kann, um das gleiche Maß an Trennung zu erreichen.
Dazu müssen Sie den Model-Layer als Beans oder Plain Old Java Objects (POJOs) schreiben, Servlets als Controller verwenden und dann, wenn alles schwerfällig ist, eine Weiterleitung an eine JSP vornehmen, um die Ergebnisse zu formatieren und zu markieren.
Servlet/JSP-Anwendungen, die mit und MVC-Architektur geschrieben wurden, wurden als Modell 2 JSP-Programmierung bekannt.

alt text http://www.javaworld.com/javaworld/jw-12-1999/images/MODEL2_sml.gif

Da dieses Muster in einer anderen Form existiert, bevor in Servlet/JSP-Anwendungen verwendet wird, wurde es manchmal bezeichnet als "MVC2". Dieser Name führte zu einiger Verwirrung, da dies bedeutete, dass es eine MVC1 für Servlet-Anwendungen gibt, die es nicht gibt.
Es genügt, nur MVC zu sagen.

+0

Danke für Gooooooood ans, ich muss Ihre Antwort zufrieden –

+0

@Ashvin Sie sind willkommen – VonC

+0

@VonC - Es ist keine gute Idee zu kopieren, ohne eine Referenz zu geben. Bitte geben Sie die Referenz in Ihrem ursprünglichen Post an. Vielen Dank. –

3

Eine amüsante historische Notiz über die Bedingungen ...

[Ich wünschte, ich das Papier finden konnte ... (ich googeln gerade versucht, aber kein Glück!)]

eine Weile zurück, jemand schrieb ein Papier, das zwei MVC-Ansätze für Webanwendungen beschreibt. Darin hatte er zwei Figuren.

Die Beschriftungen waren "Modell 1" und "Modell 2".

Sie wurden nicht als tatsächliche Namen von Mustern bestimmt ist (eher wie „Bild 1“ und „2“), aber jemand liest es und schrieb darüber, als ob das ein Mustername war ...

(jemand den Referee haben?)

VonC den Unterschied beschreibt ziemlich gut

+0

Interessant (+1). Ich kopiere und formatiere und javaworld Artikel, tatsächlich. In Bezug auf Ihren Kommentar erwähnt diese Präsentation (http://www.javapassion.com/j2ee/MVCPatternAndFrameworks.pdf) "MVC Model 1" und "MVC Model 2"! (aber das kann ein Nebenprodukt Ihres Papiers sein, und nicht das eigentliche Dokument, auf das Sie verweisen) – VonC

+0

Arf, in diesem "Antwortblatt" (http://csdl.ics.hawaii.edu/~johnson/613s05 /613s05FinalAnswerKey.pdf), MVC Model "1" ist auf clientseitige Anwendungen ausgerichtet, z. B. eine Swing-basierte GUI Anwendung. In diesem Fall existiert der gesamte Anwendungscode in einer einzelnen JVM auf einem einzelnen Client. Das MVC-Modell "2" ist auf einen Client-Server-Webanwendungskontext ausgerichtet, in dem der Benutzer HTTP Anforderungen an einen Server ausgibt. Im Gegensatz zu Modell 1 erfordert die Architektur von Model 2 die Implementierung eines einzelnen Servlets , das als Controller fungiert und alle Anforderungen von den clientseitigen Browsern empfängt. – VonC

+0

Diese Folie Präsentation ist nah, aber es ruft Modell 1/Modell 2, als ob sie tatsächliche Begriffe sind ... "Modell 2" ist nicht wirklich ein evolutionärer Schritt, wie sie sagen; Es ist nur eine andere Implementierung der Modell/UI-Trennung. –

Verwandte Themen